diff options
-rw-r--r-- | arm9/arm9.lcf | 31 | ||||
-rw-r--r-- | arm9/asm/unk_020910EC.s | 4 | ||||
-rw-r--r-- | arm9/global.inc | 91 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_arm1.s | 6051 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_arm2.s | 35373 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_init.s | 33 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_thumb.s | 14779 |
7 files changed, 56359 insertions, 3 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index b9a69071..ea5e84c2 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -23,7 +23,7 @@ MEMORY { MODULE_10 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 MODULE_12 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 - MODULE_13 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_13 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_14 (RWX) : ORIGIN=0, LENGTH=0 MODULE_15 (RWX) : ORIGIN=0, LENGTH=0 MODULE_16 (RWX) : ORIGIN=0, LENGTH=0 @@ -510,7 +510,34 @@ SECTIONS { module_12.o (.bss) } >> MODULE_12 - OVERLAY_FILE(13, 0x1F5200, FILE_1F9200.o) + .MODULE.13 : AT (0x1F5200) + { + module_13_init.o (.text) + module_13_arm1.o (.text) + module_13_thumb.o (.text) + module_13_arm2.o (.text) + module_13_init.o (.sdata) + module_13_arm1.o (.sdata) + module_13_thumb.o (.sdata) + module_13_arm2.o (.sdata) + module_13_init.o (.data) + module_13_arm1.o (.data) + module_13_thumb.o (.data) + module_13_arm2.o (.data) + } > MODULE_13 + + .MODULE.13.BSS : + { + module_13_init.o (.sbss) + module_13_arm1.o (.sbss) + module_13_thumb.o (.sbss) + module_13_arm2.o (.sbss) + module_13_init.o (.bss) + module_13_arm1.o (.bss) + module_13_thumb.o (.bss) + module_13_arm2.o (.bss) + } >> MODULE_13 + OVERLAY_FILE(14, 0x223E00, FILE_227E00.o) OVERLAY_FILE(15, 0x233400, FILE_237400.o) OVERLAY_FILE(16, 0x237C00, FILE_23BC00.o) diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s index e5d80405..3ae14dd4 100644 --- a/arm9/asm/unk_020910EC.s +++ b/arm9/asm/unk_020910EC.s @@ -4770,7 +4770,9 @@ _0209530C: strb r7, [r0, #-0x4] strb r6, [r0, #-0x3] ldmia sp!, {r4-r9,pc} -_02095324: ; 0x02095324 + + arm_func_start FUN_02095324 +FUN_02095324: ; 0x02095324 ldr r0, _0209532C ; =0x021C8C84 bx lr .balign 4 diff --git a/arm9/global.inc b/arm9/global.inc index 7947390a..3e703522 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4941,8 +4941,99 @@ .extern FUN_021DD6B8
.extern FUN_021DD6CC
.extern FUN_02211FF0
+.extern FUN_0202E49C
.extern MOD08_02228574
.extern MOD08_0222A6C8
+.extern MOD13_02223494
+.extern MOD13_02213174
+.extern MOD13_02213270
+.extern MOD13_022132CC
+.extern MOD13_02213368
+.extern MOD13_02213944
+.extern MOD13_02213CB0
+.extern MOD13_0221411C
+.extern MOD13_02214D6C
+.extern MOD13_02214F18
+.extern MOD13_02215028
+.extern MOD13_02215360
+.extern MOD13_02215474
+.extern MOD13_02219798
+.extern MOD13_02219C9C
+.extern MOD13_02219D58
+.extern MOD13_0221A794
+.extern MOD13_0221A7EC
+.extern MOD13_0221A8A4
+.extern FS_OpenFileDirect
+.extern FUN_020D9564
+.extern WM_GetNextTgid
+.extern WM_ReadMPData
+.extern WM_StartMPEx
+.extern FUN_020A8358
+.extern FUN_020A83D0
+.extern FUN_020A846C
+.extern FUN_020A84D8
+.extern disableBankForX_
+.extern FS_ChangeDir
+.extern FS_InitArchive
+.extern FS_LoadArchive
+.extern FS_RegisterArchiveName
+.extern FS_SetArchiveProc
+.extern FS_UnloadArchiveTables
+.extern FUN_02095324
+.extern FUN_02095330
+.extern FUN_02095AE0
+.extern FUN_02095B0C
+.extern FUN_02095BB0
+.extern FUN_02095BE0
+.extern FUN_02095CDC
+.extern FUN_02095D68
+.extern FUN_02096190
+.extern FUN_020967A4
+.extern FUN_020B5C88
+.extern FUN_020B5CE4
+.extern FUN_020B5D3C
+.extern FUN_020B5E50
+.extern FUN_020B6180
+.extern FUN_020B6240
+.extern FUN_020B62F8
+.extern FUN_020B6388
+.extern FUN_020B63CC
+.extern FUN_020B7168
+.extern FUN_020B7218
+.extern FUN_020C2444
+.extern FUN_020C5E04
+.extern FUN_020D0D84
+.extern FUN_020D0EB0
+.extern FUN_020D0FF0
+.extern FUN_021EB9A4
+.extern FUN_021EB9D8
+.extern FUN_021EBAE8
+.extern FUN_021EBB80
+.extern FUN_021EBC60
+.extern FX_DivS32
+.extern G2x_ChangeBlendBrightness_
+.extern GX_DisableBankForARM7
+.extern GX_DisableBankForBGExtPltt
+.extern GX_DisableBankForClearImage
+.extern GX_DisableBankForOBJExtPltt
+.extern GX_DisableBankForOBJExtPltt_2
+.extern GX_DisableBankForSubBGExtPltt
+.extern GX_DisableBankForSubOBJExtPltt
+.extern GX_DisableBankForSubOBJExtPltt_2
+.extern GX_DisableBankForTexPltt
+.extern GX_DisableBankForTexPltt_2
+.extern GX_SetBankForARM7
+.extern OS_WaitVBlankIntr
+.extern PM_GetLEDPattern
+.extern PMi_SendLEDPatternCommand
+.extern swprintf
+.extern WM_EndKeySharing
+.extern WM_GetOtherElements
+.extern WM_ReadStatus
+.extern WM_SetWEPKeyEx2
+.extern WM_StartDataSharing
+.extern WM_StartKeySharing
+.extern WM_StepDataSharing
.extern SDK_MODULE_00_ID
.extern SDK_MODULE_01_ID
.extern SDK_MODULE_02_ID
diff --git a/arm9/modules/13/asm/module_13_arm1.s b/arm9/modules/13/asm/module_13_arm1.s new file mode 100644 index 00000000..edb71ead --- /dev/null +++ b/arm9/modules/13/asm/module_13_arm1.s @@ -0,0 +1,6051 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD13_02211EA4 +MOD13_02211EA4: ; 0x02211EA4 + stmdb sp!, {lr} + sub sp, sp, #4 + strh r1, [sp] + add r2, sp, #0 + mov r1, #0xd + bl MOD13_022130E8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + + arm_func_start MOD13_02211EC8 +MOD13_02211EC8: ; 0x02211EC8 + cmp r0, #1 + blo _02211EDC + cmp r0, #0xf + movls r0, #1 + bxls lr +_02211EDC: + mov r0, #0 + bx lr + + arm_func_start MOD13_02211EE4 +MOD13_02211EE4: ; 0x02211EE4 + cmp r1, r0 + movls r1, r0 + mov r0, r1 + bx lr + + arm_func_start MOD13_02211EF4 +MOD13_02211EF4: ; 0x02211EF4 + ldr r1, _02211F6C ; =0x02240A40 + mov r2, #1 + mov r2, r2, lsl r0 + ldr r1, [r1] + ands r1, r1, r2 + bxeq lr + ldr r2, _02211F70 ; =0x02240AFC + ldr r1, _02211F74 ; =0x000005D4 + ldr r2, [r2] + mla r3, r0, r1, r2 + add r0, r3, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + bxeq lr + add r0, r3, #0x1d00 + ldrh r1, [r0, #0x4c] + cmp r1, #0 + bxeq lr + ldrh r2, [r0, #0x48] + ldrh ip, [r0, #0x4a] + cmp ip, r2 + bhi _02211F60 + add r1, ip, #2 + cmp r2, r1 + addle r1, r2, #1 + strleh r1, [r0, #0x48] + bxle lr +_02211F60: + add r0, r3, #0x1d00 + strh ip, [r0, #0x48] + bx lr + .align 2, 0 +_02211F6C: .word 0x02240A40 +_02211F70: .word 0x02240AFC +_02211F74: .word 0x000005D4 + + arm_func_start MOD13_02211F78 +MOD13_02211F78: ; 0x02211F78 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + add r1, sp, #0 + mov r0, #0 + mov r2, #0xa + bl MIi_CpuClear16 + mov ip, #1 + ldr r0, _022120FC ; =0x02240AFC + mov r4, ip + ldr r3, [r0] + mov r5, ip + mov r0, ip + mov r1, ip + mov r2, ip +_02211FB0: + sub lr, ip, #1 + add lr, r3, lr, lsl #2 + add lr, lr, #0x1000 + ldr lr, [lr, #0x4e8] + cmp lr, #0xb + addls pc, pc, lr, lsl #2 + b _02212048 +_02211FCC: ; jump table + b _02212048 ; case 0 + b _02212048 ; case 1 + b _02211FFC ; case 2 + b _02212048 ; case 3 + b _0221201C ; case 4 + b _0221200C ; case 5 + b _02212048 ; case 6 + b _02212048 ; case 7 + b _0221202C ; case 8 + b _02212048 ; case 9 + b _02212048 ; case 10 + b _0221203C ; case 11 +_02211FFC: + ldrh lr, [sp] + orr lr, lr, r2, lsl ip + strh lr, [sp] + b _02212048 +_0221200C: + ldrh lr, [sp, #2] + orr lr, lr, r1, lsl ip + strh lr, [sp, #2] + b _02212048 +_0221201C: + ldrh lr, [sp, #4] + orr lr, lr, r0, lsl ip + strh lr, [sp, #4] + b _02212048 +_0221202C: + ldrh lr, [sp, #6] + orr lr, lr, r5, lsl ip + strh lr, [sp, #6] + b _02212048 +_0221203C: + ldrh lr, [sp, #8] + orr lr, lr, r4, lsl ip + strh lr, [sp, #8] +_02212048: + add ip, ip, #1 + mov ip, ip, lsl #0x10 + mov ip, ip, lsr #0x10 + cmp ip, #0xf + bls _02211FB0 + ldrh r1, [sp, #6] + cmp r1, #0 + beq _02212074 + mov r0, #5 + bl MOD13_02212614 + b _022120D4 +_02212074: + ldrh r1, [sp] + cmp r1, #0 + beq _0221208C + mov r0, #1 + bl MOD13_02212614 + b _022120D4 +_0221208C: + ldrh r1, [sp, #8] + cmp r1, #0 + beq _022120A4 + mov r0, #6 + bl MOD13_02212614 + b _022120D4 +_022120A4: + ldrh r1, [sp, #4] + cmp r1, #0 + beq _022120BC + mov r0, #2 + bl MOD13_02212614 + b _022120D4 +_022120BC: + ldrh r0, [sp, #2] + cmp r0, #0 + beq _022120D0 + bl MOD13_02212464 + b _022120D4 +_022120D0: + bl MOD13_02212104 +_022120D4: + cmp r0, #0x15 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, lr} + bxne lr + ldr r1, _02212100 ; =0x0000FFFF + mov r0, #0 + bl MOD13_02212614 + add sp, sp, #0xc + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_022120FC: .word 0x02240AFC +_02212100: .word 0x0000FFFF + + arm_func_start MOD13_02212104 +MOD13_02212104: ; 0x02212104 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + ldr r5, _022123B0 ; =0x02240AFC + ldr r0, [r5] + add r0, r0, #0x1000 + ldrb r0, [r0, #0x524] + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r4, _022123B4 ; =0x000005D4 + mov r1, #0 +_02212138: + ldr r0, [r5] + add r3, r0, #0x1000 + ldrb r0, [r3, #0x525] + add r0, r0, #1 + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #28 + add r0, r2, r0, ror #28 + strb r0, [r3, #0x525] + ldr r2, [r5] + add r0, r2, #0x1000 + ldrb r0, [r0, #0x525] + mla r3, r0, r4, r2 + add r2, r3, #0x1000 + ldrb r2, [r2, #0xd52] + cmp r2, #0 + beq _02212188 + add r2, r3, #0x1d00 + ldrh r2, [r2, #0x4c] + cmp r2, #0 + bne _02212198 +_02212188: + add r1, r1, #1 + and r1, r1, #0xff + cmp r1, #0x10 + blo _02212138 +_02212198: + cmp r1, #0x10 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + bl MOD13_02211EF4 + ldr r0, _022123B0 ; =0x02240AFC + ldr r1, _022123B4 ; =0x000005D4 + ldr r6, [r0] + ldr r2, _022123B8 ; =0x00001D2C + add r0, r6, #0x1000 + ldrb r0, [r0, #0x525] + ldr r3, _022123BC ; =0x00001788 + add r4, r6, r2 + mul r5, r0, r1 + add r0, r6, r5 + add r0, r0, #0x1d00 + ldrh r2, [r0, #0x48] + add r3, r6, r3 + add r0, sp, #8 + add r1, r4, r5 + add r3, r3, r5 + bl MOD13_02213558 + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r0, _022123B0 ; =0x02240AFC + mov r2, #4 + ldr r1, [r0] + strb r2, [sp] + add r2, r1, #0x1000 + ldrb r4, [r2, #0x525] + ldr r3, _022123B4 ; =0x000005D4 + add r0, sp, #0 + strh r4, [sp, #2] + ldrb r4, [r2, #0x525] + mla r2, r4, r3, r1 + add r2, r2, #0x1d00 + ldrh r2, [r2, #0x48] + strh r2, [sp, #4] + bl MOD13_022171AC + ldr r1, _022123B0 ; =0x02240AFC + ldr r4, _022123B4 ; =0x000005D4 + ldr r5, [r1] + ldrb r1, [sp, #0x14] + add r2, r5, #0x1000 + ldrb r2, [r2, #0x525] + ldr r6, [sp, #0x10] + ldr r3, [sp, #0xc] + mla r5, r2, r4, r5 + add r2, r5, r1, lsl #2 + add r4, r5, #0x1000 + add r2, r2, #0x1000 + ldr r5, [r4, #0xd58] + ldr r2, [r2, #0xd2c] + ldr r1, [r5, r1, lsl #2] + sub r2, r6, r2 + add r7, r2, r1 + ldr r6, [r4, #0xd54] + mov r2, r0 + mov r0, r6 + mov r1, r7 + bl MOD13_02216A68 + cmp r0, #0 + bne _02212378 + ldr r1, _022123B0 ; =0x02240AFC + ldr r0, _022123C0 ; =0x00007CE0 + ldr r1, [r1] + add r5, r1, r0 + mov r0, r5 + bl MOD13_02216D78 + cmp r0, #0 + bne _02212368 + ldr r0, [r6] + cmp r0, #0 + subne r0, r0, #1 + strne r0, [r6] + bne _02212368 + add lr, r6, #0x30 + mov r4, #0 + mov ip, r4 + mov r3, lr +_022122E8: + add r0, lr, ip, lsl #4 + ldr r0, [r0, #0xc] + mov r2, ip, lsl #4 + cmp r0, #2 + bne _02212318 + cmp r4, #0 + beq _02212314 + ldr r1, [r4] + ldr r0, [lr, r2] + cmp r1, r0 + bls _02212318 +_02212314: + mov r4, r3 +_02212318: + add ip, ip, #1 + cmp ip, #4 + add r3, r3, #0x10 + blt _022122E8 + cmp r4, #0 + bne _02212334 + bl OS_Terminate +_02212334: + mov r0, #2 + str r0, [r6] + mov r0, #1 + str r0, [r4, #0xc] + bic r0, r7, #0x1f + str r0, [r4] + str r4, [r5, #0x10] + ldr r1, _022123C4 ; =MOD13_022123C8 + mov r0, r5 + mov r2, #0 + mov r3, #4 + str r6, [r5, #0x14] + bl MOD13_02216BE8 +_02212368: + add sp, sp, #0x1c + mov r0, #0x15 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02212378: + ldr r0, _022123B0 ; =0x02240AFC + ldr r4, [sp, #0xc] + ldr r2, [r0] + ldr r1, _022123B4 ; =0x000005D4 + add r0, r2, #0x1000 + ldrb r3, [r0, #0x525] + add r0, r4, #6 + mla r1, r3, r1, r2 + add r1, r1, #0x1d00 + ldrh r1, [r1, #0x4c] + bl MOD13_022141E8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_022123B0: .word 0x02240AFC +_022123B4: .word 0x000005D4 +_022123B8: .word 0x00001D2C +_022123BC: .word 0x00001788 +_022123C0: .word 0x00007CE0 +_022123C4: .word MOD13_022123C8 + + arm_func_start MOD13_022123C8 +MOD13_022123C8: ; 0x022123C8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + ldr r5, [r0, #0x14] + ldr r4, [r0, #0x10] + add r0, sp, #4 + bl FS_InitFile + ldr r1, [r5, #0x14] + add r0, r5, #0x10 + ldr r5, [r4] + bl FS_FindArchive + mvn r1, #0 + str r1, [sp] + ldr r2, [r4, #4] + mov r1, r0 + add r3, r5, r2 + add r0, sp, #4 + mov r2, r5 + bl FS_OpenFileDirect + cmp r0, #0 + beq _02212440 + ldr r1, [r4, #8] + ldr r2, [r4, #4] + add r0, sp, #4 + bl FS_ReadFile + ldr r1, [r4, #4] + cmp r1, r0 + moveq r0, #2 + streq r0, [r4, #0xc] + add r0, sp, #4 + bl FS_CloseFile +_02212440: + ldr r0, [r4, #0xc] + cmp r0, #2 + movne r0, #0 + strne r0, [r4] + movne r0, #2 + strne r0, [r4, #0xc] + add sp, sp, #0x4c + ldmia sp!, {r4, r5, lr} + bx lr + + arm_func_start MOD13_02212464 +MOD13_02212464: ; 0x02212464 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x1c + mov r4, #0 + add r0, sp, #6 + mov r1, r4 + mov r2, #0x10 + mvn r5, #0 + bl MI_CpuFill8 + ldr r1, _02212604 ; =0x02240AFC + mov r0, #1 + ldr r1, [r1] + add ip, sp, #6 +_02212494: + sub r3, r0, #1 + add r2, r1, r3, lsl #2 + add r2, r2, #0x1000 + ldr r2, [r2, #0x4e8] + cmp r2, #5 + bne _022124C4 + add r2, r1, r3 + add r2, r2, #0x1500 + ldrsb r3, [r2, #0x26] + ldrb r2, [ip, r3] + add r2, r2, #1 + strb r2, [ip, r3] +_022124C4: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #0xf + bls _02212494 + ldr r2, _02212608 ; =0x0223F780 + mov r0, #0 + ldrb r3, [r2] + add lr, sp, #6 + ldr ip, _0221260C ; =0x000005D4 +_022124EC: + add r2, r3, #1 + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #28 + add r2, r3, r2, ror #28 + and r3, r2, #0xff + mla r2, r3, ip, r1 + add r2, r2, #0x1000 + ldrb r2, [r2, #0xd52] + cmp r2, #0 + beq _02212528 + ldrb r2, [lr, r3] + cmp r2, #0 + movne r0, r3, lsl #0x18 + movne r5, r0, asr #0x18 + bne _02212538 +_02212528: + add r0, r0, #1 + and r0, r0, #0xff + cmp r0, #0x10 + blo _022124EC +_02212538: + mvn r0, #0 + cmp r5, r0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, lr} + bxeq lr + ldr r2, _02212608 ; =0x0223F780 + mov r0, #1 + strb r5, [r2] + mov r3, r0 +_02212560: + sub ip, r0, #1 + add r2, r1, ip, lsl #2 + add r2, r2, #0x1000 + ldr r2, [r2, #0x4e8] + cmp r2, #5 + bne _02212594 + add r2, r1, ip + add r2, r2, #0x1500 + ldrsb r2, [r2, #0x26] + cmp r5, r2 + orreq r2, r4, r3, lsl r0 + moveq r2, r2, lsl #0x10 + moveq r4, r2, lsr #0x10 +_02212594: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #0xf + bls _02212560 + mov r2, #3 + add r0, sp, #0 + strb r2, [sp] + strh r5, [sp, #2] + bl MOD13_022171AC + movs r1, r0 + beq _022125E4 + ldr r2, _02212604 ; =0x02240AFC + ldr r0, _02212610 ; =0x00001788 + ldr r3, [r2] + ldr r2, _0221260C ; =0x000005D4 + add r0, r3, r0 + mla r0, r5, r2, r0 + mov r2, #0xe4 + bl MI_CpuCopy8 +_022125E4: + ldr r0, _02212604 ; =0x02240AFC + mov r1, r4 + ldr r2, [r0] + mov r0, #0xea + bl MOD13_022141E8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02212604: .word 0x02240AFC +_02212608: .word 0x0223F780 +_0221260C: .word 0x000005D4 +_02212610: .word 0x00001788 + + arm_func_start MOD13_02212614 +MOD13_02212614: ; 0x02212614 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _02212654 ; =0x02240AFC + mov r4, r1 + ldr r1, [r2] + strb r0, [sp] + add r0, sp, #0 + bl MOD13_022171AC + ldr r0, _02212654 ; =0x02240AFC + mov r1, r4 + ldr r2, [r0] + mov r0, #6 + bl MOD13_022141E8 + add sp, sp, #8 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02212654: .word 0x02240AFC + + arm_func_start MOD13_02212658 +MOD13_02212658: ; 0x02212658 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, #0 + ldr r2, _02212700 ; =0x02240AFC + mov r3, r6 + ldr r1, _02212704 ; =0x000005D4 +_02212670: + ldr r0, [r2] + mla r5, r6, r1, r0 + add r0, r5, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + addne r0, r5, #0x1d00 + strneh r3, [r0, #0x4a] + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0x10 + blo _02212670 + ldr r0, _02212708 ; =0x02240A40 + mov r1, #0 + str r1, [r0] + mov r6, #1 + ldr r5, _0221270C ; =0x0000FFFF +_022126B4: + mov r0, r4 + mov r1, r6 + bl WM_ReadMPData + cmp r0, #0 + beq _022126E4 + ldrh r1, [r0] + cmp r1, r5 + beq _022126E4 + cmp r1, #0 + beq _022126E4 + mov r1, r6 + bl MOD13_02212710 +_022126E4: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0xf + bls _022126B4 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02212700: .word 0x02240AFC +_02212704: .word 0x000005D4 +_02212708: .word 0x02240A40 +_0221270C: .word 0x0000FFFF + + arm_func_start MOD13_02212710 +MOD13_02212710: ; 0x02212710 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x38 + movs r7, r1 + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r7, #0xf + addhi sp, sp, #0x38 + ldmhiia sp!, {r4, r5, r6, r7, r8, lr} + bxhi lr + add r1, sp, #0 + mov r2, r7 + add r0, r0, #0xa + bl MOD13_02217070 + ldr r3, _02212C14 ; =0x02240AFC + ldrb r8, [sp] + ldr r2, [r3] + sub r4, r7, #1 + add r1, r2, r4, lsl #2 + add r1, r1, #0x1000 + ldr r6, [r1, #0x4e8] + mov r5, r0 + cmp r8, #0xb + addls pc, pc, r8, lsl #2 + b _02212C08 +_02212774: ; jump table + b _02212C08 ; case 0 + b _02212C08 ; case 1 + b _02212C08 ; case 2 + b _02212C08 ; case 3 + b _02212C08 ; case 4 + b _02212C08 ; case 5 + b _02212C08 ; case 6 + b _022127A4 ; case 7 + b _02212A30 ; case 8 + b _02212AEC ; case 9 + b _02212B68 ; case 10 + b _02212C08 ; case 11 +_022127A4: + cmp r6, #2 + bne _02212848 + cmp r5, #0 + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + add r1, sp, #0x14 + mov r2, #0x1d + bl MI_CpuCopy8 + ldr r3, _02212C14 ; =0x02240AFC + mov r0, r4 + ldr r1, [r3] + ldr r2, [sp, #0x14] + add r1, r1, r0, lsl #2 + add r1, r1, #0x1000 + str r2, [r1, #0x4a8] + ldr r1, [r3] + mov r2, #0x16 + add r1, r1, r0, lsl #1 + mul r8, r0, r2 + ldrh ip, [sp, #0x2e] + add r1, r1, #0x1400 + add r0, sp, #0x18 + strh ip, [r1, #0x8a] + ldr r1, [r3] + add r1, r1, #0x1340 + add r1, r1, r8 + bl MI_CpuCopy8 + ldr r0, _02212C14 ; =0x02240AFC + and r1, r7, #0xff + ldr r0, [r0] + and r2, r1, #0xf + add ip, r0, #0x1340 + ldrb r3, [ip, r8] + mov r0, r7 + mov r1, #0xa + bic r3, r3, #0xf0 + orr r2, r3, r2, lsl #4 + strb r2, [ip, r8] + add r2, sp, #0x18 + bl MOD13_02213124 +_02212848: + cmp r6, #0xa + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + ldrb r8, [r5, #0x1c] + mov r2, #0 + cmp r8, #0x10 + bhs _022128A4 + ldr r0, _02212C14 ; =0x02240AFC + ldr r1, _02212C18 ; =0x000005D4 + ldr r0, [r0] + mla r6, r8, r1, r0 + add r1, r6, #0x1000 + ldrb r3, [r1, #0xd52] + cmp r3, #0 + beq _022128A4 + add r3, r0, r4, lsl #2 + ldr r1, [r1, #0xd40] + add r3, r3, #0x1000 + ldr r5, [r3, #0x4a8] + ldr r3, [r1, #0x14] + cmp r5, r3 + beq _022128C0 +_022128A4: + ldr r0, _02212C14 ; =0x02240AFC + mov r1, #4 + ldr r0, [r0] + add r0, r0, r4, lsl #1 + add r0, r0, #0x1700 + strh r1, [r0, #0x54] + b _02212924 +_022128C0: + add r3, r6, #0x1d00 + ldrh r6, [r3, #0x4e] + mov ip, r2 + mov r5, #1 +_022128D0: + mov r3, r5, lsl ip + ands r3, r3, r6 + add r3, ip, #1 + addne r2, r2, #1 + and ip, r3, #0xff + andne r2, r2, #0xff + cmp ip, #0x10 + blo _022128D0 + ldrb r1, [r1, #0x18] + cmp r2, r1 + blo _02212924 + add r1, r0, r4, lsl #1 + add r3, r1, #0x1700 + mov r2, #0 + mov r0, r7 + mov r1, #0xb + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212924: + ldr r3, _02212C14 ; =0x02240AFC + ldr r2, [r3] + add r0, r2, r4, lsl #1 + add r4, r0, #0x1700 + ldrh r0, [r4, #0x54] + cmp r0, #3 + beq _02212954 + cmp r0, #4 + beq _02212A10 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212954: + add r0, r2, #0x1500 + mov r1, #1 + ldrh r0, [r0, #0x36] + mov r6, r1, lsl r7 + ands r0, r0, r6 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, #0x1000 + ldrb r2, [r0, #0x535] + ldr r1, _02212C18 ; =0x000005D4 + sub r5, r7, #1 + add r2, r2, #1 + strb r2, [r0, #0x535] + ldr r0, [r3] + mul r4, r8, r1 + add r1, r0, #0x1500 + ldrh ip, [r1, #0x36] + mov r0, r7 + mov r2, #0 + orr r7, ip, r6 + strh r7, [r1, #0x36] + ldr r7, [r3] + mov r1, #5 + add r7, r7, r5 + add r7, r7, #0x1000 + strb r8, [r7, #0x526] + ldr r7, [r3] + add r7, r7, r4 + add r7, r7, #0x1d00 + ldrh r8, [r7, #0x4e] + orr r8, r8, r6 + strh r8, [r7, #0x4e] + ldr r7, [r3] + add r4, r7, r4 + add r4, r4, #0x1d00 + ldrh r7, [r4, #0x50] + orr r6, r7, r6 + strh r6, [r4, #0x50] + ldr r3, [r3] + add r3, r3, r5, lsl #1 + add r3, r3, #0x1700 + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A10: + mov r2, #0 + mov r0, r7 + mov r1, #4 + strh r2, [r4, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A30: + cmp r6, #5 + bne _02212A54 + mov r0, r7 + mov r1, #0xe + mov r2, #0 + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A54: + cmp r6, #0xe + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4, lsl #1 + add r0, r0, #0x1700 + ldrh r0, [r0, #0x54] + mov r5, r4, lsl #1 + cmp r0, #2 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r1, [r0, #0x526] + ldr r0, _02212C18 ; =0x000005D4 + mov r6, #1 + mul r4, r1, r0 + add r0, r2, r4 + add r1, r0, #0x1d00 + ldrh r8, [r1, #0x4c] + mov r2, #0 + mov r0, r7 + orr r6, r8, r6, lsl r7 + strh r6, [r1, #0x4c] + ldr r6, [r3] + mov r1, #6 + add r4, r6, r4 + add r4, r4, #0x1d00 + strh r2, [r4, #0x48] + ldr r3, [r3] + add r3, r3, r5 + add r3, r3, #0x1700 + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212AEC: + cmp r6, #6 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r5, [r0, #0x526] + cmp r5, #0xff + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, _02212C18 ; =0x000005D4 + ldrh r1, [sp, #2] + mul r4, r5, r0 + add r0, r2, r4 + add r0, r0, #0x1d00 + ldrh r0, [r0, #0x4a] + bl MOD13_02211EE4 + ldr r1, _02212C14 ; =0x02240AFC + ldr r2, _02212C1C ; =0x02240A40 + ldr r1, [r1] + mov r3, #1 + add r1, r1, r4 + add r1, r1, #0x1d00 + strh r0, [r1, #0x4a] + ldr r0, [r2] + add sp, sp, #0x38 + orr r0, r0, r3, lsl r5 + str r0, [r2] + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212B68: + cmp r6, #6 + bne _02212BC8 + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r3, [r0, #0x526] + cmp r3, #0xff + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, _02212C18 ; =0x000005D4 + mov r1, #1 + mla r0, r3, r0, r2 + add r3, r0, #0x1d00 + ldrh r2, [r3, #0x4c] + mvn r0, r1, lsl r7 + and r4, r2, r0 + mov r0, r7 + mov r1, #7 + mov r2, #0 + strh r4, [r3, #0x4c] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212BC8: + cmp r6, #7 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4, lsl #1 + add r3, r0, #0x1700 + ldrh r0, [r3, #0x54] + cmp r0, #5 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + mov r2, #0 + mov r0, r7 + mov r1, #8 + strh r2, [r3, #0x54] + bl MOD13_02213124 +_02212C08: + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02212C14: .word 0x02240AFC +_02212C18: .word 0x000005D4 +_02212C1C: .word 0x02240A40 + + arm_func_start MOD13_02212C20 +MOD13_02212C20: ; 0x02212C20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, r0 + mov r4, r1 + cmp r6, #0x19 + bgt _02212C84 + cmp r6, #0x19 + bge _02212ECC + cmp r6, #0x11 + bgt _02212C78 + cmp r6, #0x11 + bge _02213084 + cmp r6, #3 + bgt _02213084 + cmp r6, #0 + blt _02213084 + cmp r6, #0 + beq _02212CC0 + cmp r6, #1 + beq _02212CE4 + cmp r6, #3 + beq _02212EC0 + b _02213084 +_02212C78: + cmp r6, #0x15 + beq _02212CAC + b _02213084 +_02212C84: + cmp r6, #0xff + bgt _02212CA0 + cmp r6, #0xff + bge _02212F70 + cmp r6, #0x1c + beq _02212ED4 + b _02213084 +_02212CA0: + cmp r6, #0x100 + beq _02212FE0 + b _02213084 +_02212CAC: + mov r2, r4 + mov r0, #0 + mov r1, #1 + bl MOD13_02213124 + b _02213084 +_02212CC0: + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02213084 + cmp r0, #0x10 + bhs _02213084 + mov r2, r4 + mov r1, #2 + bl MOD13_02213124 + b _02213084 +_02212CE4: + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02213084 + cmp r0, #0x10 + bhs _02213084 + ldr r2, _022130D8 ; =0x02240AFC + sub r0, r0, #1 + ldr r3, [r2] + mov r1, #0 + add r0, r3, r0, lsl #1 + add r0, r0, #0x1400 + strh r1, [r0, #0x8a] + ldrh r3, [r4, #0x10] + ldr r5, [r2] + ldr r0, _022130DC ; =0x000014A8 + sub r2, r3, #1 + add r0, r5, r0 + add r0, r0, r2, lsl #2 + mov r2, #4 + bl MI_CpuFill8 + ldr r0, _022130D8 ; =0x02240AFC + ldrh r1, [r4, #0x10] + ldr r0, [r0] + mov r2, #0x16 + add r0, r0, #0x1340 + sub r1, r1, #1 + mla r0, r1, r2, r0 + mov r1, #0 + bl MI_CpuFill8 + ldrh r0, [r4, #0x10] + bl MOD13_02217234 + ldrh r1, [r4, #0x10] + ldr r0, _022130D8 ; =0x02240AFC + mov r3, #0 + ldr r2, [r0] + sub r1, r1, #1 + add r1, r2, r1, lsl #1 + add r1, r1, #0x1700 + strh r3, [r1, #0x54] + ldrh r8, [r4, #0x10] + ldr r5, [r0] + mvn r1, #0 + sub r7, r8, #1 + add r2, r5, r7 + add r2, r2, #0x1500 + ldrsb r3, [r2, #0x26] + cmp r3, r1 + beq _02212E0C + ldr r2, _022130E0 ; =0x000005D4 + and r3, r3, #0xff + mul r2, r3, r2 + add r3, r5, r2 + add sb, r3, #0x1d00 + mov r5, #1 + ldrh sl, [sb, #0x4e] + mvn r3, r5, lsl r8 + and sl, sl, r3 + strh sl, [sb, #0x4e] + ldr sb, [r0] + add sb, sb, r2 + add sb, sb, #0x1d00 + ldrh sl, [sb, #0x50] + orr r5, sl, r5, lsl r8 + strh r5, [sb, #0x50] + ldr r5, [r0] + add r5, r5, r7 + add r5, r5, #0x1000 + strb r1, [r5, #0x526] + ldr r0, [r0] + add r0, r0, r2 + add r0, r0, #0x1d00 + ldrh r1, [r0, #0x4c] + and r1, r1, r3 + strh r1, [r0, #0x4c] +_02212E0C: + ldr r1, _022130D8 ; =0x02240AFC + ldrh r2, [r4, #0x10] + ldr r7, [r1] + mov r3, #1 + add r0, r7, #0x1500 + ldrh r5, [r0, #0x36] + mov r0, r3, lsl r2 + ands r0, r5, r0 + beq _02212E5C + add r0, r7, #0x1000 + ldrb r2, [r0, #0x535] + sub r2, r2, #1 + strb r2, [r0, #0x535] + ldr r0, [r1] + ldrh r1, [r4, #0x10] + add r0, r0, #0x1500 + ldrh r2, [r0, #0x36] + mvn r1, r3, lsl r1 + and r1, r2, r1 + strh r1, [r0, #0x36] +_02212E5C: + ldrh r0, [r4, #0x10] + ldr r1, _022130D8 ; =0x02240AFC + ldr r2, [r1] + sub r1, r0, #1 + add r1, r2, r1, lsl #2 + add r1, r1, #0x1000 + ldr r1, [r1, #0x4e8] + cmp r1, #8 + bne _02212E8C + mov r1, #9 + mov r2, #0 + bl MOD13_02213124 +_02212E8C: + ldrh r0, [r4, #0x10] + mov r2, r4 + mov r1, #3 + bl MOD13_02213124 + ldrh r1, [r4, #0x10] + ldr r0, _022130D8 ; =0x02240AFC + mov r3, #0 + ldr r2, [r0] + sub r0, r1, #1 + add r0, r2, r0, lsl #2 + add r0, r0, #0x1000 + str r3, [r0, #0x4e8] + b _02213084 +_02212EC0: + mov r0, r4 + bl MOD13_02212658 + b _02213084 +_02212ECC: + bl MOD13_02211F78 + b _02213084 +_02212ED4: + mov r5, #0 + ldr sb, _022130D8 ; =0x02240AFC + ldr r7, _022130E4 ; =0x0000186C + ldr r8, _022130E0 ; =0x000005D4 + mov sl, r5 +_02212EE8: + mul r4, r5, r8 + ldr r1, [sb] + add r2, r1, r4 + add r0, r2, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + beq _02212F38 + add r0, r2, #0x1d00 + ldrh r3, [r0, #0x50] + cmp r3, #0 + beq _02212F38 + ldrh r2, [r0, #0x4e] + add r0, r1, r7 + add r0, r0, r4 + add r1, r1, #0x1340 + bl MOD13_022148D4 + ldr r0, [sb] + add r0, r0, r4 + add r0, r0, #0x1d00 + strh sl, [r0, #0x50] +_02212F38: + add r0, r5, #1 + and r5, r0, #0xff + cmp r5, #0x10 + blo _02212EE8 + bl MOD13_02214BF4 + mov r5, r0 + bl MOD13_02214BE0 + mov r4, r0 + bl MOD13_02214B80 + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl MOD13_02214768 + b _02213084 +_02212F70: + ldrh r0, [r4, #2] + cmp r0, #0xf + addls pc, pc, r0, lsl #2 + b _02212FD0 +_02212F80: ; jump table + b _02212FD0 ; case 0 + b _02212FC0 ; case 1 + b _02212FD0 ; case 2 + b _02212FD0 ; case 3 + b _02212FC0 ; case 4 + b _02212FC0 ; case 5 + b _02212FC0 ; case 6 + b _02212FD0 ; case 7 + b _02212FC0 ; case 8 + b _02212FC0 ; case 9 + b _02212FD0 ; case 10 + b _02212FD0 ; case 11 + b _02212FD0 ; case 12 + b _02212FD0 ; case 13 + b _02212FD0 ; case 14 + b _02212FD0 ; case 15 +_02212FC0: + mov r0, #0 + mov r1, #9 + bl MOD13_02211EA4 + b _02213084 +_02212FD0: + mov r0, #0 + mov r1, #8 + bl MOD13_02211EA4 + b _02213084 +_02212FE0: + ldrh r0, [r4] + cmp r0, #0x1d + addls pc, pc, r0, lsl #2 + b _02213078 +_02212FF0: ; jump table + b _02213068 ; case 0 + b _02213078 ; case 1 + b _02213078 ; case 2 + b _02213078 ; case 3 + b _02213078 ; case 4 + b _02213078 ; case 5 + b _02213078 ; case 6 + b _02213068 ; case 7 + b _02213068 ; case 8 + b _02213078 ; case 9 + b _02213078 ; case 10 + b _02213078 ; case 11 + b _02213078 ; case 12 + b _02213068 ; case 13 + b _02213068 ; case 14 + b _02213068 ; case 15 + b _02213078 ; case 16 + b _02213068 ; case 17 + b _02213068 ; case 18 + b _02213078 ; case 19 + b _02213078 ; case 20 + b _02213068 ; case 21 + b _02213078 ; case 22 + b _02213078 ; case 23 + b _02213078 ; case 24 + b _02213068 ; case 25 + b _02213078 ; case 26 + b _02213078 ; case 27 + b _02213078 ; case 28 + b _02213068 ; case 29 +_02213068: + mov r0, #0 + mov r1, #9 + bl MOD13_02211EA4 + b _02213084 +_02213078: + mov r0, #0 + mov r1, #8 + bl MOD13_02211EA4 +_02213084: + cmp r6, #0x11 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxne lr + ldr r1, _022130D8 ; =0x02240AFC + mov r0, #0 + ldr r1, [r1] + mov r2, #0x7d00 + add r3, r1, #0x1000 + ldr r4, [r3, #0x4e4] + bl MIi_CpuClearFast + ldr r1, _022130D8 ; =0x02240AFC + mov r0, #0 + str r0, [r1] + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + mov r2, r0 + mov r1, #0xc + blx r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_022130D8: .word 0x02240AFC +_022130DC: .word 0x000014A8 +_022130E0: .word 0x000005D4 +_022130E4: .word 0x0000186C + + arm_func_start MOD13_022130E8 +MOD13_022130E8: ; 0x022130E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _02213120 ; =0x02240AFC + ldr r3, [r3] + add r3, r3, #0x1000 + ldr r3, [r3, #0x4e4] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + blx r3 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02213120: .word 0x02240AFC + + arm_func_start MOD13_02213124 +MOD13_02213124: ; 0x02213124 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213158 + ldr r0, _02213170 ; =0x02240AFC + sub r1, r6, #1 + ldr r0, [r0] + add r0, r0, r1, lsl #2 + add r0, r0, #0x1000 + str r5, [r0, #0x4e8] +_02213158: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_022130E8 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02213170: .word 0x02240AFC + + arm_func_start MOD13_02213174 +MOD13_02213174: ; 0x02213174 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r1 + mov r7, r0 + bl OS_DisableInterrupts + mov r4, r0 + cmp r5, #3 + addls pc, pc, r5, lsl #2 + b _022131D8 +_02213198: ; jump table + b _022131A8 ; case 0 + b _022131B4 ; case 1 + b _022131C0 ; case 2 + b _022131CC ; case 3 +_022131A8: + mov r5, #0xa + mov r6, #4 + b _022131F0 +_022131B4: + mov r5, #0xa + mov r6, #3 + b _022131F0 +_022131C0: + mov r5, #0xe + mov r6, #2 + b _022131F0 +_022131CC: + mov r5, #7 + mov r6, #5 + b _022131F0 +_022131D8: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022131F0: + ldr r0, _0221326C ; =0x02240AFC + ldr r0, [r0] + cmp r0, #0 + beq _02213254 + mov r0, r7 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213254 + ldr r0, _0221326C ; =0x02240AFC + sub r2, r7, #1 + ldr r1, [r0] + add r0, r1, r2, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r5, r0 + bne _02213254 + add r0, r1, r2, lsl #1 + add r1, r0, #0x1700 + mov r0, r4 + strh r6, [r1, #0x54] + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213254: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221326C: .word 0x02240AFC + + arm_func_start MOD13_02213270 +MOD13_02213270: ; 0x02213270 + stmdb sp!, {r4, lr} + ldr r1, _022132C8 ; =0x02240AFC + mov r4, r0 + ldr r1, [r1] + cmp r1, #0 + beq _022132BC + bl MOD13_02211EC8 + cmp r0, #0 + beq _022132BC + ldr r0, _022132C8 ; =0x02240AFC + sub r1, r4, #1 + ldr r0, [r0] + add r0, r0, r1, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r0, #7 + moveq r0, #1 + ldmeqia sp!, {r4, lr} + bxeq lr +_022132BC: + mov r0, #0 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_022132C8: .word 0x02240AFC + + arm_func_start MOD13_022132CC +MOD13_022132CC: ; 0x022132CC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _02213360 ; =0x02240AFC + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + beq _02213348 + mov r0, r5 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213348 + ldr r0, _02213360 ; =0x02240AFC + sub r3, r5, #1 + ldr ip, [r0] + ldr r1, _02213364 ; =0x00001772 + add r0, ip, #0x1340 + mov r2, #0x16 + mla r0, r3, r2, r0 + add r1, ip, r1 + bl MI_CpuCopy8 + mov r0, r4 + bl OS_RestoreInterrupts + ldr r1, _02213360 ; =0x02240AFC + ldr r0, _02213364 ; =0x00001772 + ldr r1, [r1] + add sp, sp, #4 + add r0, r1, r0 + ldmia sp!, {r4, r5, lr} + bx lr +_02213348: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02213360: .word 0x02240AFC +_02213364: .word 0x00001772 + + arm_func_start MOD13_02213368 +MOD13_02213368: ; 0x02213368 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02213390 ; =0x02240AFC + ldr r1, [r1] + add r1, r1, #0x1000 + str r4, [r1, #0x4e4] + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02213390: .word 0x02240AFC + + arm_func_start MOD13_02213394 +MOD13_02213394: ; 0x02213394 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _02213498 ; =0x0223C420 + ldr r3, [r3, r0, lsl #2] + cmp r3, #0 + beq _022133BC + cmp r3, #1 + beq _022133CC + cmp r3, #2 + bne _02213478 +_022133BC: + bl MOD13_022134A8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_022133CC: + cmp r1, #0x2000000 + blo _02213444 + ldr r0, _0221349C ; =0x023FE800 + cmp r1, r0 + bhs _02213444 + cmp r1, #0x2300000 + add r1, r1, r2 + bhs _02213400 + cmp r1, #0x2300000 + addhi sp, sp, #4 + movhi r0, #0 + ldmhiia sp!, {lr} + bxhi lr +_02213400: + cmp r1, #0x2300000 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {lr} + bxls lr + ldr r0, _0221349C ; =0x023FE800 + cmp r1, r0 + bhs _02213434 + cmp r2, #0x40000 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {lr} + bxls lr +_02213434: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {lr} + bx lr +_02213444: + ldr r0, _022134A0 ; =0x037F8000 + cmp r1, r0 + blo _02213488 + ldr r0, _022134A4 ; =0x0380F000 + cmp r1, r0 + bhs _02213488 + add r1, r1, r2 + cmp r1, r0 + movls r0, #1 + add sp, sp, #4 + movhi r0, #0 + ldmia sp!, {lr} + bx lr +_02213478: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {lr} + bx lr +_02213488: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02213498: .word 0x0223C420 +_0221349C: .word 0x023FE800 +_022134A0: .word 0x037F8000 +_022134A4: .word 0x0380F000 + + arm_func_start MOD13_022134A8 +MOD13_022134A8: ; 0x022134A8 + ldr r3, _0221354C ; =0x0223C420 + ldr r0, [r3, r0, lsl #2] + cmp r0, #0 + beq _022134EC + cmp r0, #1 + beq _02213508 + cmp r0, #2 + bne _0221353C + ldr r0, _02213550 ; =0x027FFE00 + cmp r1, r0 + blo _02213544 + ldr r0, _02213554 ; =0x027FFF60 + add r1, r1, r2 + cmp r1, r0 + bhi _02213544 + mov r0, #1 + bx lr +_022134EC: + cmp r1, #0x2000000 + blo _02213544 + add r0, r1, r2 + cmp r0, #0x22c0000 + bhi _02213544 + mov r0, #1 + bx lr +_02213508: + cmp r1, #0x22c0000 + blo _02213520 + add r0, r1, r2 + cmp r0, #0x2300000 + movls r0, #1 + bxls lr +_02213520: + cmp r1, #0x2000000 + blo _02213544 + add r0, r1, r2 + cmp r0, #0x2300000 + bhi _02213544 + mov r0, #1 + bx lr +_0221353C: + mov r0, #0 + bx lr +_02213544: + mov r0, #0 + bx lr + .align 2, 0 +_0221354C: .word 0x0223C420 +_02213550: .word 0x027FFE00 +_02213554: .word 0x027FFF60 + + arm_func_start MOD13_02213558 +MOD13_02213558: ; 0x02213558 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldrh r4, [r1, #0x12] + cmp r2, r4 + addhs sp, sp, #4 + movhs r0, #0 + ldmhsia sp!, {r4, r5, lr} + bxhs lr + mov ip, #2 +_0221357C: + add r4, r1, ip, lsl #1 + ldrh r4, [r4, #0xc] + cmp r2, r4 + bhs _0221359C + sub r4, ip, #1 + mov ip, r4, lsl #0x18 + movs ip, ip, asr #0x18 + bpl _0221357C +_0221359C: + cmp ip, #0 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, lr} + bxlt lr + ldr r4, _02213628 ; =0x02240AFC + add r5, r1, ip, lsl #1 + ldr lr, [r4] + ldrh r5, [r5, #0xc] + add lr, lr, #0x1000 + ldr lr, [lr, #0x318] + sub r5, r2, r5 + mul r2, r5, lr + add r3, r3, #0xc + add r5, r3, ip, lsl #4 + ldr r3, [r5, #8] + sub r3, r3, r2 + str r3, [r0, #4] + ldr r3, [r4] + ldr r4, [r0, #4] + add r3, r3, #0x1000 + ldr r3, [r3, #0x318] + cmp r4, r3 + strhi r3, [r0, #4] + ldr r1, [r1, ip, lsl #2] + add r1, r2, r1 + str r1, [r0, #8] + ldr r1, [r5] + add r1, r2, r1 + str r1, [r0] + strb ip, [r0, #0xc] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02213628: .word 0x02240AFC + + arm_func_start MOD13_0221362C +MOD13_0221362C: ; 0x0221362C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r5, r0 + add r4, r5, #0xc + cmp r1, #0 + mov r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + mov r2, r0 +_0221364C: + str r0, [r5, r2, lsl #2] + add r3, r1, r2, lsl #4 + add r2, r2, #1 + ldr r3, [r3, #0x14] + and r2, r2, #0xff + cmp r2, #3 + add r0, r0, r3 + blo _0221364C + mov r8, #0 + strh r8, [r4] + ldr r6, _02213704 ; =0x02240AFC + add r7, r1, #0xc +_0221367C: + ldr r0, [r6] + add sl, r7, r8, lsl #4 + add r0, r0, #0x1000 + ldr r1, [r0, #0x318] + ldr sb, [sl, #8] + add r0, sb, r1 + sub r0, r0, #1 + bl _u32_div_f + mov r1, r8, lsl #1 + ldrh r3, [r4, r1] + mov r2, r0, lsl #0x10 + ldr r1, [sl, #4] + add r2, r3, r2, lsr #16 + mov r3, r2, lsl #0x10 + mov r2, sb + mov r0, r8 + mov sb, r3, lsr #0x10 + bl MOD13_02213394 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + cmp r8, #2 + addlo r0, r8, #1 + movlo r0, r0, lsl #1 + strloh sb, [r4, r0] + add r0, r8, #1 + and r8, r0, #0xff + strhsh sb, [r5, #0x12] + cmp r8, #3 + blo _0221367C + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_02213704: .word 0x02240AFC + + arm_func_start MOD13_02213708 +MOD13_02213708: ; 0x02213708 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, [r1] + mov r7, r2 + mov r6, r3 + cmp r1, #0 + beq _02213740 + cmp r1, #1 + beq _022137A4 + cmp r1, #2 + beq _02213880 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213740: + ldr r2, [r0, #0x28] + add r3, r0, #0x28 + cmp r2, #0x2000000 + blo _02213794 + cmp r2, #0x22c0000 + bhs _02213794 + ldr r1, [r3, #4] + add r0, r2, r1 + cmp r0, #0x22c0000 + bhi _02213794 + str r1, [r7, #8] + ldr r0, [r3] + add sp, sp, #4 + str r0, [r7, #4] + ldr r0, [r7, #4] + str r0, [r7] + ldr r0, [r7, #0xc] + bic r0, r0, #1 + str r0, [r7, #0xc] + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213794: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022137A4: + add r4, r0, #0x38 + ldr r2, [r0, #0x38] + ldr r1, [r4, #4] + mov ip, #0 + mov r5, ip + cmp r2, #0x2000000 + add r3, r2, r1 + blo _022137F4 + ldr r0, _022138B0 ; =0x023FE800 + cmp r2, r0 + bhs _022137F4 + cmp r3, #0x2300000 + bls _02213820 + cmp r3, r0 + bhs _022137EC + cmp r1, #0x40000 + movls r5, #1 + bls _02213820 +_022137EC: + mov ip, #1 + b _02213820 +_022137F4: + ldr r0, _022138B4 ; =0x037F8000 + cmp r2, r0 + blo _0221381C + ldr r0, _022138B8 ; =0x0380F000 + cmp r2, r0 + bhs _0221381C + cmp r3, r0 + movls r5, #1 + movhi ip, #1 + b _02213820 +_0221381C: + mov ip, #1 +_02213820: + cmp ip, #1 + bne _0221382C + bl OS_Terminate +_0221382C: + ldr r0, [r4, #4] + cmp r5, #0 + str r0, [r7, #8] + ldr r0, [r4] + str r0, [r7, #4] + ldreq r0, [r7, #4] + streq r0, [r7] + beq _02213864 + ldr r0, [r6] + str r0, [r7] + ldr r1, [r6] + ldr r0, [r7, #8] + add r0, r1, r0 + str r0, [r6] +_02213864: + ldr r0, [r7, #0xc] + add sp, sp, #4 + bic r0, r0, #1 + orr r0, r0, #1 + str r0, [r7, #0xc] + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213880: + mov r1, #0x160 + ldr r0, _022138BC ; =0x027FFE00 + str r1, [r7, #8] + str r0, [r7, #4] + ldr r0, [r7, #4] + str r0, [r7] + ldr r0, [r7, #0xc] + bic r0, r0, #1 + str r0, [r7, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_022138B0: .word 0x023FE800 +_022138B4: .word 0x037F8000 +_022138B8: .word 0x0380F000 +_022138BC: .word 0x027FFE00 + + arm_func_start MOD13_022138C0 +MOD13_022138C0: ; 0x022138C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r2, #0x22c0000 + mov r5, r1 + str r2, [sp] + mov r6, r0 + ldr r0, [r5, #0x24] + ldr r4, _02213940 ; =0x0223C420 + str r0, [r6] + ldr r0, [r5, #0x34] + add r8, r5, #0x160 + str r0, [r6, #4] + add sl, r6, #0xc + mov sb, #0 + add r7, sp, #0 +_022138FC: + mov r0, r5 + mov r1, r4 + mov r2, sl + mov r3, r7 + bl MOD13_02213708 + add sb, sb, #1 + cmp sb, #3 + add sl, sl, #0x10 + add r4, r4, #4 + blt _022138FC + mov r0, r8 + add r1, r6, #0x3c + mov r2, #0x88 + bl MI_CpuCopy8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_02213940: .word 0x0223C420 + + arm_func_start MOD13_02213944 +MOD13_02213944: ; 0x02213944 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + mov r6, #0xff + bl OS_DisableInterrupts + mov r5, r0 + bl MOD13_02214B60 + cmp r0, #0 + bne _02213984 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213984: + ldr r0, _02213BFC ; =0x02240AFC + ldr r0, [r0] + add r1, r0, #0x1000 + ldrb r1, [r1, #0x524] + add r1, r1, #1 + cmp r1, #0x10 + ble _022139B8 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_022139B8: + ldr r1, _02213C00 ; =0x000005D4 + mov r4, #0 +_022139C0: + mla r2, r4, r1, r0 + add r2, r2, #0x1000 + ldr r3, [r2, #0xd40] + cmp r3, sb + bne _022139EC + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_022139EC: + ldrb r2, [r2, #0xd52] + cmp r2, #0 + moveq r6, r4 + beq _02213A0C + add r2, r4, #1 + and r4, r2, #0xff + cmp r4, #0x10 + blo _022139C0 +_02213A0C: + cmp r4, #0x10 + bne _02213A2C + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213A2C: + ldr r1, _02213C00 ; =0x000005D4 + ldr r2, _02213BFC ; =0x02240AFC + mul r4, r6, r1 + add r0, r0, r4 + add r0, r0, #0x1000 + str sb, [r0, #0xd40] + ldr r2, [r2] + ldr r0, _02213C04 ; =0x00001788 + mov r1, r8 + add r0, r2, r0 + add r7, r0, r4 + mov r0, r7 + bl MOD13_022138C0 + add r0, sb, #0x1c + add r1, r7, #0xc4 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C08 ; =0x00001D2C + ldr r2, [r1] + mov r1, r7 + add r0, r2, r0 + add r0, r0, r4 + bl MOD13_0221362C + cmp r0, #0 + bne _02213AAC + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213AAC: + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C0C ; =0x0000186C + ldr r2, [r1] + mov r1, sb + add r0, r2, r0 + add r0, r0, r4 + add r2, r2, #0x1300 + bl MOD13_02214A0C + ldr r2, _02213BFC ; =0x02240AFC + ldr r1, _02213C0C ; =0x0000186C + ldr r0, [r2] + add r0, r0, r4 + add r0, r0, #0x1000 + strb r6, [r0, #0xd21] + ldr r0, [r2] + add r0, r0, r1 + add r0, r0, r4 + bl MOD13_02214868 + ldr r0, _02213C10 ; =0x02240A44 + ldr r1, _02213BFC ; =0x02240AFC + ldrb r7, [r0] + ldr r3, [r1] + mov r2, #1 + add r6, r7, #1 + add r3, r3, r4 + strb r6, [r0] + add r0, r3, #0x1000 + strb r7, [r0, #0xd1f] + ldr r0, [r1] + add r3, r8, #0x1e8 + add r0, r0, r4 + add r0, r0, #0x1d00 + strh r2, [r0, #0x4e] + ldr r0, [r1] + add r2, r8, #0x258 + add r0, r0, r4 + add r0, r0, #0x1000 + str r8, [r0, #0xd44] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + str r3, [r0, #0xd54] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + str r2, [r0, #0xd58] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + ldr r0, [r0, #0xd54] + ldr r0, [r0, #0x6c] + cmp r0, #0 + beq _02213BB8 + bl MOD13_02216DA4 + cmp r0, #0 + bne _02213BB8 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C14 ; =0x00007CE0 + ldr r1, [r1] + add r0, r1, r0 + bl MOD13_02216D90 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C18 ; =0x000074E0 + ldr r2, [r1] + mov r1, #0x800 + add r0, r2, r0 + bl MOD13_02216DC0 +_02213BB8: + ldr r2, _02213BFC ; =0x02240AFC + mov r3, #1 + ldr r1, [r2] + mov r0, r5 + add r1, r1, r4 + add r1, r1, #0x1000 + strb r3, [r1, #0xd52] + ldr r1, [r2] + add r1, r1, #0x1000 + ldrb r2, [r1, #0x524] + add r2, r2, #1 + strb r2, [r1, #0x524] + bl OS_RestoreInterrupts + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_02213BFC: .word 0x02240AFC +_02213C00: .word 0x000005D4 +_02213C04: .word 0x00001788 +_02213C08: .word 0x00001D2C +_02213C0C: .word 0x0000186C +_02213C10: .word 0x02240A44 +_02213C14: .word 0x00007CE0 +_02213C18: .word 0x000074E0 + + arm_func_start MOD13_02213C1C +MOD13_02213C1C: ; 0x02213C1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov lr, r1 + ldr ip, [r0] + ldr r1, [r0, #0xc] + cmp lr, #0x4000 + movlo lr, #0x4000 + cmp r2, #0x8000 + movhi r2, #0x8000 + cmp lr, ip + add r1, ip, r1 + movlo lr, ip + cmp r2, r1 + movhi r2, r1 + cmp lr, r2 + addhs sp, sp, #4 + ldmhsia sp!, {lr} + bxhs lr + cmp r3, #0 + beq _02213C8C + ldr r0, [r0, #8] + sub r2, r2, lr + add r0, r0, lr + mov r1, #0 + bl MI_CpuFill8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_02213C8C: + ldr r3, [r0, #4] + ldr r1, [r0, #8] + add r0, r3, lr + add r1, r1, lr + sub r2, r2, lr + bl MI_CpuCopy8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + + arm_func_start MOD13_02213CB0 +MOD13_02213CB0: ; 0x02213CB0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x6c + str r2, [sp, #4] + cmp r2, #0x164 + mov r2, #0 + mov sl, r0 + mov sb, r1 + str r2, [sp, #8] + blo _022140F4 + ldr r8, [sp, #4] + mov r7, sb + str r2, [sp, #0xc] + mov r6, r2 + mov r5, r2 + cmp sl, #0 + add r7, r7, #0x160 + sub r8, r8, #0x160 + beq _02213D24 + ldr r4, [sl, #0x2c] + ldr r3, [sl, #0x24] + mov r2, #0x160 + sub fp, r4, r3 + bl FS_ReadFile + cmp r0, #0x160 + ldr r4, [sb, #0x80] + movlt r8, r5 + cmp r4, #0 + moveq r4, #0x1000000 + b _02213D9C +_02213D24: + ldr r0, _02214104 ; =0x027FFE00 + mov r1, #1 + ldr r4, [r0, #0x80] + add r0, sp, #0x20 + cmp r4, #0 + moveq r4, #0x1000000 + str r1, [sp, #0xc] + bl FS_InitFile + ldr r0, _02214108 ; =0x0223F788 + mov r1, #3 + bl FS_FindArchive + mov r1, r0 + mvn r0, #0 + str r0, [sp] + add r0, sp, #0x20 + mov r2, #0 + add r3, r4, #0x88 + bl FS_OpenFileDirect + ldr r2, [sp, #0x4c] + ldr r1, [sp, #0x44] + ldr r0, _02214104 ; =0x027FFE00 + sub fp, r2, r1 + mov r1, sb + mov r2, #0x160 + add sl, sp, #0x20 + bl MI_CpuCopy8 + ldr r1, [sb, #0x60] + ldr r0, _0221410C ; =0x00406000 + orr r0, r1, r0 + str r0, [sb, #0x60] +_02213D9C: + cmp r8, #0x88 + movlo r8, #0 + blo _02213DD0 + mov r0, sl + add r1, fp, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + mov r1, r7 + mov r2, #0x88 + bl FS_ReadFile + add r7, r7, #0x88 + sub r8, r8, #0x88 +_02213DD0: + cmp r8, #0x70 + blo _02213E40 + mov r0, r7 + mov r6, r7 + bl MOD13_02216B80 + add r7, r7, #0x70 + sub r8, r8, #0x70 + mov r0, #3 + str r0, [sp] + mov r0, r6 + mov r1, #0 + mov r2, #0x160 + mov r3, sb + bl MOD13_02216B0C + ldr r0, [sl, #8] + mov r4, #0 + b _02213E18 +_02213E14: + add r4, r4, #1 +_02213E18: + cmp r4, #3 + bge _02213E2C + ldrsb r1, [r0, r4] + cmp r1, #0 + bne _02213E14 +_02213E2C: + mov r2, r4 + add r1, r6, #0x10 + bl MI_CpuCopy8 + str r4, [r6, #0x14] + b _02213E44 +_02213E40: + mov r8, #0 +_02213E44: + cmp r8, #0x10 + movlo r8, #0 + blo _02213E8C + mov r0, #0 + str r0, [r7] + ldr r0, [sl, #0x24] + ldr r1, [sb, #0x20] + add r0, fp, r0 + add r0, r1, r0 + str r0, [r7, #4] + ldr r0, [sl, #0x24] + ldr r1, [sb, #0x30] + add r0, fp, r0 + add r0, r1, r0 + mov r5, r7 + str r0, [r7, #8] + add r7, r7, #0x10 + sub r8, r8, #0x10 +_02213E8C: + ldr r1, [sb, #0x2c] + ldr r0, [sb, #0x3c] + add r0, r1, r0 + cmp r8, r0 + blo _02213F38 + ldr r4, [sl, #0x24] + ldr r1, [r5, #4] + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + ldr r2, [sb, #0x2c] + mov r0, sl + mov r1, r7 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + ldr r1, [r5, #4] + ldr r2, [sb, #0x2c] + mov r0, r6 + mov r3, r7 + bl MOD13_02216B0C + ldr r1, [sb, #0x2c] + mov r0, sl + add r7, r7, r1 + ldr r1, [r5, #8] + mov r2, #0 + sub r1, r1, r4 + bl FS_SeekFile + ldr r2, [sb, #0x3c] + mov r0, sl + mov r1, r7 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + ldr r1, [r5, #8] + ldr r2, [sb, #0x3c] + mov r3, r7 + mov r0, r6 + bl MOD13_02216B0C + mov r0, #1 + str r0, [sp, #8] + b _0221400C +_02213F38: + cmp r8, #0xcc00 + blo _0221400C + ldr r4, [sl, #0x24] + ldr r5, [r5, #4] + mov r0, sl + sub r1, r5, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + mov r1, r7 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + mov r0, r6 + mov r1, r5 + mov r2, #0x4400 + mov r3, r7 + bl MOD13_02216B0C + add r1, r5, #0x4400 + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + add r1, r7, #0x4400 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #2 + str r0, [sp] + mov r0, r6 + add r1, r5, #0x4400 + mov r2, #0x4400 + add r3, r7, #0x4400 + bl MOD13_02216B0C + add r1, r5, #0x8800 + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + add r1, r7, #0x8800 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #2 + str r0, [sp] + add r1, r5, #0x8800 + add r3, r7, #0x8800 + mov r0, r6 + mov r2, #0x4400 + bl MOD13_02216B0C + mov r0, #1 + str r0, [sp, #8] +_0221400C: + mov r0, sl + mov r1, fp + mov r2, #0 + bl FS_SeekFile + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _022140DC + add r0, sp, #0x20 + bl FS_CloseFile + ldr r0, [sp, #8] + cmp r0, #0 + beq _022140DC + ldr r1, [sb, #0x20] + ldr r0, _02214110 ; =0x0223F784 + str r1, [sp, #0x10] + ldr r2, [sb, #0x28] + ldr r1, [sb, #0x20] + ldr r4, [r0] + sub r0, r2, r1 + str r0, [sp, #0x14] + ldr r2, [r6, #0x48] + ldr r1, [sb, #0x20] + add r0, sp, #0x10 + sub r1, r2, r1 + str r1, [sp, #0x18] + ldr r1, [sp, #4] + mov r2, #0x8000 + str r1, [sp, #0x1c] + mov r1, #0x4000 + mov r3, #1 + bl MOD13_02213C1C + ldr r0, [r4, #4] + cmp r0, #0 + beq _022140C4 + add r7, sp, #0x10 + mov r5, #0 +_0221409C: + ldr r1, [r4] + ldr r2, [r4, #4] + mov r0, r7 + mov r3, r5 + add r2, r1, r2 + bl MOD13_02213C1C + add r4, r4, #8 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0221409C +_022140C4: + ldr r1, [sb, #0x28] + ldr r2, _02214114 ; =0x02000A74 + ldr r3, [r6, #0x48] + ldr r0, _02214118 ; =0xE12FFF1E + sub r1, r2, r1 + str r0, [r3, r1] +_022140DC: + ldr r0, [sp, #8] + cmp r0, #0 + beq _022140F4 + ldr r1, [sp, #4] + mov r0, sb + bl DC_FlushRange +_022140F4: + ldr r0, [sp, #8] + add sp, sp, #0x6c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bx lr + .align 2, 0 +_02214104: .word 0x027FFE00 +_02214108: .word 0x0223F788 +_0221410C: .word 0x00406000 +_02214110: .word 0x0223F784 +_02214114: .word 0x02000A74 +_02214118: .word 0xE12FFF1E + + arm_func_start MOD13_0221411C +MOD13_0221411C: ; 0x0221411C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x64 + mov r6, #0 + movs r7, r0 + mov r5, r6 + beq _02214168 + ldr ip, [r7, #0x2c] + ldr r3, [r7, #0x24] + add r1, sp, #0 + mov r2, #0x60 + sub r4, ip, r3 + bl FS_ReadFile + cmp r0, #0x60 + mov r0, r7 + mov r1, r4 + mov r2, #0 + addhs r6, sp, #0 + bl FS_SeekFile + b _0221416C +_02214168: + ldr r6, _0221419C ; =0x027FFE00 +_0221416C: + cmp r6, #0 + beq _0221418C + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + add r1, r1, #0x268 + add r5, r1, r0 + cmp r5, #0x10000 + movlo r5, #0x10000 +_0221418C: + mov r0, r5 + add sp, sp, #0x64 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221419C: .word 0x027FFE00 + + arm_func_start MOD13_022141A0 +MOD13_022141A0: ; 0x022141A0 + mov r2, r1, asr #1 + cmp r2, #0 + mov r3, #0 + ble _022141C4 +_022141B0: + ldrh r1, [r0], #2 + sub r2, r2, #1 + cmp r2, #0 + add r3, r3, r1 + bgt _022141B0 +_022141C4: + ldr r0, _022141E4 ; =0x0000FFFF + and r1, r3, r0 + add r1, r1, r3, lsr #16 + add r1, r1, r1, lsr #16 + eor r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + .align 2, 0 +_022141E4: .word 0x0000FFFF + + arm_func_start MOD13_022141E8 +MOD13_022141E8: ; 0x022141E8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r4, r2 + add r2, r6, #0x1f + mov r5, r1 + mov r0, r4 + bic r1, r2, #0x1f + bl DC_FlushRange + bl DC_WaitWriteBufferEmpty + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl MOD13_02214C08 + ldmia sp!, {r4, r5, r6, lr} + bx lr + + arm_func_start MOD13_02214224 +MOD13_02214224: ; 0x02214224 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r3, _022144AC ; =0x02240A50 + str r0, [sp, #8] + ldr r0, [r3, #4] + ldrb r3, [r3, #0xe] + ldrb r0, [r0, #0x4b4] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + cmp r3, r0 + beq _02214254 + bl MOD13_022144C8 +_02214254: + ldr r3, _022144B0 ; =0x02240A80 + ldr r1, _022144AC ; =0x02240A50 + ldrb r2, [r3, #4] + ldr r0, [r1, #4] + ldrb r5, [r1, #0x11] + bic r2, r2, #3 + orr r2, r2, #2 + strb r2, [r3, #4] + ldrb r4, [r0, #0x4b3] + ldrb r2, [r1, #0xe] + ldrb r7, [r3, #4] + strb r4, [r3, #5] + strb r2, [r3, #6] + ldr r4, [r0, #0x4b8] + ldr r2, _022144B4 ; =0x02240A48 + str r4, [r3] + ldrb r6, [r0, #0x4b5] + add r4, r5, #1 + bic r7, r7, #0xfc + and r6, r6, #0x3f + orr r6, r7, r6, lsl #2 + strb r6, [r3, #4] + strb r4, [r1, #0x11] + strb r5, [r3, #7] + ldrb r4, [r0, #0x358] + add r1, r0, #0x300 + ldr r2, [r2] + strb r4, [r3, #0xa] + ldrh r4, [r1, #0x5a] + cmp r2, #0 + strh r4, [r3, #0xc] + ldrh r1, [r1, #0x5c] + strh r1, [r3, #0xe] + bne _022142F4 + ldr r1, _022144B8 ; =0x02240A4C + ldr r1, [r1] + cmp r1, #0 + beq _022142F4 + ldr r0, [r0, #0x4b8] + blx r1 +_022142F4: + ldr r0, _022144AC ; =0x02240A50 + ldr r1, _022144B0 ; =0x02240A80 + ldr r2, [r0, #4] + mov r3, #0 +_02214304: + ldrb r0, [r2, #0x4a8] + add r3, r3, #1 + cmp r3, #8 + strb r0, [r1, #0x68] + add r2, r2, #1 + add r1, r1, #1 + blt _02214304 + ldr r1, _022144BC ; =0x02240A90 + mov r0, #0 + mov r2, #0x58 + bl MIi_CpuClear16 + ldr r0, _022144AC ; =0x02240A50 + mov sl, #0 + ldr r1, [r0, #4] + ldr sb, _022144BC ; =0x02240A90 + add r0, r1, #0x400 + add r1, r1, #0x300 + ldrh r2, [r0, #0xb0] + ldrh r0, [r1, #0x5a] + mov r5, sl + mov r8, sl + eor r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + mov fp, #0x16 + mov r4, #2 +_0221436C: + mov r6, r4, lsl r5 + ands r0, r7, r6 + beq _022143C0 + ldr r0, _022144AC ; =0x02240A50 + mov r1, sb + ldr r2, [r0, #4] + ldr r0, _022144C0 ; =0x0000035E + add r0, r2, r0 + add r0, r0, r8 + mov r2, fp + bl MIi_CpuCopy16 + ldr r0, _022144AC ; =0x02240A50 + add sl, sl, #1 + ldr r0, [r0, #4] + add sb, sb, #0x16 + add r0, r0, #0x400 + ldrh r1, [r0, #0xb0] + cmp sl, #4 + orr r1, r1, r6 + strh r1, [r0, #0xb0] + beq _022143D0 +_022143C0: + add r5, r5, #1 + cmp r5, #0xf + add r8, r8, #0x16 + blt _0221436C +_022143D0: + cmp sl, #4 + bhs _022143F0 + mov r0, #0x16 + mul r1, sl, r0 + ldr r2, _022144BC ; =0x02240A90 + ldrb r0, [r2, r1] + bic r0, r0, #0xf0 + strb r0, [r2, r1] +_022143F0: + ldr r2, _022144B0 ; =0x02240A80 + mov r3, #0 + ldr r0, _022144C4 ; =0x02240A88 + mov r1, #0x68 + strh r3, [r2, #8] + bl MOD13_022141A0 + ldr r2, _022144AC ; =0x02240A50 + ldr r1, _022144B0 ; =0x02240A80 + ldr r3, [r2, #4] + strh r0, [r1, #8] + add r0, r3, #0x400 + add r1, r3, #0x300 + ldrh r3, [r0, #0xb0] + ldrh r0, [r1, #0x5a] + ldr r1, _022144B0 ; =0x02240A80 + cmp r3, r0 + moveq r0, #1 + streqb r0, [r2, #0xc] + ldr r0, [sp, #0x10] + ldr r3, [sp, #8] + orr r2, r0, #3 + ldr r0, [sp, #0xc] + and r4, r2, #0xff + str r0, [sp] + mov r0, #0 + mov r2, #0x70 + str r4, [sp, #4] + bl WM_SetGameInfo + ldr r0, _022144B4 ; =0x02240A48 + ldr r0, [r0] + cmp r0, #1 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bxne lr + ldr r0, _022144B8 ; =0x02240A4C + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bxeq lr + ldr r0, _022144AC ; =0x02240A50 + ldr r0, [r0, #4] + ldr r0, [r0, #0x4b8] + blx r1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bx lr + .align 2, 0 +_022144AC: .word 0x02240A50 +_022144B0: .word 0x02240A80 +_022144B4: .word 0x02240A48 +_022144B8: .word 0x02240A4C +_022144BC: .word 0x02240A90 +_022144C0: .word 0x0000035E +_022144C4: .word 0x02240A88 + + arm_func_start MOD13_022144C8 +MOD13_022144C8: ; 0x022144C8 + ldr r1, _022144F4 ; =0x02240A50 + mov r3, #1 + ldr r0, [r1, #4] + mov r2, #5 + add r0, r0, #0x400 + strh r3, [r0, #0xb0] + ldr r0, [r1, #4] + ldrb r0, [r0, #0x4b4] + strb r0, [r1, #0xe] + strb r2, [r1, #0xc] + bx lr + .align 2, 0 +_022144F4: .word 0x02240A50 + + arm_func_start MOD13_022144F8 +MOD13_022144F8: ; 0x022144F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r3, _02214660 ; =0x02240A50 + mov r6, r0 + ldr r0, [r3, #4] + ldr r3, [r3, #8] + add r7, r0, #0x358 + add r0, r3, #0x62 + cmp r0, r7 + mov r5, r1 + ldrls r0, _02214664 ; =0x02240A80 + movls r1, #0x62 + mov r4, r2 + strlsb r1, [r0, #0xc] + bls _02214558 + ldr r0, _02214664 ; =0x02240A80 + sub r1, r7, r3 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0xc] + ldr r1, _02214668 ; =0x02240A8E + mov r0, #0 + add r1, r1, r2 + rsb r2, r2, #0x62 + bl MIi_CpuClear16 +_02214558: + ldr r0, _02214664 ; =0x02240A80 + ldr r1, _02214660 ; =0x02240A50 + ldrb r2, [r0, #0xc] + ldr r0, [r1, #8] + ldr r1, _02214668 ; =0x02240A8E + bl MIi_CpuCopy16 + ldr r3, _02214660 ; =0x02240A50 + ldr r2, _02214664 ; =0x02240A80 + ldrb r8, [r3, #0xf] + ldrb r1, [r3, #0x10] + ldrb r7, [r2, #4] + strb r8, [r2, #0xa] + ldr r0, [r3, #4] + strb r1, [r2, #0xb] + ldrb r1, [r0, #0x4b2] + bic r7, r7, #3 + ldrb r8, [r3, #0xe] + and r1, r1, #3 + orr r1, r7, r1 + strb r1, [r2, #4] + ldrb ip, [r0, #0x4b3] + ldrb r1, [r2, #4] + ldrb r7, [r3, #0x11] + strb ip, [r2, #5] + strb r8, [r2, #6] + ldr r8, [r0, #0x4b8] + bic r1, r1, #0xfc + str r8, [r2] + ldrb r0, [r0, #0x4b5] + add lr, r7, #1 + mov ip, #0 + and r0, r0, #0x3f + orr r8, r1, r0, lsl #2 + ldr r0, _0221466C ; =0x02240A88 + mov r1, #0x68 + strb r8, [r2, #4] + strb lr, [r3, #0x11] + strb r7, [r2, #7] + strh ip, [r2, #8] + bl MOD13_022141A0 + ldr r1, _02214660 ; =0x02240A50 + ldr r2, _02214664 ; =0x02240A80 + ldrb ip, [r1, #0xf] + strh r0, [r2, #8] + ldrb r3, [r1, #0x10] + add r0, ip, #1 + strb r0, [r1, #0xf] + ldrb r0, [r1, #0xf] + mov r2, #0x70 + cmp r0, r3 + ldrlo r0, [r1, #8] + mov r3, r6 + addlo r0, r0, #0x62 + strlo r0, [r1, #8] + movhs r0, #4 + strhsb r0, [r1, #0xc] + orr r0, r4, #3 + and r4, r0, #0xff + str r5, [sp] + ldr r1, _02214664 ; =0x02240A80 + mov r0, #0 + str r4, [sp, #4] + bl WM_SetGameInfo + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02214660: .word 0x02240A50 +_02214664: .word 0x02240A80 +_02214668: .word 0x02240A8E +_0221466C: .word 0x02240A88 + + arm_func_start MOD13_02214670 +MOD13_02214670: ; 0x02214670 + ldr r0, _022146B8 ; =0x02240A50 + ldrb r1, [r0, #0xc] + cmp r1, #2 + bxne lr + ldr r2, [r0, #4] + ldrb r1, [r2, #0x4b2] + cmp r1, #0 + moveq r1, #9 + streqb r1, [r0, #0x10] + streq r2, [r0, #8] + addne r1, r2, #0x220 + movne r2, #4 + strne r1, [r0, #8] + strneb r2, [r0, #0x10] + ldr r0, _022146B8 ; =0x02240A50 + mov r1, #3 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_022146B8: .word 0x02240A50 + + arm_func_start MOD13_022146BC +MOD13_022146BC: ; 0x022146BC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02214760 ; =0x02240A50 + ldr r1, [r0] + cmp r1, #0 + bne _02214710 + bl MOD13_02214BF4 + mov r4, r0 + bl MOD13_02214BE0 + str r0, [sp] + mov ip, #8 + ldr r1, _02214764 ; =0x02240A80 + mov r3, r4 + mov r0, #0 + mov r2, #0x70 + str ip, [sp, #4] + bl WM_SetGameInfo + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, lr} + bx lr +_02214710: + ldr r0, [r0, #4] + cmp r0, #0 + beq _0221472C + ldr r0, [r0, #0x4bc] + cmp r0, #0 + beq _0221472C + mov r1, r0 +_0221472C: + ldr r0, _02214760 ; =0x02240A50 + str r1, [r0, #4] + bl MOD13_02214810 + ldr r1, _02214760 ; =0x02240A50 + mov r2, #2 + ldr r3, [r1, #4] + mov r0, #1 + ldrb r3, [r3, #0x4b4] + strb r3, [r1, #0xe] + strb r2, [r1, #0xc] + add sp, sp, #8 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02214760: .word 0x02240A50 +_02214764: .word 0x02240A80 + + arm_func_start MOD13_02214768 +MOD13_02214768: ; 0x02214768 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + ldr r4, _0221480C ; =0x02240A50 +_02214780: + ldrb r0, [r4, #0xc] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02214780 +_02214790: ; jump table + b _022147AC ; case 0 + b _022147AC ; case 1 + b _022147C4 ; case 2 + b _022147CC ; case 3 + b _022147E8 ; case 4 + b _022147F0 ; case 5 + b _02214780 ; case 6 +_022147AC: + bl MOD13_022146BC + cmp r0, #0 + bne _02214780 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022147C4: + bl MOD13_02214670 + b _02214780 +_022147CC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_022144F8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022147E8: + bl MOD13_022144C8 + b _02214780 +_022147F0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_02214224 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221480C: .word 0x02240A50 + + arm_func_start MOD13_02214810 +MOD13_02214810: ; 0x02214810 + ldr r0, _02214830 ; =0x02240A50 + mov r1, #0 + strb r1, [r0, #0xd] + strb r1, [r0, #0xe] + strb r1, [r0, #0xf] + strb r1, [r0, #0x10] + strb r1, [r0, #0x11] + bx lr + .align 2, 0 +_02214830: .word 0x02240A50 + + arm_func_start MOD13_02214834 +MOD13_02214834: ; 0x02214834 + ldr r1, _0221485C ; =0x02240A50 + mov r3, #0 + ldr r0, _02214860 ; =0x02240A4C + mov r2, #1 + ldr ip, _02214864 ; =MOD13_02214810 + str r3, [r1] + str r3, [r1, #4] + strb r2, [r1, #0xc] + str r3, [r0] + bx ip + .align 2, 0 +_0221485C: .word 0x02240A50 +_02214860: .word 0x02240A4C +_02214864: .word MOD13_02214810 + + arm_func_start MOD13_02214868 +MOD13_02214868: ; 0x02214868 + ldr r1, _022148A8 ; =0x02240A50 + ldr r2, [r1] + cmp r2, #0 + streq r0, [r1] + beq _0221489C + ldr r1, [r2, #0x4bc] + cmp r1, #0 + beq _02214898 +_02214888: + mov r2, r1 + ldr r1, [r1, #0x4bc] + cmp r1, #0 + bne _02214888 +_02214898: + str r0, [r2, #0x4bc] +_0221489C: + mov r1, #0 + str r1, [r0, #0x4bc] + bx lr + .align 2, 0 +_022148A8: .word 0x02240A50 + + arm_func_start MOD13_022148AC +MOD13_022148AC: ; 0x022148AC + ldrh r1, [r0], #2 + mov r2, #0 + cmp r1, #0 + beq _022148CC +_022148BC: + ldrh r1, [r0], #2 + add r2, r2, #1 + cmp r1, #0 + bne _022148BC +_022148CC: + mov r0, r2 + bx lr + + arm_func_start MOD13_022148D4 +MOD13_022148D4: ; 0x022148D4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r4, _02214950 ; =0x0000035E + mov r6, r0 + mov r5, r2 + mov r0, r1 + ldr r2, _02214954 ; =0x0000014A + add r1, r6, r4 + mov r4, r3 + mov r7, #1 + bl MIi_CpuCopy16 + mov r2, #0 + mov r1, #2 +_02214908: + mov r0, r1, lsl r2 + ands r0, r5, r0 + addne r0, r7, #1 + add r2, r2, #1 + andne r7, r0, #0xff + cmp r2, #0xf + blt _02214908 + strb r7, [r6, #0x358] + orr r1, r5, #1 + add r0, r6, #0x300 + strh r1, [r0, #0x5a] + strh r4, [r0, #0x5c] + ldrb r0, [r6, #0x4b4] + add r0, r0, #1 + strb r0, [r6, #0x4b4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02214950: .word 0x0000035E +_02214954: .word 0x0000014A + + arm_func_start MOD13_02214958 +MOD13_02214958: ; 0x02214958 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + cmp r2, #0 + movne r4, #0x200 + moveq r4, #0x20 + mov r6, r0 + mov r5, r1 + cmp r2, #0 + addne r5, r5, #0x20 + cmp r6, #0 + addeq sp, sp, #0x48 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + bxeq lr + add r0, sp, #0 + bl FS_InitFile + add r0, sp, #0 + mov r1, r6 + bl FS_OpenFile + cmp r0, #0 + addeq sp, sp, #0x48 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + bxeq lr + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x24] + sub r0, r1, r0 + cmp r4, r0 + beq _022149E4 + add r0, sp, #0 + bl FS_CloseFile + add sp, sp, #0x48 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_022149E4: + add r0, sp, #0 + mov r1, r5 + mov r2, r4 + bl FS_ReadFile + add r0, sp, #0 + bl FS_CloseFile + mov r0, #1 + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, lr} + bx lr + + arm_func_start MOD13_02214A0C +MOD13_02214A0C: ; 0x02214A0C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r1, r6 + mov r0, #0 + mov r2, #0x4c0 + bl MIi_CpuClear16 + mov r0, #0 + strb r0, [r6, #0x4b2] + ldr r0, [r5, #0xc] + mov r1, r6 + mov r2, #1 + bl MOD13_02214958 + cmp r0, #0 + moveq r7, #1 + ldr r0, [r5, #0x10] + mov r1, r6 + mov r2, #0 + movne r7, #0 + bl MOD13_02214958 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + orrs r0, r7, r0 + beq _02214A90 + mov r3, #1 + mov r1, r6 + mov r0, #0 + mov r2, #0x220 + strb r3, [r6, #0x4b2] + bl MIi_CpuClearFast +_02214A90: + ldr r0, [r5, #0x14] + cmp r4, #0 + str r0, [r6, #0x4b8] + beq _02214AB0 + mov r0, r4 + add r1, r6, #0x220 + mov r2, #0x16 + bl MIi_CpuCopy16 +_02214AB0: + ldrb r0, [r5, #0x18] + strb r0, [r6, #0x236] + ldr r0, [r5, #4] + bl MOD13_022148AC + mov r2, r0, lsl #0x11 + ldr r0, [r5, #4] + add r1, r6, #0x238 + mov r2, r2, lsr #0x10 + bl MIi_CpuCopy16 + ldr r0, [r5, #8] + add r1, r6, #0x298 + mov r2, #0xc0 + bl MIi_CpuCopy16 + mov r1, #1 + strb r1, [r6, #0x358] + add r0, r6, #0x300 + strh r1, [r0, #0x5a] + add r0, r6, #0x400 + strh r1, [r0, #0xb0] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + + arm_func_start MOD13_02214B08 +MOD13_02214B08: ; 0x02214B08 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #2 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + ldr r2, _02214B5C ; =0x02240AF8 + strh r0, [sp] + ldr r0, [r2] + strh r1, [sp, #2] + ldr r2, [r0, #0x51c] + add r1, sp, #0 + mov r0, #0xff + blx r2 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02214B5C: .word 0x02240AF8 + + arm_func_start MOD13_02214B60 +MOD13_02214B60: ; 0x02214B60 + ldr r0, _02214B7C ; =0x02240AF8 + ldr r0, [r0] + ldrb r0, [r0, #0x50d] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02214B7C: .word 0x02240AF8 + + arm_func_start MOD13_02214B80 +MOD13_02214B80: ; 0x02214B80 + ldr r0, _02214BDC ; =0x02240AF8 + ldr r1, [r0] + ldrh r0, [r1, #0x12] + cmp r0, #0 + ldrh r0, [r1, #0xe] + movne r2, #2 + moveq r2, #0 + cmp r0, #0 + movne r3, #1 + ldrh r0, [r1, #0x14] + moveq r3, #0 + cmp r0, #0 + movne ip, #4 + ldrh r0, [r1, #0x16] + moveq ip, #0 + cmp r0, #0 + movne r1, #8 + orr r0, r3, r2 + moveq r1, #0 + orr r0, ip, r0 + orr r0, r1, r0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02214BDC: .word 0x02240AF8 + + arm_func_start MOD13_02214BE0 +MOD13_02214BE0: ; 0x02214BE0 + ldr r0, _02214BF0 ; =0x02240AF8 + ldr r0, [r0] + ldrh r0, [r0, #0xc] + bx lr + .align 2, 0 +_02214BF0: .word 0x02240AF8 + + arm_func_start MOD13_02214BF4 +MOD13_02214BF4: ; 0x02214BF4 + ldr r0, _02214C04 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_02214C04: .word 0x02240AF8 + + arm_func_start MOD13_02214C08 +MOD13_02214C08: ; 0x02214C08 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr ip, _02214D04 ; =0x02240AF8 + mov r3, r1, lsl #0x10 + ldr r5, [ip] + mov ip, r2, lsl #0x10 + add lr, r5, #0x500 + ldrh r4, [lr, #0x28] + mov r1, r0 + mov r2, r3, lsr #0x10 + cmp r4, #0 + mov r4, ip, lsr #0x10 + beq _02214C48 + ldrh r0, [lr, #0x26] + cmp r0, #1 + bne _02214C58 +_02214C48: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, lr} + bx lr +_02214C58: + ldrh r0, [lr, #0x24] + cmp r0, #1 + beq _02214C70 + cmp r0, #2 + beq _02214CBC + b _02214CF4 +_02214C70: + ldrh r0, [lr, #0x2c] + cmp r0, #0 + moveq r0, #0x3e8 + movne r0, #0 + mov r3, r0, lsl #0x10 + str r4, [sp] + ldr r0, [r5, #0x508] + mov r3, r3, lsr #0x10 + bl MOD13_02214D0C + cmp r0, #2 + ldreq r1, _02214D04 ; =0x02240AF8 + moveq r2, #1 + ldreq r1, [r1] + add sp, sp, #4 + streqb r2, [r1, #0x50c] + cmp r0, #2 + moveq r0, #0 + ldmia sp!, {r4, r5, lr} + bx lr +_02214CBC: + ldr r0, _02214D08 ; =MOD13_02215724 + mov r3, #0 + str r4, [sp] + bl MOD13_02214D0C + cmp r0, #2 + ldreq r1, _02214D04 ; =0x02240AF8 + moveq r2, #1 + ldreq r1, [r1] + add sp, sp, #4 + streqb r2, [r1, #0x50c] + cmp r0, #2 + moveq r0, #0 + ldmia sp!, {r4, r5, lr} + bx lr +_02214CF4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02214D04: .word 0x02240AF8 +_02214D08: .word MOD13_02215724 + + arm_func_start MOD13_02214D0C +MOD13_02214D0C: ; 0x02214D0C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldrh r4, [sp, #0x18] + mov r3, r2 + mov r2, r1 + str r4, [sp] + mov r4, #1 + str r4, [sp, #4] + mov r4, #3 + mov r1, #0 + str r4, [sp, #8] + bl WM_SetMPDataToPortEx + mov r4, r0 + mov r1, r4 + mov r0, #0xf + bl MOD13_02214B08 + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start MOD13_02214D5C +MOD13_02214D5C: ; 0x02214D5C + ldr r1, _02214D68 ; =0x02240B00 + strh r0, [r1, #6] + bx lr + .align 2, 0 +_02214D68: .word 0x02240B00 + + arm_func_start MOD13_02214D6C +MOD13_02214D6C: ; 0x02214D6C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, _02214F08 ; =MOD13_02216098 + mov r1, r5 + bl WM_Disconnect + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + cmp r5, #0x10 + addhs sp, sp, #4 + ldmhsia sp!, {r4, r5, r6, r7, lr} + bxhs lr + ldr r2, _02214F0C ; =0x02240AFC + sub r4, r5, #1 + ldr r0, [r2] + mov r1, #0 + add r0, r0, r4, lsl #1 + add r0, r0, #0x1400 + strh r1, [r0, #0x8a] + ldr r3, [r2] + ldr r0, _02214F10 ; =0x000014A8 + mov r2, #4 + add r0, r3, r0 + add r0, r0, r4, lsl #2 + bl MI_CpuFill8 + ldr r0, _02214F0C ; =0x02240AFC + mov r2, #0x16 + ldr r0, [r0] + mov r1, #0 + add r0, r0, #0x1340 + mla r0, r4, r2, r0 + bl MI_CpuFill8 + mov r0, r5 + bl MOD13_02217234 + ldr lr, _02214F0C ; =0x02240AFC + mov r2, #0 + ldr r1, [lr] + mvn r0, #0 + add r1, r1, r4, lsl #1 + add r1, r1, #0x1700 + strh r2, [r1, #0x54] + ldr r3, [lr] + add r1, r3, r4 + add r1, r1, #0x1500 + ldrsb r2, [r1, #0x26] + cmp r2, r0 + beq _02214E9C + ldr r1, _02214F14 ; =0x000005D4 + and r2, r2, #0xff + mul r1, r2, r1 + add r2, r3, r1 + add ip, r2, #0x1d00 + mov r3, #1 + ldrh r6, [ip, #0x4e] + mvn r2, r3, lsl r5 + and r6, r6, r2 + strh r6, [ip, #0x4e] + ldr r7, [lr] + mov r6, r4 + add r7, r7, r1 + add ip, r7, #0x1d00 + ldrh r7, [ip, #0x50] + orr r3, r7, r3, lsl r5 + strh r3, [ip, #0x50] + ldr r3, [lr] + add r3, r3, r6 + add r3, r3, #0x1000 + strb r0, [r3, #0x526] + ldr r0, [lr] + add r0, r0, r1 + add r0, r0, #0x1d00 + ldrh r1, [r0, #0x4c] + and r1, r1, r2 + strh r1, [r0, #0x4c] +_02214E9C: + ldr r1, _02214F0C ; =0x02240AFC + mov r0, #1 + ldr r2, [r1] + mov r5, r0, lsl r5 + add r0, r2, #0x1500 + ldrh r0, [r0, #0x36] + ands r0, r0, r5 + beq _02214EE4 + add r0, r2, #0x1000 + ldrb r3, [r0, #0x535] + mvn r2, r5 + sub r3, r3, #1 + strb r3, [r0, #0x535] + ldr r0, [r1] + add r0, r0, #0x1500 + ldrh r1, [r0, #0x36] + and r1, r1, r2 + strh r1, [r0, #0x36] +_02214EE4: + ldr r0, _02214F0C ; =0x02240AFC + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + add r0, r0, #0x1000 + str r1, [r0, #0x4e8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02214F08: .word MOD13_02216098 +_02214F0C: .word 0x02240AFC +_02214F10: .word 0x000014A8 +_02214F14: .word 0x000005D4 + + arm_func_start MOD13_02214F18 +MOD13_02214F18: ; 0x02214F18 + stmdb sp!, {r4, lr} + bl OS_DisableInterrupts + ldr r1, _02214F54 ; =0x02240AFC + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _02214F40 + bl OS_Terminate +_02214F40: + bl MOD13_02214F58 + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02214F54: .word 0x02240AFC + + arm_func_start MOD13_02214F58 +MOD13_02214F58: ; 0x02214F58 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, #1 + bl OS_DisableInterrupts + ldr r1, _02214FD8 ; =0x02240AF8 + mov r4, r0 + ldr r2, [r1] + add r0, r2, #0x500 + ldrh r0, [r0, #0x26] + cmp r0, #0 + bne _02214FC0 + mov r0, #0 + str r0, [r2, #0x5e4] + ldr r0, [r1] + mov r1, r5 + add r0, r0, #0x500 + strh r1, [r0, #0x26] + bl MOD13_02216DA4 + cmp r0, #0 + beq _02214FB8 + ldr r0, _02214FDC ; =MOD13_02214FE0 + bl MOD13_02216B94 + mov r5, #0 + b _02214FC0 +_02214FB8: + bl MOD13_02214FEC + mov r5, r0 +_02214FC0: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02214FD8: .word 0x02240AF8 +_02214FDC: .word MOD13_02214FE0 + + arm_func_start MOD13_02214FE0 +MOD13_02214FE0: ; 0x02214FE0 + ldr ip, _02214FE8 ; =MOD13_02214FEC + bx ip + .align 2, 0 +_02214FE8: .word MOD13_02214FEC + + arm_func_start MOD13_02214FEC +MOD13_02214FEC: ; 0x02214FEC + stmdb sp!, {r4, lr} + ldr r0, _02215024 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_Reset + mov r4, r0 + mov r1, r4 + mov r0, #1 + bl MOD13_02214B08 + cmp r4, #2 + moveq r4, #0 + mov r0, r4 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02215024: .word 0x02240AF8 + + arm_func_start MOD13_02215028 +MOD13_02215028: ; 0x02215028 + ldr r1, _02215044 ; =0x02240AFC + ldr ip, _02215048 ; =MOD13_0221504C + ldr r1, [r1] + mov r2, #1 + add r1, r1, #0x1000 + str r2, [r1, #0x320] + bx ip + .align 2, 0 +_02215044: .word 0x02240AFC +_02215048: .word MOD13_0221504C + + arm_func_start MOD13_0221504C +MOD13_0221504C: ; 0x0221504C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02215234 ; =0x02240AF8 + ldr r2, _02215238 ; =0x02240AFC + ldr r3, [r1] + ldr r1, _0221523C ; =0x00007D1F + strh r4, [r3, #0x32] + ldr r3, [r2] + ldr r2, _02215240 ; =0x02240AF4 + add r1, r3, r1 + bic r1, r1, #0x1f + mov r4, r0 + str r1, [r2] + add r0, r3, #0x1000 + ldr r5, [r0, #0x4e4] + ldr r2, _02215244 ; =0x000069C0 + add r1, r3, #0x1340 + mov r0, #0 + bl MIi_CpuClear16 + mov r0, r5 + bl MOD13_02213368 + ldr r1, _02215234 ; =0x02240AF8 + ldr r0, _02215238 ; =0x02240AFC + ldr r3, [r1] + ldr r2, [r0] + add r0, r3, #0x500 + ldrh r3, [r0] + add r0, r2, #0x1000 + sub r2, r3, #6 + str r2, [r0, #0x318] + ldr r0, [r1] + add r0, r0, #0x500 + ldrh r0, [r0, #2] + bl MOD13_022172A0 + ldr r1, _02215238 ; =0x02240AFC + ldr r0, _02215248 ; =0x00001538 + ldr r1, [r1] + add r0, r1, r0 + bl MOD13_02217280 + mov r5, #0 + ldr r2, _02215238 ; =0x02240AFC + mov r0, r5 + mvn r3, #0 +_02215100: + ldr r1, [r2] + add r1, r1, r5, lsl #2 + add r1, r1, #0x1000 + str r0, [r1, #0x4e8] + ldr r1, [r2] + add r1, r1, r5 + add r1, r1, #0x1000 + add r5, r5, #1 + strb r3, [r1, #0x526] + cmp r5, #0xf + blt _02215100 + ldr r1, [r2] + ldr r3, _0221524C ; =0x00001788 + add r1, r1, #0x1000 + strb r0, [r1, #0x524] + ldr r1, [r2] + ldr r2, _02215250 ; =0x00005D40 + add r1, r1, r3 + bl MIi_CpuClear16 + ldr r1, _02215238 ; =0x02240AFC + ldr r0, _02215254 ; =0x00001754 + ldr r2, [r1] + mov r1, #0 + add r0, r2, r0 + mov r2, #0x1e + bl MI_CpuFill8 + ldr r2, _02215234 ; =0x02240AF8 + mov r3, #1 + ldr r0, [r2] + ldr r1, _02215258 ; =MOD13_02212C20 + add r0, r0, #0x500 + strh r3, [r0, #0x24] + ldr r0, [r2] + ldr r3, _0221525C ; =MOD13_02216098 + str r1, [r0, #0x51c] + ldr r0, [r2] + mov r1, #0xf + str r3, [r0, #0x508] + ldr r3, [r2] + add r0, r3, #0x500 + ldrh r0, [r0] + strh r0, [r3, #0x34] + ldr r0, [r2] + ldrh r3, [r0, #0x34] + add r0, r0, #0x500 + add r3, r3, #0x23 + bic r3, r3, #0x1f + strh r3, [r0, #0x18] + ldr r3, [r2] + add r0, r3, #0x500 + ldrh r0, [r0, #2] + strh r0, [r3, #0x36] + ldr r0, [r2] + ldrh r2, [r0, #0x36] + add r0, r0, #0x500 + add r2, r2, #0xe + mul r1, r2, r1 + add r1, r1, #0x29 + bic r1, r1, #0x1f + mov r1, r1, lsl #1 + strh r1, [r0, #0x1a] + bl MOD13_02214834 + bl MOD13_02215260 + mov r5, r0 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0xf + mov r1, #1 + bl PXI_IsCallbackReady + ldr r1, _02215238 ; =0x02240AFC + ldr r1, [r1] + add r1, r1, #0x7000 + str r0, [r1, #0x4c8] + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02215234: .word 0x02240AF8 +_02215238: .word 0x02240AFC +_0221523C: .word 0x00007D1F +_02215240: .word 0x02240AF4 +_02215244: .word 0x000069C0 +_02215248: .word 0x00001538 +_0221524C: .word 0x00001788 +_02215250: .word 0x00005D40 +_02215254: .word 0x00001754 +_02215258: .word MOD13_02212C20 +_0221525C: .word MOD13_02216098 + + arm_func_start MOD13_02215260 +MOD13_02215260: ; 0x02215260 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02215350 ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + mov r0, #0xa + add r1, r1, #0x500 + strh r3, [r1, #0x28] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x2a] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x26] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x48] + bl MOD13_02214D5C + ldr r0, _02215354 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _02215320 + ldr r6, _02215358 ; =0x02240AF4 + ldr r5, _02215350 ; =0x02240AF8 + ldr r4, _0221535C ; =0x02240AF0 +_022152C8: + ldr r1, [r5] + ldrh r2, [r4] + ldr r0, [r6] + ldr r1, [r1, #0x508] + bl WM_Initialize + cmp r0, #4 + beq _022152C8 + cmp r0, #2 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, lr} + bxne lr + ldr r0, _02215350 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_SetIndCallback + ldr r0, _02215350 ; =0x02240AF8 + mov r2, #1 + ldr r1, [r0] + mov r0, #0 + strb r2, [r1, #0x50d] + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02215320: + ldr r0, _02215350 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_SetIndCallback + ldr r0, _02215350 ; =0x02240AF8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x50d] + bl MOD13_02216910 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02215350: .word 0x02240AF8 +_02215354: .word 0x02240AFC +_02215358: .word 0x02240AF4 +_0221535C: .word 0x02240AF0 + + arm_func_start MOD13_02215360 +MOD13_02215360: ; 0x02215360 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r1 + bl OS_DisableInterrupts + ldr r1, _02215400 ; =0x02240AF8 + mov r6, r0 + ldr r1, [r1] + ldrb r1, [r1, #0x50d] + cmp r1, #0 + beq _02215398 + bl OS_RestoreInterrupts + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02215398: + mov r0, r5 + mov r2, r4 + mov r1, #8 + bl MOD13_02215404 + cmp r0, #0 + bne _022153C4 + mov r0, r6 + bl OS_RestoreInterrupts + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_022153C4: + ldr r2, _02215400 ; =0x02240AF8 + mov r0, r6 + ldr r1, [r2] + mov r3, #8 + strh r4, [r1, #0x10] + ldr r1, [r2] + add r1, r1, #0x500 + strh r5, [r1] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #2] + bl OS_RestoreInterrupts + mov r0, #1 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02215400: .word 0x02240AF8 + + arm_func_start MOD13_02215404 +MOD13_02215404: ; 0x02215404 + ldr r3, _02215468 ; =0x000001FE + cmp r0, r3 + bhi _02215418 + cmp r0, #0xe4 + bhs _02215420 +_02215418: + mov r0, #0 + bx lr +_02215420: + cmp r1, #0x10 + bhi _02215430 + cmp r1, #8 + bhs _02215438 +_02215430: + mov r0, #0 + bx lr +_02215438: + add r1, r1, #0x20 + mov r3, r1, lsl #2 + ldr r1, _0221546C ; =0x0000014A + add r0, r0, #0x26 + add r1, r1, r0, lsl #2 + add r0, r3, #0x70 + mla r1, r2, r0, r1 + ldr r0, _02215470 ; =0x000015E0 + cmp r1, r0 + movlt r0, #1 + movge r0, #0 + bx lr + .align 2, 0 +_02215468: .word 0x000001FE +_0221546C: .word 0x0000014A +_02215470: .word 0x000015E0 + + arm_func_start MOD13_02215474 +MOD13_02215474: ; 0x02215474 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r4, _0221567C ; =0x02240AFC + mov sb, r1 + ldr r1, [r4] + mov r8, r2 + mov r7, r3 + cmp r1, #0 + beq _022154B4 + add r1, r1, #0x1300 + ldrh r1, [r1, #0x16] + cmp r1, #0 + addne sp, sp, #4 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, lr} + bxne lr +_022154B4: + add r1, r0, #0x1f + ldr r0, _02215680 ; =0x00001E1F + bic r6, r1, #0x1f + add r0, r6, r0 + cmp r7, #0x10000 + bic r5, r0, #0x1f + bne _022154D8 + bl WM_GetNextTgid + mov r7, r0 +_022154D8: + bl OS_DisableInterrupts + ldr ip, _02215684 ; =0x02240AF8 + ldr r3, _0221567C ; =0x02240AFC + mov r4, r0 + ldr r1, [sp, #0x20] + ldr r0, _02215688 ; =0x02240AF0 + ldr r2, _0221568C ; =0x0000FFFF + strh r1, [r0] + ldr r0, _02215690 ; =0x0223F798 + ldr r1, _02215694 ; =0x0223F78C + strh r2, [r0] + mov r2, #5 + ldr r0, _02215698 ; =0x0223F790 + strh r2, [r1] + mov r2, #0x28 + ldr r1, _0221569C ; =0x0223F794 + strh r2, [r0] + ldr r0, _022156A0 ; =0x0223F7A0 + strh r2, [r1] + mov r2, #1 + mov r1, r6 + str r2, [r0] + mov r0, #0 + mov r2, #0x1e00 + str r6, [ip] + str r5, [r3] + bl MIi_CpuClear32 + mov r1, r5 + mov r0, #0 + mov r2, #0x1340 + bl MIi_CpuClear16 + ldrb r0, [sb, #1] + add r1, r6, #0x530 + mov r2, #0 + cmp r0, #0 + ble _02215584 +_02215568: + add r0, sb, r2, lsl #1 + ldrh r0, [r0, #2] + add r2, r2, #1 + strh r0, [r1], #2 + ldrb r0, [sb, #1] + cmp r2, r0 + blt _02215568 +_02215584: + ldr r0, _022156A4 ; =0x00000538 + mov r3, #0 + add ip, r6, r0 + ldr r0, _022156A8 ; =0x0223F79C +_02215594: + ldr r2, [r0] + ldrh r1, [r2] + cmp r1, #0 + beq _022155C0 + add r1, r2, #2 + str r1, [r0] + ldrh r1, [r2] + add r3, r3, #1 + cmp r3, #0x10 + strh r1, [ip], #2 + blt _02215594 +_022155C0: + mov r0, sb + add r1, r5, #0x1300 + mov r2, #0x16 + bl MI_CpuCopy8 + ldrb r0, [sb, #1] + mov r2, #0 + cmp r0, #0xa + addlo r0, r5, r0, lsl #1 + addlo r0, r0, #0x1300 + movlo r1, #0 + strloh r1, [r0, #2] + add r0, r6, #0x500 + mov r1, #0x100 + strh r1, [r0] + mov r1, #8 + strh r1, [r0, #2] + strh r2, [r0, #0x18] + strh r2, [r0, #0x1a] + mov r1, #1 + strh r1, [r0, #0x2c] + add r0, r5, #0x400 + str r0, [r6, #0x504] + strh r2, [r6, #0xe] + strh r2, [r6, #0x12] + strh r1, [r6, #0x16] + strh r2, [r6, #0x14] + str r8, [r6, #8] + strh r7, [r6, #0xc] + bl MOD13_022156AC + add r0, r0, #0xc8 + strh r0, [r6, #0x18] + mov r0, #0xf + strh r0, [r6, #0x10] + mov r3, #0 + strb r3, [r6, #0x50c] + strb r3, [r6, #0x50d] + add r1, r5, #0x1300 + mov r2, #1 + strh r2, [r1, #0x16] + add r1, r5, #0x1000 + mov r0, r4 + str r3, [r1, #0x31c] + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_0221567C: .word 0x02240AFC +_02215680: .word 0x00001E1F +_02215684: .word 0x02240AF8 +_02215688: .word 0x02240AF0 +_0221568C: .word 0x0000FFFF +_02215690: .word 0x0223F798 +_02215694: .word 0x0223F78C +_02215698: .word 0x0223F790 +_0221569C: .word 0x0223F794 +_022156A0: .word 0x0223F7A0 +_022156A4: .word 0x00000538 +_022156A8: .word 0x0223F79C + + arm_func_start MOD13_022156AC +MOD13_022156AC: ; 0x022156AC + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + bl OS_GetMacAddress + mov r2, #0 + add r1, sp, #0 + mov r3, r2 +_022156C8: + ldrb r0, [r1] + add r2, r2, #1 + cmp r2, #6 + add r3, r3, r0 + add r1, r1, #1 + blt _022156C8 + ldr r1, _02215718 ; =0x027FFC3C + mov r0, #7 + ldr r2, [r1] + ldr r1, _0221571C ; =0xCCCCCCCD + add r2, r3, r2 + mul r3, r2, r0 + umull r1, r0, r3, r1 + ldr r2, _02215720 ; =0x00000014 + mov r0, r0, lsr #4 + umull r0, r1, r2, r0 + sub r0, r3, r0 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02215718: .word 0x027FFC3C +_0221571C: .word 0xCCCCCCCD +_02215720: .word 0x00000014 + + arm_func_start MOD13_02215724 +MOD13_02215724: ; 0x02215724 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r6, r0 + ldrh r0, [r6] + ldr r1, _02215F98 ; =0x02240AF8 + cmp r0, #0x1d + ldr r5, [r1] + bgt _022157B0 + cmp r0, #0x1d + bge _02215838 + cmp r0, #0x15 + addls pc, pc, r0, lsl #2 + b _02215F7C +_02215758: ; jump table + b _022157BC ; case 0 + b _02215E4C ; case 1 + b _02215EB8 ; case 2 + b _02215F7C ; case 3 + b _02215F7C ; case 4 + b _02215F7C ; case 5 + b _02215F7C ; case 6 + b _02215F7C ; case 7 + b _02215F7C ; case 8 + b _02215F7C ; case 9 + b _022158DC ; case 10 + b _02215B64 ; case 11 + b _02215BBC ; case 12 + b _02215F7C ; case 13 + b _02215D54 ; case 14 + b _02215DDC ; case 15 + b _02215F7C ; case 16 + b _02215F7C ; case 17 + b _02215F7C ; case 18 + b _02215F7C ; case 19 + b _02215F7C ; case 20 + b _02215F20 ; case 21 +_022157B0: + cmp r0, #0x80 + beq _02215F50 + b _02215F7C +_022157BC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _022157E4 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_022157E4: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x15 + blx r2 + ldr r0, _02215F9C ; =0x0223F794 + ldr r1, _02215FA0 ; =0x0223F798 + ldrh r3, [r0] + ldr r2, _02215FA4 ; =0x0223F790 + ldr r0, _02215FA8 ; =0x0223F78C + str r3, [sp] + ldrh r3, [r0] + ldrh r1, [r1] + ldrh r2, [r2] + ldr r0, _02215FAC ; =MOD13_02215724 + bl WM_SetLifeTime + mov r1, r0 + mov r0, #0x1d + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215838: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215860 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215860: + ldr r0, _02215FB0 ; =0x02240B00 + add r2, r5, #0x440 + ldrh r1, [r0, #4] + str r2, [r0] + mov r2, #1 + cmp r1, #0 + moveq r1, #1 + streqh r1, [r0, #4] + ldr r0, _02215FB0 ; =0x02240B00 + ldrh r1, [r0, #6] + cmp r1, #0 + moveq r1, #0xc8 + streqh r1, [r0, #6] + ldr r1, _02215FB0 ; =0x02240B00 + mov r0, #0xff + strb r0, [r1, #8] + strb r0, [r1, #9] + strb r0, [r1, #0xa] + strb r0, [r1, #0xb] + strb r0, [r1, #0xc] + strb r0, [r1, #0xd] + str r2, [r5, #0x5e4] + ldr r0, _02215FAC ; =MOD13_02215724 + str r2, [r5, #0x5e8] + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_022158DC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215904 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215904: + ldrh r0, [r6, #8] + cmp r0, #3 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r0, #4 + beq _02215AE0 + cmp r0, #5 + bne _02215B48 + add r0, r5, #0x500 + ldrh r0, [r0, #0xe0] + add r3, r5, #0x600 + mov r4, #0 + cmp r0, #0 + ble _02215A18 + ldrb r1, [r6, #0xa] + mov r2, r3 +_02215948: + ldrb r7, [r2, #0xca] + cmp r1, r7 + bne _02215A08 + ldrb r8, [r6, #0xb] + ldrb r7, [r2, #0xcb] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xc] + ldrb r7, [r2, #0xcc] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xd] + ldrb r7, [r2, #0xcd] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xe] + ldrb r7, [r2, #0xce] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xf] + ldrb r7, [r2, #0xcf] + cmp r8, r7 + bne _02215A08 + mov r0, #0x180 + mul r7, r4, r0 + add r0, r3, r7 + ldrh r1, [r6, #0x36] + add r8, r6, #0x38 + add lr, r0, #0xf8 + strh r1, [r0, #0xf6] + mov ip, #8 +_022159C4: + ldmia r8!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _022159C4 + add r0, r5, #0x600 + add r7, r0, r7 + mov r0, r7 + mov r1, #0xc0 + bl DC_InvalidateRange + ldr r0, _02215FB4 ; =0x02240AF0 + mov r2, r7 + ldrh r0, [r0] + add r1, r5, #0x440 + mov r3, #0xc0 + bl MI_DmaCopy16 + str r4, [r5, #0x5ec] + b _02215A78 +_02215A08: + add r4, r4, #1 + cmp r4, r0 + add r2, r2, #0x180 + blt _02215948 +_02215A18: + cmp r4, #0x10 + bge _02215A78 + mov r0, #0x180 + mul r7, r4, r0 + add r1, r3, r7 + mov r0, r6 + add ip, r4, #1 + add r3, r5, #0x500 + add r1, r1, #0xc0 + mov r2, #0xb8 + strh ip, [r3, #0xe0] + bl MIi_CpuCopy16 + add r0, r5, #0x600 + add r7, r0, r7 + mov r0, r7 + mov r1, #0xc0 + bl DC_InvalidateRange + ldr r0, _02215FB4 ; =0x02240AF0 + mov r2, r7 + ldrh r0, [r0] + add r1, r5, #0x440 + mov r3, #0xc0 + bl MI_DmaCopy16 + str r4, [r5, #0x5ec] +_02215A78: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #4 + blx r2 + ldr r0, [r5, #0x5e4] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, [r5, #0x5e8] + cmp r0, #0 + beq _02215ABC + ldr r0, _02215FB0 ; =0x02240B00 + bl MOD13_022169EC + cmp r0, #0 + bne _02215ABC + bl MOD13_02214F58 +_02215ABC: + ldr r0, _02215FAC ; =MOD13_02215724 + ldr r1, _02215FB0 ; =0x02240B00 + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215AE0: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #5 + blx r2 + ldr r0, [r5, #0x5e4] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, [r5, #0x5e8] + cmp r0, #0 + beq _02215B24 + ldr r0, _02215FB0 ; =0x02240B00 + bl MOD13_022169EC + cmp r0, #0 + bne _02215B24 + bl MOD13_02214F58 +_02215B24: + ldr r0, _02215FAC ; =MOD13_02215724 + ldr r1, _02215FB0 ; =0x02240B00 + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B48: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B64: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215B8C + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B8C: + mov r2, #0 + str r2, [sp] + ldr r1, [r5, #0x520] + ldr r0, _02215FAC ; =MOD13_02215724 + mov r3, #1 + bl WM_StartConnectEx + mov r1, r0 + mov r0, #0xc + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215BBC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215BF0 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0xe0] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0xb + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215BF0: + ldrh r0, [r6, #8] + cmp r0, #9 + bgt _02215C20 + cmp r0, #6 + blt _02215D38 + cmp r0, #6 + beq _02215C34 + cmp r0, #7 + beq _02215C54 + cmp r0, #9 + beq _02215D0C + b _02215D38 +_02215C20: + cmp r0, #0x1a + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + b _02215D38 +_02215C34: + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x2a] + mov r1, #1 + strh r1, [r0, #0x28] + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215C54: + ldrh r2, [r6, #0xa] + add r0, r5, #0x500 + mov r1, r6 + strh r2, [r0, #0xe2] + ldr r2, [r5, #0x51c] + mov r0, #6 + blx r2 + ldr r1, _02215FB8 ; =MOD13_02215FC0 + add r3, r5, #0x500 + mov r0, #1 + mov r2, #0 + strh r0, [r3, #0x2a] + bl WM_SetPortCallback + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r5, #0x500 + ldrh r0, [r0, #0x2c] + add r1, r5, #0x500 + ldrh r2, [r1, #0x18] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r2, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldrh r2, [r1, #0x1a] + ldr r1, [r5, #0x504] + ldr r0, _02215FAC ; =MOD13_02215724 + add r3, r5, #0x40 + bl WM_StartMPEx + mov r1, r0 + mov r0, #0xe + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D0C: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0xa + blx r2 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x2a] + strh r1, [r0, #0x28] + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D38: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D54: + ldrh r0, [r6, #4] + cmp r0, #0xa + beq _02215D84 + cmp r0, #0xc + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r0, #0xd + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + b _02215DC0 +_02215D84: + add r0, r5, #0x500 + mov r1, #1 + strh r1, [r0, #0x28] + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215DC0: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215DDC: + mov r0, #0 + strb r0, [r5, #0x50c] + ldrh r0, [r6, #2] + cmp r0, #0 + bne _02215E04 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #8 + blx r2 + b _02215E30 +_02215E04: + cmp r0, #9 + bne _02215E20 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x29 + blx r2 + b _02215E30 +_02215E20: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x12 + blx r2 +_02215E30: + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215E4C: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215E80 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x26] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215E80: + add r0, r5, #0x500 + mov r2, #0 + strh r2, [r0, #0x2a] + ldr r1, [r1] + ldr r0, _02215FAC ; =MOD13_02215724 + add r1, r1, #0x500 + strh r2, [r1, #0x28] + bl WM_End + mov r1, r0 + mov r0, #2 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215EB8: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215EEC + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x26] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215EEC: + mov r2, #0 + ldr r0, _02215FBC ; =0x02240AFC + strb r2, [r5, #0x50d] + ldr r0, [r0] + mov r1, r6 + add r0, r0, #0x1300 + strh r2, [r0, #0x16] + ldr r2, [r5, #0x51c] + mov r0, #0x11 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F20: + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F50: + ldrh r0, [r6, #4] + cmp r0, #0x16 + beq _02215F6C + add sp, sp, #0x20 + cmp r0, #0x17 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F6C: + bl OS_Terminate + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F7C: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02215F98: .word 0x02240AF8 +_02215F9C: .word 0x0223F794 +_02215FA0: .word 0x0223F798 +_02215FA4: .word 0x0223F790 +_02215FA8: .word 0x0223F78C +_02215FAC: .word MOD13_02215724 +_02215FB0: .word 0x02240B00 +_02215FB4: .word 0x02240AF0 +_02215FB8: .word MOD13_02215FC0 +_02215FBC: .word 0x02240AFC + + arm_func_start MOD13_02215FC0 +MOD13_02215FC0: ; 0x02215FC0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, r0 + ldrh r0, [r1, #2] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {lr} + bxne lr + ldrh r0, [r1, #4] + cmp r0, #0x15 + bgt _02216034 + cmp r0, #0x15 + bge _02216074 + cmp r0, #9 + addgt sp, sp, #4 + ldmgtia sp!, {lr} + bxgt lr + cmp r0, #7 + addlt sp, sp, #4 + ldmltia sp!, {lr} + bxlt lr + cmp r0, #7 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + add sp, sp, #4 + cmp r0, #9 + ldmia sp!, {lr} + bx lr +_02216034: + cmp r0, #0x1a + addgt sp, sp, #4 + ldmgtia sp!, {lr} + bxgt lr + cmp r0, #0x19 + addlt sp, sp, #4 + ldmltia sp!, {lr} + bxlt lr + cmp r0, #0x19 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + add sp, sp, #4 + cmp r0, #0x1a + ldmia sp!, {lr} + bx lr +_02216074: + ldr r2, _02216094 ; =0x02240AF8 + mov r0, #9 + ldr r2, [r2] + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02216094: .word 0x02240AF8 + + arm_func_start MOD13_02216098 +MOD13_02216098: ; 0x02216098 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r4, r0 + ldrh r0, [r4] + cmp r0, #0x19 + bgt _02216104 + cmp r0, #0x19 + bge _022161F8 + cmp r0, #0xf + addls pc, pc, r0, lsl #2 + b _022168D8 +_022160C4: ; jump table + b _02216124 ; case 0 + b _02216694 ; case 1 + b _02216744 ; case 2 + b _022168D8 ; case 3 + b _022168D8 ; case 4 + b _022168D8 ; case 5 + b _022168D8 ; case 6 + b _022161BC ; case 7 + b _02216250 ; case 8 + b _022168D8 ; case 9 + b _022168D8 ; case 10 + b _022168D8 ; case 11 + b _022168D8 ; case 12 + b _022167C4 ; case 13 + b _022164E0 ; case 14 + b _02216584 ; case 15 +_02216104: + cmp r0, #0x1d + bgt _02216118 + cmp r0, #0x1d + beq _02216164 + b _022168D8 +_02216118: + cmp r0, #0x80 + beq _02216804 + b _022168D8 +_02216124: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216154 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216154: + bl MOD13_02216910 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216164: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216194 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216194: + ldr r1, _022168FC ; =0x02240AF8 + ldr r0, _02216900 ; =MOD13_02216098 + ldr r1, [r1] + bl WM_SetParentParameter + mov r1, r0 + mov r0, #7 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022161BC: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x15 + ldr r2, [r2, #0x51c] + blx r2 + ldr r0, _02216900 ; =MOD13_02216098 + mov r1, #1 + bl WM_SetBeaconIndication + mov r1, r0 + mov r0, #0x19 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022161F8: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216228 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216228: + ldr r1, _02216904 ; =0x0223F7A0 + ldr r0, _02216900 ; =MOD13_02216098 + ldr r1, [r1] + bl FUN_020D9564 + mov r1, r0 + mov r0, #8 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216250: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216280 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216280: + ldrh r0, [r4, #8] + cmp r0, #7 + bgt _022162B8 + cmp r0, #7 + bge _0221630C + cmp r0, #2 + bgt _022164BC + cmp r0, #0 + blt _022164BC + cmp r0, #0 + beq _022162E0 + cmp r0, #2 + beq _02216480 + b _022164BC +_022162B8: + cmp r0, #9 + bgt _022162CC + cmp r0, #9 + beq _02216440 + b _022164BC +_022162CC: + cmp r0, #0x1a + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + b _022164BC +_022162E0: + ldr r1, _022168FC ; =0x02240AF8 + mov r2, #0 + ldr r0, [r1] + add sp, sp, #0x20 + add r0, r0, #0x500 + strh r2, [r0, #0x2a] + ldr r0, [r1] + add r0, r0, #0x500 + strh r2, [r0, #0x28] + ldmia sp!, {r4, lr} + bx lr +_0221630C: + ldr r2, _022168FC ; =0x02240AF8 + ldr r0, [r2] + add r0, r0, #0x500 + ldrh r1, [r0, #0x26] + cmp r1, #1 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldrh lr, [r0, #0x2a] + ldrh r3, [r4, #0x10] + mov ip, #1 + mov r1, r4 + orr r3, lr, ip, lsl r3 + strh r3, [r0, #0x2a] + ldr r2, [r2] + mov r0, #0 + ldr r2, [r2, #0x51c] + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + ldr r0, [r1] + add r0, r0, #0x500 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _02216408 + ldr r0, _02216908 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #0x31c] + cmp r2, #0 + bne _02216408 + mov r2, #1 + str r2, [r0, #0x31c] + ldr r0, [r1] + ldr r1, _022168FC ; =0x02240AF8 + add r0, r0, #0x500 + ldrh r0, [r0, #0x2c] + ldr ip, [r1] + mov r1, #1 + cmp r0, #0 + movne r2, #0 + mov r0, r2, lsl #0x10 + mov r3, r0, lsr #0x10 + add r0, ip, #0x500 + ldrh r4, [r0, #0x18] + mov r2, #0 + str r4, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + ldrh r2, [r0, #0x1a] + ldr r1, [ip, #0x504] + ldr r0, _02216900 ; =MOD13_02216098 + add r3, ip, #0x40 + bl WM_StartMPEx + mov r1, r0 + mov r0, #0xe + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216408: + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216440: + ldr r2, _022168FC ; =0x02240AF8 + ldrh r3, [r4, #0x10] + ldr r1, [r2] + mov r0, #1 + add r1, r1, #0x500 + ldrh ip, [r1, #0x2a] + mvn r3, r0, lsl r3 + and r3, ip, r3 + strh r3, [r1, #0x2a] + ldr r2, [r2] + mov r1, r4 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216480: + ldr r0, _022168FC ; =0x02240AF8 + ldr r1, [r0] + add r0, r1, #0x500 + ldrh r0, [r0, #0x26] + cmp r0, #1 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldr r2, [r1, #0x51c] + mov r1, r4 + mov r0, #0x1c + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022164BC: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022164E0: + ldr r0, _02216908 ; =0x02240AFC + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x31c] + ldrh r0, [r4, #4] + cmp r0, #0xa + beq _0221650C + cmp r0, #0xb + beq _0221653C + b _02216560 +_0221650C: + ldr r3, _022168FC ; =0x02240AF8 + mov r4, #1 + ldr r2, [r3] + mov r0, #0x19 + add r2, r2, #0x500 + strh r4, [r2, #0x28] + ldr r2, [r3] + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221653C: + ldr r0, _022168FC ; =0x02240AF8 + ldr r1, [r4, #8] + ldr r2, [r0] + mov r0, #3 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216560: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216584: + ldr r0, _02216908 ; =0x02240AFC + ldr r1, [r0] + add r0, r1, #0x7000 + ldr r0, [r0, #0x4c8] + cmp r0, #0 + beq _022165E0 + mov r3, #0 + mov r2, r3 +_022165A4: + add r0, r1, r2, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r0, #0 + beq _022165C4 + add r3, r3, #1 + cmp r3, #2 + bhs _022165D0 +_022165C4: + add r2, r2, #1 + cmp r2, #0xf + blo _022165A4 +_022165D0: + cmp r3, #1 + bne _022165E0 + ldr r0, _0221690C ; =0x000032C8 + bl OS_SpinWait +_022165E0: + ldr r0, _022168FC ; =0x02240AF8 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x50c] + ldrh r1, [r4, #2] + cmp r1, #0 + bne _02216634 + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #2 + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216634: + cmp r1, #0xa + bne _0221665C + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #0x2a + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221665C: + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #0x13 + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216694: + ldr r0, _02216908 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _0221672C + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022166EC + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r0, [r2] + mov r1, r4 + add r0, r0, #0x500 + strh r3, [r0, #0x26] + ldr r2, [r2] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022166EC: + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + ldr r0, _02216900 ; =MOD13_02216098 + add r1, r1, #0x500 + strh r3, [r1, #0x2a] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x28] + bl WM_End + mov r1, r0 + mov r0, #2 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221672C: + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl WM_SetPortCallback + mov r0, #0 + bl WM_SetIndCallback +_02216744: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216784 + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r0, [r2] + mov r1, r4 + add r0, r0, #0x500 + strh r3, [r0, #0x26] + ldr r2, [r2] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216784: + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + ldr r0, _02216908 ; =0x02240AFC + strb r3, [r1, #0x50d] + ldr r0, [r0] + mov r1, r4 + add r0, r0, #0x1300 + strh r3, [r0, #0x16] + ldr r2, [r2] + mov r0, #0x11 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022167C4: + ldrh r0, [r4, #2] + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, lr} + bxne lr + ldr r0, _022168FC ; =0x02240AF8 + ldrh r1, [r4, #0xa] + ldr r0, [r0] + add sp, sp, #0x20 + add r0, r0, #0x500 + ldrh r2, [r0, #0x2a] + mvn r1, r1 + and r1, r2, r1 + strh r1, [r0, #0x2a] + ldmia sp!, {r4, lr} + bx lr +_02216804: + ldrh r0, [r4, #4] + sub r0, r0, #0x10 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _022168F0 +_02216818: ; jump table + b _02216838 ; case 0 + b _0221685C ; case 1 + b _02216880 ; case 2 + b _022168A4 ; case 3 + b _022168F0 ; case 4 + b _022168F0 ; case 5 + b _022168C8 ; case 6 + b _022168F0 ; case 7 +_02216838: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x1d + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221685C: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x1f + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216880: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x20 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168A4: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x21 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168C8: + bl OS_Terminate + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168D8: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 +_022168F0: + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_022168FC: .word 0x02240AF8 +_02216900: .word MOD13_02216098 +_02216904: .word 0x0223F7A0 +_02216908: .word 0x02240AFC +_0221690C: .word 0x000032C8 + + arm_func_start MOD13_02216910 +MOD13_02216910: ; 0x02216910 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02216970 ; =MOD13_02216098 + bl WM_SetIndCallback + mov r1, r0 + mov r0, #0x80 + bl MOD13_02214B08 + ldr r0, _02216974 ; =0x0223F794 + ldr r1, _02216978 ; =0x0223F798 + ldrh r3, [r0] + ldr r2, _0221697C ; =0x0223F790 + ldr r0, _02216980 ; =0x0223F78C + str r3, [sp] + ldrh r1, [r1] + ldrh r2, [r2] + ldrh r3, [r0] + ldr r0, _02216970 ; =MOD13_02216098 + bl WM_SetLifeTime + mov r1, r0 + mov r0, #0x1d + bl MOD13_02214B08 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02216970: .word MOD13_02216098 +_02216974: .word 0x0223F794 +_02216978: .word 0x0223F798 +_0221697C: .word 0x0223F790 +_02216980: .word 0x0223F78C + + arm_func_start MOD13_02216984 +MOD13_02216984: ; 0x02216984 + ldr r1, _022169E8 ; =0x02240AF8 + mov r0, #0 + ldr r2, [r1] + mov ip, r0 + add r1, r2, #0x500 + ldrh r1, [r1, #0x28] + mov r3, r0 + cmp r1, #1 + bne _022169B4 + ldrb r1, [r2, #0x50c] + cmp r1, #0 + moveq r3, #1 +_022169B4: + cmp r3, #0 + beq _022169CC + add r1, r2, #0x500 + ldrh r1, [r1, #0x26] + cmp r1, #0 + moveq ip, #1 +_022169CC: + cmp ip, #0 + bxeq lr + add r1, r2, #0x500 + ldrh r1, [r1, #0x2a] + cmp r1, #0 + movne r0, #1 + bx lr + .align 2, 0 +_022169E8: .word 0x02240AF8 + + arm_func_start MOD13_022169EC +MOD13_022169EC: ; 0x022169EC + stmdb sp!, {r4, lr} + mov r4, r0 + bl WM_GetAllowedChannel + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, lr} + bxeq lr + ldrh r3, [r4, #4] + mov ip, #0 + mov lr, r3 + mov r2, #1 +_02216A18: + sub r1, lr, #1 + mov r1, r2, lsl r1 + ands r1, r0, r1 + beq _02216A34 + cmp r3, lr + strneh lr, [r4, #4] + bne _02216A5C +_02216A34: + add r1, ip, #1 + mov r1, r1, lsl #0x10 + cmp lr, #0x10 + mov ip, r1, lsr #0x10 + moveq r1, r2 + addne r1, lr, #1 + mov r1, r1, lsl #0x10 + cmp ip, #0x10 + mov lr, r1, lsr #0x10 + blo _02216A18 +_02216A5C: + mov r0, #1 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start MOD13_02216A68 +MOD13_02216A68: ; 0x02216A68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + mov r5, #0 + bl OS_DisableInterrupts + add r2, sb, #0x30 + add r1, sb, #0x70 + mov r4, r0 + cmp r2, r1 + bhs _02216AF4 +_02216A9C: + ldr r0, [r2, #0xc] + cmp r0, #2 + blo _02216AE8 + ldr r0, [r2] + subs r0, r8, r0 + bmi _02216AE8 + ldr r3, [r2, #4] + add ip, r0, r6 + cmp ip, r3 + bhi _02216AE8 + ldr r3, [r2, #8] + mov r1, r7 + mov r2, r6 + add r0, r3, r0 + bl MI_CpuCopy8 + mov r0, #0 + str r0, [sb] + mov r5, #1 + b _02216AF4 +_02216AE8: + add r2, r2, #0x10 + cmp r2, r1 + blo _02216A9C +_02216AF4: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216B0C +MOD13_02216B0C: ; 0x02216B0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r4, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + bl OS_DisableInterrupts + mov r6, r0 + add r5, r4, #0x30 + add r4, r4, #0x70 +_02216B34: + cmp r5, r4 + blo _02216B40 + bl OS_Terminate +_02216B40: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02216B64 + str sb, [r5] + str r8, [r5, #4] + ldr r0, [sp, #0x20] + str r7, [r5, #8] + str r0, [r5, #0xc] + b _02216B6C +_02216B64: + add r5, r5, #0x10 + b _02216B34 +_02216B6C: + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216B80 +MOD13_02216B80: ; 0x02216B80 + ldr ip, _02216B90 ; =0x020CE34C + mov r1, #0 + mov r2, #0x70 + bx ip + .align 2, 0 +_02216B90: .word 0x020CE34C + + arm_func_start MOD13_02216B94 +MOD13_02216B94: ; 0x02216B94 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + bl MOD13_02216DA4 + cmp r0, #0 + beq _02216BD0 + ldr r0, _02216BE4 ; =0x02240B20 + mov r1, #0 + ldr r0, [r0] + mov r2, r5 + mov r3, r1 + add r0, r0, #0xc4 + bl MOD13_02216BE8 +_02216BD0: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02216BE4: .word 0x02240B20 + + arm_func_start MOD13_02216BE8 +MOD13_02216BE8: ; 0x02216BE8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r4, _02216D74 ; =0x02240B20 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + ldr r5, [r4] + bl MOD13_02216DA4 + cmp r0, #0 + bne _02216C18 + bl OS_Terminate +_02216C18: + ldr r0, [sb, #4] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + beq _02216C2C + bl OS_Terminate +_02216C2C: + cmp r6, #0x1f + bls _02216C78 + mov r0, r5 + bl OS_GetThreadPriority + cmp r6, #0x20 + bne _02216C54 + cmp r0, #0 + subne r6, r0, #1 + moveq r6, #0 + b _02216C78 +_02216C54: + cmp r6, #0x21 + bne _02216C6C + cmp r0, #0x1f + addlo r6, r0, #1 + movhs r6, #0x1f + b _02216C78 +_02216C6C: + cmp r6, #0x22 + moveq r6, r0 + movne r6, #0x1f +_02216C78: + bl OS_DisableInterrupts + ldr r2, [sb, #4] + bic r1, r6, #0x80000000 + bic r2, r2, #1 + orr r2, r2, #1 + str r2, [sb, #4] + ldr r2, [sb, #4] + mov r4, r0 + and r0, r2, #1 + orr r0, r0, r1, lsl #1 + str r0, [sb, #4] + str r8, [sb, #8] + str r7, [sb, #0xc] + ldr r0, [r5, #0xc0] + cmp r0, #0 + bne _02216CDC + add r0, r5, #0xc4 + cmp sb, r0 + ldreq r0, _02216D74 ; =0x02240B20 + moveq r1, #0 + streq r1, [r0] + mov r0, r5 + str sb, [r5, #0xc0] + bl OS_WakeupThreadDirect + b _02216D60 +_02216CDC: + add r0, r5, #0xc4 + cmp sb, r0 + ldr r2, [r5, #0xc0] + bne _02216D1C + ldr r0, [r2] + cmp r0, #0 + beq _02216D08 +_02216CF8: + mov r2, r0 + ldr r0, [r0] + cmp r0, #0 + bne _02216CF8 +_02216D08: + ldr r0, _02216D74 ; =0x02240B20 + str sb, [r2] + mov r1, #0 + str r1, [r0] + b _02216D60 +_02216D1C: + ldr r0, [r2, #4] + mov r0, r0, lsr #1 + cmp r0, r6 + bls _02216D3C + str sb, [r5, #0xc0] + str r2, [sb] + b _02216D60 +_02216D38: + mov r2, r1 +_02216D3C: + ldr r1, [r2] + cmp r1, #0 + beq _02216D58 + ldr r0, [r1, #4] + mov r0, r0, lsr #1 + cmp r0, r6 + bls _02216D38 +_02216D58: + str r1, [sb] + str sb, [r2] +_02216D60: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_02216D74: .word 0x02240B20 + + arm_func_start MOD13_02216D78 +MOD13_02216D78: ; 0x02216D78 + ldr r0, [r0, #4] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + movne r0, #1 + moveq r0, #0 + bx lr + + arm_func_start MOD13_02216D90 +MOD13_02216D90: ; 0x02216D90 + ldr ip, _02216DA0 ; =0x020CE34C + mov r1, #0 + mov r2, #0x20 + bx ip + .align 2, 0 +_02216DA0: .word 0x020CE34C + + arm_func_start MOD13_02216DA4 +MOD13_02216DA4: ; 0x02216DA4 + ldr r0, _02216DBC ; =0x02240B20 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02216DBC: .word 0x02240B20 + + arm_func_start MOD13_02216DC0 +MOD13_02216DC0: ; 0x02216DC0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r6, r1 + bl OS_DisableInterrupts + ldr r1, _02216E40 ; =0x02240B20 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + bne _02216E2C + add r0, r5, #0xc4 + str r5, [r1] + bl MOD13_02216D90 + sub r0, r6, #0xe4 + mov lr, #0 + str lr, [r5, #0xc0] + bic ip, r0, #3 + add r3, r5, #0xe4 + str ip, [sp] + ldr r1, _02216E44 ; =MOD13_02216E48 + mov r0, r5 + mov r2, r5 + add r3, r3, ip + str lr, [sp, #4] + bl OS_CreateThread + mov r0, r5 + bl OS_WakeupThreadDirect +_02216E2C: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02216E40: .word 0x02240B20 +_02216E44: .word MOD13_02216E48 + + arm_func_start MOD13_02216E48 +MOD13_02216E48: ; 0x02216E48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, r0 + add sb, r8, #0xc4 + mov r4, #0 +_02216E5C: + bl OS_DisableInterrupts + ldr r1, [r8, #0xc0] + mov r5, r0 + cmp r1, #0 + bne _02216E90 +_02216E70: + mov r0, r8 + mov r1, r4 + bl OS_SetThreadPriority + mov r0, r4 + bl OS_SleepThread + ldr r0, [r8, #0xc0] + cmp r0, #0 + beq _02216E70 +_02216E90: + ldr r7, [r8, #0xc0] + ldr r1, [r8, #0xc0] + mov r0, r8 + ldr r1, [r1] + str r1, [r8, #0xc0] + ldr r1, [r7, #4] + mov r1, r1, lsr #1 + bl OS_SetThreadPriority + mov r0, r5 + bl OS_RestoreInterrupts + ldr r1, [r7, #8] + cmp r1, #0 + beq _02216ECC + mov r0, r7 + blx r1 +_02216ECC: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + ldr r5, [r7, #0xc] + bl OS_GetThreadPriority + ldr r1, [r8, #0xc0] + cmp r1, #0 + moveq r1, r4 + beq _02216F0C + ldr r1, [r8, #0xc0] + ldr r1, [r1, #4] + cmp r0, r1, lsr #1 + ldrlo r1, [r8, #0xc0] + ldrlo r1, [r1, #4] + movlo r1, r1, lsr #1 + movhs r1, r0 +_02216F0C: + cmp r1, r0 + beq _02216F1C + mov r0, r8 + bl OS_SetThreadPriority +_02216F1C: + str r4, [r7] + ldr r0, [r7, #4] + cmp r5, #0 + bic r0, r0, #1 + str r0, [r7, #4] + beq _02216F3C + mov r0, r7 + blx r5 +_02216F3C: + cmp r7, sb + beq _02216F50 + mov r0, r6 + bl OS_RestoreInterrupts + b _02216E5C +_02216F50: + bl OS_ExitThread + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216F60 +MOD13_02216F60: ; 0x02216F60 + ldr r1, _02216FB8 ; =0x02240B28 + mov ip, #0 + ldr r2, [r1, #4] + cmp r2, #0 + ble _02216FB0 + ldr r1, _02216FBC ; =0x02240B24 + sub r0, r0, #1 + ldr r1, [r1] + add r0, r1, r0, lsl #2 + ldr r3, [r0, #0x1e0] + mov r1, #1 +_02216F8C: + mov r0, r1, lsl ip + ands r0, r0, r3 + moveq r0, #0 + bxeq lr + add r0, ip, #1 + mov r0, r0, lsl #0x10 + mov ip, r0, lsr #0x10 + cmp ip, r2 + blt _02216F8C +_02216FB0: + mov r0, #1 + bx lr + .align 2, 0 +_02216FB8: .word 0x02240B28 +_02216FBC: .word 0x02240B24 + + arm_func_start MOD13_02216FC0 +MOD13_02216FC0: ; 0x02216FC0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r2, _02217068 ; =0x02240B24 + mov r7, r1 + ldr r3, [r2] + cmp r3, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r1, _0221706C ; =0x02240B28 + ldrb r4, [r0, #2] + ldr r2, [r1, #4] + cmp r4, r2 + addgt sp, sp, #4 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, lr} + bxgt lr + sub r6, r7, #1 + ldr r2, [r1] + add r1, r3, r6, lsl #5 + mla r1, r4, r2, r1 + add r0, r0, #3 + mov r5, r6, lsl #5 + bl MI_CpuCopy8 + ldr r0, _02217068 ; =0x02240B24 + mov r1, #1 + ldr r2, [r0] + mov r0, r7 + add r3, r2, #0x1e0 + ldr r2, [r3, r6, lsl #2] + orr r1, r2, r1, lsl r4 + str r1, [r3, r6, lsl #2] + bl MOD13_02216F60 + cmp r0, #0 + ldrne r0, _02217068 ; =0x02240B24 + ldrne r0, [r0] + addne r0, r0, r5 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02217068: .word 0x02240B24 +_0221706C: .word 0x02240B28 + + arm_func_start MOD13_02217070 +MOD13_02217070: ; 0x02217070 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldrb r0, [r6] + mov r5, r1 + mov r4, r2 + strb r0, [r5] + ldrb r0, [r5] + cmp r0, #7 + beq _022170A8 + cmp r0, #8 + beq _02217114 + cmp r0, #9 + beq _02217140 + b _0221718C +_022170A8: + mov r0, r4 + bl MOD13_02216F60 + cmp r0, #0 + ldrne r0, _022171A4 ; =0x02240B24 + subne r1, r4, #1 + ldrne r0, [r0] + addne r0, r0, r1, lsl #5 + ldmneia sp!, {r4, r5, r6, lr} + bxne lr + ldrb r1, [r6, #1] + ldr r0, _022171A8 ; =0x02240B28 + strb r1, [r5, #2] + ldrb r2, [r5, #2] + ldr r1, [r0, #4] + cmp r2, r1 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, lr} + bxgt lr + ldr r2, [r0] + add r0, r6, #2 + add r1, r5, #3 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r4 + bl MOD13_02216FC0 + mov r4, r0 + b _02217198 +_02217114: + ldrb r0, [r6, #1] + add r4, r6, #3 + and r0, r0, #0xff + strh r0, [r5, #2] + ldrb r0, [r6, #2] + ldrh r1, [r5, #2] + mov r0, r0, lsl #8 + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [r5, #2] + b _02217198 +_02217140: + ldrb r0, [r6, #1] + add r4, r6, #3 + ldr r1, _022171A8 ; =0x02240B28 + and r0, r0, #0xff + strh r0, [r5, #2] + ldrb r2, [r6, #2] + ldrh r3, [r5, #2] + mov r0, r4 + mov r2, r2, lsl #8 + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [r5, #2] + ldr r2, [r1] + add r1, r5, #4 + bl MI_CpuCopy8 + ldr r0, _022171A8 ; =0x02240B28 + ldr r0, [r0] + add r4, r4, r0 + b _02217198 +_0221718C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02217198: + mov r0, r4 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_022171A4: .word 0x02240B24 +_022171A8: .word 0x02240B28 + + arm_func_start MOD13_022171AC +MOD13_022171AC: ; 0x022171AC + ldrb r3, [r0] + mov r2, r1 + add r2, r2, #1 + strb r3, [r1] + ldrb r1, [r0] + cmp r1, #6 + addls pc, pc, r1, lsl #2 + b _02217224 +_022171CC: ; jump table + b _02217224 ; case 0 + b _0221722C ; case 1 + b _0221722C ; case 2 + b _0221722C ; case 3 + b _022171E8 ; case 4 + b _0221722C ; case 5 + b _0221722C ; case 6 +_022171E8: + ldrh r3, [r0, #2] + add r1, r2, #3 + strb r3, [r2] + ldrh r3, [r0, #2] + and r3, r3, #0xff00 + mov r3, r3, asr #8 + strb r3, [r2, #1] + ldrh r3, [r0, #4] + strb r3, [r2, #2] + ldrh r0, [r0, #4] + add r2, r2, #4 + and r0, r0, #0xff00 + mov r0, r0, asr #8 + strb r0, [r1] + b _0221722C +_02217224: + mov r0, #0 + bx lr +_0221722C: + mov r0, r2 + bx lr + + arm_func_start MOD13_02217234 +MOD13_02217234: ; 0x02217234 + stmdb sp!, {r4, lr} + ldr r1, _0221727C ; =0x02240B24 + ldr r1, [r1] + cmp r1, #0 + ldmeqia sp!, {r4, lr} + bxeq lr + sub r4, r0, #1 + add r0, r1, r4, lsl #5 + mov r1, #0 + mov r2, #0x1e + bl MI_CpuFill8 + ldr r0, _0221727C ; =0x02240B24 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x1e0] + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_0221727C: .word 0x02240B24 + + arm_func_start MOD13_02217280 +MOD13_02217280: ; 0x02217280 + ldr r3, _02217298 ; =0x02240B24 + ldr ip, _0221729C ; =0x020CE34C + mov r1, #0 + mov r2, #0x21c + str r0, [r3] + bx ip + .align 2, 0 +_02217298: .word 0x02240B24 +_0221729C: .word 0x020CE34C + + arm_func_start MOD13_022172A0 +MOD13_022172A0: ; 0x022172A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _022172D8 ; =0x02240B28 + sub r1, r0, #2 + mov r0, #0x1e + str r1, [r2] + bl _s32_div_f + ldr r1, _022172D8 ; =0x02240B28 + mov r2, #0x1e + str r0, [r1, #4] + str r2, [r1, #8] + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_022172D8: .word 0x02240B28 diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s new file mode 100644 index 00000000..028a3b7c --- /dev/null +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -0,0 +1,35373 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD13_0221E560 +MOD13_0221E560: ; 0x0221E560 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _0221E640 ; =0x02242FE4 + mov r1, #0x28 + ldr r0, [r0] + ldrb r0, [r0, #9] + add r0, r0, #1 + bl FX_ModS32 + ldr r2, _0221E640 ; =0x02242FE4 + mov r1, #5 + ldr r3, [r2] + strb r0, [r3, #9] + ldr r0, [r2] + ldrb r0, [r0, #9] + bl FX_DivS32 + ldr r2, _0221E640 ; =0x02242FE4 + add r1, r0, #0x47 + ldr r2, [r2] + mov r0, #0 + ldr r2, [r2, #4] + bl MOD13_02239E8C + ldr r3, _0221E640 ; =0x02242FE4 + ldr lr, _0221E644 ; =0x0223EC6C + ldr r0, [r3] + ldr r2, _0221E648 ; =0x0223EC70 + ldr r5, [r0, #4] + ldr r1, _0221E64C ; =0xFE00FF00 + ldrh r4, [r5, #4] + ldr r0, _0221E650 ; =0x000001FF + bic r4, r4, #0xc00 + orr r4, r4, #0x400 + strh r4, [r5, #4] + ldr r4, [r3] + ldrb r5, [r4, #8] + ldr ip, [r4, #4] + ldr r4, [ip] + ldrb lr, [lr, r5] + bic r4, r4, #0xc00 + str r4, [ip] + ldrh r4, [ip, #4] + bic r4, r4, #0xf000 + orr r4, r4, lr, lsl #12 + strh r4, [ip, #4] + ldr r4, [r3] + ldrh r3, [r2, #2] + ldr r4, [r4, #4] + ldrh lr, [r2] + ldr ip, [r4] + and r2, r3, #0xff + and r1, ip, r1 + and r3, lr, r0 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221E640: .word 0x02242FE4 +_0221E644: .word 0x0223EC6C +_0221E648: .word 0x0223EC70 +_0221E64C: .word 0xFE00FF00 +_0221E650: .word 0x000001FF + + arm_func_start MOD13_0221E654 +MOD13_0221E654: ; 0x0221E654 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0221E690 ; =0x02242FE4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r0, _0221E690 ; =0x02242FE4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + ldr r0, _0221E690 ; =0x02242FE4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221E690: .word 0x02242FE4 + + arm_func_start MOD13_0221E694 +MOD13_0221E694: ; 0x0221E694 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r4, r0 + mov r0, #0xc + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0221E774 ; =0x02242FE4 + mov r1, #0x47 + str r0, [r2] + strb r4, [r0, #8] + mov r0, #0 + bl MOD13_02239E54 + ldr r7, _0221E774 ; =0x02242FE4 + ldr r8, _0221E778 ; =0x0223EC6C + ldr r1, [r7] + ldr r6, _0221E77C ; =0x0223EC70 + str r0, [r1, #4] + ldr r0, [r7] + ldr lr, _0221E780 ; =0x000001FF + ldr r3, [r0, #4] + ldr r5, _0221E784 ; =0xFE00FF00 + ldrh r2, [r3, #4] + mov r0, #1 + ldr r1, _0221E788 ; =MOD13_0221E560 + bic r2, r2, #0xc00 + orr r2, r2, #0x400 + strh r2, [r3, #4] + ldr r3, [r7] + mov r2, #0 + ldr ip, [r3, #4] + mov r3, #0x78 + ldr sb, [ip] + bic sb, sb, #0xc00 + str sb, [ip] + ldrb r4, [r8, r4] + ldrh r8, [ip, #4] + bic r8, r8, #0xf000 + orr r4, r8, r4, lsl #12 + strh r4, [ip, #4] + ldr r4, [r7] + ldrh r7, [r6] + ldr ip, [r4, #4] + ldrh r4, [r6, #2] + and r7, r7, lr + ldr r6, [ip] + and r4, r4, #0xff + and r5, r6, r5 + orr r4, r5, r4 + orr r4, r4, r7, lsl #16 + str r4, [ip] + bl MOD13_0223C1C4 + ldr r1, _0221E774 ; =0x02242FE4 + ldr r1, [r1] + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0221E774: .word 0x02242FE4 +_0221E778: .word 0x0223EC6C +_0221E77C: .word 0x0223EC70 +_0221E780: .word 0x000001FF +_0221E784: .word 0xFE00FF00 +_0221E788: .word MOD13_0221E560 + + arm_func_start MOD13_0221E78C +MOD13_0221E78C: ; 0x0221E78C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr r4, _0221E888 ; =0x02242FE8 + str r0, [sp] + ldr r1, [r4] + ldrh r0, [r1, #0x14] + add r0, r0, #1 + strh r0, [r1, #0x14] + ldr r1, [r4] + ldrh r0, [r1, #0x14] + cmp r0, #0x10 + addlo sp, sp, #4 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r1, [r1, #0x17] + ldr r0, _0221E88C ; =0x0223EC7C + mov sb, #0 + ldrb sl, [r0, r1] + cmp sl, #0 + ble _0221E838 + mov r7, sb + mov fp, sb + mvn r6, #0 + mov r5, #1 +_0221E7E8: + ldr r0, [r4] + ldr r2, _0221E890 ; =0x0223EC8C + ldrb r3, [r0, #0x17] + ldr r0, [r0, sb, lsl #2] + mov r1, r7 + add r2, r2, r3, lsl #1 + ldrb r8, [sb, r2] + bl MOD13_02239ADC + mov r2, r0 + mov r1, r8 + mov r0, fp + bl MOD13_02239E8C + ldr r0, [r4] + mov r1, r6 + ldr r0, [r0, sb, lsl #2] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, sl + blt _0221E7E8 +_0221E838: + ldr r0, _0221E894 ; =0x0223EC74 + ldrh r0, [r0, #2] + bl MOD13_0221EBD8 + ldr r1, _0221E888 ; =0x02242FE8 + mov r0, #0 + ldr r2, [r1] + mvn r3, #0 + strh r0, [r2, #0x14] + ldr r2, [r1] + strb r3, [r2, #0x16] + ldr r2, [r1] + ldr r1, [r2, #0x10] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp] + str r0, [r2, #0x10] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221E888: .word 0x02242FE8 +_0221E88C: .word 0x0223EC7C +_0221E890: .word 0x0223EC8C +_0221E894: .word 0x0223EC74 + + arm_func_start MOD13_0221E898 +MOD13_0221E898: ; 0x0221E898 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _0221E910 ; =0x02242FE8 + ldr r0, [r0] + ldr r1, [r0, #0x10] + cmp r1, #0 + beq _0221E8C8 + mov r0, #0 + bl MOD13_0223C110 +_0221E8C8: + ldr r4, _0221E910 ; =0x02242FE8 + mov r5, #0 +_0221E8D0: + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + cmp r0, #0 + beq _0221E8E4 + bl MOD13_02239AE8 +_0221E8E4: + add r5, r5, #1 + cmp r5, #2 + blt _0221E8D0 + ldr r0, _0221E910 ; =0x02242FE8 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_02239AE8 + ldr r0, _0221E910 ; =0x02242FE8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221E910: .word 0x02242FE8 + + arm_func_start MOD13_0221E914 +MOD13_0221E914: ; 0x0221E914 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221E970 ; =0x02242FE8 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + add r0, r0, #4 + str r0, [sp, #4] + bl MOD13_0221EBD8 + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221E974 ; =MOD13_0221E898 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221E970: .word 0x02242FE8 +_0221E974: .word MOD13_0221E898 + + arm_func_start MOD13_0221E978 +MOD13_0221E978: ; 0x0221E978 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r8, _0221EAE8 ; =0x02242FE8 + ldr r1, _0221EAEC ; =0x0223EC7C + ldr r3, [r8] + ldrb r2, [r3, #0x17] + ldrb r0, [r3, #0x18] + ldrb r7, [r1, r2] + cmp r0, #0 + bne _0221EAD0 + ldrsb r1, [r3, #0x16] + mvn r0, #0 + cmp r1, r0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r7, #0 + mov r6, #0 + ble _0221EAD0 + ldr r5, _0221EAF0 ; =0x0223EC84 + ldr r4, _0221EAF4 ; =0x0223EC9C + ldr sl, _0221EAF8 ; =0x0223EC78 + add sb, sp, #0 +_0221E9D0: + ldr r0, [r8] + mov r1, sl + ldrb r0, [r0, #0x17] + mov r2, sb + add r0, r4, r0, lsl #1 + ldrb r0, [r6, r0] + add r0, r5, r0, lsl #2 + bl MOD13_0223AB74 + mov r0, sb + bl MOD13_0223B2B4 + cmp r0, #0 + beq _0221EAC4 + ldr r0, _0221EAE8 ; =0x02242FE8 + ldr r3, [r0] + ldr r0, [r3, #0x10] + cmp r0, #0 + bne _0221EAD0 + ldrb r2, [r3, #0x17] + ldr r1, _0221EAFC ; =0x0223EC8C + ldr r0, [r3, r6, lsl #2] + add r1, r1, r2, lsl #1 + ldrb r2, [r6, r1] + mov r1, #0 + add r4, r2, #1 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _0221EAE8 ; =0x02242FE8 + ldr r1, _0221EAF4 ; =0x0223EC9C + ldr r0, [r0] + ldr r2, _0221EAF0 ; =0x0223EC84 + ldrb r4, [r0, #0x17] + ldr r3, _0221EB00 ; =0x0223EC86 + ldr r0, [r0, r6, lsl #2] + add r1, r1, r4, lsl #1 + ldrb r4, [r6, r1] + mvn r1, #0 + mov r4, r4, lsl #2 + ldrh r2, [r2, r4] + ldrh r3, [r3, r4] + bl MOD13_02239888 + ldr r0, _0221EAE8 ; =0x02242FE8 + mvn r1, #0 + ldr r0, [r0] + mov r2, #1 + ldr r0, [r0, r6, lsl #2] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _0221EB04 ; =MOD13_0221E78C + mov r2, r0 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r1, _0221EAE8 ; =0x02242FE8 + add sp, sp, #8 + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r0, [r1] + strb r6, [r0, #0x16] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0221EAC4: + add r6, r6, #1 + cmp r6, r7 + blt _0221E9D0 +_0221EAD0: + ldr r0, _0221EAE8 ; =0x02242FE8 + mvn r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x16] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EAE8: .word 0x02242FE8 +_0221EAEC: .word 0x0223EC7C +_0221EAF0: .word 0x0223EC84 +_0221EAF4: .word 0x0223EC9C +_0221EAF8: .word 0x0223EC78 +_0221EAFC: .word 0x0223EC8C +_0221EB00: .word 0x0223EC86 +_0221EB04: .word MOD13_0221E78C + + arm_func_start MOD13_0221EB08 +MOD13_0221EB08: ; 0x0221EB08 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0221EB5C ; =0x02242FE8 + mvn r3, #0 + ldr r2, [r1] + strb r3, [r2, #0x16] + ldr r3, [r1] + ldrh r2, [r3, #0x14] + add r2, r2, #1 + strh r2, [r3, #0x14] + ldr r3, [r1] + ldrh r1, [r3, #0x14] + cmp r1, #4 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r1, _0221EB60 ; =MOD13_0221E978 + mov r2, #0 + strh r2, [r3, #0x14] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EB5C: .word 0x02242FE8 +_0221EB60: .word MOD13_0221E978 + + arm_func_start MOD13_0221EB64 +MOD13_0221EB64: ; 0x0221EB64 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221EBCC ; =0x02242FE8 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + sub r0, r0, #4 + str r0, [sp, #4] + bl MOD13_0221EBD8 + ldr r0, _0221EBD0 ; =0x0223EC74 + ldr r1, [sp, #4] + ldrh r0, [r0, #2] + cmp r1, r0 + addgt sp, sp, #8 + ldmgtia sp!, {r4, pc} + bl MOD13_0221EBD8 + ldr r1, _0221EBD4 ; =MOD13_0221EB08 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221EBCC: .word 0x02242FE8 +_0221EBD0: .word 0x0223EC74 +_0221EBD4: .word MOD13_0221EB08 + + arm_func_start MOD13_0221EBD8 +MOD13_0221EBD8: ; 0x0221EBD8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r2, _0221EC70 ; =0x02242FE8 + ldr r3, _0221EC74 ; =0x0223EC7C + ldr r6, [r2] + ldr r2, _0221EC78 ; =0x0223EC84 + ldrb r4, [r6, #0x17] + ldrh r2, [r2, #2] + ldr r1, _0221EC7C ; =0x0223EC74 + ldrb r8, [r3, r4] + mov r3, r0 + add r5, r3, r2 + ldrh r4, [r1, #2] + ldrh r2, [r1] + ldr r0, [r6, #8] + mvn r1, #0 + sub r7, r5, r4 + bl MOD13_02239888 + mov r6, #0 + cmp r8, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr sb, _0221EC70 ; =0x02242FE8 + ldr r4, _0221EC80 ; =0x0223EC9C + ldr sl, _0221EC78 ; =0x0223EC84 + mvn r5, #0 +_0221EC38: + ldr r0, [sb] + mov r1, r5 + ldrb r2, [r0, #0x17] + ldr r0, [r0, r6, lsl #2] + mov r3, r7 + add r2, r4, r2, lsl #1 + ldrb r2, [r6, r2] + mov r2, r2, lsl #2 + ldrh r2, [sl, r2] + bl MOD13_02239888 + add r6, r6, #1 + cmp r6, r8 + blt _0221EC38 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EC70: .word 0x02242FE8 +_0221EC74: .word 0x0223EC7C +_0221EC78: .word 0x0223EC84 +_0221EC7C: .word 0x0223EC74 +_0221EC80: .word 0x0223EC9C + + arm_func_start MOD13_0221EC84 +MOD13_0221EC84: ; 0x0221EC84 + ldr r0, _0221EC98 ; =0x02242FE8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x18] + bx lr + .align 2, 0 +_0221EC98: .word 0x02242FE8 + + arm_func_start MOD13_0221EC9C +MOD13_0221EC9C: ; 0x0221EC9C + ldr r0, _0221ECB0 ; =0x02242FE8 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x18] + bx lr + .align 2, 0 +_0221ECB0: .word 0x02242FE8 + + arm_func_start MOD13_0221ECB4 +MOD13_0221ECB4: ; 0x0221ECB4 + ldr r0, _0221ECDC ; =0x02242FE8 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + bxeq lr + ldrb r0, [r0, #0x19] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0221ECDC: .word 0x02242FE8 + + arm_func_start MOD13_0221ECE0 +MOD13_0221ECE0: ; 0x0221ECE0 + ldr r1, _0221ECF0 ; =0x02242FE8 + ldr r1, [r1] + strb r0, [r1, #0x16] + bx lr + .align 2, 0 +_0221ECF0: .word 0x02242FE8 + + arm_func_start MOD13_0221ECF4 +MOD13_0221ECF4: ; 0x0221ECF4 + ldr r2, _0221ED10 ; =0x02242FE8 + mvn r1, #0 + ldr r3, [r2] + ldrsb r2, [r3, #0x16] + cmp r2, r1 + streqb r0, [r3, #0x16] + bx lr + .align 2, 0 +_0221ED10: .word 0x02242FE8 + + arm_func_start MOD13_0221ED14 +MOD13_0221ED14: ; 0x0221ED14 + ldr r0, _0221ED24 ; =0x02242FE8 + ldr r0, [r0] + ldrsb r0, [r0, #0x16] + bx lr + .align 2, 0 +_0221ED24: .word 0x02242FE8 + + arm_func_start MOD13_0221ED28 +MOD13_0221ED28: ; 0x0221ED28 + ldr r0, _0221ED4C ; =0x02242FE8 + mov r3, #1 + ldr r2, [r0] + ldr ip, _0221ED50 ; =MOD13_0223C130 + strb r3, [r2, #0x19] + ldr r0, [r0] + ldr r1, _0221ED54 ; =MOD13_0221E914 + ldr r0, [r0, #0xc] + bx ip + .align 2, 0 +_0221ED4C: .word 0x02242FE8 +_0221ED50: .word MOD13_0223C130 +_0221ED54: .word MOD13_0221E914 + + arm_func_start MOD13_0221ED58 +MOD13_0221ED58: ; 0x0221ED58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r2, _0221EE44 ; =0x0223EC7C + mov r4, r0 + mov r0, #0x1c + mov r1, #4 + ldrb r8, [r2, r4] + bl MOD13_0223AFE0 + ldr sb, _0221EE48 ; =0x02242FE8 + mvn r1, #1 + str r0, [sb] + strb r1, [r0, #0x16] + ldr r0, [sb] + cmp r8, #0 + strb r4, [r0, #0x17] + mov r7, #0 + ble _0221EDE8 + ldr r0, _0221EE4C ; =0x0223EC8C + add r6, r0, r4, lsl #1 + mov r5, r7 + mov r4, #1 + mvn sl, #0 +_0221EDAC: + ldrb r1, [r6] + mov r0, r5 + mov r2, r4 + bl MOD13_02239E0C + ldr r2, [sb] + mov r1, sl + str r0, [r2, r7, lsl #2] + ldr r0, [sb] + mov r2, r4 + ldr r0, [r0, r7, lsl #2] + bl MOD13_02239814 + add r7, r7, #1 + cmp r7, r8 + add r6, r6, #1 + blt _0221EDAC +_0221EDE8: + mov r1, #1 + mov r2, r1 + mov r0, #0 + bl MOD13_02239E0C + ldr r3, _0221EE48 ; =0x02242FE8 + mvn r1, #0 + ldr r4, [r3] + mov r2, #1 + str r0, [r4, #8] + ldr r0, [r3] + ldr r0, [r0, #8] + bl MOD13_02239814 + mov r0, #0xc0 + bl MOD13_0221EBD8 + mov r0, #0 + ldr r1, _0221EE50 ; =MOD13_0221EB64 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0221EE48 ; =0x02242FE8 + ldr r1, [r1] + str r0, [r1, #0xc] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EE44: .word 0x0223EC7C +_0221EE48: .word 0x02242FE8 +_0221EE4C: .word 0x0223EC8C +_0221EE50: .word MOD13_0221EB64 + + arm_func_start MOD13_0221EE54 +MOD13_0221EE54: ; 0x0221EE54 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0221EE94 ; =0x02242FEC + ldrb r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r0, #1 + bl MOD13_0223A65C + ldr r0, _0221EE94 ; =0x02242FEC + mov r1, #0 + strb r1, [r0] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EE94: .word 0x02242FEC + + arm_func_start MOD13_0221EE98 +MOD13_0221EE98: ; 0x0221EE98 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + ldr r3, _0221EF58 ; =0x02242FEC + mov r7, r0 + ldrb r0, [r3] + mov r6, r1 + mov r5, r2 + cmp r0, #0 + addne sp, sp, #0x14 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0221EF5C ; =0x0223F934 + ldr r1, _0221EF60 ; =0x020C91C4 + bl MOD13_0221F174 + ldr r3, _0221EF64 ; =0x01920000 + ldr r2, _0221EF68 ; =0x04001010 + mov r0, #1 + mov r1, #0 + str r3, [r2] + bl MOD13_0223A7F0 + ldr r1, _0221EF6C ; =0x0224307C + mov r4, r0 + ldr r0, [r1] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl MOD13_0222352C + mov r5, r0 + bl MOD13_0221EF88 + ldr r3, _0221EF70 ; =0x0223ECAC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + mov r0, r4 + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + bl MOD13_0223A4F0 + mov r0, r4 + bl MOD13_0223A410 + mov r0, #1 + ldr r1, _0221EF58 ; =0x02242FEC + strb r0, [r1] + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0221EF58: .word 0x02242FEC +_0221EF5C: .word 0x0223F934 +_0221EF60: .word 0x020C91C4 +_0221EF64: .word 0x01920000 +_0221EF68: .word 0x04001010 +_0221EF6C: .word 0x0224307C +_0221EF70: .word 0x0223ECAC + + arm_func_start MOD13_0221EF74 +MOD13_0221EF74: ; 0x0221EF74 + ldr r0, _0221EF84 ; =0x02242FEC + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_0221EF84: .word 0x02242FEC + + arm_func_start MOD13_0221EF88 +MOD13_0221EF88: ; 0x0221EF88 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02222F34 + ldr r1, _0221EFA4 ; =0x0223ECCC + ldr r0, [r1, r0, lsl #2] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EFA4: .word 0x0223ECCC + + arm_func_start MOD13_0221EFA8 +MOD13_0221EFA8: ; 0x0221EFA8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r0 + mov r0, #0 + mov r6, r1 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r1, _0221F05C ; =0x0224307C + mov r4, r0 + ldr r0, [r1] + mov r1, r6 + bl MOD13_02223568 + mov r6, r0 + bl MOD13_0221EF88 + ldr r3, _0221F060 ; =0x0223ECC4 + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r6, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, r4 + bl MOD13_0223A4F0 + bl MOD13_02222F34 + mov r6, r0 + bl MOD13_02222F34 + ldr r1, _0221F064 ; =0x00000209 + mov r3, r0, lsl #2 + str r1, [sp] + ldr r1, _0221F068 ; =0x0223ECE4 + ldr r2, _0221F06C ; =0x0223ECE6 + str r5, [sp, #4] + mov ip, r6, lsl #2 + ldrh r2, [r2, r3] + ldrh r1, [r1, ip] + mov r0, r4 + mov r3, #2 + bl MOD13_0223A634 + mov r0, r4 + bl MOD13_0223A410 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0221F05C: .word 0x0224307C +_0221F060: .word 0x0223ECC4 +_0221F064: .word 0x00000209 +_0221F068: .word 0x0223ECE4 +_0221F06C: .word 0x0223ECE6 + + arm_func_start MOD13_0221F070 +MOD13_0221F070: ; 0x0221F070 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r1, _0221F0E4 ; =0x0224307C + mov r5, r0 + ldr r0, [r1] + mov r1, r4 + bl MOD13_02223568 + mov r4, r0 + bl MOD13_0221EF88 + ldr r3, _0221F0E8 ; =0x0223ECBC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + mov r0, r5 + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + bl MOD13_0223A4F0 + mov r0, r5 + bl MOD13_0223A410 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221F0E4: .word 0x0224307C +_0221F0E8: .word 0x0223ECBC + + arm_func_start MOD13_0221F0EC +MOD13_0221F0EC: ; 0x0221F0EC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F80 + ldr r0, [sp] + cmp r0, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD13_0221ED58 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0221F124 +MOD13_0221F124: ; 0x0221F124 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F80 + ldr r0, [sp] + cmp r0, #1 + bne _0221F158 + mov r0, r4 + bl MOD13_02234DC0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0221F158: + cmp r0, #2 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD13_02234820 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0221F174 +MOD13_0221F174: ; 0x0221F174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r1 + bl MOD13_0221F1BC + add r1, sp, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, [sp] + mov r4, r0 + bl DC_FlushRange + ldr r2, [sp] + mov r0, r4 + mov r1, #0 + blx r5 + mov r0, r4 + bl MOD13_0223939C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_0221F1BC +MOD13_0221F1BC: ; 0x0221F1BC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0221F214 ; =0x02242FF0 + mov r1, r4 + mov r2, #0x3f + bl strncpy + ldrb r0, [r4, #5] + cmp r0, #0x78 + ldreq r0, _0221F214 ; =0x02242FF0 + ldmeqia sp!, {r4, pc} + bl MOD13_02222F34 + ldrb r1, [r4, #5] + cmp r1, #0x79 + bne _0221F200 + cmp r0, #0 + ldrne r0, _0221F214 ; =0x02242FF0 + ldmneia sp!, {r4, pc} +_0221F200: + ldr r1, _0221F218 ; =0x0223ECB4 + ldrb r1, [r1, r0] + ldr r0, _0221F214 ; =0x02242FF0 + strb r1, [r0, #5] + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F214: .word 0x02242FF0 +_0221F218: .word 0x0223ECB4 + + arm_func_start MOD13_0221F21C +MOD13_0221F21C: ; 0x0221F21C + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + ldr r4, _0221F258 ; =0x02243030 + mov r5, r6 +_0221F22C: + ldr r0, [r4] + ldr r0, [r0, r6, lsl #2] + cmp r0, #0 + beq _0221F248 + bl MOD13_02239AE8 + ldr r0, [r4] + str r5, [r0, r6, lsl #2] +_0221F248: + add r6, r6, #1 + cmp r6, #4 + blt _0221F22C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0221F258: .word 0x02243030 + + arm_func_start MOD13_0221F25C +MOD13_0221F25C: ; 0x0221F25C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov fp, r1 + str r2, [sp] + str r3, [sp, #4] + mov sb, #6 + bl MOD13_0221F21C + mov r8, #0 + ldr r4, _0221F344 ; =0x02243030 + mov r7, r8 + mov r6, #1 + mvn r5, #0 +_0221F290: + mov r0, r7 + mov r1, sb + mov r2, r6 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r5 + str r0, [r2, r8, lsl #2] + ldr r0, [r4] + mov r2, r6 + ldr r0, [r0, r8, lsl #2] + bl MOD13_02239814 + add r8, r8, #1 + cmp r8, #4 + add sb, sb, #1 + blt _0221F290 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp] + ldr r0, [r0] + mov r2, sl + ldr r0, [r0] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp] + ldr r0, [r0] + mov r2, fp + ldr r0, [r0, #4] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp, #4] + ldr r0, [r0] + mov r2, sl + ldr r0, [r0, #8] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp, #4] + ldr r0, [r0] + mov r2, fp + ldr r0, [r0, #0xc] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221F344: .word 0x02243030 + + arm_func_start MOD13_0221F348 +MOD13_0221F348: ; 0x0221F348 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r4, r0 + mov fp, r1 + str r2, [sp] + mov sl, r3 + bl MOD13_0221F21C + ldr r0, _0221F3FC ; =0x0223ECFC + mov sb, #0 + add r8, r0, r4, lsl #1 + ldr r4, _0221F400 ; =0x02243030 + mov r7, sb + mov r6, #1 + mvn r5, #0 +_0221F380: + ldrb r1, [r8] + mov r0, r7 + mov r2, r6 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r5 + str r0, [r2, sb, lsl #2] + ldr r0, [r4] + mov r2, r6 + ldr r0, [r0, sb, lsl #2] + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, #2 + add r8, r8, #1 + blt _0221F380 + ldr r0, _0221F400 ; =0x02243030 + mov r2, fp + ldr r0, [r0] + mov r3, sl + ldr r0, [r0] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F400 ; =0x02243030 + ldr r2, [sp] + ldr r0, [r0] + mov r3, sl + ldr r0, [r0, #4] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221F3FC: .word 0x0223ECFC +_0221F400: .word 0x02243030 + + arm_func_start MOD13_0221F404 +MOD13_0221F404: ; 0x0221F404 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221F21C + ldr r0, _0221F420 ; =0x02243030 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F420: .word 0x02243030 + + arm_func_start MOD13_0221F424 +MOD13_0221F424: ; 0x0221F424 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x10 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0221F448 ; =0x02243030 + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F448: .word 0x02243030 + + arm_func_start MOD13_0221F44C +MOD13_0221F44C: ; 0x0221F44C + stmdb sp!, {r4, lr} + ldr r1, _0221F488 ; =0x02243034 + mov r4, r0 + ldr r0, [r1] + mov r1, #0xc0 + bl DC_FlushRange + ldr r0, _0221F488 ; =0x02243034 + mov r1, #0 + ldr r0, [r0] + mov r2, #0xc0 + bl GX_LoadBG1Scr + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F488: .word 0x02243034 + + arm_func_start MOD13_0221F48C +MOD13_0221F48C: ; 0x0221F48C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + add r0, r0, #2 + bl MOD13_0221F4CC + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0221F4AC +MOD13_0221F4AC: ; 0x0221F4AC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + add r0, r0, #5 + bl MOD13_0221F4CC + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0221F4CC +MOD13_0221F4CC: ; 0x0221F4CC + stmdb sp!, {r4, lr} + ldr r1, _0221F51C ; =0x0223FB18 + ldr r0, [r1, r0, lsl #2] + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0221F520 ; =0x02243034 + mov r4, r0 + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopyFast + mov r0, r4 + bl MOD13_0223939C + mov r0, #1 + ldr r1, _0221F524 ; =MOD13_0221F44C + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F51C: .word 0x0223FB18 +_0221F520: .word 0x02243034 +_0221F524: .word MOD13_0221F44C + + arm_func_start MOD13_0221F528 +MOD13_0221F528: ; 0x0221F528 + ldr ip, _0221F534 ; =MOD13_0223AF90 + ldr r0, _0221F538 ; =0x02243034 + bx ip + .align 2, 0 +_0221F534: .word MOD13_0223AF90 +_0221F538: .word 0x02243034 + + arm_func_start MOD13_0221F53C +MOD13_0221F53C: ; 0x0221F53C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xc0 + mov r1, #4 + bl MOD13_0223B004 + ldr r2, _0221F5B0 ; =0x02243034 + ldr r1, _0221F5B4 ; =0x020C8E1C + str r0, [r2] + ldr r0, _0221F5B8 ; =0x0223FB68 + bl MOD13_0221F174 + bl MOD13_02222F1C + cmp r0, #0 + beq _0221F580 + cmp r0, #1 + beq _0221F598 + add sp, sp, #4 + ldmia sp!, {pc} +_0221F580: + ldr r0, _0221F5BC ; =0x0223FB18 + ldr r1, _0221F5C0 ; =0x020C915C + ldr r0, [r0] + bl MOD13_0221F174 + add sp, sp, #4 + ldmia sp!, {pc} +_0221F598: + ldr r0, _0221F5BC ; =0x0223FB18 + ldr r1, _0221F5C0 ; =0x020C915C + ldr r0, [r0, #4] + bl MOD13_0221F174 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F5B0: .word 0x02243034 +_0221F5B4: .word 0x020C8E1C +_0221F5B8: .word 0x0223FB68 +_0221F5BC: .word 0x0223FB18 +_0221F5C0: .word 0x020C915C + + arm_func_start MOD13_0221F5C4 +MOD13_0221F5C4: ; 0x0221F5C4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _0221F67C ; =0x04000208 + mov r4, #0 + ldrh r5, [r0] + strh r4, [r0] + bl WM_GetAllowedChannel + cmp r0, #0x8000 + beq _0221F5F0 + bl WM_GetLinkLevel + mov r4, r0 +_0221F5F0: + ldr r2, _0221F67C ; =0x04000208 + ldr r1, _0221F680 ; =0x02243038 + ldrh r0, [r2] + ldr r3, _0221F684 ; =0x0223ED08 + mov r0, #0 + strh r5, [r2] + ldr r2, [r1] + ldrsb r1, [r2, #8] + ldr r2, [r2] + add r1, r3, r1, lsl #2 + ldrb r1, [r4, r1] + bl MOD13_02239E8C + ldr r0, _0221F688 ; =0x0223ED04 + ldr r2, _0221F680 ; =0x02243038 + ldrh r3, [r0, #2] + ldr r1, [r2] + ldrh ip, [r0] + ldr lr, [r1] + ldr r0, _0221F68C ; =0x000001FF + ldr r4, [lr] + ldr r1, _0221F690 ; =0xFE00FF00 + and r3, r3, #0xff + and r1, r4, r1 + and r4, ip, r0 + orr r0, r1, r3 + orr r0, r0, r4, lsl #16 + str r0, [lr] + ldr r0, [r2] + ldr r1, [r0] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0x800 + strh r0, [r1, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221F67C: .word 0x04000208 +_0221F680: .word 0x02243038 +_0221F684: .word 0x0223ED08 +_0221F688: .word 0x0223ED04 +_0221F68C: .word 0x000001FF +_0221F690: .word 0xFE00FF00 + + arm_func_start MOD13_0221F694 +MOD13_0221F694: ; 0x0221F694 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0221F6DC ; =0x02243038 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, [r0, #4] + mov r0, #0 + bl MOD13_0223C104 + ldr r0, _0221F6DC ; =0x02243038 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223B974 + ldr r0, _0221F6DC ; =0x02243038 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F6DC: .word 0x02243038 + + arm_func_start MOD13_0221F6E0 +MOD13_0221F6E0: ; 0x0221F6E0 + stmdb sp!, {r4, lr} + ldr r1, _0221F7A0 ; =0x02243038 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #0xc + mov r1, #4 + bl MOD13_0223B004 + ldr r1, _0221F7A0 ; =0x02243038 + ldr r2, _0221F7A4 ; =0x0223ED08 + str r0, [r1] + strb r4, [r0, #8] + ldrb r1, [r2, r4, lsl #2] + mov r0, #0 + bl MOD13_02239E54 + ldr r3, _0221F7A0 ; =0x02243038 + ldr r2, _0221F7A8 ; =0x0223ED04 + ldr r4, [r3] + ldr r1, _0221F7AC ; =0xFE00FF00 + str r0, [r4] + ldr r4, [r3] + ldrh r0, [r2, #2] + ldr r4, [r4] + ldrh lr, [r2] + ldr ip, [r4] + and r2, r0, #0xff + and r1, ip, r1 + ldr r0, _0221F7B0 ; =0x000001FF + orr r1, r1, r2 + and r0, lr, r0 + orr r0, r1, r0, lsl #16 + str r0, [r4] + ldr r1, [r3] + mov r0, #0 + ldr lr, [r1] + ldr r1, _0221F7B4 ; =MOD13_0221F5C4 + ldrh ip, [lr, #4] + mov r2, r0 + mov r3, #0x78 + bic ip, ip, #0xc00 + orr ip, ip, #0x800 + strh ip, [lr, #4] + bl MOD13_0223C1C4 + ldr r1, _0221F7A0 ; =0x02243038 + ldr r1, [r1] + str r0, [r1, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F7A0: .word 0x02243038 +_0221F7A4: .word 0x0223ED08 +_0221F7A8: .word 0x0223ED04 +_0221F7AC: .word 0xFE00FF00 +_0221F7B0: .word 0x000001FF +_0221F7B4: .word MOD13_0221F5C4 + + arm_func_start MOD13_0221F7B8 +MOD13_0221F7B8: ; 0x0221F7B8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + mov r7, #0 + ldr r8, _0221F894 ; =0x0224303C + mov r5, r7 +_0221F7D4: + mov r6, r5 + mov r4, r7, lsl #4 +_0221F7DC: + ldr r0, [r8] + add r0, r4, r0 + ldr r0, [r0, r6, lsl #2] + bl MOD13_0223A978 + cmp r7, #0 + bne _0221F804 + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r0, [r0, #0x104] + bl MOD13_02239AE8 +_0221F804: + add r6, r6, #1 + cmp r6, #4 + blt _0221F7DC + add r7, r7, #1 + cmp r7, #3 + blt _0221F7D4 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F824: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xfc] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #2 + blt _0221F824 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F848: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xec] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #4 + blt _0221F848 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F86C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x30] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #0x2f + blt _0221F86C + ldr r0, _0221F894 ; =0x0224303C + bl MOD13_0223AF90 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0221F894: .word 0x0224303C + + arm_func_start MOD13_0221F898 +MOD13_0221F898: ; 0x0221F898 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221F908 ; =0x0224303C + ldr r2, _0221F90C ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x30] + mov r1, #0 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221F910 ; =MOD13_0221F7B8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F908: .word 0x0224303C +_0221F90C: .word 0x01FF0000 +_0221F910: .word MOD13_0221F7B8 + + arm_func_start MOD13_0221F914 +MOD13_0221F914: ; 0x0221F914 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221F984 ; =0x0224303C + ldr r2, _0221F988 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x60] + mov r1, #1 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221F98C ; =MOD13_0221F898 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F984: .word 0x0224303C +_0221F988: .word 0x01FF0000 +_0221F98C: .word MOD13_0221F898 + + arm_func_start MOD13_0221F990 +MOD13_0221F990: ; 0x0221F990 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FA00 ; =0x0224303C + ldr r2, _0221FA04 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x90] + mov r1, #2 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FA08 ; =MOD13_0221F914 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FA00: .word 0x0224303C +_0221FA04: .word 0x01FF0000 +_0221FA08: .word MOD13_0221F914 + + arm_func_start MOD13_0221FA0C +MOD13_0221FA0C: ; 0x0221FA0C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FA7C ; =0x0224303C + ldr r2, _0221FA80 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0xc0] + mov r1, #3 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FA84 ; =MOD13_0221F990 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FA7C: .word 0x0224303C +_0221FA80: .word 0x01FF0000 +_0221FA84: .word MOD13_0221F990 + + arm_func_start MOD13_0221FA88 +MOD13_0221FA88: ; 0x0221FA88 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FB08 ; =0x0224303C + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0xfc] + bl MOD13_02239ADC + ldr r3, [r0] + ldr r1, _0221FB0C ; =0x01FF0000 + ldr r2, _0221FB08 ; =0x0224303C + and r1, r3, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r0] + ldr r0, [r2] + and r1, r1, #0xff + str r1, [sp, #4] + add r2, r1, #0xc + str r2, [sp, #4] + ldrb r0, [r0, #0x11d] + mov r1, #4 + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FB10 ; =MOD13_0221FA0C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FB08: .word 0x0224303C +_0221FB0C: .word 0x01FF0000 +_0221FB10: .word MOD13_0221FA0C + + arm_func_start MOD13_0221FB14 +MOD13_0221FB14: ; 0x0221FB14 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0221FF90 ; =0x0224303C + ldr r3, _0221FF94 ; =0x0223EF08 + ldr ip, [r2] + add r1, ip, #0x100 + ldrsb lr, [r1, #0x21] + add r1, r3, lr, lsl #2 + ldrsb r1, [r0, r1] + strb r1, [ip, #0x121] + ldr r1, [r2] + add r2, r1, #0x100 + ldrsb r2, [r2, #0x21] + cmp r2, #0x2e + bne _0221FB5C + cmp r0, #3 + streqb lr, [r1, #0x120] + beq _0221FF7C +_0221FB5C: + cmp r2, #0x33 + bne _0221FB7C + cmp r0, #1 + beq _0221FB74 + cmp r0, #3 + bne _0221FB7C +_0221FB74: + strb lr, [r1, #0x120] + b _0221FF7C +_0221FB7C: + cmp r2, #0x34 + bne _0221FBA0 + cmp r0, #1 + beq _0221FB94 + cmp r0, #3 + bne _0221FBA0 +_0221FB94: + cmp lr, #0x2e + strneb lr, [r1, #0x120] + b _0221FF7C +_0221FBA0: + mvn r0, #0 + cmp r2, r0 + bne _0221FBDC + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + beq _0221FBC4 + cmp r0, #0x32 + bne _0221FBD0 +_0221FBC4: + mov r0, #0x23 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FBD0: + mov r0, #0x22 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FBDC: + mvn r0, #1 + cmp r2, r0 + bne _0221FCA4 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x26 + bgt _0221FC38 + cmp r0, #0x26 + bge _0221FC74 + cmp r0, #5 + bgt _0221FC2C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FC98 +_0221FC14: ; jump table + b _0221FC5C ; case 0 + b _0221FC68 ; case 1 + b _0221FC98 ; case 2 + b _0221FC74 ; case 3 + b _0221FC80 ; case 4 + b _0221FC8C ; case 5 +_0221FC2C: + cmp r0, #0x24 + beq _0221FC68 + b _0221FC98 +_0221FC38: + cmp r0, #0x28 + bgt _0221FC54 + cmp r0, #0x28 + bge _0221FC8C + cmp r0, #0x27 + beq _0221FC80 + b _0221FC98 +_0221FC54: + cmp r0, #0x31 + bne _0221FC98 +_0221FC5C: + mov r0, #0x31 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC68: + mov r0, #0x24 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC74: + mov r0, #0x26 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC80: + mov r0, #0x27 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC8C: + mov r0, #0x28 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC98: + mov r0, #0x25 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FCA4: + mvn r0, #2 + cmp r2, r0 + bne _0221FDA8 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + bgt _0221FD18 + cmp r0, #0x23 + bge _0221FD90 + cmp r0, #0xb + bgt _0221FD0C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FD9C +_0221FCDC: ; jump table + b _0221FD9C ; case 0 + b _0221FD9C ; case 1 + b _0221FD9C ; case 2 + b _0221FD9C ; case 3 + b _0221FD9C ; case 4 + b _0221FD9C ; case 5 + b _0221FD60 ; case 6 + b _0221FD6C ; case 7 + b _0221FD9C ; case 8 + b _0221FD78 ; case 9 + b _0221FD84 ; case 10 + b _0221FD90 ; case 11 +_0221FD0C: + cmp r0, #0x22 + beq _0221FD90 + b _0221FD9C +_0221FD18: + cmp r0, #0x2a + bgt _0221FD34 + cmp r0, #0x2a + bge _0221FD6C + cmp r0, #0x29 + beq _0221FD60 + b _0221FD9C +_0221FD34: + cmp r0, #0x32 + bgt _0221FD9C + cmp r0, #0x2c + blt _0221FD9C + cmp r0, #0x2c + beq _0221FD78 + cmp r0, #0x2d + beq _0221FD84 + cmp r0, #0x32 + beq _0221FD90 + b _0221FD9C +_0221FD60: + mov r0, #0x29 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD6C: + mov r0, #0x2a + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD78: + mov r0, #0x2c + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD84: + mov r0, #0x2d + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD90: + mov r0, #0x2e + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD9C: + mov r0, #0x2b + strb r0, [r1, #0x121] + b _0221FF7C +_0221FDA8: + mvn r0, #3 + cmp r2, r0 + bne _0221FE70 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x26 + bgt _0221FE04 + cmp r0, #0x26 + bge _0221FE40 + cmp r0, #5 + bgt _0221FDF8 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FE64 +_0221FDE0: ; jump table + b _0221FE28 ; case 0 + b _0221FE34 ; case 1 + b _0221FE64 ; case 2 + b _0221FE40 ; case 3 + b _0221FE4C ; case 4 + b _0221FE58 ; case 5 +_0221FDF8: + cmp r0, #0x24 + beq _0221FE34 + b _0221FE64 +_0221FE04: + cmp r0, #0x28 + bgt _0221FE20 + cmp r0, #0x28 + bge _0221FE58 + cmp r0, #0x27 + beq _0221FE4C + b _0221FE64 +_0221FE20: + cmp r0, #0x31 + bne _0221FE64 +_0221FE28: + mov r0, #0 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE34: + mov r0, #1 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE40: + mov r0, #3 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE4C: + mov r0, #4 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE58: + mov r0, #5 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE64: + mov r0, #2 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE70: + mvn r0, #4 + cmp r2, r0 + bne _0221FF7C + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + bgt _0221FEE4 + cmp r0, #0x23 + bge _0221FF68 + cmp r0, #0xb + bgt _0221FED8 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FF74 +_0221FEA8: ; jump table + b _0221FF74 ; case 0 + b _0221FF74 ; case 1 + b _0221FF74 ; case 2 + b _0221FF74 ; case 3 + b _0221FF74 ; case 4 + b _0221FF74 ; case 5 + b _0221FF2C ; case 6 + b _0221FF38 ; case 7 + b _0221FF74 ; case 8 + b _0221FF44 ; case 9 + b _0221FF50 ; case 10 + b _0221FF5C ; case 11 +_0221FED8: + cmp r0, #0x22 + beq _0221FF5C + b _0221FF74 +_0221FEE4: + cmp r0, #0x2a + bgt _0221FF00 + cmp r0, #0x2a + bge _0221FF38 + cmp r0, #0x29 + beq _0221FF2C + b _0221FF74 +_0221FF00: + cmp r0, #0x32 + bgt _0221FF74 + cmp r0, #0x2c + blt _0221FF74 + cmp r0, #0x2c + beq _0221FF44 + cmp r0, #0x2d + beq _0221FF50 + cmp r0, #0x32 + beq _0221FF68 + b _0221FF74 +_0221FF2C: + mov r0, #6 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF38: + mov r0, #7 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF44: + mov r0, #9 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF50: + mov r0, #0xa + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF5C: + mov r0, #0xb + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF68: + mov r0, #0x32 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF74: + mov r0, #8 + strb r0, [r1, #0x121] +_0221FF7C: + bl MOD13_0221FF98 + mov r0, #8 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221FF90: .word 0x0224303C +_0221FF94: .word 0x0223EF08 + + arm_func_start MOD13_0221FF98 +MOD13_0221FF98: ; 0x0221FF98 + stmdb sp!, {r4, lr} + ldr r0, _02220068 ; =0x0224303C + ldr r1, [r0] + add r0, r1, #0x100 + ldrsb r0, [r0, #0x21] + sub r0, r0, #0x2f + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0221FFFC +_0221FFBC: ; jump table + b _0221FFD4 ; case 0 + b _0221FFDC ; case 1 + b _0221FFE4 ; case 2 + b _0221FFEC ; case 3 + b _0221FFF4 ; case 4 + b _0221FFF4 ; case 5 +_0221FFD4: + mov r4, #0x42 + b _02220000 +_0221FFDC: + mov r4, #0x41 + b _02220000 +_0221FFE4: + mov r4, #0x43 + b _02220000 +_0221FFEC: + mov r4, #0x41 + b _02220000 +_0221FFF4: + mov r4, #0x45 + b _02220000 +_0221FFFC: + mov r4, #0x40 +_02220000: + ldr r0, [r1, #0x114] + mov r1, #0 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _02220068 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x114] + bl MOD13_02239814 + ldr r0, _02220068 ; =0x0224303C + ldr r2, _0222006C ; =0x0223EE34 + ldr r3, [r0] + mvn r1, #0 + add r0, r3, #0x100 + ldrsb ip, [r0, #0x21] + ldr r0, [r3, #0x114] + ldr r3, _02220070 ; =0x0223EE36 + mov ip, ip, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220068: .word 0x0224303C +_0222006C: .word 0x0223EE34 +_02220070: .word 0x0223EE36 + + arm_func_start MOD13_02220074 +MOD13_02220074: ; 0x02220074 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addlt sp, sp, #4 + ldmltia sp!, {pc} + cmp r0, #0x2f + bge _022200CC + ldr r2, _02220144 ; =0x0224303C + ldr r3, _02220148 ; =0x0223ED10 + ldr r2, [r2] + add sp, sp, #4 + add r0, r2, r0, lsl #2 + ldr ip, [r0, #0x30] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r2, [ip, #4] + ldrb r0, [r3, r1] + bic r1, r2, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_022200CC: + sub r3, r0, #0x2f + cmp r3, #4 + bge _02220114 + ldr r0, _02220144 ; =0x0224303C + ldr r2, _02220148 ; =0x0223ED10 + ldr r0, [r0] + add sp, sp, #4 + add r0, r0, r3, lsl #2 + ldr ip, [r0, #0xec] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r3, [ip, #4] + ldrb r0, [r2, r1] + bic r1, r3, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02220114: + ldr r2, _02220144 ; =0x0224303C + ldr r3, _0222014C ; =0x0223ED14 + ldr r2, [r2] + sub r0, r0, #0x33 + add r0, r2, r0, lsl #2 + ldrb r3, [r3, r1] + ldr r0, [r0, #0xfc] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220144: .word 0x0224303C +_02220148: .word 0x0223ED10 +_0222014C: .word 0x0223ED14 + + arm_func_start MOD13_02220150 +MOD13_02220150: ; 0x02220150 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r1, _022201D4 ; =0x0224303C + mov r6, #0 + ldr r1, [r1] + mov r8, r0 + mov r5, r6 + mov r7, r6 + mov r4, r6 + strb r8, [r1, #0x11d] + ldr sb, _022201D8 ; =0x0223ED78 +_0222017C: + add r0, sb, r4, lsl #2 + ldrh r2, [r0, #2] + mov r0, r8 + mov r1, r7 + bl MOD13_022201DC + add r7, r7, #1 + cmp r7, #4 + add r4, r4, #0xc + blt _0222017C + cmp r8, #2 + moveq r6, #1 + beq _022201B4 + cmp r8, #1 + moveq r5, #1 +_022201B4: + mov r1, r6 + mov r0, #0x2f + bl MOD13_02220074 + mov r1, r5 + mov r0, #0x30 + bl MOD13_02220074 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022201D4: .word 0x0224303C +_022201D8: .word 0x0223ED78 + + arm_func_start MOD13_022201DC +MOD13_022201DC: ; 0x022201DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r4, _02220460 ; =0x0223ED38 + ldr lr, _02220464 ; =0x0223ED40 + ldrb r5, [r4, #4] + ldrb sb, [r4] + ldrb r8, [r4, #1] + strb r5, [sp, #0xc] + mov r5, r1 + mov r1, #0xc + mul r1, r5, r1 + ldrb r7, [r4, #2] + ldrb r6, [r4, #3] + strb sb, [sp, #8] + str r1, [sp, #4] + ldrb ip, [lr] + ldrb sl, [lr, #1] + ldrb r4, [lr, #2] + ldrb fp, [lr, #3] + ldrb sb, [lr, #4] + ldr r3, _02220468 ; =0x0223ED30 + strb r8, [sp, #9] + strb r7, [sp, #0xa] + strb r6, [sp, #0xb] + add r1, sp, #8 + ldrb lr, [r3] + ldrb r8, [r3, #1] + ldrb r7, [r3, #2] + ldrb r6, [r3, #3] + ldrb r3, [r3, #4] + ldrb r1, [r1, r5] + strb sl, [sp, #0xe] + strb r4, [sp, #0xf] + strb sb, [sp, #0x11] + strb ip, [sp, #0xd] + mov r4, r2 + ldr sl, [sp, #4] + strb fp, [sp, #0x10] + strb lr, [sp, #0x12] + strb r8, [sp, #0x13] + strb r7, [sp, #0x14] + strb r6, [sp, #0x15] + strb r3, [sp, #0x16] + cmp r1, #0 + mov sb, #0 + ble _0222030C + add r1, sp, #8 + ldr r2, _0222046C ; =0x0224303C + ldr r3, _02220470 ; =0x0223ED78 + ldr fp, _02220474 ; =0xFE00FF00 + and r8, r4, #0xff + add r7, r1, r5 +_022202AC: + ldr r1, [r2] + mov r6, sl, lsl #2 + add r1, r1, sl, lsl #2 + ldr lr, [r1, #0x30] + ldr r1, _02220478 ; =0xC1FFFCFF + ldr ip, [lr] + add sb, sb, #1 + and r1, ip, r1 + str r1, [lr] + ldr r1, [r2] + ldrh ip, [r3, r6] + add r1, r1, sl, lsl #2 + ldr r6, [r1, #0x30] + ldr r1, _0222047C ; =0x000001FF + add sl, sl, #1 + and r1, ip, r1 + ldr ip, [r6] + and ip, ip, fp + orr ip, ip, r8 + orr r1, ip, r1, lsl #16 + str r1, [r6] + ldrb r1, [r7] + cmp sb, r1 + blt _022202AC +_0222030C: + cmp r5, #4 + bge _0222034C + ldr r1, _0222046C ; =0x0224303C + mov r2, #2 + ldr r6, [r1] + ldr r1, [sp, #4] + str r2, [sp] + add r0, r6, r0, lsl #4 + ldr r3, _02220470 ; =0x0223ED78 + mov r1, r1, lsl #2 + add r2, r6, r5, lsl #2 + ldrh r1, [r3, r1] + ldr r3, [r2, #0x104] + ldr r0, [r0, r5, lsl #2] + mov r2, r4 + bl MOD13_0223A440 +_0222034C: + add r0, r5, #3 + mov r1, #4 + bl FX_ModS32 + add r8, sp, #0xd + ldrb r1, [r8, r5] + mov r2, #0 + cmp r1, #0 + ble _022203E0 + ldr r3, _02220480 ; =0x0223ED58 + mov r1, r0, lsl #2 + ldrh r3, [r3, r1] + ldr r0, _0222047C ; =0x000001FF + and r7, r4, #0xff + and r0, r3, r0 + mov r6, r0, lsl #0x10 + add r3, r8, r5 + ldr sl, _0222046C ; =0x0224303C + ldr r8, _02220478 ; =0xC1FFFCFF + ldr sb, _02220474 ; =0xFE00FF00 +_02220398: + ldr r0, [sl] + add r2, r2, #1 + add r0, r1, r0 + ldr fp, [r0, #0xec] + ldr r0, [fp] + and r0, r0, r8 + str r0, [fp] + ldr r0, [sl] + add r0, r1, r0 + ldr r0, [r0, #0xec] + ldr fp, [r0] + and fp, fp, sb + orr fp, fp, r7 + orr fp, r6, fp + str fp, [r0] + ldrb r0, [r3] + cmp r2, r0 + blt _02220398 +_022203E0: + add r1, sp, #0x12 + ldrb r0, [r1, r5] + mov r8, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r1, r5 + ldr sl, _0222046C ; =0x0224303C + ldr r5, _02220484 ; =0x0223ED50 + mov r6, r8 + mvn r7, #0 +_0222040C: + ldr r0, [sl] + mov r1, r7 + add r0, r0, r8, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r6 + mov r3, r6 + bl MOD13_02239A1C + ldr r0, [sl] + mov r1, r8, lsl #2 + add r0, r0, r8, lsl #2 + ldrh r2, [r5, r1] + ldr r0, [r0, #0xfc] + mov r1, r7 + mov r3, r4 + bl MOD13_02239888 + ldrb r0, [sb] + add r8, r8, #1 + cmp r8, r0 + blt _0222040C + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02220460: .word 0x0223ED38 +_02220464: .word 0x0223ED40 +_02220468: .word 0x0223ED30 +_0222046C: .word 0x0224303C +_02220470: .word 0x0223ED78 +_02220474: .word 0xFE00FF00 +_02220478: .word 0xC1FFFCFF +_0222047C: .word 0x000001FF +_02220480: .word 0x0223ED58 +_02220484: .word 0x0223ED50 + + arm_func_start MOD13_02220488 +MOD13_02220488: ; 0x02220488 + stmdb sp!, {r4, lr} + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204A4 + mov r0, #0 + bl MOD13_0221FB14 +_022204A4: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204BC + mov r0, #1 + bl MOD13_0221FB14 +_022204BC: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204D4 + mov r0, #2 + bl MOD13_0221FB14 +_022204D4: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204EC + mov r0, #3 + bl MOD13_0221FB14 +_022204EC: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02220604 + ldr r2, _022206A4 ; =0x0224303C + ldr r0, [r2] + add r1, r0, #0x100 + ldrsb r4, [r1, #0x21] + cmp r4, #0x2f + bge _0222055C + ldrb r1, [r0, #0x124] + cmp r1, #0 + bne _0222052C + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_0222052C: + ldrb r3, [r0, #0x11d] + ldr r1, _022206A8 ; =0x0223FB7C + ldr r1, [r1, r3, lsl #2] + ldrb r1, [r1, r4] + strb r1, [r0, #0x11c] + ldr r0, [r2] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + ldmneia sp!, {r4, pc} + mov r0, #0 + bl MOD13_02220150 + ldmia sp!, {r4, pc} +_0222055C: + sub r1, r4, #0x2f + cmp r1, #4 + bge _022205F4 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _022205C4 +_02220574: ; jump table + b _02220584 ; case 0 + b _0222058C ; case 1 + b _02220594 ; case 2 + b _022205AC ; case 3 +_02220584: + bl MOD13_02220944 + ldmia sp!, {r4, pc} +_0222058C: + bl MOD13_0222090C + ldmia sp!, {r4, pc} +_02220594: + ldrb r1, [r0, #0x124] + cmp r1, #0 + bne _022205C4 + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_022205AC: + ldrb r1, [r0, #0x123] + cmp r1, #0 + bne _022205C4 + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_022205C4: + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _022205D8 + mov r0, #0 + bl MOD13_02220150 +_022205D8: + ldr r1, _022206AC ; =0x0223ED48 + sub r2, r4, #0x2f + ldr r0, _022206A4 ; =0x0224303C + ldrb r1, [r1, r2] + ldr r0, [r0] + strb r1, [r0, #0x11c] + ldmia sp!, {r4, pc} +_022205F4: + ldr r1, _022206B0 ; =0x0223ED1C + sub r2, r4, #0x33 + ldrb r1, [r1, r2] + strb r1, [r0, #0x11c] +_02220604: + mov r0, #2 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222065C + ldr r0, _022206A4 ; =0x0224303C + ldr r1, [r0] + ldrb r0, [r1, #0x123] + cmp r0, #0 + bne _02220650 + ldrb r0, [r1, #0x125] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022206A4 ; =0x0224303C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x125] + ldmia sp!, {r4, pc} +_02220650: + mov r0, #0x80 + strb r0, [r1, #0x11c] + b _02220678 +_0222065C: + mov r0, #2 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _022206A4 ; =0x0224303C + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x125] +_02220678: + mov r0, #0x400 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222068C + bl MOD13_02220944 +_0222068C: + mov r0, #0x800 + bl MOD13_0223B3D4 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_0222090C + ldmia sp!, {r4, pc} + .align 2, 0 +_022206A4: .word 0x0224303C +_022206A8: .word 0x0223FB7C +_022206AC: .word 0x0223ED48 +_022206B0: .word 0x0223ED1C + + arm_func_start MOD13_022206B4 +MOD13_022206B4: ; 0x022206B4 + stmdb sp!, {r4, lr} + ldr r1, _02220704 ; =0x0224303C + mov r4, r0 + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1f] + cmp r4, r1 + ldmeqia sp!, {r4, pc} + mov r1, #1 + bl MOD13_02220074 + ldr r0, _02220704 ; =0x0224303C + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1f] + bl MOD13_02220074 + ldr r0, _02220704 ; =0x0224303C + ldr r0, [r0] + strb r4, [r0, #0x11f] + ldmia sp!, {r4, pc} + .align 2, 0 +_02220704: .word 0x0224303C + + arm_func_start MOD13_02220708 +MOD13_02220708: ; 0x02220708 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _022208EC ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _022208CC + ldr r7, _022208F0 ; =0x0223ED78 + mov r4, #0 + ldr r6, _022208F4 ; =0x0223ED2C + add r5, sp, #0 +_02220730: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B320 + cmp r0, #0 + beq _02220774 + ldr r0, _022208F8 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r4 + bne _022208CC + mov r0, r4 + bl MOD13_022206B4 + b _022208D4 +_02220774: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _02220730 + ldr r7, _022208FC ; =0x0223ED70 + ldr r6, _02220900 ; =0x0223ED60 + mov r5, #2 + add r4, sp, #0 +_02220794: + mov r0, r6 + mov r1, r7 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _02220854 + ldr r1, _022208F8 ; =0x0224303C + add r0, r5, #0x2f + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1e] + cmp r1, r0 + bne _022208CC + bl MOD13_022206B4 + cmp r5, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _022208F8 ; =0x0224303C + ldr r2, [r0] + ldrb r1, [r2, #0x122] + add r1, r1, #1 + strb r1, [r2, #0x122] + ldr r2, [r0] + ldrb r1, [r2, #0x122] + cmp r1, #0x28 + addlo sp, sp, #0xc + ldmloia sp!, {r4, r5, r6, r7, pc} + ldrb r1, [r2, #0x123] + cmp r1, #0 + bne _02220834 + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022208F8 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220834: + mov r1, #0x80 + strb r1, [r2, #0x11c] + ldr r1, [r0] + add sp, sp, #0xc + ldrb r0, [r1, #0x122] + sub r0, r0, #7 + strb r0, [r1, #0x122] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220854: + add r5, r5, #1 + cmp r5, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220794 + ldr r7, _02220904 ; =0x0223ED50 + mov r6, #0 + ldr r5, _02220908 ; =0x0223ED28 + add r4, sp, #0 +_02220878: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _022208BC + ldr r1, _022208F8 ; =0x0224303C + add r0, r6, #0x33 + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1e] + cmp r1, r0 + bne _022208CC + bl MOD13_022206B4 + b _022208D4 +_022208BC: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02220878 +_022208CC: + mvn r0, #0 + bl MOD13_022206B4 +_022208D4: + ldr r0, _022208F8 ; =0x0224303C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x122] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022208EC: .word 0x0223F75C +_022208F0: .word 0x0223ED78 +_022208F4: .word 0x0223ED2C +_022208F8: .word 0x0224303C +_022208FC: .word 0x0223ED70 +_02220900: .word 0x0223ED60 +_02220904: .word 0x0223ED50 +_02220908: .word 0x0223ED28 + + arm_func_start MOD13_0222090C +MOD13_0222090C: ; 0x0222090C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02220940 ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_02220150 + mov r0, #1 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220940: .word 0x0224303C + + arm_func_start MOD13_02220944 +MOD13_02220944: ; 0x02220944 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02220978 ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + cmp r0, #2 + moveq r0, #0 + movne r0, #2 + bl MOD13_02220150 + mov r0, #1 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220978: .word 0x0224303C + + arm_func_start MOD13_0222097C +MOD13_0222097C: ; 0x0222097C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _02220C28 ; =0x0224303C + ldr r0, _02220C2C ; =0x0223F75C + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x11c] + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r7, _02220C30 ; =0x0223ED78 + mov r4, #0 + ldr r6, _02220C34 ; =0x0223ED2C + add r5, sp, #0 +_022209B8: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220A38 + ldr r1, _02220C28 ; =0x0224303C + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r4 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrb r2, [r3, #0x11d] + ldr r0, _02220C38 ; =0x0223FB7C + ldr r0, [r0, r2, lsl #2] + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _02220A20 + mov r0, #0 + bl MOD13_02220150 +_02220A20: + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + strb r4, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220A38: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _022209B8 + ldr r7, _02220C3C ; =0x0223ED70 + ldr r6, _02220C40 ; =0x0223ED60 + mov r4, #2 + add r5, sp, #0 +_02220A58: + mov r0, r6 + mov r1, r7 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220AD8 + ldr r1, _02220C28 ; =0x0224303C + add r2, r4, #0x2f + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C44 ; =0x0223ED48 + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _02220ABC + mov r0, #0 + bl MOD13_02220150 +_02220ABC: + ldr r0, _02220C28 ; =0x0224303C + add r1, r4, #0x2f + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220AD8: + add r4, r4, #1 + cmp r4, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220A58 + ldr r7, _02220C48 ; =0x0223ED50 + mov r4, #0 + ldr r6, _02220C4C ; =0x0223ED28 + add r5, sp, #0 +_02220AFC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220B5C + ldr r1, _02220C28 ; =0x0224303C + add r2, r4, #0x33 + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C50 ; =0x0223ED1C + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + strb r2, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220B5C: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _02220AFC + ldr r0, _02220C54 ; =0x0223ED58 + ldr r1, _02220C58 ; =0x0223ED68 + add r2, sp, #0 + bl MOD13_0223AB74 + add r0, sp, #0 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220BC8 + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, #0x2f + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD13_02220944 + ldr r0, _02220C28 ; =0x0224303C + mov r1, #0x2f + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220BC8: + ldr r0, _02220C5C ; =0x0223ED5C + ldr r1, _02220C60 ; =0x0223ED6C + add r2, sp, #0 + bl MOD13_0223AB74 + add r0, sp, #0 + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, #0x30 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD13_0222090C + ldr r0, _02220C28 ; =0x0224303C + mov r1, #0x30 + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02220C28: .word 0x0224303C +_02220C2C: .word 0x0223F75C +_02220C30: .word 0x0223ED78 +_02220C34: .word 0x0223ED2C +_02220C38: .word 0x0223FB7C +_02220C3C: .word 0x0223ED70 +_02220C40: .word 0x0223ED60 +_02220C44: .word 0x0223ED48 +_02220C48: .word 0x0223ED50 +_02220C4C: .word 0x0223ED28 +_02220C50: .word 0x0223ED1C +_02220C54: .word 0x0223ED58 +_02220C58: .word 0x0223ED68 +_02220C5C: .word 0x0223ED5C +_02220C60: .word 0x0223ED6C + + arm_func_start MOD13_02220C64 +MOD13_02220C64: ; 0x02220C64 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _02220E28 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220E2C ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + ldr r7, _02220E30 ; =0x0223ED78 + strb r1, [r0, #0x11e] + mov r4, #0 + ldr r6, _02220E34 ; =0x0223ED2C + add r5, sp, #0 +_02220CA0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220D00 + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x124] + cmp r0, #0 + bne _02220CE4 + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220CE4: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add sp, sp, #0xc + ldr r0, [r0] + strb r4, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220D00: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _02220CA0 + ldr r7, _02220E38 ; =0x0223ED68 + ldr r6, _02220E3C ; =0x0223ED58 + mov r4, #0 + add r5, sp, #0 +_02220D20: + mov r0, r6 + mov r1, r7 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220DAC + cmp r4, #3 + bne _02220D5C + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x123] + cmp r0, #0 + beq _02220D78 +_02220D5C: + cmp r4, #2 + bne _02220D88 + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x124] + cmp r0, #0 + bne _02220D88 +_02220D78: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220D88: + ldr r0, _02220E40 ; =0x0223FB94 + ldr r0, [r0, r4, lsl #2] + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add r1, r4, #0x2f + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220DAC: + add r4, r4, #1 + cmp r4, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220D20 + ldr r7, _02220E44 ; =0x0223ED50 + mov r6, #0 + ldr r5, _02220E48 ; =0x0223ED28 + add r4, sp, #0 +_02220DD0: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220E10 + mov r0, #0 + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add r1, r6, #0x33 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220E10: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02220DD0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02220E28: .word 0x0223F75C +_02220E2C: .word 0x0224303C +_02220E30: .word 0x0223ED78 +_02220E34: .word 0x0223ED2C +_02220E38: .word 0x0223ED68 +_02220E3C: .word 0x0223ED58 +_02220E40: .word 0x0223FB94 +_02220E44: .word 0x0223ED50 +_02220E48: .word 0x0223ED28 + + arm_func_start MOD13_02220E4C +MOD13_02220E4C: ; 0x02220E4C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02220C64 + bl MOD13_0222097C + bl MOD13_02220708 + bl MOD13_02220488 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02220EFC ; =0x0224303C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xfc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, _02220F00 ; =0x0223ED50 + ldr r2, [sp, #4] + ldrh r1, [r0, #2] + sub r2, r2, #0xc + str r2, [sp, #4] + cmp r2, r1 + ble _02220ECC + ldr r0, _02220EFC ; =0x0224303C + mov r1, #4 + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02220ECC: + ldr r0, _02220EFC ; =0x0224303C + mov r2, r1 + ldr r0, [r0] + mov r1, #4 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + bl MOD13_0221FF98 + ldr r1, _02220F04 ; =MOD13_02220E4C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220EFC: .word 0x0224303C +_02220F00: .word 0x0223ED50 +_02220F04: .word MOD13_02220E4C + + arm_func_start MOD13_02220F08 +MOD13_02220F08: ; 0x02220F08 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02220FA8 ; =0x0224303C + ldr r2, _02220FAC ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02220FB0 ; =0x01FF0000 + ldr ip, [lr, #0xc0] + ldrh r3, [r2, #0x92] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _02220F6C + ldrb r0, [lr, #0x11d] + mov r1, #3 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02220F6C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #3 + bl MOD13_022201DC + ldr r0, _02220FA8 ; =0x0224303C + mov r1, #4 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02220FB4 ; =0x02220E6C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220FA8: .word 0x0224303C +_02220FAC: .word 0x0223ED78 +_02220FB0: .word 0x01FF0000 +_02220FB4: .word 0x02220E6C + + arm_func_start MOD13_02220FB8 +MOD13_02220FB8: ; 0x02220FB8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221058 ; =0x0224303C + ldr r2, _0222105C ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02221060 ; =0x01FF0000 + ldr ip, [lr, #0x90] + ldrh r3, [r2, #0x62] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _0222101C + ldrb r0, [lr, #0x11d] + mov r1, #2 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222101C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #2 + bl MOD13_022201DC + ldr r0, _02221058 ; =0x0224303C + mov r1, #3 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02221064 ; =MOD13_02220F08 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221058: .word 0x0224303C +_0222105C: .word 0x0223ED78 +_02221060: .word 0x01FF0000 +_02221064: .word MOD13_02220F08 + + arm_func_start MOD13_02221068 +MOD13_02221068: ; 0x02221068 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221108 ; =0x0224303C + ldr r2, _0222110C ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02221110 ; =0x01FF0000 + ldr ip, [lr, #0x60] + ldrh r3, [r2, #0x32] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _022210CC + ldrb r0, [lr, #0x11d] + mov r1, #1 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022210CC: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #1 + bl MOD13_022201DC + ldr r0, _02221108 ; =0x0224303C + mov r1, #2 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02221114 ; =MOD13_02220FB8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221108: .word 0x0224303C +_0222110C: .word 0x0223ED78 +_02221110: .word 0x01FF0000 +_02221114: .word MOD13_02220FB8 + + arm_func_start MOD13_02221118 +MOD13_02221118: ; 0x02221118 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022211B8 ; =0x0224303C + ldr r2, _022211BC ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _022211C0 ; =0x01FF0000 + ldr ip, [lr, #0x30] + ldrh r3, [r2, #2] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _0222117C + ldrb r0, [lr, #0x11d] + mov r1, #0 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222117C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #0 + bl MOD13_022201DC + ldr r0, _022211B8 ; =0x0224303C + mov r1, #1 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _022211C4 ; =MOD13_02221068 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022211B8: .word 0x0224303C +_022211BC: .word 0x0223ED78 +_022211C0: .word 0x01FF0000 +_022211C4: .word MOD13_02221068 + + arm_func_start MOD13_022211C8 +MOD13_022211C8: ; 0x022211C8 + ldr r0, _022211E0 ; =0x0224303C + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_022211E0: .word 0x0224303C + + arm_func_start MOD13_022211E4 +MOD13_022211E4: ; 0x022211E4 + ldr r1, _022211F4 ; =0x0224303C + ldr r1, [r1] + strb r0, [r1, #0x124] + bx lr + .align 2, 0 +_022211F4: .word 0x0224303C + + arm_func_start MOD13_022211F8 +MOD13_022211F8: ; 0x022211F8 + ldr r1, _02221208 ; =0x0224303C + ldr r1, [r1] + strb r0, [r1, #0x123] + bx lr + .align 2, 0 +_02221208: .word 0x0224303C + + arm_func_start MOD13_0222120C +MOD13_0222120C: ; 0x0222120C + ldr r0, _0222121C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11c] + bx lr + .align 2, 0 +_0222121C: .word 0x0224303C + + arm_func_start MOD13_02221220 +MOD13_02221220: ; 0x02221220 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02221254 ; =0x0224303C + ldr r0, [r0] + ldr r0, [r0, #0x114] + bl MOD13_02239AE8 + ldr r0, _02221254 ; =0x0224303C + ldr r1, _02221258 ; =MOD13_0221FA88 + ldr r0, [r0] + ldr r0, [r0, #0x118] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221254: .word 0x0224303C +_02221258: .word MOD13_0221FA88 + + arm_func_start MOD13_0222125C +MOD13_0222125C: ; 0x0222125C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + add r2, sp, #0x34 + mov r1, #0 + strh r1, [r2] + strh r1, [r2, #2] + strh r1, [r2, #4] + strh r1, [r2, #6] + ldr r0, _022215EC ; =0x0223ED2C + mov r1, #4 + ldrh r3, [r0] + ldrh r2, [r0, #2] + mov r0, #0x128 + strh r3, [sp, #0x38] + strh r2, [sp, #0x3a] + bl MOD13_0223AFE0 + ldr r8, _022215F0 ; =0x0224303C + mov r6, #0 + mov r1, #0xff + str r0, [r8] + strb r1, [r0, #0x11c] + ldr r0, [r8] + mov r1, #1 + strb r6, [r0, #0x121] + ldr r0, [r8] + ldr r7, _022215F4 ; =0xC1FFFCFF + strb r1, [r0, #0x123] + ldr r0, [r8] + mov r5, r6 + strb r1, [r0, #0x124] + mov r4, #0x34 +_022212D8: + mov r0, r5 + mov r1, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r1, r1, r6, lsl #2 + str r0, [r1, #0x30] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x30] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x30] + add r6, r6, #1 + ldrh r0, [r1, #4] + cmp r6, #0x2f + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _022212D8 + ldr r6, _022215F8 ; =0x0223ED20 + mov r5, #0 + ldr r8, _022215F0 ; =0x0224303C + mov r4, r5 + ldr r7, _022215F4 ; =0xC1FFFCFF +_02221348: + ldrb r1, [r6] + mov r0, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r6, r6, #1 + add r1, r1, r5, lsl #2 + str r0, [r1, #0xec] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0xec] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0xec] + add r5, r5, #1 + ldrh r0, [r1, #4] + cmp r5, #4 + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _02221348 + ldr sl, _022215FC ; =0x0223ED18 + mov sb, #0 + ldr r4, _022215F0 ; =0x0224303C + mov fp, sb + str sb, [sp, #0x1c] + mov r8, #1 + mvn r7, #0 + mov r6, #0x200 + mov r5, #3 +_022213CC: + ldrb r1, [sl] + mov r0, fp + mov r2, r8 + bl MOD13_02239E0C + ldr r2, [r4] + ldr r3, [sp, #0x1c] + add r2, r2, sb, lsl #2 + str r0, [r2, #0xfc] + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r6 + bl MOD13_02239A1C + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + add sl, sl, #1 + cmp sb, #2 + blt _022213CC + ldr r1, _02221600 ; =0x0223ED24 + mov r7, #0 + ldrh r0, [r1, #2] + ldr fp, _02221604 ; =0x0223FB88 + ldr r4, _022215F0 ; =0x0224303C + str r0, [sp, #0x10] + ldrh r0, [r1] + strh r7, [sp, #0x42] + str r7, [sp, #0x2c] + str r0, [sp, #0x14] + mov r0, #1 + str r7, [sp, #0x24] + str r7, [sp, #0x28] + str r7, [sp, #0x20] + mov r6, #2 + mov r5, #0x480 + str r0, [sp, #0x30] +_02221470: + ldr sb, [sp, #0x20] + mov r0, sb + str r0, [sp, #0x18] +_0222147C: + add r0, sp, #0x3c + str r0, [sp] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r3, r0 + bl MOD13_0223A9A4 + ldr r1, [r4] + ldr sl, [sp, #0x18] + add r1, r1, r7, lsl #4 + str r0, [r1, sb, lsl #2] + ldr r0, [sp, #0x28] + strh r0, [sp, #0x34] + mov r8, r0 +_022214B8: + ldr r1, [fp, r7, lsl #2] + mov r0, sl, lsl #1 + ldrh r2, [r1, r0] + ldrh r1, [sp, #0x3a] + mov r0, r7, lsl #4 + strh r2, [sp, #0x40] + str r1, [sp] + str r6, [sp, #4] + add r2, r0, sb, lsl #2 + str r5, [sp, #8] + add r0, sp, #0x40 + str r0, [sp, #0xc] + ldr r0, [r4] + ldrh r1, [sp, #0x34] + ldr r0, [r0, r2] + ldrh r2, [sp, #0x36] + ldrh r3, [sp, #0x38] + bl MOD13_0223A4F0 + ldrh r0, [sp, #0x34] + add r8, r8, #1 + cmp r8, #0xc + add r0, r0, #0x12 + add sl, sl, #1 + strh r0, [sp, #0x34] + blt _022214B8 + cmp r7, #0 + bne _02221540 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x30] + bl MOD13_02239B74 + ldr r1, [r4] + add r1, r1, sb, lsl #2 + str r0, [r1, #0x104] +_02221540: + ldr r0, [sp, #0x18] + add sb, sb, #1 + add r0, r0, #0xc + str r0, [sp, #0x18] + cmp sb, #4 + blt _0222147C + add r7, r7, #1 + cmp r7, #3 + blt _02221470 + mov r0, #0 + mov r1, #0x40 + mov r2, #1 + bl MOD13_02239E0C + ldr r3, _022215F0 ; =0x0224303C + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x200 + str r0, [r4, #0x114] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0, #0x114] + bl MOD13_02239A1C + ldr r0, _022215F0 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x114] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02221608 ; =MOD13_02221118 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r3, _022215F0 ; =0x0224303C + mov r1, #0 + ldr r4, [r3] + mov r2, #0xc0 + str r0, [r4, #0x118] + ldr r0, [r3] + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022215EC: .word 0x0223ED2C +_022215F0: .word 0x0224303C +_022215F4: .word 0xC1FFFCFF +_022215F8: .word 0x0223ED20 +_022215FC: .word 0x0223ED18 +_02221600: .word 0x0223ED24 +_02221604: .word 0x0223FB88 +_02221608: .word MOD13_02221118 + + arm_func_start MOD13_0222160C +MOD13_0222160C: ; 0x0222160C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + mov r5, #0 + ldr r4, _022216CC ; =0x02243040 +_02221628: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x48] + bl MOD13_02239AE8 + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + bl MOD13_0223A978 + add r5, r5, #1 + cmp r5, #4 + blt _02221628 + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_02221658: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x40] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #2 + blt _02221658 + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_0222167C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x38] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #2 + blt _0222167C + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_022216A0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #0xa + blt _022216A0 + ldr r0, _022216CC ; =0x02243040 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022216CC: .word 0x02243040 + + arm_func_start MOD13_022216D0 +MOD13_022216D0: ; 0x022216D0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222173C ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _02221740 ; =0x01FF0000 + ldr r3, [r0, #0x10] + mov r0, #0 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _02221744 ; =MOD13_0222160C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222173C: .word 0x02243040 +_02221740: .word 0x01FF0000 +_02221744: .word MOD13_0222160C + + arm_func_start MOD13_02221748 +MOD13_02221748: ; 0x02221748 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022217B4 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _022217B8 ; =0x01FF0000 + ldr r3, [r0, #0x1c] + mov r0, #1 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _022217BC ; =MOD13_022216D0 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022217B4: .word 0x02243040 +_022217B8: .word 0x01FF0000 +_022217BC: .word MOD13_022216D0 + + arm_func_start MOD13_022217C0 +MOD13_022217C0: ; 0x022217C0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222182C ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _02221830 ; =0x01FF0000 + ldr r3, [r0, #0x28] + mov r0, #2 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _02221834 ; =MOD13_02221748 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222182C: .word 0x02243040 +_02221830: .word 0x01FF0000 +_02221834: .word MOD13_02221748 + + arm_func_start MOD13_02221838 +MOD13_02221838: ; 0x02221838 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022218A4 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _022218A8 ; =0x01FF0000 + ldr r3, [r0, #0x34] + mov r0, #3 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _022218AC ; =MOD13_022217C0 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022218A4: .word 0x02243040 +_022218A8: .word 0x01FF0000 +_022218AC: .word MOD13_022217C0 + + arm_func_start MOD13_022218B0 +MOD13_022218B0: ; 0x022218B0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221924 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0x40] + bl MOD13_02239ADC + ldr r2, [r0] + ldr r1, _02221928 ; =0x01FF0000 + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r0] + mov r0, #4 + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0222192C ; =MOD13_02221838 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221924: .word 0x02243040 +_02221928: .word 0x01FF0000 +_0222192C: .word MOD13_02221838 + + arm_func_start MOD13_02221930 +MOD13_02221930: ; 0x02221930 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022219FC ; =0x02243040 + ldr r2, _02221A00 ; =0x0223F0BC + ldr r3, [r1] + ldrsb ip, [r3, #0x63] + add r2, r2, ip, lsl #2 + ldrsb r2, [r0, r2] + strb r2, [r3, #0x63] + ldr r1, [r1] + ldrsb r2, [r1, #0x63] + cmp r2, #0xd + bne _0222197C + cmp r0, #1 + beq _02221974 + cmp r0, #3 + bne _0222197C +_02221974: + strb ip, [r1, #0x64] + b _022219E8 +_0222197C: + mvn r0, #0 + cmp r2, r0 + bne _022219B4 + ldrsb r0, [r1, #0x64] + cmp r0, #1 + beq _0222199C + cmp r0, #0xa + bne _022219A8 +_0222199C: + mov r0, #0xa + strb r0, [r1, #0x63] + b _022219E8 +_022219A8: + mov r0, #0xb + strb r0, [r1, #0x63] + b _022219E8 +_022219B4: + mvn r0, #1 + cmp r2, r0 + bne _022219E8 + ldrsb r0, [r1, #0x64] + cmp r0, #1 + beq _022219D4 + cmp r0, #0xa + bne _022219E0 +_022219D4: + mov r0, #1 + strb r0, [r1, #0x63] + b _022219E8 +_022219E0: + mov r0, #2 + strb r0, [r1, #0x63] +_022219E8: + bl MOD13_02221A04 + mov r0, #8 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022219FC: .word 0x02243040 +_02221A00: .word 0x0223F0BC + + arm_func_start MOD13_02221A04 +MOD13_02221A04: ; 0x02221A04 + stmdb sp!, {r4, lr} + ldr r0, _02221A84 ; =0x02243040 + ldr r1, [r0] + ldrsb r0, [r1, #0x63] + cmp r0, #0xb + movle r4, #0x44 + ldr r0, [r1, #0x58] + movgt r4, #0x45 + mov r1, #0 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _02221A84 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x58] + bl MOD13_02239814 + ldr r0, _02221A84 ; =0x02243040 + ldr r2, _02221A88 ; =0x0223F084 + ldr r0, [r0] + ldr r3, _02221A8C ; =0x0223F086 + ldrsb ip, [r0, #0x63] + ldr r0, [r0, #0x58] + mvn r1, #0 + mov ip, ip, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221A84: .word 0x02243040 +_02221A88: .word 0x0223F084 +_02221A8C: .word 0x0223F086 + + arm_func_start MOD13_02221A90 +MOD13_02221A90: ; 0x02221A90 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addlt sp, sp, #4 + ldmltia sp!, {pc} + cmp r0, #0xa + bge _02221AE8 + ldr r2, _02221B60 ; =0x02243040 + ldr r3, _02221B64 ; =0x0223EFE8 + ldr r2, [r2] + add sp, sp, #4 + add r0, r2, r0, lsl #2 + ldr ip, [r0, #0x10] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r2, [ip, #4] + ldrb r0, [r3, r1] + bic r1, r2, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02221AE8: + sub r3, r0, #0xa + cmp r3, #2 + bge _02221B30 + ldr r0, _02221B60 ; =0x02243040 + ldr r2, _02221B64 ; =0x0223EFE8 + ldr r0, [r0] + add sp, sp, #4 + add r0, r0, r3, lsl #2 + ldr ip, [r0, #0x38] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r3, [ip, #4] + ldrb r0, [r2, r1] + bic r1, r3, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02221B30: + ldr r2, _02221B60 ; =0x02243040 + ldr r3, _02221B68 ; =0x0223EFDC + ldr r2, [r2] + sub r0, r0, #0xc + add r0, r2, r0, lsl #2 + ldrb r3, [r3, r1] + ldr r0, [r0, #0x40] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221B60: .word 0x02243040 +_02221B64: .word 0x0223EFE8 +_02221B68: .word 0x0223EFDC + + arm_func_start MOD13_02221B6C +MOD13_02221B6C: ; 0x02221B6C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r3, _02221DD8 ; =0x0223F00C + ldr sb, _02221DDC ; =0x0223F014 + ldrb r5, [r3, #3] + ldrb r8, [r3] + ldrb r7, [r3, #1] + strb r5, [sp, #0xb] + mov r5, r0 + mov r0, #3 + mul r0, r5, r0 + ldrb r6, [r3, #2] + ldrb ip, [r3, #4] + ldr r2, _02221DE0 ; =0x0223F004 + strb r8, [sp, #8] + strb r7, [sp, #9] + strb r6, [sp, #0xa] + strb ip, [sp, #0xc] + ldrb r4, [sb] + ldrb r3, [sb, #1] + ldrb fp, [sb, #2] + ldrb sl, [sb, #3] + ldrb sb, [sb, #4] + ldrb lr, [r2] + ldrb r8, [r2, #1] + ldrb r7, [r2, #2] + ldrb r6, [r2, #3] + ldrb r2, [r2, #4] + strb r4, [sp, #0xd] + add ip, sp, #8 + str r0, [sp, #4] + ldrb r0, [ip, r5] + strb r3, [sp, #0xe] + strb r2, [sp, #0x16] + mov r4, r1 + ldr r3, [sp, #4] + strb fp, [sp, #0xf] + strb sl, [sp, #0x10] + strb sb, [sp, #0x11] + strb lr, [sp, #0x12] + strb r8, [sp, #0x13] + strb r7, [sp, #0x14] + strb r6, [sp, #0x15] + cmp r0, #0 + mov r2, #0 + ble _02221C98 + and r1, r4, #0xff + add r0, ip, r5 + ldr r6, _02221DE4 ; =0x02243040 + ldr r7, _02221DE8 ; =0x0223F05C + ldr fp, _02221DEC ; =0xC1FFFCFF + ldr ip, _02221DF0 ; =0x000001FF + ldr lr, _02221DF4 ; =0xFE00FF00 +_02221C40: + ldr r8, [r6] + mov sb, r3, lsl #2 + add r8, r8, r3, lsl #2 + ldr r8, [r8, #0x10] + add r2, r2, #1 + ldr sl, [r8] + and sl, sl, fp + str sl, [r8] + ldrh r8, [r7, sb] + ldr sb, [r6] + add sb, sb, r3, lsl #2 + ldr sb, [sb, #0x10] + and r8, r8, ip + ldr sl, [sb] + add r3, r3, #1 + and sl, sl, lr + orr sl, sl, r1 + orr r8, sl, r8, lsl #16 + str r8, [sb] + ldrb r8, [r0] + cmp r2, r8 + blt _02221C40 +_02221C98: + cmp r5, #4 + bge _02221CD4 + ldr r0, _02221DE4 ; =0x02243040 + mov r2, #2 + ldr r3, [r0] + ldr r0, [sp, #4] + str r2, [sp] + ldr r1, _02221DE8 ; =0x0223F05C + mov r0, r0, lsl #2 + ldrh r1, [r1, r0] + add r2, r3, r5, lsl #2 + ldr r0, [r3, r5, lsl #2] + ldr r3, [r2, #0x48] + mov r2, r4 + bl MOD13_0223A440 +_02221CD4: + add r3, sp, #0xd + ldrb r1, [r3, r5] + mov r0, #0 + cmp r1, #0 + ble _02221D58 + and r2, r4, #0xff + add r1, r3, r5 + ldr r8, _02221DE4 ; =0x02243040 + ldr sb, _02221DF8 ; =0x0223F024 + ldr r3, _02221DEC ; =0xC1FFFCFF + ldr r6, _02221DF0 ; =0x000001FF + ldr r7, _02221DF4 ; =0xFE00FF00 +_02221D04: + ldr sl, [r8] + mov fp, r0, lsl #2 + add sl, sl, r0, lsl #2 + ldr sl, [sl, #0x38] + ldr ip, [sl] + and ip, ip, r3 + str ip, [sl] + ldr ip, [r8] + ldrh sl, [sb, fp] + add fp, ip, r0, lsl #2 + ldr fp, [fp, #0x38] + and sl, sl, r6 + ldr ip, [fp] + add r0, r0, #1 + and ip, ip, r7 + orr ip, ip, r2 + orr sl, ip, sl, lsl #16 + str sl, [fp] + ldrb sl, [r1] + cmp r0, sl + blt _02221D04 +_02221D58: + add r1, sp, #0x12 + ldrb r0, [r1, r5] + mov r8, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r1, r5 + ldr sl, _02221DE4 ; =0x02243040 + ldr r5, _02221DFC ; =0x0223F02C + mov r6, r8 + mvn r7, #0 +_02221D84: + ldr r0, [sl] + mov r1, r7 + add r0, r0, r8, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r6 + mov r3, r6 + bl MOD13_02239A1C + ldr r0, [sl] + mov r1, r8, lsl #2 + add r0, r0, r8, lsl #2 + ldrh r2, [r5, r1] + ldr r0, [r0, #0x40] + mov r1, r7 + mov r3, r4 + bl MOD13_02239888 + ldrb r0, [sb] + add r8, r8, #1 + cmp r8, r0 + blt _02221D84 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02221DD8: .word 0x0223F00C +_02221DDC: .word 0x0223F014 +_02221DE0: .word 0x0223F004 +_02221DE4: .word 0x02243040 +_02221DE8: .word 0x0223F05C +_02221DEC: .word 0xC1FFFCFF +_02221DF0: .word 0x000001FF +_02221DF4: .word 0xFE00FF00 +_02221DF8: .word 0x0223F024 +_02221DFC: .word 0x0223F02C + + arm_func_start MOD13_02221E00 +MOD13_02221E00: ; 0x02221E00 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E20 + mov r0, #0 + bl MOD13_02221930 +_02221E20: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E38 + mov r0, #1 + bl MOD13_02221930 +_02221E38: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E50 + mov r0, #2 + bl MOD13_02221930 +_02221E50: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E68 + mov r0, #3 + bl MOD13_02221930 +_02221E68: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02221F28 + ldr r0, _02221FB0 ; =0x02243040 + ldr r0, [r0] + ldrsb r2, [r0, #0x63] + cmp r2, #0xa + bge _02221EB8 + ldrb r1, [r0, #0x67] + cmp r1, #0 + ldrne r1, _02221FB4 ; =0x0223F034 + addne sp, sp, #4 + ldrneb r1, [r1, r2] + strneb r1, [r0, #0x60] + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} +_02221EB8: + sub r1, r2, #0xa + cmp r1, #2 + bge _02221F18 + cmp r1, #0 + bne _02221ED8 + ldrb r1, [r0, #0x66] + cmp r1, #0 + beq _02221EF0 +_02221ED8: + sub r1, r2, #0xa + cmp r1, #1 + bne _02221F00 + ldrb r1, [r0, #0x68] + cmp r1, #0 + bne _02221F00 +_02221EF0: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} +_02221F00: + ldr r1, _02221FB8 ; =0x0223EFF0 + sub r2, r2, #0xa + ldrb r1, [r1, r2] + add sp, sp, #4 + strb r1, [r0, #0x60] + ldmia sp!, {pc} +_02221F18: + ldr r1, _02221FBC ; =0x0223EFEC + sub r2, r2, #0xc + ldrb r1, [r1, r2] + strb r1, [r0, #0x60] +_02221F28: + mov r0, #2 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221F8C + ldr r0, _02221FB0 ; =0x02243040 + ldr r1, [r0] + ldrb r0, [r1, #0x66] + cmp r0, #0 + bne _02221F7C + ldrb r0, [r1, #0x69] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02221FB0 ; =0x02243040 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x69] + ldmia sp!, {pc} +_02221F7C: + mov r0, #0x10 + strb r0, [r1, #0x60] + add sp, sp, #4 + ldmia sp!, {pc} +_02221F8C: + mov r0, #2 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02221FB0 ; =0x02243040 + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x69] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221FB0: .word 0x02243040 +_02221FB4: .word 0x0223F034 +_02221FB8: .word 0x0223EFF0 +_02221FBC: .word 0x0223EFEC + + arm_func_start MOD13_02221FC0 +MOD13_02221FC0: ; 0x02221FC0 + stmdb sp!, {r4, lr} + ldr r1, _02222008 ; =0x02243040 + mov r4, r0 + ldr r1, [r1] + ldrsb r1, [r1, #0x62] + cmp r4, r1 + ldmeqia sp!, {r4, pc} + mov r1, #1 + bl MOD13_02221A90 + ldr r0, _02222008 ; =0x02243040 + mov r1, #0 + ldr r0, [r0] + ldrsb r0, [r0, #0x62] + bl MOD13_02221A90 + ldr r0, _02222008 ; =0x02243040 + ldr r0, [r0] + strb r4, [r0, #0x62] + ldmia sp!, {r4, pc} + .align 2, 0 +_02222008: .word 0x02243040 + + arm_func_start MOD13_0222200C +MOD13_0222200C: ; 0x0222200C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _022221DC ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _022221BC + ldr r6, _022221E0 ; =0x0223F05C + mov r7, #0 + ldr r5, _022221E4 ; =0x0223EFF4 + add r4, sp, #0 +_02222034: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _02222074 + ldr r0, _022221E8 ; =0x02243040 + ldr r0, [r0] + ldrsb r0, [r0, #0x61] + cmp r0, r7 + bne _022221BC + mov r0, r7 + bl MOD13_02221FC0 + b _022221C4 +_02222074: + add r7, r7, #1 + cmp r7, #0xa + add r6, r6, #4 + blt _02222034 + ldr r7, _022221EC ; =0x0223F024 + mov r6, #0 + ldr r5, _022221F0 ; =0x0223EFFC + add r4, sp, #0 +_02222094: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _0222214C + ldr r1, _022221E8 ; =0x02243040 + add r0, r6, #0xa + ldr r1, [r1] + ldrsb r1, [r1, #0x61] + cmp r1, r0 + bne _022221BC + bl MOD13_02221FC0 + cmp r6, #0 + bne _022221C4 + ldr r0, _022221E8 ; =0x02243040 + ldr r2, [r0] + ldrb r1, [r2, #0x65] + add r1, r1, #1 + strb r1, [r2, #0x65] + ldr r2, [r0] + ldrb r1, [r2, #0x65] + cmp r1, #0x28 + addlo sp, sp, #0xc + ldmloia sp!, {r4, r5, r6, r7, pc} + ldrb r1, [r2, #0x66] + cmp r1, #0 + bne _0222212C + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022221E8 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_0222212C: + mov r1, #0x10 + strb r1, [r2, #0x60] + ldr r1, [r0] + add sp, sp, #0xc + ldrb r0, [r1, #0x65] + sub r0, r0, #7 + strb r0, [r1, #0x65] + ldmia sp!, {r4, r5, r6, r7, pc} +_0222214C: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02222094 + ldr r7, _022221F4 ; =0x0223F02C + mov r6, #0 + ldr r5, _022221F8 ; =0x0223F000 + add r4, sp, #0 +_0222216C: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _022221AC + ldr r1, _022221E8 ; =0x02243040 + add r0, r6, #0xc + ldr r1, [r1] + ldrsb r1, [r1, #0x61] + cmp r1, r0 + bne _022221BC + bl MOD13_02221FC0 + b _022221C4 +_022221AC: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _0222216C +_022221BC: + mvn r0, #0 + bl MOD13_02221FC0 +_022221C4: + ldr r0, _022221E8 ; =0x02243040 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x65] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022221DC: .word 0x0223F75C +_022221E0: .word 0x0223F05C +_022221E4: .word 0x0223EFF4 +_022221E8: .word 0x02243040 +_022221EC: .word 0x0223F024 +_022221F0: .word 0x0223EFFC +_022221F4: .word 0x0223F02C +_022221F8: .word 0x0223F000 + + arm_func_start MOD13_022221FC +MOD13_022221FC: ; 0x022221FC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _022223A0 ; =0x02243040 + ldr r0, _022223A4 ; =0x0223F75C + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x60] + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r7, _022223A8 ; =0x0223F05C + mov r4, #0 + ldr r6, _022223AC ; =0x0223EFF4 + add r5, sp, #0 +_02222238: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02222290 + ldr r0, _022223A0 ; =0x02243040 + ldr r2, [r0] + ldrsb r1, [r2, #0x61] + cmp r1, r4 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223B0 ; =0x0223F034 + ldrb r1, [r1, r4] + strb r1, [r2, #0x60] + ldr r0, [r0] + strb r4, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02222290: + add r4, r4, #1 + cmp r4, #0xa + add r7, r7, #4 + blt _02222238 + ldr r7, _022223B4 ; =0x0223F024 + mov r4, #0 + ldr r6, _022223B8 ; =0x0223EFFC + add r5, sp, #0 +_022222B0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _0222230C + ldr r0, _022223A0 ; =0x02243040 + add r2, r4, #0xa + ldr r3, [r0] + ldrsb r1, [r3, #0x61] + cmp r1, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223BC ; =0x0223EFF0 + ldrb r1, [r1, r4] + strb r1, [r3, #0x60] + ldr r0, [r0] + strb r2, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_0222230C: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _022222B0 + ldr r7, _022223C0 ; =0x0223F02C + mov r4, #0 + ldr r6, _022223C4 ; =0x0223F000 + add r5, sp, #0 +_0222232C: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02222388 + ldr r0, _022223A0 ; =0x02243040 + add r2, r4, #0xc + ldr r3, [r0] + ldrsb r1, [r3, #0x61] + cmp r1, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223C8 ; =0x0223EFEC + ldrb r1, [r1, r4] + strb r1, [r3, #0x60] + ldr r0, [r0] + strb r2, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02222388: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _0222232C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022223A0: .word 0x02243040 +_022223A4: .word 0x0223F75C +_022223A8: .word 0x0223F05C +_022223AC: .word 0x0223EFF4 +_022223B0: .word 0x0223F034 +_022223B4: .word 0x0223F024 +_022223B8: .word 0x0223EFFC +_022223BC: .word 0x0223EFF0 +_022223C0: .word 0x0223F02C +_022223C4: .word 0x0223F000 +_022223C8: .word 0x0223EFEC + + arm_func_start MOD13_022223CC +MOD13_022223CC: ; 0x022223CC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _02222588 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0222258C ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + ldr r7, _02222590 ; =0x0223F05C + strb r1, [r0, #0x61] + mov r4, #0 + ldr r6, _02222594 ; =0x0223EFF4 + add r5, sp, #0 +_02222408: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222468 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x67] + cmp r0, #0 + bne _0222244C + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_0222244C: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add sp, sp, #0xc + ldr r0, [r0] + strb r4, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222468: + add r4, r4, #1 + cmp r4, #0xa + add r7, r7, #4 + blt _02222408 + ldr r7, _02222598 ; =0x0223F024 + mov r4, #0 + ldr r6, _0222259C ; =0x0223EFFC + add r5, sp, #0 +_02222488: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222510 + cmp r4, #0 + bne _022224C4 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x66] + cmp r0, #0 + beq _022224E0 +_022224C4: + cmp r4, #1 + bne _022224F0 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x68] + cmp r0, #0 + bne _022224F0 +_022224E0: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_022224F0: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add r1, r4, #0xa + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222510: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _02222488 + ldr r7, _022225A0 ; =0x0223F02C + mov r6, #0 + ldr r5, _022225A4 ; =0x0223F000 + add r4, sp, #0 +_02222530: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222570 + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add r1, r6, #0xc + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222570: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02222530 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02222588: .word 0x0223F75C +_0222258C: .word 0x02243040 +_02222590: .word 0x0223F05C +_02222594: .word 0x0223EFF4 +_02222598: .word 0x0223F024 +_0222259C: .word 0x0223EFFC +_022225A0: .word 0x0223F02C +_022225A4: .word 0x0223F000 + + arm_func_start MOD13_022225A8 +MOD13_022225A8: ; 0x022225A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022223CC + bl MOD13_022221FC + bl MOD13_0222200C + bl MOD13_02221E00 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222640 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x40] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, _02222644 ; =0x0223F02C + ldr r1, [sp, #4] + ldrh r0, [r0, #2] + sub r1, r1, #0xc + str r1, [sp, #4] + cmp r1, r0 + ble _0222261C + mov r0, #4 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222261C: + mov r1, r0 + mov r0, #4 + bl MOD13_02221B6C + bl MOD13_02221A04 + ldr r1, _02222648 ; =MOD13_022225A8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222640: .word 0x02243040 +_02222644: .word 0x0223F02C +_02222648: .word MOD13_022225A8 + + arm_func_start MOD13_0222264C +MOD13_0222264C: ; 0x0222264C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022226D8 ; =0x02243040 + ldr r2, _022226DC ; =0x0223F05C + ldr r3, [r1] + ldr r1, _022226E0 ; =0x01FF0000 + ldr ip, [r3, #0x34] + ldrh r2, [r2, #0x26] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _022226AC + mov r0, #3 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022226AC: + mov r1, r2 + mov r0, #3 + bl MOD13_02221B6C + mov r0, #4 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _022226E4 ; =0x022225C8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022226D8: .word 0x02243040 +_022226DC: .word 0x0223F05C +_022226E0: .word 0x01FF0000 +_022226E4: .word 0x022225C8 + + arm_func_start MOD13_022226E8 +MOD13_022226E8: ; 0x022226E8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222774 ; =0x02243040 + ldr r2, _02222778 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _0222277C ; =0x01FF0000 + ldr ip, [r3, #0x28] + ldrh r2, [r2, #0x1a] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _02222748 + mov r0, #2 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02222748: + mov r1, r2 + mov r0, #2 + bl MOD13_02221B6C + mov r0, #3 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _02222780 ; =MOD13_0222264C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222774: .word 0x02243040 +_02222778: .word 0x0223F05C +_0222277C: .word 0x01FF0000 +_02222780: .word MOD13_0222264C + + arm_func_start MOD13_02222784 +MOD13_02222784: ; 0x02222784 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222810 ; =0x02243040 + ldr r2, _02222814 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _02222818 ; =0x01FF0000 + ldr ip, [r3, #0x1c] + ldrh r2, [r2, #0xe] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _022227E4 + mov r0, #1 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022227E4: + mov r1, r2 + mov r0, #1 + bl MOD13_02221B6C + mov r0, #2 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _0222281C ; =MOD13_022226E8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222810: .word 0x02243040 +_02222814: .word 0x0223F05C +_02222818: .word 0x01FF0000 +_0222281C: .word MOD13_022226E8 + + arm_func_start MOD13_02222820 +MOD13_02222820: ; 0x02222820 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022228AC ; =0x02243040 + ldr r2, _022228B0 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _022228B4 ; =0x01FF0000 + ldr ip, [r3, #0x10] + ldrh r2, [r2, #2] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _02222880 + mov r0, #0 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02222880: + mov r1, r2 + mov r0, #0 + bl MOD13_02221B6C + mov r0, #1 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _022228B8 ; =MOD13_02222784 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022228AC: .word 0x02243040 +_022228B0: .word 0x0223F05C +_022228B4: .word 0x01FF0000 +_022228B8: .word MOD13_02222784 + + arm_func_start MOD13_022228BC +MOD13_022228BC: ; 0x022228BC + ldr r0, _022228D4 ; =0x02243040 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_022228D4: .word 0x02243040 + + arm_func_start MOD13_022228D8 +MOD13_022228D8: ; 0x022228D8 + ldr r1, _022228E8 ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x68] + bx lr + .align 2, 0 +_022228E8: .word 0x02243040 + + arm_func_start MOD13_022228EC +MOD13_022228EC: ; 0x022228EC + ldr r1, _022228FC ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x67] + bx lr + .align 2, 0 +_022228FC: .word 0x02243040 + + arm_func_start MOD13_02222900 +MOD13_02222900: ; 0x02222900 + ldr r1, _02222910 ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x66] + bx lr + .align 2, 0 +_02222910: .word 0x02243040 + + arm_func_start MOD13_02222914 +MOD13_02222914: ; 0x02222914 + ldr r0, _02222924 ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x60] + bx lr + .align 2, 0 +_02222924: .word 0x02243040 + + arm_func_start MOD13_02222928 +MOD13_02222928: ; 0x02222928 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222295C ; =0x02243040 + ldr r0, [r0] + ldr r0, [r0, #0x58] + bl MOD13_02239AE8 + ldr r0, _0222295C ; =0x02243040 + ldr r1, _02222960 ; =MOD13_022218B0 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222295C: .word 0x02243040 +_02222960: .word MOD13_022218B0 + + arm_func_start MOD13_02222964 +MOD13_02222964: ; 0x02222964 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x3c + ldr r1, _02222CCC ; =0x0223F01C + ldr r0, _02222CD0 ; =0x0223EFF4 + ldrh r2, [r1, #4] + ldrh r4, [r1, #6] + ldrh r6, [r1] + ldrh r5, [r1, #2] + ldrh r3, [r0] + strh r2, [sp, #0x30] + ldrh r2, [r0, #2] + strh r4, [sp, #0x32] + mov r0, #0x6c + mov r1, #4 + strh r6, [sp, #0x2c] + strh r5, [sp, #0x2e] + strh r3, [sp, #0x30] + strh r2, [sp, #0x32] + bl MOD13_0223AFE0 + ldr r8, _02222CD4 ; =0x02243040 + mov r1, #0x1f + str r0, [r8] + strb r1, [r0, #0x60] + ldr r0, [r8] + mov r6, #0 + strb r6, [r0, #0x63] + ldr r0, [r8] + mov r1, #1 + strb r1, [r0, #0x66] + ldr r0, [r8] + strb r1, [r0, #0x67] + ldr r0, [r8] + strb r1, [r0, #0x68] + mov r5, r6 + mov r4, #0x36 + ldr r7, _02222CD8 ; =0xC1FFFCFF +_022229F4: + mov r0, r5 + mov r1, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r1, r1, r6, lsl #2 + str r0, [r1, #0x10] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x10] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x10] + add r6, r6, #1 + ldrh r0, [r1, #4] + cmp r6, #0xa + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _022229F4 + ldr r6, _02222CDC ; =0x0223EFE0 + mov r5, #0 + ldr r8, _02222CD4 ; =0x02243040 + mov r4, r5 + ldr r7, _02222CD8 ; =0xC1FFFCFF +_02222A64: + ldrb r1, [r6] + mov r0, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r6, r6, #1 + add r1, r1, r5, lsl #2 + str r0, [r1, #0x38] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x38] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x38] + add r5, r5, #1 + ldrh r0, [r1, #4] + cmp r5, #2 + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _02222A64 + ldr sl, _02222CE0 ; =0x0223EFE4 + mov sb, #0 + ldr r4, _02222CD4 ; =0x02243040 + mov fp, sb + str sb, [sp, #0x1c] + mov r8, #1 + mvn r7, #0 + mov r6, #0x200 + mov r5, #3 +_02222AE8: + ldrb r1, [sl] + mov r0, fp + mov r2, r8 + bl MOD13_02239E0C + ldr r2, [r4] + ldr r3, [sp, #0x1c] + add r2, r2, sb, lsl #2 + str r0, [r2, #0x40] + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r6 + bl MOD13_02239A1C + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + add sl, sl, #1 + cmp sb, #2 + blt _02222AE8 + ldr r1, _02222CE4 ; =0x0223EFF8 + mov r8, #0 + ldrh r0, [r1, #2] + ldr r7, _02222CE8 ; =0x0223F040 + ldr r4, _02222CD4 ; =0x02243040 + str r0, [sp, #0x14] + ldrh r0, [r1] + str r8, [sp, #0x10] + strh r8, [sp, #0x3a] + str r0, [sp, #0x18] + add fp, sp, #0x38 + str r8, [sp, #0x28] + str r8, [sp, #0x20] + str r8, [sp, #0x24] + mov r6, #2 + mov r5, #0x480 +_02222B88: + add r0, sp, #0x34 + str r0, [sp] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x14] + mov r1, r0 + str r1, [sp, #4] + ldr r1, [sp, #0x18] + mov r3, r0 + bl MOD13_0223A9A4 + ldr r1, [r4] + ldr sl, [sp, #0x10] + str r0, [r1, r8, lsl #2] + ldr r0, [sp, #0x24] + strh r0, [sp, #0x2c] + mov sb, r0 +_02222BC4: + mov r0, sl, lsl #1 + ldrh r1, [r7, r0] + ldrh r0, [sp, #0x32] + strh r1, [sp, #0x38] + str r0, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + str fp, [sp, #0xc] + ldr r0, [r4] + ldrh r1, [sp, #0x2c] + ldr r0, [r0, r8, lsl #2] + ldrh r2, [sp, #0x2e] + ldrh r3, [sp, #0x30] + bl MOD13_0223A4F0 + add sb, sb, #1 + cmp sb, #3 + add sl, sl, #1 + ldrh r0, [sp, #0x2c] + add r0, r0, #0x20 + strh r0, [sp, #0x2c] + blt _02222BC4 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x34] + mov r2, r0 + bl MOD13_02239B74 + ldr r1, [sp, #0x10] + ldr r2, [r4] + add r1, r1, #3 + str r1, [sp, #0x10] + add r1, r2, r8, lsl #2 + add r8, r8, #1 + str r0, [r1, #0x48] + cmp r8, #4 + blt _02222B88 + mov r0, #0 + mov r1, #0x44 + mov r2, #1 + bl MOD13_02239E0C + ldr r3, _02222CD4 ; =0x02243040 + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x200 + str r0, [r4, #0x58] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0, #0x58] + bl MOD13_02239A1C + ldr r0, _02222CD4 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x58] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02222CEC ; =MOD13_02222820 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r2, _02222CD4 ; =0x02243040 + mov r1, #0xc0 + ldr r2, [r2] + str r0, [r2, #0x5c] + mov r0, #0 + bl MOD13_02221B6C + add sp, sp, #0x3c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02222CCC: .word 0x0223F01C +_02222CD0: .word 0x0223EFF4 +_02222CD4: .word 0x02243040 +_02222CD8: .word 0xC1FFFCFF +_02222CDC: .word 0x0223EFE0 +_02222CE0: .word 0x0223EFE4 +_02222CE4: .word 0x0223EFF8 +_02222CE8: .word 0x0223F040 +_02222CEC: .word MOD13_02222820 + + arm_func_start MOD13_02222CF0 +MOD13_02222CF0: ; 0x02222CF0 + ldr ip, _02222CF8 ; =MOD13_0223AF48 + bx ip + .align 2, 0 +_02222CF8: .word MOD13_0223AF48 + + arm_func_start MOD13_02222CFC +MOD13_02222CFC: ; 0x02222CFC + ldr ip, _02222D08 ; =MOD13_0223B004 + mov r1, #0x20 + bx ip + .align 2, 0 +_02222D08: .word MOD13_0223B004 + + arm_func_start MOD13_02222D0C +MOD13_02222D0C: ; 0x02222D0C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02222D74 ; =0x02243048 + ldr r0, [r0] + blx MOD13_02219798 + cmp r0, #0 + ldreq r1, _02222D78 ; =0x02243044 + moveq r0, #1 + streqb r0, [r1] + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02222D74 ; =0x02243048 + ldr r0, [r0] + ldrb r0, [r0, #0x116] + cmp r0, #1 + beq _02222D5C + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #2 + bhi _02222D68 +_02222D5C: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02222D68: + mov r0, #2 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02222D74: .word 0x02243048 +_02222D78: .word 0x02243044 + + arm_func_start MOD13_02222D7C +MOD13_02222D7C: ; 0x02222D7C + stmdb sp!, {r4, lr} + mov r4, r0 + blx MOD13_02219C9C + cmp r4, #0 + beq _02222DC0 + ldr r0, _02222DCC ; =0x02243048 + ldr r1, [r0] + ldrb r0, [r1, #0x116] + cmp r0, #0 + bne _02222DC0 + ldr r0, _02222DD0 ; =0x02243044 + ldrb r0, [r0] + cmp r0, #1 + bne _02222DC0 + ldr r0, _02222DD4 ; =0x00000117 + add r0, r1, r0 + bl MOD13_0223390C +_02222DC0: + ldr r0, _02222DCC ; =0x02243048 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222DCC: .word 0x02243048 +_02222DD0: .word 0x02243044 +_02222DD4: .word 0x00000117 + + arm_func_start MOD13_02222DD8 +MOD13_02222DD8: ; 0x02222DD8 + stmdb sp!, {lr} + sub sp, sp, #0x104 + mov r0, #0x26c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _02222ED4 ; =0x02243048 + ldr r3, _02222ED8 ; =0x02243044 + str r0, [r1] + mov r0, #0 + add r1, sp, #0 + mov r2, #0x104 + strb r0, [r3] + bl MIi_CpuClear16 + mov r3, #0x50 + mov r2, #0xc + ldr r0, _02222EDC ; =0x0223F0F4 + add r1, sp, #4 + strb r3, [sp] + strh r2, [sp, #2] + bl MI_CpuCopy8 + ldr r0, _02222ED4 ; =0x02243048 + mov r2, #3 + ldr r1, [r0] + add ip, sp, #0 + strh r2, [r1] + ldr lr, [r0] + mov r2, #0x41 + add r3, lr, #2 +_02222E48: + ldrh r1, [ip], #2 + ldrh r0, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + strh r0, [r3], #2 + bne _02222E48 + ldr r1, _02222ED4 ; =0x02243048 + add r0, lr, #0x100 + mov r3, #1 + strh r3, [r0, #6] + ldr r0, [r1] + mvn r2, #0 + add r0, r0, #0x100 + strh r2, [r0, #8] + ldr r0, [r1] + add r0, r0, #0x100 + strh r3, [r0, #0xa] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xc] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xe] + ldr r0, [r1] + add r0, r0, #0x110 + bl OS_GetMacAddress + ldr r0, _02222EE0 ; =MOD13_02222CFC + ldr r1, _02222EE4 ; =MOD13_02222CF0 + blx MOD13_02219D58 + cmp r0, #0 + addeq sp, sp, #0x104 + ldmeqia sp!, {pc} + bl OS_Terminate + add sp, sp, #0x104 + ldmia sp!, {pc} + .align 2, 0 +_02222ED4: .word 0x02243048 +_02222ED8: .word 0x02243044 +_02222EDC: .word 0x0223F0F4 +_02222EE0: .word MOD13_02222CFC +_02222EE4: .word MOD13_02222CF0 + + arm_func_start MOD13_02222EE8 +MOD13_02222EE8: ; 0x02222EE8 + ldr r0, _02222EF8 ; =0x02243050 + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02222EF8: .word 0x02243050 + + arm_func_start MOD13_02222EFC +MOD13_02222EFC: ; 0x02222EFC + ldr r1, _02222F18 ; =0x02243058 + ldr r1, [r1] + mov r1, r1, lsr #4 + ands r0, r1, r0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02222F18: .word 0x02243058 + + arm_func_start MOD13_02222F1C +MOD13_02222F1C: ; 0x02222F1C + ldr r0, _02222F30 ; =0x02243058 + ldr r0, [r0] + mov r0, r0, lsl #0x1c + mov r0, r0, lsr #0x1c + bx lr + .align 2, 0 +_02222F30: .word 0x02243058 + + arm_func_start MOD13_02222F34 +MOD13_02222F34: ; 0x02222F34 + ldr r0, _02222F40 ; =0x0224304C + ldrb r0, [r0] + bx lr + .align 2, 0 +_02222F40: .word 0x0224304C + + arm_func_start MOD13_02222F44 +MOD13_02222F44: ; 0x02222F44 + cmp r0, #0 + ldrne r2, _02222F68 ; =0x02243060 + ldrne r2, [r2, #8] + strne r2, [r0] + cmp r1, #0 + ldrne r0, _02222F68 ; =0x02243060 + ldrne r0, [r0, #0xc] + strne r0, [r1] + bx lr + .align 2, 0 +_02222F68: .word 0x02243060 + + arm_func_start MOD13_02222F6C +MOD13_02222F6C: ; 0x02222F6C + ldr r2, _02222F7C ; =0x02243060 + str r0, [r2, #8] + str r1, [r2, #0xc] + bx lr + .align 2, 0 +_02222F7C: .word 0x02243060 + + arm_func_start MOD13_02222F80 +MOD13_02222F80: ; 0x02222F80 + cmp r0, #0 + ldrne r2, _02222FA4 ; =0x02243060 + ldrne r2, [r2] + strne r2, [r0] + cmp r1, #0 + ldrne r0, _02222FA4 ; =0x02243060 + ldrne r0, [r0, #4] + strne r0, [r1] + bx lr + .align 2, 0 +_02222FA4: .word 0x02243060 + + arm_func_start MOD13_02222FA8 +MOD13_02222FA8: ; 0x02222FA8 + ldr r2, _02222FB8 ; =0x02243060 + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_02222FB8: .word 0x02243060 + + arm_func_start MOD13_02222FBC +MOD13_02222FBC: ; 0x02222FBC + ldr r1, _02222FC8 ; =0x0224305C + str r0, [r1] + bx lr + .align 2, 0 +_02222FC8: .word 0x0224305C + + arm_func_start MOD13_02222FCC +MOD13_02222FCC: ; 0x02222FCC + stmdb sp!, {lr} + sub sp, sp, #4 + bl GX_DispOff + ldr r1, _02223020 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl MOD13_0223BDD0 + bl MOD13_0223B6C0 + bl MOD13_0223B7A0 + bl MOD13_02234270 + bl MOD13_02239CE8 + bl MOD13_0223BA04 + bl MOD13_0223AA80 + bl MOD13_0223A3AC + bl MOD13_022395A0 + bl MOD13_0223C2A8 + bl MOD13_0223B050 + bl MOD13_0223BEA8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223020: .word 0x04001000 + + arm_func_start MOD13_02223024 +MOD13_02223024: ; 0x02223024 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #0 + bl GX_VBlankIntr + mov r0, #1 + bl GX_SetBankForBG + mov r0, #2 + bl GX_SetBankForOBJ + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl GX_SetGraphicsMode + mov r3, #0x4000000 + ldr r1, [r3] + ldr r0, _022232DC ; =0x0400006C + bic r1, r1, #0x1f00 + str r1, [r3] + ldr r2, [r3] + mov r1, #0 + bic r2, r2, #0xe000 + str r2, [r3] + bl GXx_SetMasterBrightness_ + mov r3, #0x4000000 + ldr r2, [r3] + ldr r0, _022232E0 ; =0xFFCFFFEF + ldr r1, _022232E4 ; =0x00200010 + and r0, r2, r0 + orr r0, r0, r1 + str r0, [r3] + ldr r3, _022232E8 ; =0x04000008 + ldr r2, _022232EC ; =0x0400000A + ldrh r0, [r3] + ldr r1, _022232F0 ; =0x0400000C + ldr r5, _022232F4 ; =0x0400000E + bic r0, r0, #0x40 + strh r0, [r3] + ldrh r0, [r2] + mov ip, #0 + ldr r4, _022232F8 ; =0x04000010 + bic r0, r0, #0x40 + strh r0, [r2] + ldrh r0, [r1] + ldr r3, _022232FC ; =0x04000014 + ldr r2, _02223300 ; =0x04000018 + bic r0, r0, #0x40 + strh r0, [r1] + ldrh lr, [r5] + ldr r1, _02223304 ; =0x0400001C + ldr r0, _02223308 ; =0x04000050 + bic lr, lr, #0x40 + strh lr, [r5] + str ip, [r4] + str ip, [r3] + str ip, [r2] + str ip, [r1] + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + mov r0, #0x80 + bl GX_SetBankForSubBG + mov r0, #0x100 + bl GX_SetBankForSubOBJ + mov r0, #0 + bl GXS_SetGraphicsMode + ldr r1, _0222330C ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x1f00 + str r0, [r1] + ldr r0, [r1] + bic r0, r0, #0xe000 + str r0, [r1] + ldr r0, _02223310 ; =0x0400106C + mov r1, #0 + bl GXx_SetMasterBrightness_ + ldr r3, _0222330C ; =0x04001000 + ldr r0, _022232E0 ; =0xFFCFFFEF + ldr r1, [r3] + ldr r2, _02223314 ; =0x04001008 + and r0, r1, r0 + orr r0, r0, #0x10 + str r0, [r3] + ldrh r0, [r2] + ldr r1, _02223318 ; =0x0400100A + ldr r3, _0222331C ; =0x0400100C + bic r0, r0, #0x40 + strh r0, [r2] + ldrh r0, [r1] + ldr r4, _02223320 ; =0x0400100E + ldr r2, _02223324 ; =0x04001010 + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r3] + mov ip, #0 + ldr r1, _02223328 ; =0x04001014 + bic r0, r0, #0x40 + strh r0, [r3] + ldrh lr, [r4] + ldr r0, _0222332C ; =0x04001018 + ldr r3, _02223330 ; =0x0400101C + bic lr, lr, #0x40 + strh lr, [r4] + str ip, [r2] + str ip, [r1] + str ip, [r0] + ldr r0, _02223334 ; =0x04001050 + mov r1, #0x3f + mov r2, #0x10 + str ip, [r3] + bl G2x_SetBlendBrightness_ + ldr r3, _022232E8 ; =0x04000008 + ldr r2, _022232EC ; =0x0400000A + ldrh r1, [r3] + ldr r0, _02223338 ; =0x00000D08 + ldr lr, _022232F0 ; =0x0400000C + and r1, r1, #0x43 + orr r1, r1, #0xc00 + strh r1, [r3] + ldrh r1, [r2] + mov ip, r5 + ldr r3, _02223314 ; =0x04001008 + and r1, r1, #0x43 + orr r0, r1, r0 + strh r0, [r2] + ldrh r0, [lr] + ldr r2, _02223318 ; =0x0400100A + ldr r1, _0222331C ; =0x0400100C + and r0, r0, #0x43 + orr r0, r0, #0xe10 + strh r0, [lr] + ldrh r0, [ip] + and r0, r0, #0x43 + orr r0, r0, #0xf10 + strh r0, [ip] + ldrh r0, [r3] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r3] + ldrh r0, [r2] + and r0, r0, #0x43 + orr r0, r0, #0xd00 + strh r0, [r2] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xe00 + strh r0, [r1] + mov r3, r4 + ldrh r0, [r3] + mov r2, #0x4000000 + ldr r1, _0222333C ; =0x04000304 + and r0, r0, #0x43 + orr r0, r0, #0xf00 + strh r0, [r3] + ldr r0, [r2] + bic r0, r0, #0x38000000 + str r0, [r2] + ldr r0, [r2] + bic r0, r0, #0x7000000 + str r0, [r2] + ldrh r0, [r1] + bic r0, r0, #0x8000 + strh r0, [r1] + bl MOD13_0223AAD0 + bl MOD13_0223BA84 + bl MOD13_0223BCE4 + bl MOD13_02239D38 + bl GX_DispOn + ldr r2, _0222330C ; =0x04001000 + mov r0, #1 + ldr r1, [r2] + orr r1, r1, #0x10000 + str r1, [r2] + bl GX_VBlankIntr + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022232DC: .word 0x0400006C +_022232E0: .word 0xFFCFFFEF +_022232E4: .word 0x00200010 +_022232E8: .word 0x04000008 +_022232EC: .word 0x0400000A +_022232F0: .word 0x0400000C +_022232F4: .word 0x0400000E +_022232F8: .word 0x04000010 +_022232FC: .word 0x04000014 +_02223300: .word 0x04000018 +_02223304: .word 0x0400001C +_02223308: .word 0x04000050 +_0222330C: .word 0x04001000 +_02223310: .word 0x0400106C +_02223314: .word 0x04001008 +_02223318: .word 0x0400100A +_0222331C: .word 0x0400100C +_02223320: .word 0x0400100E +_02223324: .word 0x04001010 +_02223328: .word 0x04001014 +_0222332C: .word 0x04001018 +_02223330: .word 0x0400101C +_02223334: .word 0x04001050 +_02223338: .word 0x00000D08 +_0222333C: .word 0x04000304 + + arm_func_start MOD13_02223340 +MOD13_02223340: ; 0x02223340 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02223404 ; =0x04000208 + mov r0, #0 + ldrh r1, [r2] + strh r0, [r2] + bl GX_DispOff + ldr r1, _02223408 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl OS_IsTickAvailable + cmp r0, #0 + bne _0222337C + bl OS_Terminate +_0222337C: + bl OS_IsAlarmAvailable + cmp r0, #0 + bne _0222338C + bl OS_Terminate +_0222338C: + mov r0, #0 + bl GX_VBlankIntr + bl FX_Init + mvn r0, #0 + bl FS_Init + bl TP_Init + bl RTC_Init + bl GX_DispOff + ldr r1, _02223408 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl MOD13_0223BFE4 + ldr r0, _0222340C ; =0x02243054 + ldr r0, [r0] + bl MOD13_0223B07C + bl MOD13_0223B7E8 + bl MOD13_0223C2F4 + bl MOD13_0223962C + bl MOD13_0223B6F4 + bl MOD13_0223A3C0 + mov r0, #0x700 + mov r1, #0x20 + bl MOD13_0223B004 + str r0, [sp] + bl FUN_02096190 + add r0, sp, #0 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223404: .word 0x04000208 +_02223408: .word 0x04001000 +_0222340C: .word 0x02243054 + + arm_func_start MOD13_02223410 +MOD13_02223410: ; 0x02223410 + ldr r3, _0222348C ; =0x0224304C + ldr r2, _02223490 ; =0x02243058 + strb r0, [r3] + str r1, [r2] + cmp r0, #0 + blt _02223430 + cmp r0, #5 + ble _02223438 +_02223430: + mov r0, #0 + bx lr +_02223438: + mov r2, r1, lsl #0x1c + mov r2, r2, lsr #0x1c + cmp r2, #1 + movhi r0, #0 + bxhi lr + cmp r0, #0 + beq _02223464 + mov r1, r1, lsr #4 + ands r1, r1, #1 + movne r0, #0 + bxne lr +_02223464: + cmp r0, #0 + bne _02223484 + ldr r0, _02223490 ; =0x02243058 + ldr r0, [r0] + mov r0, r0, lsr #4 + ands r0, r0, #1 + moveq r0, #0 + bxeq lr +_02223484: + mov r0, #1 + bx lr + .align 2, 0 +_0222348C: .word 0x0224304C +_02223490: .word 0x02243058 + + arm_func_start MOD13_02223494 +MOD13_02223494: ; 0x02223494 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _0222351C ; =0x02243054 + str r0, [r3] + mov r0, r1 + mov r1, r2 + bl MOD13_02223410 + cmp r0, #0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _02223520 ; =0x02243050 + mov r1, #0 + strb r1, [r0] + bl MOD13_02223340 + bl MOD13_02223024 + bl MOD13_022342A0 + ldr r0, _02223524 ; =MOD13_02223E10 + bl MOD13_02222FBC + ldr r5, _02223528 ; =0x0224305C + ldr r4, _02223520 ; =0x02243050 + mov r6, #0 +_022234E4: + bl MOD13_0223B6A8 + ldr r0, [r5] + blx r0 + mov r0, r6 + bl MOD13_0223C1E0 + bl MOD13_0223B0BC + bl MOD13_0223BDE0 + bl OS_WaitVBlankIntr + ldrb r0, [r4] + cmp r0, #0 + beq _022234E4 + bl MOD13_02222FCC + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222351C: .word 0x02243054 +_02223520: .word 0x02243050 +_02223524: .word MOD13_02223E10 +_02223528: .word 0x0224305C + + arm_func_start MOD13_0222352C +MOD13_0222352C: ; 0x0222352C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, _02223564 ; =0x0000FFFF + ldr lr, [r0] + and r1, r1, ip + ldr ip, [r0, #4] + ldr r0, [lr, r1, lsl #2] + cmp r2, #0 + add r0, ip, r0 + addge r3, r3, #0x30 + movge r1, r2, lsl #1 + strgeh r3, [r0, r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223564: .word 0x0000FFFF + + arm_func_start MOD13_02223568 +MOD13_02223568: ; 0x02223568 + ldr r2, _02223584 ; =0x0000FFFF + ldr r3, [r0] + and r1, r1, r2 + ldr r2, [r0, #4] + ldr r0, [r3, r1, lsl #2] + add r0, r2, r0 + bx lr + .align 2, 0 +_02223584: .word 0x0000FFFF + + arm_func_start MOD13_02223588 +MOD13_02223588: ; 0x02223588 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #8] + bl MOD13_0223939C + ldr r0, _022235B0 ; =0x02243070 + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, #0x60] + bl MOD13_02239FD0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022235B0: .word 0x02243070 + + arm_func_start MOD13_022235B4 +MOD13_022235B4: ; 0x022235B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02223614 ; =0x02243070 + mov r5, r0 + ldr r0, [r1] + ldr r0, [r0, #0x60] + bl MOD13_02239F78 + mov r4, r0 + add r1, sp, #0 + mov r0, r5 + mov r2, #4 + bl MOD13_022393D8 + str r0, [r4, #8] + ldr r1, [r4, #8] + mov r0, r4 + add r2, r1, #0x20 + add r1, r2, #0x10 + str r1, [r4] + ldr r1, [r2, #4] + add r1, r2, r1 + add r1, r1, #8 + str r1, [r4, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02223614: .word 0x02243070 + + arm_func_start MOD13_02223618 +MOD13_02223618: ; 0x02223618 + ldr ip, _02223624 ; =MOD13_0223AF90 + ldr r0, _02223628 ; =0x02243070 + bx ip + .align 2, 0 +_02223624: .word MOD13_0223AF90 +_02223628: .word 0x02243070 + + arm_func_start MOD13_0222362C +MOD13_0222362C: ; 0x0222362C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x64 + mov r1, #4 + bl MOD13_0223B004 + mov r1, r0 + ldr r3, _0222366C ; =0x02243070 + mov r0, #8 + mov r2, #0xc + str r1, [r3] + bl MOD13_0223A054 + ldr r1, _0222366C ; =0x02243070 + ldr r1, [r1] + str r0, [r1, #0x60] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222366C: .word 0x02243070 + + arm_func_start MOD13_02223670 +MOD13_02223670: ; 0x02223670 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl MOD13_02238BE0 + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldrb r1, [r0, #0x2a0] + cmp r1, #0 + beq _022236C4 + ldrb r1, [r0, #0x2a1] + cmp r1, #0 + bne _022236C4 + ldr r1, [r0, #0x298] + cmp r1, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #0 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022236C4: + add r0, sp, #0 + add r1, sp, #1 + bl MOD13_02238B98 + ldrb r0, [sp] + cmp r0, #0x1a + bgt _0222375C + cmp r0, #0x1a + bge _02223870 + cmp r0, #0x14 + bgt _0222374C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0222390C +_022236F8: ; jump table + b _0222390C ; case 0 + b _0222390C ; case 1 + b _0222390C ; case 2 + b _0222390C ; case 3 + b _0222390C ; case 4 + b MOD13_02223784 ; case 5 + b _0222390C ; case 6 + b _0222390C ; case 7 + b _0222390C ; case 8 + b _0222390C ; case 9 + b _0222390C ; case 10 + b _0222390C ; case 11 + b MOD13_022238B4 ; case 12 + b MOD13_022237E8 ; case 13 + b _0222390C ; case 14 + b _0222390C ; case 15 + b _0222390C ; case 16 + b _0222390C ; case 17 + b _0222390C ; case 18 + b _0222390C ; case 19 + b _0222382C ; case 20 +_0222374C: + cmp r0, #0x17 + beq _0222382C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222375C: + cmp r0, #0x1d + bgt _02223774 + cmp r0, #0x1d + beq _02223870 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02223774: + cmp r0, #0x22 + beq _022238F8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_02223784 +MOD13_02223784: ; 0x02223784 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r1, _02223914 ; =0x02243074 + ldr r0, _02223918 ; =0x0001E280 + ldr r1, [r1] + add r4, r1, r0 + bl MOD13_02238B88 + mov r1, r4 + mov r2, #0x16 + bl MIi_CpuCopy16 + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #0 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022237E8 +MOD13_022237E8: ; 0x022237E8 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #1 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222382C: + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #3 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02223870: + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #4 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022238B4 +MOD13_022238B4: ; 0x022238B4 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #2 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022238F8: + mov r1, r4 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _02223914 ; =0x02243074 + bl MOD13_0223AF90 +_0222390C: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02223914: .word 0x02243074 +_02223918: .word 0x0001E280 + + arm_func_start MOD13_0222391C +MOD13_0222391C: ; 0x0222391C + ldr r1, _02223930 ; =0x02243074 + ldr r0, _02223934 ; =0x0001E280 + ldr r1, [r1] + add r0, r1, r0 + bx lr + .align 2, 0 +_02223930: .word 0x02243074 +_02223934: .word 0x0001E280 + + arm_func_start MOD13_02223938 +MOD13_02223938: ; 0x02223938 + ldr ip, _02223940 ; =MOD13_02238FFC + bx ip + .align 2, 0 +_02223940: .word MOD13_02238FFC + + arm_func_start MOD13_02223944 +MOD13_02223944: ; 0x02223944 + ldr r1, _02223958 ; =0x02243074 + ldr r1, [r1] + add r1, r1, #0x1e000 + str r0, [r1, #0x298] + bx lr + .align 2, 0 +_02223958: .word 0x02243074 + + arm_func_start MOD13_0222395C +MOD13_0222395C: ; 0x0222395C + ldr r0, _02223974 ; =0x02243074 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02223974: .word 0x02243074 + + arm_func_start MOD13_02223978 +MOD13_02223978: ; 0x02223978 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02239124 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022239B0 ; =0x02243074 + mov r1, r4 + ldr r0, [r0] + mov r3, #1 + add r2, r0, #0x1e000 + mov r0, #0 + strb r3, [r2, #0x2a1] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022239B0: .word 0x02243074 + + arm_func_start MOD13_022239B4 +MOD13_022239B4: ; 0x022239B4 + ldr ip, _022239CC ; =MOD13_0223C1C4 + mov r0, #0 + ldr r1, _022239D0 ; =MOD13_02223978 + mov r2, r0 + mov r3, #0x78 + bx ip + .align 2, 0 +_022239CC: .word MOD13_0223C1C4 +_022239D0: .word MOD13_02223978 + + arm_func_start MOD13_022239D4 +MOD13_022239D4: ; 0x022239D4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r4, r0 + ldr r0, _02223AB0 ; =0x0001E2A4 + mov r1, #0x20 + bl MOD13_0223B004 + ldr r2, _02223AB4 ; =0x02243074 + add r1, r0, #0x1e000 + str r0, [r2] + str r4, [r1, #0x298] + ldr r0, [r2] + mov r4, #0 + add r0, r0, #0x1e000 + strb r4, [r0, #0x2a0] + ldr r0, [r2] + ldr lr, _02223AB8 ; =0x0223FDA4 + add r0, r0, #0x1e000 + strb r4, [r0, #0x2a1] + add ip, sp, #0 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldr r0, _02223ABC ; =0x0224307C + mov r1, r4 + ldr r0, [r0] + bl MOD13_02223568 + ldr r1, _02223ABC ; =0x0224307C + str r0, [sp, #4] + ldr r0, [r1] + mov r1, #1 + bl MOD13_02223568 + str r0, [sp, #8] + bl MOD13_02222F34 + add r0, r0, #0x31 + strb r0, [sp, #0x18] + ldr r0, _02223AB4 ; =0x02243074 + add r1, sp, #0 + ldr r0, [r0] + bl MOD13_0223923C + bl MOD13_0223903C + cmp r0, #0 + bne _02223A84 + bl OS_Terminate +_02223A84: + mov r0, #0 + ldr r1, _02223AC0 ; =MOD13_02223670 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02223AB4 ; =0x02243074 + ldr r1, [r1] + add r1, r1, #0x1e000 + str r0, [r1, #0x29c] + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + .align 2, 0 +_02223AB0: .word 0x0001E2A4 +_02223AB4: .word 0x02243074 +_02223AB8: .word 0x0223FDA4 +_02223ABC: .word 0x0224307C +_02223AC0: .word MOD13_02223670 + + arm_func_start MOD13_02223AC4 +MOD13_02223AC4: ; 0x02223AC4 + ldr ip, _02223ACC ; =MOD13_0223AF48 + bx ip + .align 2, 0 +_02223ACC: .word MOD13_0223AF48 + + arm_func_start MOD13_02223AD0 +MOD13_02223AD0: ; 0x02223AD0 + ldr ip, _02223ADC ; =MOD13_0223B004 + mov r1, #0x20 + bx ip + .align 2, 0 +_02223ADC: .word MOD13_0223B004 + + arm_func_start MOD13_02223AE0 +MOD13_02223AE0: ; 0x02223AE0 + ldr r3, _02223AF4 ; =0x02243078 + ldmia r0, {r0, r1, r2} + ldr r3, [r3] + stmia r3, {r0, r1, r2} + bx lr + .align 2, 0 +_02223AF4: .word 0x02243078 + + arm_func_start MOD13_02223AF8 +MOD13_02223AF8: ; 0x02223AF8 + stmdb sp!, {lr} + sub sp, sp, #0xec + add r0, sp, #0 + blx MOD13_0221A794 + cmp r0, #1 + beq _02223B14 + bl OS_Terminate +_02223B14: + add r0, sp, #0 + bl MOD13_02233A24 + add sp, sp, #0xec + ldmia sp!, {pc} + + arm_func_start MOD13_02223B24 +MOD13_02223B24: ; 0x02223B24 + stmdb sp!, {lr} + sub sp, sp, #0xec + ldr r1, _02223BDC ; =0x02243078 + ldr r1, [r1] + ldr r1, [r1] + cmp r1, #7 + addls pc, pc, r1, lsl #2 + b _02223BD4 +_02223B44: ; jump table + b _02223B64 ; case 0 + b _02223B64 ; case 1 + b _02223B70 ; case 2 + b _02223B64 ; case 3 + b _02223B7C ; case 4 + b _02223B64 ; case 5 + b _02223B88 ; case 6 + b _02223BD0 ; case 7 +_02223B64: + add sp, sp, #0xec + mov r0, #0 + ldmia sp!, {pc} +_02223B70: + add sp, sp, #0xec + mov r0, #1 + ldmia sp!, {pc} +_02223B7C: + add sp, sp, #0xec + mov r0, #2 + ldmia sp!, {pc} +_02223B88: + add r0, sp, #0 + blx MOD13_0221A794 + cmp r0, #1 + beq _02223B9C + bl OS_Terminate +_02223B9C: + ldr r0, [sp, #0x20] + cmp r0, #0 + blt _02223BC4 + cmp r0, #3 + bgt _02223BC4 + ldr r0, [sp, #0x24] + cmp r0, #1 + addeq sp, sp, #0xec + moveq r0, #3 + ldmeqia sp!, {pc} +_02223BC4: + add sp, sp, #0xec + mov r0, #5 + ldmia sp!, {pc} +_02223BD0: + mov r0, #4 +_02223BD4: + add sp, sp, #0xec + ldmia sp!, {pc} + .align 2, 0 +_02223BDC: .word 0x02243078 + + arm_func_start MOD13_02223BE0 +MOD13_02223BE0: ; 0x02223BE0 + stmdb sp!, {lr} + sub sp, sp, #4 + blx MOD13_0221A7EC + cmp r0, #1 + beq _02223BF8 + bl OS_Terminate +_02223BF8: + ldr r0, _02223C08 ; =0x02243078 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223C08: .word 0x02243078 + + arm_func_start MOD13_02223C0C +MOD13_02223C0C: ; 0x02223C0C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r0, #0xc + mvn r1, #3 + bl MOD13_0223AFE0 + ldr r1, _02223C68 ; =0x02243078 + ldr ip, _02223C6C ; =MOD13_02223AC4 + str r0, [r1] + ldr r2, _02223C70 ; =MOD13_02223AE0 + ldr r3, _02223C74 ; =MOD13_02223AD0 + str ip, [sp] + mov ip, #0x800 + mov r0, #0xf + mov r1, #0x40 + str ip, [sp, #4] + blx MOD13_0221A8A4 + cmp r0, #1 + beq _02223C58 + bl OS_Terminate +_02223C58: + mov r0, #0xa + bl OS_Sleep + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02223C68: .word 0x02243078 +_02223C6C: .word MOD13_02223AC4 +_02223C70: .word MOD13_02223AE0 +_02223C74: .word MOD13_02223AD0 + + arm_func_start MOD13_02223C78 +MOD13_02223C78: ; 0x02223C78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + mov r1, r0 + bl MOD13_0223C0A0 + mov r0, #1 + mov r1, #0 + bl MOD13_0223C0A0 + mov r0, #1 + bl MOD13_02239F20 + mov r0, #0 + bl MOD13_02239F20 + bl MOD13_0221F528 + bl MOD13_0221F404 + ldr r0, _02223CF8 ; =0x0224307C + ldr r0, [r0] + bl MOD13_02223588 + bl MOD13_02223618 + bl MOD13_02234178 + bl MOD13_02222EE8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223CF8: .word 0x0224307C + + arm_func_start MOD13_02223CFC +MOD13_02223CFC: ; 0x02223CFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x14 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x14 + bl MOD13_0223A2A8 + ldr r0, _02223D3C ; =MOD13_02223C78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223D3C: .word MOD13_02223C78 + + arm_func_start MOD13_02223D40 +MOD13_02223D40: ; 0x02223D40 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222F1C + cmp r0, #0 + beq _02223D8C + cmp r0, #1 + beq _02223DA8 + add sp, sp, #4 + ldmia sp!, {pc} +_02223D8C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02223DC4 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02223DA8: + mov r0, #1 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02223DC8 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223DC4: .word MOD13_022245B4 +_02223DC8: .word MOD13_02230714 + + arm_func_start MOD13_02223DCC +MOD13_02223DCC: ; 0x02223DCC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r2, r0 + mov r1, #1 + mov r3, #0x14 + bl MOD13_0223A2A8 + mov r0, #2 + mov r2, r0 + mov r1, #0 + mov r3, #0x14 + bl MOD13_0223A2A8 + ldr r0, _02223E0C ; =MOD13_02223D40 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223E0C: .word MOD13_02223D40 + + arm_func_start MOD13_02223E10 +MOD13_02223E10: ; 0x02223E10 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223418C + bl MOD13_0222362C + bl MOD13_0221F424 + bl MOD13_0221F53C + bl MOD13_0221EF74 + bl MOD13_02222F34 + cmp r0, #1 + bne _02223E5C + mov r0, #2 + bl MOD13_02222EFC + cmp r0, #0 + beq _02223E5C + ldr r0, _02223F90 ; =0x0223FE38 + bl MOD13_022235B4 + ldr r1, _02223F94 ; =0x0224307C + str r0, [r1] + b _02223E74 +_02223E5C: + bl MOD13_02222F34 + ldr r1, _02223F98 ; =0x0223FE20 + ldr r0, [r1, r0, lsl #2] + bl MOD13_022235B4 + ldr r1, _02223F94 ; =0x0224307C + str r0, [r1] +_02223E74: + ldr r0, _02223F9C ; =0x0223FE48 + bl MOD13_0221F1BC + mov r1, r0 + mov r0, #1 + bl MOD13_02239F48 + ldr r0, _02223FA0 ; =0x0223FE5C + bl MOD13_0221F1BC + mov r1, r0 + mov r0, #0 + bl MOD13_02239F48 + ldr r0, _02223FA4 ; =0x0223FE70 + ldr r1, _02223FA8 ; =0x020C8DB4 + bl MOD13_0221F174 + ldr r0, _02223FAC ; =0x0223FE84 + ldr r1, _02223FB0 ; =0x020C94E8 + bl MOD13_0221F174 + ldr r0, _02223FB4 ; =0x0223FE98 + ldr r1, _02223FB8 ; =0x020C9294 + bl MOD13_0221F174 + ldr r0, _02223FBC ; =0x0223FEB0 + ldr r1, _02223FC0 ; =0x020C9418 + bl MOD13_0221F174 + ldr r0, _02223FC4 ; =0x0223FEC8 + ldr r1, _02223FC8 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02223FCC ; =0x0223FEE0 + ldr r1, _02223FD0 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02223FD4 ; =0x0223FEF8 + ldr r1, _02223FD8 ; =0x020C92F4 + bl MOD13_0221F174 + ldr r0, _02223FDC ; =0x0223FF10 + ldr r1, _02223FE0 ; =0x020C9480 + bl MOD13_0221F174 + bl MOD13_02222F1C + cmp r0, #0 + beq _02223F14 + cmp r0, #1 + beq _02223F24 + b _02223F30 +_02223F14: + ldr r0, _02223FE4 ; =0x0223FF28 + ldr r1, _02223FE8 ; =0x020C90F4 + bl MOD13_0221F174 + b _02223F30 +_02223F24: + ldr r0, _02223FEC ; =0x0223FF3C + ldr r1, _02223FE8 ; =0x020C90F4 + bl MOD13_0221F174 +_02223F30: + ldr ip, _02223FF0 ; =0x0400100A + ldr r3, _02223FF4 ; =0x0400000A + ldrh r2, [ip] + mov r0, #1 + mov r1, #2 + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [ip] + ldrh r2, [r3] + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [r3] + ldrh r2, [r3] + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [r3] + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #2 + bl MOD13_0223AEF4 + ldr r0, _02223FF8 ; =MOD13_02223DCC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223F90: .word 0x0223FE38 +_02223F94: .word 0x0224307C +_02223F98: .word 0x0223FE20 +_02223F9C: .word 0x0223FE48 +_02223FA0: .word 0x0223FE5C +_02223FA4: .word 0x0223FE70 +_02223FA8: .word 0x020C8DB4 +_02223FAC: .word 0x0223FE84 +_02223FB0: .word 0x020C94E8 +_02223FB4: .word 0x0223FE98 +_02223FB8: .word 0x020C9294 +_02223FBC: .word 0x0223FEB0 +_02223FC0: .word 0x020C9418 +_02223FC4: .word 0x0223FEC8 +_02223FC8: .word 0x020C8D4C +_02223FCC: .word 0x0223FEE0 +_02223FD0: .word 0x020C9550 +_02223FD4: .word 0x0223FEF8 +_02223FD8: .word 0x020C92F4 +_02223FDC: .word 0x0223FF10 +_02223FE0: .word 0x020C9480 +_02223FE4: .word 0x0223FF28 +_02223FE8: .word 0x020C90F4 +_02223FEC: .word 0x0223FF3C +_02223FF0: .word 0x0400100A +_02223FF4: .word 0x0400000A +_02223FF8: .word MOD13_02223DCC + + arm_func_start MOD13_02223FFC +MOD13_02223FFC: ; 0x02223FFC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02224040 ; =0x0223F100 + ldr r0, _02224044 ; =0x02243080 + ldrb r3, [r1] + ldrb r2, [r1, #1] + ldrb r1, [r0] + add ip, sp, #0 + ldr r0, _02224048 ; =0x02243084 + strb r3, [sp] + strb r2, [sp, #1] + ldrb r1, [ip, r1] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224040: .word 0x0223F100 +_02224044: .word 0x02243080 +_02224048: .word 0x02243084 + + arm_func_start MOD13_0222404C +MOD13_0222404C: ; 0x0222404C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _022240BC ; =0x02243080 + mov r0, #8 + ldrb r2, [r1] + eor r2, r2, #1 + strb r2, [r1] + bl MOD13_0223424C + ldr r0, _022240BC ; =0x02243080 + ldr ip, _022240C0 ; =0x0223F114 + ldrb r0, [r0] + ldr r1, _022240C4 ; =0x0223F118 + ldr r2, _022240C8 ; =0x0223F116 + mov lr, r0, lsl #3 + ldr r3, _022240CC ; =0x0223F11A + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022240BC: .word 0x02243080 +_022240C0: .word 0x0223F114 +_022240C4: .word 0x0223F118 +_022240C8: .word 0x0223F116 +_022240CC: .word 0x0223F11A + + arm_func_start MOD13_022240D0 +MOD13_022240D0: ; 0x022240D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02224184 ; =0x02243084 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02224188 ; =0x02243080 + ldrb r0, [r0] + cmp r0, #0 + beq _0222414C + cmp r0, #1 + beq _02224168 + add sp, sp, #4 + ldmia sp!, {pc} +_0222414C: + mov r0, #1 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _0222418C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224168: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02224190 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224184: .word 0x02243084 +_02224188: .word 0x02243080 +_0222418C: .word MOD13_02230714 +_02224190: .word MOD13_022259A8 + + arm_func_start MOD13_02224194 +MOD13_02224194: ; 0x02224194 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022241E8 ; =MOD13_022240D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022241E8: .word MOD13_022240D0 + + arm_func_start MOD13_022241EC +MOD13_022241EC: ; 0x022241EC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224210 ; =MOD13_02224194 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224210: .word MOD13_02224194 + + arm_func_start MOD13_02224214 +MOD13_02224214: ; 0x02224214 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02224238 + cmp r0, #1 + beq _02224250 + add sp, sp, #4 + ldmia sp!, {pc} +_02224238: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222426C ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224250: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02223FFC + ldr r0, _02224270 ; =MOD13_022241EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222426C: .word MOD13_02223CFC +_02224270: .word MOD13_022241EC + + arm_func_start MOD13_02224274 +MOD13_02224274: ; 0x02224274 + bx lr + + arm_func_start MOD13_02224278 +MOD13_02224278: ; 0x02224278 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022243B0 ; =0x0223F104 + mov r5, #0 +_02224288: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _022242DC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _022243B4 ; =0x02243080 + ldr ip, _022243B8 ; =0x0223F114 + strb r5, [r0] + ldrb r0, [r0] + ldr r1, _022243BC ; =0x0223F118 + ldr r2, _022243C0 ; =0x0223F116 + mov lr, r0, lsl #3 + ldr r3, _022243C4 ; =0x0223F11A + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022242DC: + add r5, r5, #1 + cmp r5, #2 + add r4, r4, #8 + blo _02224288 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222430C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222430C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222432C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222432C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222434C + mov r0, #1 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222434C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222436C + mov r0, #3 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222436C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222438C + mov r0, #0 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222438C: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #2 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022243B0: .word 0x0223F104 +_022243B4: .word 0x02243080 +_022243B8: .word 0x0223F114 +_022243BC: .word 0x0223F118 +_022243C0: .word 0x0223F116 +_022243C4: .word 0x0223F11A + + arm_func_start MOD13_022243C8 +MOD13_022243C8: ; 0x022243C8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224278 + bl MOD13_02224274 + bl MOD13_02224214 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224414 ; =MOD13_022243C8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224414: .word MOD13_022243C8 + + arm_func_start MOD13_02224418 +MOD13_02224418: ; 0x02224418 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02224460 ; =0x022243E4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224460: .word 0x022243E4 + + arm_func_start MOD13_02224464 +MOD13_02224464: ; 0x02224464 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022244BC ; =MOD13_02224418 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022244BC: .word MOD13_02224418 + + arm_func_start MOD13_022244C0 +MOD13_022244C0: ; 0x022244C0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _02224584 ; =0x0223F124 + add r3, sp, #0 + mov r2, #0xb +_022244D4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _022244D4 + ldr r0, _02224588 ; =0x0223FF50 + ldr r1, _0222458C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02224590 ; =0x0223FF68 + ldr r1, _02224594 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02224598 ; =0x0223FF80 + ldr r1, _0222459C ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022245A0 ; =0x02243084 + ldr ip, _022245A4 ; =0x04001008 + str r0, [r1] + ldrh r0, [ip] + ldr r3, _022245A8 ; =0x0400100A + ldr r2, _022245AC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + ldr r1, _022245B0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_02224584: .word 0x0223F124 +_02224588: .word 0x0223FF50 +_0222458C: .word 0x020C8D4C +_02224590: .word 0x0223FF68 +_02224594: .word 0x020C9550 +_02224598: .word 0x0223FF80 +_0222459C: .word 0x020C908C +_022245A0: .word 0x02243084 +_022245A4: .word 0x04001008 +_022245A8: .word 0x0400100A +_022245AC: .word 0x0400000A +_022245B0: .word 0x0400000C + + arm_func_start MOD13_022245B4 +MOD13_022245B4: ; 0x022245B4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022244C0 + mov r0, #0 + bl MOD13_0221F4CC + mov r0, #0x2e + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #4 + bl MOD13_02234384 + ldr r0, _02224620 ; =0x02243080 + ldr r3, _02224624 ; =0x0223F114 + ldrb r0, [r0] + ldr r1, _02224628 ; =0x0223F118 + ldr r2, _0222462C ; =0x0223F116 + mov ip, r0, lsl #3 + ldrh r0, [r3, ip] + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldr r3, _02224630 ; =0x0223F11A + ldrh r3, [r3, ip] + bl MOD13_0221F25C + ldr r0, _02224634 ; =MOD13_02224464 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224620: .word 0x02243080 +_02224624: .word 0x0223F114 +_02224628: .word 0x0223F118 +_0222462C: .word 0x0223F116 +_02224630: .word 0x0223F11A +_02224634: .word MOD13_02224464 + + arm_func_start MOD13_02224638 +MOD13_02224638: ; 0x02224638 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02224660 ; =MOD13_02224808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224660: .word MOD13_02224808 + + arm_func_start MOD13_02224664 +MOD13_02224664: ; 0x02224664 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _0222469C + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0xe + bl MOD13_0223424C + ldr r0, _022246B8 ; =0x02243088 + mov r1, #1 + strb r1, [r0] + b _022246A4 +_0222469C: + mov r0, #7 + bl MOD13_0223424C +_022246A4: + bl MOD13_02235EB0 + ldr r0, _022246BC ; =MOD13_02224638 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022246B8: .word 0x02243088 +_022246BC: .word MOD13_02224638 + + arm_func_start MOD13_022246C0 +MOD13_022246C0: ; 0x022246C0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224700 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02224700: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224738 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02224738: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224770 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224790 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224770: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224794 ; =MOD13_02224D5C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222478C: .word 0x02243088 +_02224790: .word MOD13_022259A8 +_02224794: .word MOD13_02224D5C + + arm_func_start MOD13_02224798 +MOD13_02224798: ; 0x02224798 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02224800 ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _022247DC + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022247DC: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02224804 ; =MOD13_022246C0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224800: .word 0x02243088 +_02224804: .word MOD13_022246C0 + + arm_func_start MOD13_02224808 +MOD13_02224808: ; 0x02224808 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222482C ; =MOD13_02224798 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222482C: .word MOD13_02224798 + + arm_func_start MOD13_02224830 +MOD13_02224830: ; 0x02224830 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02224854 + cmp r0, #1 + beq _0222486C + add sp, sp, #4 + ldmia sp!, {pc} +_02224854: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022248A0 ; =MOD13_02224808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222486C: + mov r0, #6 + bl MOD13_0223424C + mov r1, #0 + mov r0, #0x18 + mov r2, #1 + mvn r3, #0 + str r1, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022248A4 ; =MOD13_02224664 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022248A0: .word MOD13_02224808 +_022248A4: .word MOD13_02224664 + + arm_func_start MOD13_022248A8 +MOD13_022248A8: ; 0x022248A8 + bx lr + + arm_func_start MOD13_022248AC +MOD13_022248AC: ; 0x022248AC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022248CC + mov r0, #1 + bl MOD13_0221ECF4 +_022248CC: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022248AC + bl MOD13_022248A8 + bl MOD13_02224830 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222493C ; =0x022248F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222493C: .word 0x022248F0 + + arm_func_start MOD13_02224940 +MOD13_02224940: ; 0x02224940 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02224988 ; =0x0222490C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224988: .word 0x0222490C + + arm_func_start MOD13_0222498C +MOD13_0222498C: ; 0x0222498C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022249E4 ; =MOD13_02224940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022249E4: .word MOD13_02224940 + + arm_func_start MOD13_022249E8 +MOD13_022249E8: ; 0x022249E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224A68 ; =0x0223FF94 + ldr r1, _02224A6C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02224A70 ; =0x04001008 + ldr ip, _02224A74 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02224A78 ; =0x04000008 + ldr r2, _02224A7C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02224A80 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224A68: .word 0x0223FF94 +_02224A6C: .word 0x020C908C +_02224A70: .word 0x04001008 +_02224A74: .word 0x0400100A +_02224A78: .word 0x04000008 +_02224A7C: .word 0x0400000A +_02224A80: .word 0x0400000C + + arm_func_start MOD13_02224A84 +MOD13_02224A84: ; 0x02224A84 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224ACC ; =0x02243088 + mov r1, #0 + strb r1, [r0] + bl MOD13_022249E8 + mov r0, #0x12 + bl MOD13_0221F4CC + mov r0, #0x3b + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0x17 + bl MOD13_0221F070 + ldr r0, _02224AD0 ; =MOD13_0222498C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224ACC: .word 0x02243088 +_02224AD0: .word MOD13_0222498C + + arm_func_start MOD13_02224AD4 +MOD13_02224AD4: ; 0x02224AD4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0x1000000 + bl OS_SpinWait + bl PM_ForceToPowerOff + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + ldr r0, _02224B6C ; =MOD13_02224AD4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224B6C: .word MOD13_02224AD4 + + arm_func_start MOD13_02224B70 +MOD13_02224B70: ; 0x02224B70 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224B94 ; =0x02224B18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224B94: .word 0x02224B18 + + arm_func_start MOD13_02224B98 +MOD13_02224B98: ; 0x02224B98 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02224BC8 ; =MOD13_02224B70 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224BC8: .word MOD13_02224B70 + + arm_func_start MOD13_02224BCC +MOD13_02224BCC: ; 0x02224BCC + bx lr + + arm_func_start MOD13_02224BD0 +MOD13_02224BD0: ; 0x02224BD0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224BD0 + bl MOD13_02224BCC + bl MOD13_02224B98 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224C48 ; =0x02224BFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224C48: .word 0x02224BFC + + arm_func_start MOD13_02224C4C +MOD13_02224C4C: ; 0x02224C4C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #5 + bl MOD13_0221F0EC + ldr r0, _02224C80 ; =0x02224C18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224C80: .word 0x02224C18 + + arm_func_start MOD13_02224C84 +MOD13_02224C84: ; 0x02224C84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02224CBC ; =MOD13_02224C4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224CBC: .word MOD13_02224C4C + + arm_func_start MOD13_02224CC0 +MOD13_02224CC0: ; 0x02224CC0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224D40 ; =0x0223FFA8 + ldr r1, _02224D44 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02224D48 ; =0x04001008 + ldr ip, _02224D4C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02224D50 ; =0x04000008 + ldr r2, _02224D54 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02224D58 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224D40: .word 0x0223FFA8 +_02224D44: .word 0x020C908C +_02224D48: .word 0x04001008 +_02224D4C: .word 0x0400100A +_02224D50: .word 0x04000008 +_02224D54: .word 0x0400000A +_02224D58: .word 0x0400000C + + arm_func_start MOD13_02224D5C +MOD13_02224D5C: ; 0x02224D5C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224CC0 + mov r0, #0x19 + bl MOD13_0221F070 + bl MOD13_02233808 + ldr r0, _02224D84 ; =MOD13_02224C84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224D84: .word MOD13_02224C84 + + arm_func_start MOD13_02224D88 +MOD13_02224D88: ; 0x02224D88 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224E08 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E08: .word MOD13_022259A8 + + arm_func_start MOD13_02224E0C +MOD13_02224E0C: ; 0x02224E0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02224E64 ; =MOD13_02224D88 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E64: .word MOD13_02224D88 + + arm_func_start MOD13_02224E68 +MOD13_02224E68: ; 0x02224E68 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224E8C ; =MOD13_02224E0C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E8C: .word MOD13_02224E0C + + arm_func_start MOD13_02224E90 +MOD13_02224E90: ; 0x02224E90 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #7 + bl MOD13_0223424C + ldr r0, _02224EC0 ; =MOD13_02224E68 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224EC0: .word MOD13_02224E68 + + arm_func_start MOD13_02224EC4 +MOD13_02224EC4: ; 0x02224EC4 + bx lr + + arm_func_start MOD13_02224EC8 +MOD13_02224EC8: ; 0x02224EC8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224EC8 + bl MOD13_02224EC4 + bl MOD13_02224E90 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224F40 ; =0x02224EF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224F40: .word 0x02224EF4 + + arm_func_start MOD13_02224F44 +MOD13_02224F44: ; 0x02224F44 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_0221F0EC + ldr r0, _02224F8C ; =0x02224F10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224F8C: .word 0x02224F10 + + arm_func_start MOD13_02224F90 +MOD13_02224F90: ; 0x02224F90 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02224FE8 ; =MOD13_02224F44 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224FE8: .word MOD13_02224F44 + + arm_func_start MOD13_02224FEC +MOD13_02224FEC: ; 0x02224FEC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x6c + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + mov fp, r0 + add r0, sp, #0x14 + bl OS_GetMacAddress + ldrb r1, [sp, #0x15] + ldr r2, _022251B8 ; =0x0223FFBC + add r0, sp, #0x40 + str r1, [sp] + ldrb r3, [sp, #0x16] + mov r1, #0x14 + str r3, [sp, #4] + ldrb r3, [sp, #0x17] + str r3, [sp, #8] + ldrb r3, [sp, #0x18] + str r3, [sp, #0xc] + ldrb r3, [sp, #0x19] + str r3, [sp, #0x10] + ldrb r3, [sp, #0x14] + bl swprintf + ldr r3, _022251BC ; =0x0223F13C + mov r2, #2 + ldrh r4, [r3, #6] + mov r1, #0x480 + add r0, sp, #0x40 + str r4, [sp] + str r2, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, fp + bl MOD13_0223A4F0 + add r0, sp, #0x1c + bl FUN_02095EC8 + ldr sb, [sp, #0x1c] + ldr sl, [sp, #0x20] + mov r3, #0 + cmp sl, r3 + cmpeq sb, r3 + beq _02225160 + mov r0, sb + mov r1, sl + mov r2, #0xa + bl _ull_mod + mov r1, #0x3e8 + umull r4, r1, r0, r1 + mov r0, sb + mov r1, sl + mov r3, #0 + mov r2, #0xa + str r4, [sp, #0x3c] + bl _ll_udiv + mov sb, r0 + mov sl, r1 + mov r8, #0 + ldr r7, _022251C0 ; =0x00002710 + add r5, sp, #0x30 + mov r6, r8 + mov r4, r8 +_022250EC: + mov r0, sb + mov r1, sl + mov r2, r7 + mov r3, r6 + bl _ull_mod + rsb r1, r8, #2 + str r0, [r5, r1, lsl #2] + mov r0, sb + mov r1, sl + mov r2, r7 + mov r3, r4 + bl _ll_udiv + mov sb, r0 + mov sl, r1 + add r8, r8, #1 + cmp r8, #3 + blt _022250EC + ldr r1, [sp, #0x34] + ldr r2, _022251C4 ; =0x0223FFF8 + str r1, [sp] + ldr r1, [sp, #0x38] + add r0, sp, #0x40 + str r1, [sp, #4] + ldr r3, [sp, #0x3c] + mov r1, #0x14 + str r3, [sp, #8] + ldr r3, [sp, #0x30] + bl swprintf + b _02225170 +_02225160: + ldr r2, _022251C8 ; =0x02240020 + add r0, sp, #0x40 + mov r1, #0x14 + bl swprintf +_02225170: + ldr r0, _022251CC ; =0x0223F144 + mov r3, #2 + ldrh r4, [r0, #6] + mov r2, #0x480 + add r1, sp, #0x40 + str r4, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + ldrh r1, [r0] + ldrh r2, [r0, #2] + ldrh r3, [r0, #4] + mov r0, fp + bl MOD13_0223A4F0 + mov r0, fp + bl MOD13_0223A410 + add sp, sp, #0x6c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022251B8: .word 0x0223FFBC +_022251BC: .word 0x0223F13C +_022251C0: .word 0x00002710 +_022251C4: .word 0x0223FFF8 +_022251C8: .word 0x02240020 +_022251CC: .word 0x0223F144 + + arm_func_start MOD13_022251D0 +MOD13_022251D0: ; 0x022251D0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02225250 ; =0x02240048 + ldr r1, _02225254 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02225258 ; =0x04001008 + ldr ip, _0222525C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225260 ; =0x04000008 + ldr r2, _02225264 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225268 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225250: .word 0x02240048 +_02225254: .word 0x020C908C +_02225258: .word 0x04001008 +_0222525C: .word 0x0400100A +_02225260: .word 0x04000008 +_02225264: .word 0x0400000A +_02225268: .word 0x0400000C + + arm_func_start MOD13_0222526C +MOD13_0222526C: ; 0x0222526C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022251D0 + mov r0, #0x11 + bl MOD13_0221F4CC + mov r0, #0x3a + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + bl MOD13_02224FEC + ldr r0, _022252A4 ; =MOD13_02224F90 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022252A4: .word MOD13_02224F90 + + arm_func_start MOD13_022252A8 +MOD13_022252A8: ; 0x022252A8 + ldr r1, _022252CC ; =0x0224308C + ldr r0, _022252D0 ; =0x02243094 + ldrb r2, [r1] + ldr r1, _022252D4 ; =0x0223F14C + ldr ip, _022252D8 ; =MOD13_022327DC + ldrb r1, [r1, r2] + ldr r0, [r0] + mov r2, r1 + bx ip + .align 2, 0 +_022252CC: .word 0x0224308C +_022252D0: .word 0x02243094 +_022252D4: .word 0x0223F14C +_022252D8: .word MOD13_022327DC + + arm_func_start MOD13_022252DC +MOD13_022252DC: ; 0x022252DC + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + bne _0222530C + ldr r0, _02225368 ; =0x0224308C + mov r1, #3 + ldrb r0, [r0] + add r0, r0, #2 + bl FX_ModS32 + ldr r1, _02225368 ; =0x0224308C + strb r0, [r1] + b _02225328 +_0222530C: + ldr r0, _02225368 ; =0x0224308C + mov r1, #3 + ldrb r0, [r0] + add r0, r0, #1 + bl FX_ModS32 + ldr r1, _02225368 ; =0x0224308C + strb r0, [r1] +_02225328: + mov r0, #8 + bl MOD13_0223424C + ldr r0, _02225368 ; =0x0224308C + ldr ip, _0222536C ; =0x0223F19C + ldrb r0, [r0] + ldr r1, _02225370 ; =0x0223F1A0 + ldr r2, _02225374 ; =0x0223F19E + mov lr, r0, lsl #3 + ldr r3, _02225378 ; =0x0223F1A2 + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225368: .word 0x0224308C +_0222536C: .word 0x0223F19C +_02225370: .word 0x0223F1A0 +_02225374: .word 0x0223F19E +_02225378: .word 0x0223F1A2 + + arm_func_start MOD13_0222537C +MOD13_0222537C: ; 0x0222537C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _0222549C ; =0x02243098 + ldr r0, [r0] + bl MOD13_0223B974 + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _022254A0 ; =0x02243094 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _022254A4 ; =0x02243090 + ldrb r0, [r0] + cmp r0, #0 + bne _02225420 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _022254A8 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225420: + ldr r0, _022254AC ; =0x0224308C + ldrb r0, [r0] + cmp r0, #0 + beq _02225448 + cmp r0, #1 + beq _02225464 + cmp r0, #2 + beq _02225480 + add sp, sp, #4 + ldmia sp!, {pc} +_02225448: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B0 ; =MOD13_0222526C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225464: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B4 ; =MOD13_02224A84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225480: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B8 ; =MOD13_02226650 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222549C: .word 0x02243098 +_022254A0: .word 0x02243094 +_022254A4: .word 0x02243090 +_022254A8: .word MOD13_022245B4 +_022254AC: .word 0x0224308C +_022254B0: .word MOD13_0222526C +_022254B4: .word MOD13_02224A84 +_022254B8: .word MOD13_02226650 + + arm_func_start MOD13_022254BC +MOD13_022254BC: ; 0x022254BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02225524 ; =0x02243090 + ldrb r0, [r0] + cmp r0, #0 + beq _022254EC + bl MOD13_0221ED28 +_022254EC: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02225528 ; =MOD13_0222537C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225524: .word 0x02243090 +_02225528: .word MOD13_0222537C + + arm_func_start MOD13_0222552C +MOD13_0222552C: ; 0x0222552C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02225550 ; =MOD13_022254BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225550: .word MOD13_022254BC + + arm_func_start MOD13_02225554 +MOD13_02225554: ; 0x02225554 + stmdb sp!, {lr} + sub sp, sp, #0x14 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02225578 + cmp r0, #1 + beq _02225584 + add sp, sp, #0x14 + ldmia sp!, {pc} +_02225578: + mov r0, #7 + bl MOD13_0223424C + b _022255E4 +_02225584: + add r0, sp, #0 + bl FUN_02095EC8 + ldr r0, _022255F4 ; =0x0224308C + ldrb r0, [r0] + cmp r0, #0 + beq _022255CC + ldr r2, [sp] + ldr r1, [sp, #4] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + bne _022255CC + mov r0, #9 + bl MOD13_0223424C + mvn r0, #0 + bl MOD13_0221ECE0 + add sp, sp, #0x14 + ldmia sp!, {pc} +_022255CC: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_022252A8 + ldr r0, _022255F8 ; =0x02243090 + mov r1, #1 + strb r1, [r0] +_022255E4: + ldr r0, _022255FC ; =MOD13_0222552C + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_022255F4: .word 0x0224308C +_022255F8: .word 0x02243090 +_022255FC: .word MOD13_0222552C + + arm_func_start MOD13_02225600 +MOD13_02225600: ; 0x02225600 + bx lr + + arm_func_start MOD13_02225604 +MOD13_02225604: ; 0x02225604 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022256FC ; =0x0223F184 + mov r5, #0 +_02225614: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02225668 + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _02225700 ; =0x0224308C + ldr ip, _02225704 ; =0x0223F19C + strb r5, [r0] + ldrb r0, [r0] + ldr r1, _02225708 ; =0x0223F1A0 + ldr r2, _0222570C ; =0x0223F19E + mov lr, r0, lsl #3 + ldr r3, _02225710 ; =0x0223F1A2 + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02225668: + add r5, r5, #1 + cmp r5, #3 + add r4, r4, #8 + blo _02225614 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02225698 + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02225698: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022256B8 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022256B8: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022256D8 + mov r0, #1 + bl MOD13_022252DC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022256D8: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #3 + bl MOD13_022252DC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022256FC: .word 0x0223F184 +_02225700: .word 0x0224308C +_02225704: .word 0x0223F19C +_02225708: .word 0x0223F1A0 +_0222570C: .word 0x0223F19E +_02225710: .word 0x0223F1A2 + + arm_func_start MOD13_02225714 +MOD13_02225714: ; 0x02225714 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225604 + bl MOD13_02225600 + bl MOD13_02225554 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02225760 ; =MOD13_02225714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225760: .word MOD13_02225714 + + arm_func_start MOD13_02225764 +MOD13_02225764: ; 0x02225764 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _022257AC ; =0x02225730 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022257AC: .word 0x02225730 + + arm_func_start MOD13_022257B0 +MOD13_022257B0: ; 0x022257B0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _02225808 ; =MOD13_02225764 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225808: .word MOD13_02225764 + + arm_func_start MOD13_0222580C +MOD13_0222580C: ; 0x0222580C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x48 + ldr r4, _0222597C ; =0x0223F154 + add r3, sp, #0 + mov r2, #0xb +_02225820: + ldrb r1, [r4], #1 + ldrb r0, [r4], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02225820 + ldr r4, _02225980 ; =0x0223F16C + add r3, sp, #0x16 + mov r2, #0xb +_02225844: + ldrb r1, [r4], #1 + ldrb r0, [r4], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02225844 + ldrb r2, [r4] + ldr r0, _02225984 ; =0x0224005C + ldr r1, _02225988 ; =0x020C8D4C + strb r2, [r3] + bl MOD13_0221F174 + ldr r0, _0222598C ; =0x02240074 + ldr r1, _02225990 ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0x16 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02225994 ; =0x02243094 + str r0, [r1] + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + mov r5, r0 + add r0, sp, #0x30 + bl FUN_02095EC8 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + mov r6, #0 + cmp r0, r6 + cmpeq r1, r6 + bne _02225900 + add r8, r5, #0xc0 + add r7, r5, #0x40 + mov r4, #0x20 +_022258DC: + mov r0, r8 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + add r6, r6, #1 + cmp r6, #2 + add r8, r8, #0x20 + add r7, r7, #0x20 + blt _022258DC +_02225900: + mov r0, r5 + mov r1, #0x200 + bl DC_FlushRange + mov r0, r5 + mov r1, #0 + mov r2, #0x200 + bl GX_LoadBGPltt + mov r0, r5 + bl MOD13_0223939C + ldr ip, _02225998 ; =0x04001008 + ldr r3, _0222599C ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022259A0 ; =0x0400000A + ldr r1, _022259A4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222597C: .word 0x0223F154 +_02225980: .word 0x0223F16C +_02225984: .word 0x0224005C +_02225988: .word 0x020C8D4C +_0222598C: .word 0x02240074 +_02225990: .word 0x020C908C +_02225994: .word 0x02243094 +_02225998: .word 0x04001008 +_0222599C: .word 0x0400100A +_022259A0: .word 0x0400000A +_022259A4: .word 0x0400000C + + arm_func_start MOD13_022259A8 +MOD13_022259A8: ; 0x022259A8 + stmdb sp!, {r4, lr} + ldr r0, _02225A70 ; =0x02243090 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222580C + mov r0, #0x10 + bl MOD13_0221F4CC + mov r0, #3 + bl MOD13_02234384 + mov r0, #0x39 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0 + mov r1, #0x5b + bl MOD13_02239E54 + ldr r3, _02225A74 ; =0x02243098 + ldr r1, _02225A78 ; =0x0223F150 + str r0, [r3] + ldrh ip, [r1] + ldrh r2, [r1, #2] + ldr r1, _02225A7C ; =0x000001FF + ldr lr, [r0] + and r4, ip, r1 + and ip, r2, #0xff + ldr r1, _02225A80 ; =0xFE00FF00 + ldr r2, _02225A84 ; =0x0224308C + and r1, lr, r1 + orr r1, r1, ip + orr r1, r1, r4, lsl #16 + str r1, [r0] + ldr lr, [r3] + ldr r0, _02225A88 ; =0x0223F19C + ldrh r3, [lr, #4] + ldr r1, _02225A8C ; =0x0223F1A0 + ldr ip, _02225A90 ; =0x0223F19E + bic r3, r3, #0xc00 + orr r3, r3, #0xc00 + strh r3, [lr, #4] + ldrb r2, [r2] + ldr r3, _02225A94 ; =0x0223F1A2 + mov lr, r2, lsl #3 + ldrh r0, [r0, lr] + ldrh r1, [r1, lr] + ldrh r2, [ip, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + ldr r0, _02225A98 ; =MOD13_022257B0 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_02225A70: .word 0x02243090 +_02225A74: .word 0x02243098 +_02225A78: .word 0x0223F150 +_02225A7C: .word 0x000001FF +_02225A80: .word 0xFE00FF00 +_02225A84: .word 0x0224308C +_02225A88: .word 0x0223F19C +_02225A8C: .word 0x0223F1A0 +_02225A90: .word 0x0223F19E +_02225A94: .word 0x0223F1A2 +_02225A98: .word MOD13_022257B0 + + arm_func_start MOD13_02225A9C +MOD13_02225A9C: ; 0x02225A9C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #2 + bne _02225ACC + bl MOD13_02233808 + ldr r0, _02225B24 ; =0x0224309C + mov r1, #1 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x10 + bl MOD13_0223424C + b _02225B08 +_02225ACC: + cmp r0, #3 + bne _02225AF0 + ldr r0, _02225B24 ; =0x0224309C + mov r1, #2 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + b _02225B08 +_02225AF0: + ldr r0, _02225B24 ; =0x0224309C + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C +_02225B08: + mov r0, #0 + bl MOD13_02223944 + bl MOD13_022239B4 + ldr r0, _02225B28 ; =MOD13_02225BD8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225B24: .word 0x0224309C +_02225B28: .word MOD13_02225BD8 + + arm_func_start MOD13_02225B2C +MOD13_02225B2C: ; 0x02225B2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221F694 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02225BC8 ; =0x0224309C + ldrb r0, [r0] + cmp r0, #0 + bne _02225BA0 + ldr r0, _02225BCC ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225BA0: + cmp r0, #2 + bne _02225BB8 + ldr r0, _02225BD0 ; =MOD13_022268B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225BB8: + ldr r0, _02225BD4 ; =MOD13_02225FE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225BC8: .word 0x0224309C +_02225BCC: .word MOD13_02226CB0 +_02225BD0: .word MOD13_022268B4 +_02225BD4: .word MOD13_02225FE4 + + arm_func_start MOD13_02225BD8 +MOD13_02225BD8: ; 0x02225BD8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02225C04 ; =MOD13_02225B2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C04: .word MOD13_02225B2C + + arm_func_start MOD13_02225C08 +MOD13_02225C08: ; 0x02225C08 + bx lr + + arm_func_start MOD13_02225C0C +MOD13_02225C0C: ; 0x02225C0C + bx lr + + arm_func_start MOD13_02225C10 +MOD13_02225C10: ; 0x02225C10 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225C0C + bl MOD13_02225C08 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02225C5C ; =MOD13_02225A9C + bl MOD13_02223944 + ldr r0, _02225C60 ; =MOD13_02225C10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C5C: .word MOD13_02225A9C +_02225C60: .word MOD13_02225C10 + + arm_func_start MOD13_02225C64 +MOD13_02225C64: ; 0x02225C64 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02225C9C ; =0x02225C28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C9C: .word 0x02225C28 + + arm_func_start MOD13_02225CA0 +MOD13_02225CA0: ; 0x02225CA0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02225D20 ; =0x0224008C + ldr r1, _02225D24 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02225D28 ; =0x04001008 + ldr ip, _02225D2C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225D30 ; =0x04000008 + ldr r2, _02225D34 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225D38 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225D20: .word 0x0224008C +_02225D24: .word 0x020C908C +_02225D28: .word 0x04001008 +_02225D2C: .word 0x0400100A +_02225D30: .word 0x04000008 +_02225D34: .word 0x0400000A +_02225D38: .word 0x0400000C + + arm_func_start MOD13_02225D3C +MOD13_02225D3C: ; 0x02225D3C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225CA0 + mov r0, #0x1e + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #1 + bl MOD13_0221F6E0 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _02225D78 ; =MOD13_02225C64 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225D78: .word MOD13_02225C64 + + arm_func_start MOD13_02225D7C +MOD13_02225D7C: ; 0x02225D7C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0x1000000 + bl OS_SpinWait + bl PM_ForceToPowerOff + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + ldr r0, _02225E14 ; =MOD13_02225D7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E14: .word MOD13_02225D7C + + arm_func_start MOD13_02225E18 +MOD13_02225E18: ; 0x02225E18 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02225E3C ; =0x02225DC0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E3C: .word 0x02225DC0 + + arm_func_start MOD13_02225E40 +MOD13_02225E40: ; 0x02225E40 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02225E70 ; =MOD13_02225E18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E70: .word MOD13_02225E18 + + arm_func_start MOD13_02225E74 +MOD13_02225E74: ; 0x02225E74 + bx lr + + arm_func_start MOD13_02225E78 +MOD13_02225E78: ; 0x02225E78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225E78 + bl MOD13_02225E74 + bl MOD13_02225E40 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02225EF0 ; =0x02225EA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225EF0: .word 0x02225EA4 + + arm_func_start MOD13_02225EF4 +MOD13_02225EF4: ; 0x02225EF4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #5 + bl MOD13_0221F0EC + ldr r0, _02225F28 ; =0x02225EC0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225F28: .word 0x02225EC0 + + arm_func_start MOD13_02225F2C +MOD13_02225F2C: ; 0x02225F2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02225F64 ; =MOD13_02225EF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225F64: .word MOD13_02225EF4 + + arm_func_start MOD13_02225F68 +MOD13_02225F68: ; 0x02225F68 + ldr r1, _02225FD0 ; =0x04001008 + ldr ip, _02225FD4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225FD8 ; =0x04000008 + ldr r2, _02225FDC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225FE0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + bx lr + .align 2, 0 +_02225FD0: .word 0x04001008 +_02225FD4: .word 0x0400100A +_02225FD8: .word 0x04000008 +_02225FDC: .word 0x0400000A +_02225FE0: .word 0x0400000C + + arm_func_start MOD13_02225FE4 +MOD13_02225FE4: ; 0x02225FE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225F68 + mov r0, #0x1f + bl MOD13_0221F070 + ldr r0, _02226008 ; =MOD13_02225F2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226008: .word MOD13_02225F2C + + arm_func_start MOD13_0222600C +MOD13_0222600C: ; 0x0222600C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226068 ; =MOD13_022275A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226068: .word MOD13_022275A4 + + arm_func_start MOD13_0222606C +MOD13_0222606C: ; 0x0222606C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022260B0 ; =MOD13_0222600C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022260B0: .word MOD13_0222600C + + arm_func_start MOD13_022260B4 +MOD13_022260B4: ; 0x022260B4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022260D8 ; =MOD13_0222606C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022260D8: .word MOD13_0222606C + + arm_func_start MOD13_022260DC +MOD13_022260DC: ; 0x022260DC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222610C ; =MOD13_022260B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222610C: .word MOD13_022260B4 + + arm_func_start MOD13_02226110 +MOD13_02226110: ; 0x02226110 + bx lr + + arm_func_start MOD13_02226114 +MOD13_02226114: ; 0x02226114 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226114 + bl MOD13_02226110 + bl MOD13_022260DC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222618C ; =0x02226140 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222618C: .word 0x02226140 + + arm_func_start MOD13_02226190 +MOD13_02226190: ; 0x02226190 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #4 + bl MOD13_0221F0EC + ldr r0, _022261D8 ; =0x0222615C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022261D8: .word 0x0222615C + + arm_func_start MOD13_022261DC +MOD13_022261DC: ; 0x022261DC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02226214 ; =MOD13_02226190 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226214: .word MOD13_02226190 + + arm_func_start MOD13_02226218 +MOD13_02226218: ; 0x02226218 + ldr r1, _02226280 ; =0x04001008 + ldr ip, _02226284 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226288 ; =0x04000008 + ldr r2, _0222628C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02226290 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + bx lr + .align 2, 0 +_02226280: .word 0x04001008 +_02226284: .word 0x0400100A +_02226288: .word 0x04000008 +_0222628C: .word 0x0400000A +_02226290: .word 0x0400000C + + arm_func_start MOD13_02226294 +MOD13_02226294: ; 0x02226294 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226218 + mov r0, #0x1a + bl MOD13_0221F070 + ldr r0, _022262B8 ; =MOD13_022261DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022262B8: .word MOD13_022261DC + + arm_func_start MOD13_022262BC +MOD13_022262BC: ; 0x022262BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _022262FC + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_022262FC: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226334 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226334: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _0222636C + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222638C ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222636C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226390 ; =MOD13_02226294 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226388: .word 0x022430A0 +_0222638C: .word MOD13_022259A8 +_02226390: .word MOD13_02226294 + + arm_func_start MOD13_02226394 +MOD13_02226394: ; 0x02226394 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _022263FC ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _022263D8 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022263D8: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226400 ; =MOD13_022262BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022263FC: .word 0x022430A0 +_02226400: .word MOD13_022262BC + + arm_func_start MOD13_02226404 +MOD13_02226404: ; 0x02226404 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02226428 ; =MOD13_02226394 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226428: .word MOD13_02226394 + + arm_func_start MOD13_0222642C +MOD13_0222642C: ; 0x0222642C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02226450 + cmp r0, #1 + beq _0222645C + add sp, sp, #4 + ldmia sp!, {pc} +_02226450: + mov r0, #7 + bl MOD13_0223424C + b _02226470 +_0222645C: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02226480 ; =0x022430A0 + mov r1, #1 + strb r1, [r0] +_02226470: + ldr r0, _02226484 ; =MOD13_02226404 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226480: .word 0x022430A0 +_02226484: .word MOD13_02226404 + + arm_func_start MOD13_02226488 +MOD13_02226488: ; 0x02226488 + bx lr + + arm_func_start MOD13_0222648C +MOD13_0222648C: ; 0x0222648C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022264AC + mov r0, #1 + bl MOD13_0221ECF4 +_022264AC: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222648C + bl MOD13_02226488 + bl MOD13_0222642C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222651C ; =0x022264D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222651C: .word 0x022264D0 + + arm_func_start MOD13_02226520 +MOD13_02226520: ; 0x02226520 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02226554 ; =0x022264EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226554: .word 0x022264EC + + arm_func_start MOD13_02226558 +MOD13_02226558: ; 0x02226558 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022265B0 ; =MOD13_02226520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022265B0: .word MOD13_02226520 + + arm_func_start MOD13_022265B4 +MOD13_022265B4: ; 0x022265B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226634 ; =0x022400A0 + ldr r1, _02226638 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222663C ; =0x04001008 + ldr ip, _02226640 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226644 ; =0x04000008 + ldr r2, _02226648 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222664C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226634: .word 0x022400A0 +_02226638: .word 0x020C908C +_0222663C: .word 0x04001008 +_02226640: .word 0x0400100A +_02226644: .word 0x04000008 +_02226648: .word 0x0400000A +_0222664C: .word 0x0400000C + + arm_func_start MOD13_02226650 +MOD13_02226650: ; 0x02226650 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226698 ; =0x022430A0 + mov r1, #0 + strb r1, [r0] + bl MOD13_022265B4 + mov r0, #0x13 + bl MOD13_0221F4CC + mov r0, #0x3c + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0x1b + bl MOD13_0221F070 + ldr r0, _0222669C ; =MOD13_02226558 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226698: .word 0x022430A0 +_0222669C: .word MOD13_02226558 + + arm_func_start MOD13_022266A0 +MOD13_022266A0: ; 0x022266A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022266D8 ; =0x022430A4 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _022266DC ; =MOD13_02226754 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022266D8: .word 0x022430A4 +_022266DC: .word MOD13_02226754 + + arm_func_start MOD13_022266E0 +MOD13_022266E0: ; 0x022266E0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226750 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226750: .word MOD13_022259A8 + + arm_func_start MOD13_02226754 +MOD13_02226754: ; 0x02226754 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226794 ; =MOD13_022266E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226794: .word MOD13_022266E0 + + arm_func_start MOD13_02226798 +MOD13_02226798: ; 0x02226798 + bx lr + + arm_func_start MOD13_0222679C +MOD13_0222679C: ; 0x0222679C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022266A0 + bl MOD13_02226798 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _022267F0 ; =MOD13_0222679C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022267F0: .word MOD13_0222679C + + arm_func_start MOD13_022267F4 +MOD13_022267F4: ; 0x022267F4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222682C ; =0x022267B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222682C: .word 0x022267B4 + + arm_func_start MOD13_02226830 +MOD13_02226830: ; 0x02226830 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222689C ; =0x022400B4 + ldr r1, _022268A0 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _022268A4 ; =0x04001008 + ldr r3, _022268A8 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022268AC ; =0x0400000A + ldr r1, _022268B0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222689C: .word 0x022400B4 +_022268A0: .word 0x020C908C +_022268A4: .word 0x04001008 +_022268A8: .word 0x0400100A +_022268AC: .word 0x0400000A +_022268B0: .word 0x0400000C + + arm_func_start MOD13_022268B4 +MOD13_022268B4: ; 0x022268B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022268E4 ; =0x022430A4 + mov r1, #0 + strb r1, [r0] + bl MOD13_02226830 + mov r0, #0x21 + bl MOD13_0221F070 + ldr r0, _022268E8 ; =MOD13_022267F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022268E4: .word 0x022430A4 +_022268E8: .word MOD13_022267F4 + + arm_func_start MOD13_022268EC +MOD13_022268EC: ; 0x022268EC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022269A8 ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _02226954 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226954: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022269A8 ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _0222698C + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022269AC ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222698C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022269B0 ; =MOD13_022275A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022269A8: .word 0x022430AC +_022269AC: .word MOD13_022259A8 +_022269B0: .word MOD13_022275A4 + + arm_func_start MOD13_022269B4 +MOD13_022269B4: ; 0x022269B4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02226A1C ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _022269F8 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022269F8: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226A20 ; =MOD13_022268EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226A1C: .word 0x022430AC +_02226A20: .word MOD13_022268EC + + arm_func_start MOD13_02226A24 +MOD13_02226A24: ; 0x02226A24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02226A48 ; =MOD13_022269B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226A48: .word MOD13_022269B4 + + arm_func_start MOD13_02226A4C +MOD13_02226A4C: ; 0x02226A4C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02226A84 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _02226AA8 ; =0x022430AC + mov r2, #1 + mov r0, #6 + strb r2, [r1] + bl MOD13_0223424C + b _02226A98 +_02226A84: + ldr r1, _02226AA8 ; =0x022430AC + mov r2, #0 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C +_02226A98: + ldr r0, _02226AAC ; =MOD13_02226A24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226AA8: .word 0x022430AC +_02226AAC: .word MOD13_02226A24 + + arm_func_start MOD13_02226AB0 +MOD13_02226AB0: ; 0x02226AB0 + bx lr + + arm_func_start MOD13_02226AB4 +MOD13_02226AB4: ; 0x02226AB4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02226AD4 + mov r0, #1 + bl MOD13_0221ECF4 +_02226AD4: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226AB4 + bl MOD13_02226AB0 + bl MOD13_02226A4C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02226B54 ; =0x02226AF8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226B54: .word 0x02226AF8 + + arm_func_start MOD13_02226B58 +MOD13_02226B58: ; 0x02226B58 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02226BA0 ; =0x02226B14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226BA0: .word 0x02226B14 + + arm_func_start MOD13_02226BA4 +MOD13_02226BA4: ; 0x02226BA4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02226C0C ; =0x022430A8 + ldrb r0, [r0] + cmp r0, #0 + beq _02226BFC + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 +_02226BFC: + ldr r0, _02226C10 ; =MOD13_02226B58 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226C0C: .word 0x022430A8 +_02226C10: .word MOD13_02226B58 + + arm_func_start MOD13_02226C14 +MOD13_02226C14: ; 0x02226C14 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226C94 ; =0x022400C8 + ldr r1, _02226C98 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02226C9C ; =0x04001008 + ldr ip, _02226CA0 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226CA4 ; =0x04000008 + ldr r2, _02226CA8 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02226CAC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226C94: .word 0x022400C8 +_02226C98: .word 0x020C908C +_02226C9C: .word 0x04001008 +_02226CA0: .word 0x0400100A +_02226CA4: .word 0x04000008 +_02226CA8: .word 0x0400000A +_02226CAC: .word 0x0400000C + + arm_func_start MOD13_02226CB0 +MOD13_02226CB0: ; 0x02226CB0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226C14 + mov r0, #0x20 + bl MOD13_0221F070 + mov r0, #0x3c + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + ldr r1, _02226CEC ; =0x022430A8 + strb r0, [r1] + ldr r0, _02226CF0 ; =MOD13_02226BA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226CEC: .word 0x022430A8 +_02226CF0: .word MOD13_02226BA4 + + arm_func_start MOD13_02226CF4 +MOD13_02226CF4: ; 0x02226CF4 + ldr r0, _02226D04 ; =0x022430B0 + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02226D04: .word 0x022430B0 + + arm_func_start MOD13_02226D08 +MOD13_02226D08: ; 0x02226D08 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226DDC ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D30 + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D40 +_02226D30: + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02226D40: + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D74 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226D74: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226DDC ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + beq _02226DA0 + ldr r0, _02226DE4 ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02226DA0: + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226DCC + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + ldr r0, _02226DE8 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02226DCC: + ldr r0, _02226DEC ; =MOD13_02225D3C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226DDC: .word 0x022430B0 +_02226DE0: .word 0x022430B4 +_02226DE4: .word MOD13_02226CB0 +_02226DE8: .word MOD13_022259A8 +_02226DEC: .word MOD13_02225D3C + + arm_func_start MOD13_02226DF0 +MOD13_02226DF0: ; 0x02226DF0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226E5C ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226E48 + ldr r0, _02226E60 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #1 + bne _02226E48 + bl MOD13_02223938 + b _02226E4C +_02226E48: + bl MOD13_022239B4 +_02226E4C: + ldr r0, _02226E64 ; =MOD13_02226D08 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226E5C: .word 0x022430B0 +_02226E60: .word 0x022430B4 +_02226E64: .word MOD13_02226D08 + + arm_func_start MOD13_02226E68 +MOD13_02226E68: ; 0x02226E68 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226EC8 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226EA4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02226EA4: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226ECC ; =MOD13_02226DF0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226EC8: .word 0x022430B4 +_02226ECC: .word MOD13_02226DF0 + + arm_func_start MOD13_02226ED0 +MOD13_02226ED0: ; 0x02226ED0 + bx lr + + arm_func_start MOD13_02226ED4 +MOD13_02226ED4: ; 0x02226ED4 + bx lr + + arm_func_start MOD13_02226ED8 +MOD13_02226ED8: ; 0x02226ED8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226ED4 + bl MOD13_02226ED0 + bl MOD13_02235E9C + cmp r0, #0 + beq _02226F04 + cmp r0, #1 + beq _02226F1C + add sp, sp, #4 + ldmia sp!, {pc} +_02226F04: + ldr r1, _02226F4C ; =0x022430B4 + mov r2, #0 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C + b _02226F30 +_02226F1C: + ldr r1, _02226F4C ; =0x022430B4 + mov r2, #1 + mov r0, #0xe + strb r2, [r1] + bl MOD13_0223424C +_02226F30: + mov r0, #0 + bl MOD13_02223944 + bl MOD13_02235EB0 + ldr r0, _02226F50 ; =MOD13_02226E68 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226F4C: .word 0x022430B4 +_02226F50: .word MOD13_02226E68 + + arm_func_start MOD13_02226F54 +MOD13_02226F54: ; 0x02226F54 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02226F80 ; =MOD13_02226ED8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226F80: .word MOD13_02226ED8 + + arm_func_start MOD13_02226F84 +MOD13_02226F84: ; 0x02226F84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r2, #0 + mov r0, #0x1d + mov r1, #4 + mvn r3, #0 + str r2, [sp] + bl MOD13_02235EFC + ldr r0, _02226FC8 ; =MOD13_02226F54 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226FC8: .word MOD13_02226F54 + + arm_func_start MOD13_02226FCC +MOD13_02226FCC: ; 0x02226FCC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227004 ; =MOD13_02226F84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227004: .word MOD13_02226F84 + + arm_func_start MOD13_02227008 +MOD13_02227008: ; 0x02227008 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227088 ; =0x022400DC + ldr r1, _0222708C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227090 ; =0x04001008 + ldr ip, _02227094 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227098 ; =0x04000008 + ldr r2, _0222709C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022270A0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227088: .word 0x022400DC +_0222708C: .word 0x020C908C +_02227090: .word 0x04001008 +_02227094: .word 0x0400100A +_02227098: .word 0x04000008 +_0222709C: .word 0x0400000A +_022270A0: .word 0x0400000C + + arm_func_start MOD13_022270A4 +MOD13_022270A4: ; 0x022270A4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x2c + bl MOD13_0222391C + mov r5, r0 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _02227160 ; =0x022430B4 + mov r3, #0 + ldr r1, _02227164 ; =0x022430B0 + mov r4, r0 + strb r3, [r2] + strb r3, [r1] + bl MOD13_02227008 + mov r0, #0 + add r1, sp, #0x10 + mov r2, #0x16 + bl MIi_CpuClear16 + ldrb r2, [r5, #1] + add r0, r5, #2 + add r1, sp, #0x10 + mov r2, r2, lsl #1 + bl MIi_CpuCopy16 + ldr r0, _02227168 ; =0x0223F1B4 + mov lr, #2 + ldrh r2, [r0, #2] + ldrh r5, [r0, #6] + ldrh r1, [r0] + mov ip, #0x480 + sub r5, r5, r2 + str r5, [sp] + str lr, [sp, #4] + add r3, sp, #0x10 + str ip, [sp, #8] + str r3, [sp, #0xc] + ldrh r3, [r0, #4] + mov r0, r4 + sub r3, r3, r1 + bl MOD13_0223A4F0 + mov r0, r4 + bl MOD13_0223A410 + ldr r0, _0222716C ; =MOD13_02226CF4 + bl MOD13_02223944 + ldr r0, _02227170 ; =MOD13_02226FCC + bl MOD13_02222FBC + add sp, sp, #0x2c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02227160: .word 0x022430B4 +_02227164: .word 0x022430B0 +_02227168: .word 0x0223F1B4 +_0222716C: .word MOD13_02226CF4 +_02227170: .word MOD13_02226FCC + + arm_func_start MOD13_02227174 +MOD13_02227174: ; 0x02227174 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_022341E8 + cmp r4, #0 + bne _022271A0 + ldr r1, _022271C8 ; =0x022430B8 + mov r2, #1 + mov r0, #0x10 + strb r2, [r1] + bl MOD13_0223424C + b _022271B4 +_022271A0: + ldr r1, _022271C8 ; =0x022430B8 + mov r2, #2 + mov r0, #0x12 + strb r2, [r1] + bl MOD13_0223424C +_022271B4: + mov r0, #0 + bl MOD13_02223944 + ldr r0, _022271CC ; =MOD13_02227384 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_022271C8: .word 0x022430B8 +_022271CC: .word MOD13_02227384 + + arm_func_start MOD13_022271D0 +MOD13_022271D0: ; 0x022271D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227210 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02227210: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227240 + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02227240: + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222726C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222726C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _022272A4 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272E8 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022272A4: + cmp r0, #2 + bne _022272C8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272EC ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022272C8: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272F0 ; =MOD13_022270A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022272E4: .word 0x022430B8 +_022272E8: .word MOD13_022259A8 +_022272EC: .word MOD13_02226CB0 +_022272F0: .word MOD13_022270A4 + + arm_func_start MOD13_022272F4 +MOD13_022272F4: ; 0x022272F4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222737C ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227330 + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02227330: + bl MOD13_0221ED28 + ldr r0, _0222737C ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227358 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02227358: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227380 ; =MOD13_022271D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222737C: .word 0x022430B8 +_02227380: .word MOD13_022271D0 + + arm_func_start MOD13_02227384 +MOD13_02227384: ; 0x02227384 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022273BC ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _022273A0 + bl MOD13_022239B4 +_022273A0: + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022273C0 ; =MOD13_022272F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022273BC: .word 0x022430B8 +_022273C0: .word MOD13_022272F4 + + arm_func_start MOD13_022273C4 +MOD13_022273C4: ; 0x022273C4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022273F8 ; =MOD13_02227384 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022273F8: .word MOD13_02227384 + + arm_func_start MOD13_022273FC +MOD13_022273FC: ; 0x022273FC + bx lr + + arm_func_start MOD13_02227400 +MOD13_02227400: ; 0x02227400 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02227428 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_02227428: + bl MOD13_022275F8 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227400 + bl MOD13_022273FC + bl MOD13_022273C4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02227490 ; =0x02227448 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227490: .word 0x02227448 + + arm_func_start MOD13_02227494 +MOD13_02227494: ; 0x02227494 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _022274C8 ; =0x02227464 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022274C8: .word 0x02227464 + + arm_func_start MOD13_022274CC +MOD13_022274CC: ; 0x022274CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227504 ; =MOD13_02227494 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227504: .word MOD13_02227494 + + arm_func_start MOD13_02227508 +MOD13_02227508: ; 0x02227508 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227588 ; =0x022400F0 + ldr r1, _0222758C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227590 ; =0x04001008 + ldr ip, _02227594 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227598 ; =0x04000008 + ldr r2, _0222759C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022275A0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227588: .word 0x022400F0 +_0222758C: .word 0x020C908C +_02227590: .word 0x04001008 +_02227594: .word 0x0400100A +_02227598: .word 0x04000008 +_0222759C: .word 0x0400000A +_022275A0: .word 0x0400000C + + arm_func_start MOD13_022275A4 +MOD13_022275A4: ; 0x022275A4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022275EC ; =MOD13_02227174 + bl MOD13_022239D4 + ldr r0, _022275F0 ; =0x022430B8 + mov r1, #0 + strb r1, [r0] + bl MOD13_02227508 + mov r0, #0x1c + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _022275F4 ; =MOD13_022274CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022275EC: .word MOD13_02227174 +_022275F0: .word 0x022430B8 +_022275F4: .word MOD13_022274CC + + arm_func_start MOD13_022275F8 +MOD13_022275F8: ; 0x022275F8 + ldr r0, _02227614 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02227614: .word 0x027FFFA8 + + arm_func_start MOD13_02227618 +MOD13_02227618: ; 0x02227618 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r1, _02227648 ; =0x022430BC + mov r2, #0 + ldr r0, _0222764C ; =MOD13_02227894 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227648: .word 0x022430BC +_0222764C: .word MOD13_02227894 + + arm_func_start MOD13_02227650 +MOD13_02227650: ; 0x02227650 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227938 + bl MOD13_02227934 + bl MOD13_022278D8 + ldr r1, _0222769C ; =0x022430C0 + ldr r0, _022276A0 ; =0x00000438 + ldrh r2, [r1] + add r2, r2, #1 + strh r2, [r1] + ldrh r1, [r1] + cmp r1, r0 + addlo sp, sp, #4 + ldmloia sp!, {pc} + bl MOD13_022341E8 + ldr r0, _022276A4 ; =MOD13_02227894 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222769C: .word 0x022430C0 +_022276A0: .word 0x00000438 +_022276A4: .word MOD13_02227894 + + arm_func_start MOD13_022276A8 +MOD13_022276A8: ; 0x022276A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022276D0 ; =MOD13_02227894 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022276D0: .word MOD13_02227894 + + arm_func_start MOD13_022276D4 +MOD13_022276D4: ; 0x022276D4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02227708 ; =MOD13_022276A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227708: .word MOD13_022276A8 + + arm_func_start MOD13_0222770C +MOD13_0222770C: ; 0x0222770C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223B6A8 + mov r0, #0 + bl MOD13_0223C1E0 + bl MOD13_02227938 + bl MOD13_022278D8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _02227770 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02227770: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bl MOD13_02222D7C + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _022277C4 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_022277C4: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _022277FC + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222781C ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022277FC: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02227820 ; =MOD13_02227ED0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227818: .word 0x022430BC +_0222781C: .word MOD13_02230EC4 +_02227820: .word MOD13_02227ED0 + + arm_func_start MOD13_02227824 +MOD13_02227824: ; 0x02227824 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0222788C ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _02227868 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02227868: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227890 ; =0x02227730 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222788C: .word 0x022430BC +_02227890: .word 0x02227730 + + arm_func_start MOD13_02227894 +MOD13_02227894: ; 0x02227894 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + ldr r0, _022278D0 ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + beq _022278B8 + mov r0, #1 + bl MOD13_0223C104 +_022278B8: + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022278D4 ; =MOD13_02227824 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022278D0: .word 0x022430C4 +_022278D4: .word MOD13_02227824 + + arm_func_start MOD13_022278D8 +MOD13_022278D8: ; 0x022278D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222792C ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #1 + bl MOD13_0223C110 + ldr r0, _0222792C ; =0x022430C4 + mov r1, #0 + str r1, [r0] + bl MOD13_0221EC84 + ldr r0, _02227930 ; =MOD13_02227618 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222792C: .word 0x022430C4 +_02227930: .word MOD13_02227618 + + arm_func_start MOD13_02227934 +MOD13_02227934: ; 0x02227934 + bx lr + + arm_func_start MOD13_02227938 +MOD13_02227938: ; 0x02227938 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02227960 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_02227960: + bl MOD13_02227CA0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227938 + bl MOD13_02227934 + bl MOD13_022278D8 + bl MOD13_02222D0C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r0, #1 + beq _022279BC + cmp r0, #2 + beq _022279FC + add sp, sp, #4 + ldmia sp!, {pc} +_022279BC: + ldr r0, _02227A68 ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r2, _02227A6C ; =0x022430BC + mov r0, #1 + strb r0, [r2] + bl MOD13_0223C104 + ldr r1, _02227A68 ; =0x022430C4 + mov r2, #0 + ldr r0, _02227A70 ; =MOD13_02227650 + str r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022279FC: + ldr r0, _02227A68 ; =0x022430C4 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022341E8 + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xc + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #9 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r1, _02227A68 ; =0x022430C4 + mov r0, #1 + ldr r1, [r1] + bl MOD13_0223C104 + ldr r1, _02227A68 ; =0x022430C4 + mov r2, #0 + ldr r0, _02227A74 ; =MOD13_022276D4 + str r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227A68: .word 0x022430C4 +_02227A6C: .word 0x022430BC +_02227A70: .word MOD13_02227650 +_02227A74: .word MOD13_022276D4 + + arm_func_start MOD13_02227A78 +MOD13_02227A78: ; 0x02227A78 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02227AC0 ; =MOD13_0222770C + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02227AC4 ; =0x022430C4 + str r0, [r1] + ldr r0, _02227AC8 ; =0x02227980 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227AC0: .word MOD13_0222770C +_02227AC4: .word 0x022430C4 +_02227AC8: .word 0x02227980 + + arm_func_start MOD13_02227ACC +MOD13_02227ACC: ; 0x02227ACC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _02227B14 ; =MOD13_02227A78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227B14: .word MOD13_02227A78 + + arm_func_start MOD13_02227B18 +MOD13_02227B18: ; 0x02227B18 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227B70 ; =MOD13_02227ACC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227B70: .word MOD13_02227ACC + + arm_func_start MOD13_02227B74 +MOD13_02227B74: ; 0x02227B74 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227C0C ; =0x02240104 + ldr r1, _02227C10 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02227C14 ; =0x0224011C + ldr r1, _02227C18 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02227C1C ; =0x02240134 + ldr r1, _02227C20 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227C24 ; =0x04001008 + ldr ip, _02227C28 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227C2C ; =0x04000008 + ldr r2, _02227C30 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02227C34 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227C0C: .word 0x02240104 +_02227C10: .word 0x020C8D4C +_02227C14: .word 0x0224011C +_02227C18: .word 0x020C9550 +_02227C1C: .word 0x02240134 +_02227C20: .word 0x020C908C +_02227C24: .word 0x04001008 +_02227C28: .word 0x0400100A +_02227C2C: .word 0x04000008 +_02227C30: .word 0x0400000A +_02227C34: .word 0x0400000C + + arm_func_start MOD13_02227C38 +MOD13_02227C38: ; 0x02227C38 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227C98 ; =0x022430C0 + mov r1, #0 + strh r1, [r0] + bl MOD13_02227B74 + bl MOD13_0221F4AC + mov r0, #0x36 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x22 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_02222DD8 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _02227C9C ; =MOD13_02227B18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227C98: .word 0x022430C0 +_02227C9C: .word MOD13_02227B18 + + arm_func_start MOD13_02227CA0 +MOD13_02227CA0: ; 0x02227CA0 + ldr r0, _02227CBC ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02227CBC: .word 0x027FFFA8 + + arm_func_start MOD13_02227CC0 +MOD13_02227CC0: ; 0x02227CC0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227CF8 ; =0x022430C8 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _02227CFC ; =MOD13_02227D80 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227CF8: .word 0x022430C8 +_02227CFC: .word MOD13_02227D80 + + arm_func_start MOD13_02227D00 +MOD13_02227D00: ; 0x02227D00 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02227D7C ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227D7C: .word MOD13_0223197C + + arm_func_start MOD13_02227D80 +MOD13_02227D80: ; 0x02227D80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227DC0 ; =MOD13_02227D00 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227DC0: .word MOD13_02227D00 + + arm_func_start MOD13_02227DC4 +MOD13_02227DC4: ; 0x02227DC4 + bx lr + + arm_func_start MOD13_02227DC8 +MOD13_02227DC8: ; 0x02227DC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227CC0 + bl MOD13_02227DC4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02227E0C ; =MOD13_02227DC8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227E0C: .word MOD13_02227DC8 + + arm_func_start MOD13_02227E10 +MOD13_02227E10: ; 0x02227E10 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227E48 ; =0x02227DE0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227E48: .word 0x02227DE0 + + arm_func_start MOD13_02227E4C +MOD13_02227E4C: ; 0x02227E4C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227EB8 ; =0x02240148 + ldr r1, _02227EBC ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _02227EC0 ; =0x04001008 + ldr r3, _02227EC4 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _02227EC8 ; =0x0400000A + ldr r1, _02227ECC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227EB8: .word 0x02240148 +_02227EBC: .word 0x020C908C +_02227EC0: .word 0x04001008 +_02227EC4: .word 0x0400100A +_02227EC8: .word 0x0400000A +_02227ECC: .word 0x0400000C + + arm_func_start MOD13_02227ED0 +MOD13_02227ED0: ; 0x02227ED0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227F0C ; =0x022430C8 + mov r1, #0 + strb r1, [r0] + bl MOD13_02227E4C + bl MOD13_0221F4AC + mov r0, #0x23 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _02227F10 ; =MOD13_02227E10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F0C: .word 0x022430C8 +_02227F10: .word MOD13_02227E10 + + arm_func_start MOD13_02227F14 +MOD13_02227F14: ; 0x02227F14 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EC9C + bl MOD13_02232F2C + ldr r0, _02227F44 ; =MOD13_02229150 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F44: .word MOD13_02229150 + + arm_func_start MOD13_02227F48 +MOD13_02227F48: ; 0x02227F48 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02227F7C ; =MOD13_02227F14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F7C: .word MOD13_02227F14 + + arm_func_start MOD13_02227F80 +MOD13_02227F80: ; 0x02227F80 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02227FB4 ; =0x0223F1BC + ldr r0, _02227FB8 ; =0x022430D4 + ldrb r1, [r1] + ldr r0, [r0] + strb r1, [sp] + ldrb r1, [sp] + ldr r0, [r0, #8] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227FB4: .word 0x0223F1BC +_02227FB8: .word 0x022430D4 + + arm_func_start MOD13_02227FBC +MOD13_02227FBC: ; 0x02227FBC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222804C ; =0x022430D4 + ldr r0, _02228050 ; =0x022430D0 + ldr r2, [r1] + ldrh r1, [r0] + ldrh r0, [r2, #0x40] + cmp r1, r0 + beq _02227FEC + ldrb r0, [r2, #0x51] + cmp r0, #4 + bhi _0222801C +_02227FEC: + ldrb r0, [r2, #0x59] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222804C ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x59] + ldmia sp!, {pc} +_0222801C: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228054 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222804C ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222804C: .word 0x022430D4 +_02228050: .word 0x022430D0 +_02228054: .word MOD13_02228314 + + arm_func_start MOD13_02228058 +MOD13_02228058: ; 0x02228058 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022280D8 ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + bne _022280A8 + ldr r0, _022280DC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x59] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022280DC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x59] + ldmia sp!, {pc} +_022280A8: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _022280E0 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _022280DC ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022280D8: .word 0x022430D0 +_022280DC: .word 0x022430D4 +_022280E0: .word MOD13_022283B4 + + arm_func_start MOD13_022280E4 +MOD13_022280E4: ; 0x022280E4 + stmdb sp!, {r4, lr} + ldr r1, _02228238 ; =0x022430CC + mov r4, #1 + ldrb r2, [r1] + cmp r2, #4 + addls pc, pc, r2, lsl #2 + b _022281F0 +_02228100: ; jump table + b _02228114 ; case 0 + b _02228180 ; case 1 + b _02228180 ; case 2 + b _022281B0 ; case 3 + b _022281C8 ; case 4 +_02228114: + cmp r0, #1 + bne _02228160 + ldr r0, _0222823C ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + moveq r0, #4 + streqb r0, [r1] + beq _022281F0 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228240 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228244 ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, pc} +_02228160: + ldr r0, _02228244 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x51] + cmp r0, #1 + addhi r0, r2, #1 + strhib r0, [r1] + movls r4, #0 + b _022281F0 +_02228180: + cmp r0, #1 + subeq r0, r2, #1 + streqb r0, [r1] + beq _022281F0 + ldr r0, _02228244 ; =0x022430D4 + add r2, r2, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x51] + cmp r0, r2 + strgtb r2, [r1] + movle r4, #0 + b _022281F0 +_022281B0: + cmp r0, #1 + subeq r0, r2, #1 + streqb r0, [r1] + beq _022281F0 + bl MOD13_02227FBC + ldmia sp!, {r4, pc} +_022281C8: + cmp r0, #1 + moveq r4, #0 + beq _022281F0 + ldr r0, _0222823C ; =0x022430D0 + mov r2, #0 + strh r2, [r0] + strb r2, [r1] + bl MOD13_02228754 + mov r0, #0 + bl MOD13_02232F44 +_022281F0: + cmp r4, #0 + bne _02228228 + ldr r0, _02228244 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x59] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228244 ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x59] + ldmia sp!, {r4, pc} +_02228228: + mov r0, #8 + bl MOD13_0223424C + bl MOD13_02228248 + ldmia sp!, {r4, pc} + .align 2, 0 +_02228238: .word 0x022430CC +_0222823C: .word 0x022430D0 +_02228240: .word MOD13_022283B4 +_02228244: .word 0x022430D4 + + arm_func_start MOD13_02228248 +MOD13_02228248: ; 0x02228248 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222828C ; =0x022430CC + ldr r1, _02228290 ; =0x0223F224 + ldrb r2, [r0] + ldr r3, _02228294 ; =0x0223F226 + mov ip, r2, lsl #3 + cmp r2, #4 + ldr r2, _02228298 ; =0x0223F228 + movlo r0, #2 + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + movhs r0, #3 + bl MOD13_0221F348 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222828C: .word 0x022430CC +_02228290: .word 0x0223F224 +_02228294: .word 0x0223F226 +_02228298: .word 0x0223F228 + + arm_func_start MOD13_0222829C +MOD13_0222829C: ; 0x0222829C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228300 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x56] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02228304 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + ldr r1, _02228308 ; =0x01FF0000 + sub r2, r0, #0x32 + ldr r0, _0222830C ; =0x04000010 + and r2, r1, r2, lsl #16 + ldr r1, _02228310 ; =0x04000018 + str r2, [r0] + ldr r0, _02228300 ; =0x022430D4 + str r2, [r1] + ldr r0, [r0] + mov r1, #0 + strb r1, [r0, #0x56] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228300: .word 0x022430D4 +_02228304: .word 0x022430D0 +_02228308: .word 0x01FF0000 +_0222830C: .word 0x04000010 +_02228310: .word 0x04000018 + + arm_func_start MOD13_02228314 +MOD13_02228314: ; 0x02228314 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _022283AC ; =0x022430D0 + mov r1, #0x1c + ldrh r2, [r0] + add r2, r2, #4 + strh r2, [r0] + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #4 + blt _02228350 + bl MOD13_02228490 + ldmia sp!, {r4, pc} +_02228350: + ldr r1, _022283AC ; =0x022430D0 + ldrh r2, [r1] + sub r0, r2, r0 + strh r0, [r1] + bl MOD13_02228754 + ldr r1, _022283B0 ; =0x022430D4 + ldr r0, _022283AC ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_02228248 + ldr r0, _022283B0 ; =0x022430D4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022283AC: .word 0x022430D0 +_022283B0: .word 0x022430D4 + + arm_func_start MOD13_022283B4 +MOD13_022283B4: ; 0x022283B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _02228488 ; =0x022430D0 + ldrh r1, [r0] + cmp r1, #4 + subhi r1, r1, #4 + strhih r1, [r0] + movls r1, #0 + strlsh r1, [r0] + ldr r0, _02228488 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + mov r5, r0 + cmp r5, #0x18 + bne _0222840C + bl MOD13_02228754 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222840C: + cmp r5, #0x18 + ble _0222842C + ldr r0, _02228488 ; =0x022430D0 + rsb r1, r5, #0x1c + ldrh r2, [r0] + mov r5, #0 + add r1, r2, r1 + strh r1, [r0] +_0222842C: + bl MOD13_02228490 + cmp r5, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222848C ; =0x022430D4 + ldr r0, _02228488 ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_02228248 + ldr r0, _0222848C ; =0x022430D4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02228488: .word 0x022430D0 +_0222848C: .word 0x022430D4 + + arm_func_start MOD13_02228490 +MOD13_02228490: ; 0x02228490 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02228544 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + ldr r1, _02228548 ; =0x022430D4 + rsb r2, r0, #0x36 + ldr r0, [r1] + ldrb r1, [r0, #0x51] + mov r0, #0 + cmp r1, #5 + movgt r1, #5 + cmp r1, #0 + ble _02228530 + ldr ip, _02228548 ; =0x022430D4 + ldr r3, _0222854C ; =0xFE00FF00 +_022284D0: + ldr r5, [ip] + sub r4, r2, #2 + add r5, r5, r0, lsl #2 + ldr r6, [r5, #0x10] + add lr, r2, #1 + ldr r5, [r6] + and r4, r4, #0xff + and r5, r5, r3 + orr r4, r5, r4 + orr r4, r4, #0xb30000 + str r4, [r6] + ldr r4, [ip] + and lr, lr, #0xff + add r4, r4, r0, lsl #2 + ldr r5, [r4, #0x24] + add r0, r0, #1 + ldr r4, [r5] + cmp r0, r1 + and r4, r4, r3 + orr r4, r4, lr + orr r4, r4, #0xd20000 + str r4, [r5] + add r2, r2, #0x1c + blt _022284D0 +_02228530: + ldr r0, _02228548 ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x56] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02228544: .word 0x022430D0 +_02228548: .word 0x022430D4 +_0222854C: .word 0xFE00FF00 + + arm_func_start MOD13_02228550 +MOD13_02228550: ; 0x02228550 + stmdb sp!, {r4, lr} + ldr r3, _022285D8 ; =0x022430D4 + ldr lr, [r3] + ldrb r2, [lr, #0x51] + cmp r0, r2 + ldmgeia sp!, {r4, pc} + mov r2, #0x2a + mul r2, r0, r2 + ldr r0, [lr] + add r4, lr, r1, lsl #2 + add r0, r0, r2 + ldrb ip, [r0, #0x28] + ldr r4, [r4, #0x10] + mov r0, #0x400 + add ip, lr, ip, lsl #1 + ldrh lr, [r4, #4] + rsb r0, r0, #0 + ldrh ip, [ip, #0x42] + and lr, lr, r0 + orr ip, lr, ip + strh ip, [r4, #4] + ldr lr, [r3] + ldr r3, [lr] + add ip, lr, r1, lsl #2 + add r1, r3, r2 + ldrh r1, [r1, #0x26] + ldr r3, [ip, #0x24] + add r1, lr, r1, lsl #1 + ldrh r2, [r3, #4] + ldrh r1, [r1, #0x48] + and r0, r2, r0 + orr r0, r0, r1 + strh r0, [r3, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022285D8: .word 0x022430D4 + + arm_func_start MOD13_022285DC +MOD13_022285DC: ; 0x022285DC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x34 + mov r7, r0 + mov r0, #0x2a + ldr r2, _02228750 ; =0x022430D4 + mul r4, r7, r0 + ldr r0, [r2] + mov r6, r1 + ldr r0, [r0] + mov r1, #0x20 + add r0, r0, r4 + bl MOD13_0223BDA4 + ldr r2, _02228750 ; =0x022430D4 + mov r1, #0x1c + mul r5, r6, r1 + ldr r2, [r2] + mov r6, r0 + ldrb r1, [r2, #0x51] + cmp r7, r1 + addge sp, sp, #0x34 + ldmgeia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0xc + cmp r6, #0x10 + mov r1, #0 + mov r2, #0x22 + addle r5, r5, #6 + bl MI_CpuFill8 + cmp r6, #0x10 + movle ip, r6 + movgt ip, #0x10 + cmp ip, #0 + mov r7, #0 + ble _0222868C + ldr r0, _02228750 ; =0x022430D4 + ldr r3, [r0] + add r0, sp, #0xc +_0222866C: + ldr r2, [r3] + mov r1, r7, lsl #1 + add r2, r4, r2 + ldrb r2, [r7, r2] + add r7, r7, #1 + cmp r7, ip + strh r2, [r0, r1] + blt _0222866C +_0222868C: + mov r1, #0xa + add r0, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _02228750 ; =0x022430D4 + mov r2, r5 + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0xc] + bl MOD13_0223A528 + cmp r6, #0x10 + addle sp, sp, #0x34 + ldmleia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + sub r6, r6, #0x10 + cmp r6, #0 + mov r3, #0 + ble _02228718 + ldr r0, _02228750 ; =0x022430D4 + ldr r7, [r0] + add r0, sp, #0xc +_022286F4: + ldr r1, [r7] + add r2, r3, #0x10 + add r1, r4, r1 + ldrb r2, [r2, r1] + mov r1, r3, lsl #1 + add r3, r3, #1 + strh r2, [r0, r1] + cmp r3, r6 + blt _022286F4 +_02228718: + mov r1, #0xa + add r0, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _02228750 ; =0x022430D4 + add r2, r5, #0xc + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0xc] + bl MOD13_0223A528 + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02228750: .word 0x022430D4 + + arm_func_start MOD13_02228754 +MOD13_02228754: ; 0x02228754 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r0, _02228800 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _02228804 ; =0x022430D4 + mov r7, r0 + ldr r0, [r1] + mov r1, #0 + ldrb r6, [r0, #0x51] + ldr r0, [r0, #0xc] + bl MOD13_0223A4D8 + cmp r6, #5 + movgt r6, #5 + mov r5, r7 + cmp r6, #0 + mov r4, #0 + ble _022287BC +_022287A0: + mov r0, r5 + mov r1, r4 + bl MOD13_022285DC + add r4, r4, #1 + cmp r4, r6 + add r5, r5, #1 + blt _022287A0 +_022287BC: + cmp r6, #0 + mov r4, #0 + ble _022287E4 +_022287C8: + mov r0, r7 + mov r1, r4 + bl MOD13_02228550 + add r4, r4, #1 + cmp r4, r6 + add r7, r7, #1 + blt _022287C8 +_022287E4: + ldr r0, _02228804 ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_0223A410 + bl MOD13_02228490 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02228800: .word 0x022430D0 +_02228804: .word 0x022430D4 + + arm_func_start MOD13_02228808 +MOD13_02228808: ; 0x02228808 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _02228A0C ; =0x022430D4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x3c] + bl MOD13_0223C104 + mov r5, #0 + ldr r4, _02228A0C ; =0x022430D4 +_02228864: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0222887C + bl MOD13_0223B974 +_0222887C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _02228894 + bl MOD13_0223B974 +_02228894: + add r5, r5, #1 + cmp r5, #5 + blt _02228864 + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_0223A688 + bl MOD13_02232F78 + bl MOD13_0221F21C + bl MOD13_0221EE54 + bl MOD13_022328E8 + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223939C + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AE98 + mov r2, #0 + ldr r1, _02228A10 ; =0x04000010 + ldr r0, _02228A14 ; =0x04000018 + str r2, [r1] + str r2, [r0] + ldr r0, _02228A0C ; =0x022430D4 + ldr r2, [r0] + ldrb r0, [r2, #0x54] + cmp r0, #0 + bne _02228948 + bl MOD13_02233570 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _02228A18 ; =MOD13_02230EC4 + bl MOD13_02222FBC + b _022289FC +_02228948: + ldr r0, _02228A1C ; =0x022430CC + ldrb r0, [r0] + cmp r0, #4 + bne _02228974 + bl MOD13_02233570 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02228A20 ; =MOD13_0222F8A0 + bl MOD13_02222FBC + b _022289FC +_02228974: + ldrb r1, [r2, #0x52] + ldr r2, [r2] + mov r0, #0x2a + mla r0, r1, r0, r2 + bl MOD13_02234104 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r1, _02228A0C ; =0x022430D4 + mov r0, #0x2a + ldr r2, [r1] + ldrb r1, [r2, #0x52] + ldr r2, [r2] + mla r0, r1, r0, r2 + ldrb r0, [r0, #0x28] + cmp r0, #0 + beq _022289DC + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #1 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _02228A24 ; =MOD13_0222A190 + bl MOD13_02222FBC + b _022289FC +_022289DC: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02228A28 ; =MOD13_0223197C + bl MOD13_02222FBC +_022289FC: + ldr r0, _02228A0C ; =0x022430D4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02228A0C: .word 0x022430D4 +_02228A10: .word 0x04000010 +_02228A14: .word 0x04000018 +_02228A18: .word MOD13_02230EC4 +_02228A1C: .word 0x022430CC +_02228A20: .word MOD13_0222F8A0 +_02228A24: .word MOD13_0222A190 +_02228A28: .word MOD13_0223197C + + arm_func_start MOD13_02228A2C +MOD13_02228A2C: ; 0x02228A2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02228AA0 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x54] + cmp r0, #0 + beq _02228A64 + bl MOD13_0221ED28 + b _02228A68 +_02228A64: + bl MOD13_0221EC84 +_02228A68: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02228AA4 ; =MOD13_02228808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228AA0: .word 0x022430D4 +_02228AA4: .word MOD13_02228808 + + arm_func_start MOD13_02228AA8 +MOD13_02228AA8: ; 0x02228AA8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02228ACC ; =MOD13_02228A2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228ACC: .word MOD13_02228A2C + + arm_func_start MOD13_02228AD0 +MOD13_02228AD0: ; 0x02228AD0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228BF8 ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x57] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED14 + cmp r0, #0 + beq _02228B1C + cmp r0, #1 + beq _02228B28 + add sp, sp, #4 + ldmia sp!, {pc} +_02228B1C: + mov r0, #7 + bl MOD13_0223424C + b _02228BE8 +_02228B28: + ldr r0, _02228BFC ; =0x022430CC + ldrb r0, [r0] + cmp r0, #4 + bne _02228B58 + ldr r0, _02228BF8 ; =0x022430D4 + mov r2, #1 + ldr r1, [r0] + mov r0, #6 + strb r2, [r1, #0x54] + bl MOD13_0223424C + bl MOD13_02227F80 + b _02228BE8 +_02228B58: + ldr r0, _02228C00 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _02228BFC ; =0x022430CC + ldr r2, _02228BF8 ; =0x022430D4 + ldrb lr, [r1] + ldr ip, [r2] + mov r1, #0x2a + ldr r3, [ip] + add lr, lr, r0 + mla r0, lr, r1, r3 + ldrb r0, [r0, #0x28] + cmp r0, #2 + bne _02228BD0 + mov r0, #9 + bl MOD13_0223424C + bl MOD13_02232F14 + bl MOD13_0221EC84 + mov r1, #1 + mov r0, #0 + str r0, [sp] + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02228C04 ; =MOD13_02227F48 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02228BD0: + mov r0, #1 + strb r0, [ip, #0x54] + ldr r1, [r2] + mov r0, #6 + strb lr, [r1, #0x52] + bl MOD13_0223424C +_02228BE8: + ldr r0, _02228C08 ; =MOD13_02228AA8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228BF8: .word 0x022430D4 +_02228BFC: .word 0x022430CC +_02228C00: .word 0x022430D0 +_02228C04: .word MOD13_02227F48 +_02228C08: .word MOD13_02228AA8 + + arm_func_start MOD13_02228C0C +MOD13_02228C0C: ; 0x02228C0C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228EBC ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x55] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r1, #0x55] + bl MOD13_02232F50 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02228EB4 +_02228C4C: ; jump table + b _02228EB4 ; case 0 + b _02228C6C ; case 1 + b _02228C88 ; case 2 + b _02228CE4 ; case 3 + b _02228DA4 ; case 4 + b _02228EA4 ; case 5 + b _02228E1C ; case 6 + b _02228EA4 ; case 7 +_02228C6C: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x57] + bl MOD13_0221EC84 + add sp, sp, #4 + ldmia sp!, {pc} +_02228C88: + ldr r0, _02228EBC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x55] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_02232F64 + ldr r1, _02228EBC ; =0x022430D4 + ldr r1, [r1] + ldrh r2, [r1, #0x40] + ldrb r1, [r1, #0x53] + mul r0, r2, r0 + bl FX_DivS32 + ldr r1, _02228EC0 ; =0x022430D0 + strh r0, [r1] + bl MOD13_02228754 + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x55] + ldmia sp!, {pc} +_02228CE4: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x57] + bl MOD13_0221EC9C + bl MOD13_02232F64 + ldr r1, _02228EBC ; =0x022430D4 + ldr r1, [r1] + ldrh r2, [r1, #0x40] + ldrb r1, [r1, #0x53] + mul r0, r2, r0 + bl FX_DivS32 + ldr r1, _02228EC0 ; =0x022430D0 + strh r0, [r1] + mov r0, #0x13 + bl MOD13_0223424C + bl MOD13_02228754 + ldr r0, _02228EC0 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #0 + bne _02228D4C + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {pc} +_02228D4C: + cmp r0, #0xe + bge _02228D7C + mov r0, #0 + ldr r1, _02228EC4 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228D7C: + mov r0, #0 + ldr r1, _02228EC8 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228DA4: + ldr r0, _02228EC0 ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + bne _02228DEC + ldr r0, _02228EBC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x58] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x58] + ldmia sp!, {pc} +_02228DEC: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228EC4 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228E1C: + ldr r0, _02228EBC ; =0x022430D4 + ldr r2, [r0] + ldrb r0, [r2, #0x51] + cmp r0, #4 + bls _02228E44 + ldr r0, _02228EC0 ; =0x022430D0 + ldrh r1, [r2, #0x40] + ldrh r0, [r0] + cmp r0, r1 + bne _02228E74 +_02228E44: + ldrb r0, [r2, #0x58] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x58] + ldmia sp!, {pc} +_02228E74: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228EC8 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228EA4: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x58] +_02228EB4: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228EBC: .word 0x022430D4 +_02228EC0: .word 0x022430D0 +_02228EC4: .word MOD13_022283B4 +_02228EC8: .word MOD13_02228314 + + arm_func_start MOD13_02228ECC +MOD13_02228ECC: ; 0x02228ECC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _02229140 ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldrb r0, [r1, #0x57] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _02229144 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02228F74 + ldr r0, _02229140 ; =0x022430D4 + mvn r1, #0 + ldr r0, [r0] + ldr r4, _02229148 ; =0x0223F1FC + strb r1, [r0, #0x50] + mov r5, #0 +_02228F24: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02228F64 + cmp r5, #4 + ldrlt r0, _02229140 ; =0x022430D4 + ldrlt r0, [r0] + strltb r5, [r0, #0x50] + blt _02228F74 + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _0222914C ; =0x022430CC + strb r5, [r0] + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02228F64: + add r5, r5, #1 + cmp r5, #5 + add r4, r4, #8 + blo _02228F24 +_02228F74: + ldr r0, _02229144 ; =0x0223F75C + bl MOD13_0223B1DC + cmp r0, #0 + beq _02228FF4 + ldr r5, _02229148 ; =0x0223F1FC + mov r4, #0 +_02228F8C: + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02228FE4 + ldr r0, _02229140 ; =0x022430D4 + ldr r1, [r0] + ldrsb r0, [r1, #0x50] + cmp r0, r4 + bne _02228FF4 + ldrb r0, [r1, #0x51] + cmp r4, r0 + blt _02228FC8 + mov r0, #9 + bl MOD13_0223424C + b _02228FF4 +_02228FC8: + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _0222914C ; =0x022430CC + strb r4, [r0] + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02228FE4: + add r4, r4, #1 + cmp r4, #4 + add r5, r5, #8 + blt _02228F8C +_02228FF4: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02229018 + mov r0, #1 + bl MOD13_0221ECF4 + bl MOD13_02232F14 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229018: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02229038 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229038: + mov r0, #0x200 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02229054 + bl MOD13_02227FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229054: + mov r0, #0x200 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x100 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02229094 + bl MOD13_02228058 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229094: + mov r0, #0x100 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022290D8 + mov r0, #1 + bl MOD13_022280E4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022290D8: + mov r0, #0x40 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222911C + mov r0, #3 + bl MOD13_022280E4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222911C: + mov r0, #0x80 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x59] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02229140: .word 0x022430D4 +_02229144: .word 0x0223F75C +_02229148: .word 0x0223F1FC +_0222914C: .word 0x022430CC + + arm_func_start MOD13_02229150 +MOD13_02229150: ; 0x02229150 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02228ECC + bl MOD13_02228C0C + bl MOD13_02228AD0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222919C ; =MOD13_02229150 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222919C: .word MOD13_02229150 + + arm_func_start MOD13_022291A0 +MOD13_022291A0: ; 0x022291A0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _022291E8 ; =0x0222916C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022291E8: .word 0x0222916C + + arm_func_start MOD13_022291EC +MOD13_022291EC: ; 0x022291EC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AEF4 + ldr r0, _02229244 ; =MOD13_022291A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229244: .word MOD13_022291A0 + + arm_func_start MOD13_02229248 +MOD13_02229248: ; 0x02229248 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _022293BC ; =0x022430D4 + mov sb, #0 + ldr r0, [r0] + ldrb r4, [r0, #0x51] + cmp r4, #5 + movgt r4, #5 + cmp r4, #0 + ble _022292C4 + ldr r1, _022293C0 ; =0x0223F1C0 + ldr r0, _022293C4 ; =0x0223F1C4 + ldrb r8, [r1] + ldrb r7, [r0] + ldr sl, _022293BC ; =0x022430D4 + mov r6, sb + mov r5, sb +_02229288: + mov r0, r6 + mov r1, r8 + bl MOD13_02239E54 + ldr r2, [sl] + mov r1, r7 + add r2, r2, sb, lsl #2 + str r0, [r2, #0x10] + mov r0, r5 + bl MOD13_02239E54 + ldr r1, [sl] + add r1, r1, sb, lsl #2 + add sb, sb, #1 + str r0, [r1, #0x24] + cmp sb, r4 + blt _02229288 +_022292C4: + ldr r7, _022293C0 ; =0x0223F1C0 + mov r6, #0 + ldr sb, _022293BC ; =0x022430D4 + mov r5, r6 + ldr r8, _022293C8 ; =0x000003FF +_022292D8: + ldr r0, [sb] + ldrb r1, [r7] + ldr r2, [r0, #0x10] + mov r0, r5 + bl MOD13_02239E8C + ldr r0, [sb] + add r7, r7, #1 + ldr r1, [r0, #0x10] + add r0, r0, r6, lsl #1 + ldrh r1, [r1, #4] + add r6, r6, #1 + cmp r6, #3 + and r1, r1, r8 + strh r1, [r0, #0x42] + blo _022292D8 + ldr r7, _022293C4 ; =0x0223F1C4 + mov r6, #0 + ldr sb, _022293BC ; =0x022430D4 + mov r5, r6 + ldr r8, _022293C8 ; =0x000003FF +_02229328: + ldr r0, [sb] + ldrb r1, [r7] + ldr r2, [r0, #0x24] + mov r0, r5 + bl MOD13_02239E8C + ldr r0, [sb] + add r7, r7, #1 + ldr r1, [r0, #0x24] + add r0, r0, r6, lsl #1 + ldrh r1, [r1, #4] + add r6, r6, #1 + cmp r6, #4 + and r1, r1, r8 + strh r1, [r0, #0x48] + blo _02229328 + cmp r4, #0 + mov r0, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _022293BC ; =0x022430D4 +_02229374: + ldr r2, [r1] + add r2, r2, r0, lsl #2 + ldr r3, [r2, #0x10] + ldrh r2, [r3, #4] + bic r2, r2, #0xc00 + orr r2, r2, #0xc00 + strh r2, [r3, #4] + ldr r2, [r1] + add r2, r2, r0, lsl #2 + ldr r3, [r2, #0x24] + add r0, r0, #1 + ldrh r2, [r3, #4] + cmp r0, r4 + bic r2, r2, #0xc00 + orr r2, r2, #0xc00 + strh r2, [r3, #4] + blt _02229374 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022293BC: .word 0x022430D4 +_022293C0: .word 0x0223F1C0 +_022293C4: .word 0x0223F1C4 +_022293C8: .word 0x000003FF + + arm_func_start MOD13_022293CC +MOD13_022293CC: ; 0x022293CC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _02229470 ; =0x022430D4 + mov r1, #0x1c + ldr ip, [r2] + mov r0, #0 + ldrb r3, [ip, #0x51] + sub r3, r3, #4 + mul r1, r3, r1 + strh r1, [ip, #0x40] + ldr r2, [r2] + ldrb r1, [r2, #0x51] + cmp r1, #4 + movls r4, r0 + strlsb r0, [r2, #0x53] + bls _02229428 + cmp r1, #8 + movls r1, #0x1f + strlsb r1, [r2, #0x53] + movls r4, #1 + movhi r1, #0x37 + strhib r1, [r2, #0x53] + movhi r4, #2 +_02229428: + cmp r4, #0 + beq _02229450 + ldr r1, _02229470 ; =0x022430D4 + ldr r0, _02229474 ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 +_02229450: + str r0, [sp] + mov r0, r4 + mov r1, #0x55 + mov r2, #0xec + mov r3, #0x3f + bl MOD13_02232FB8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02229470: .word 0x022430D4 +_02229474: .word 0x022430D0 + + arm_func_start MOD13_02229478 +MOD13_02229478: ; 0x02229478 + stmdb sp!, {lr} + sub sp, sp, #0x34 + ldr r3, _022295AC ; =0x0223F1E0 + add lr, sp, #0 + mov r2, #0xc +_0222948C: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [lr], #1 + strb r0, [lr], #1 + bne _0222948C + ldrb r0, [r3] + ldr ip, _022295B0 ; =0x0223F1C8 + add r3, sp, #0x19 + strb r0, [lr] + mov r2, #0xb +_022294B8: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _022294B8 + ldr r0, _022295B4 ; =0x0224015C + ldr r1, _022295B8 ; =0x020C8FBC + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022295BC ; =0x022430D4 + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #4] + bl MOD13_02232918 + bl MOD13_022328D0 + add r0, sp, #0x19 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022295BC ; =0x022430D4 + ldr r2, _022295C0 ; =0x04001008 + ldr r1, [r1] + ldr lr, _022295C4 ; =0x0400100A + str r0, [r1, #8] + ldrh r0, [r2] + ldr ip, _022295C8 ; =0x04000008 + ldr r3, _022295CC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [lr] + ldr r2, _022295D0 ; =0x0400000C + ldr r1, _022295D4 ; =0x0400000E + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [lr] + ldrh r0, [ip] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r1] + add sp, sp, #0x34 + ldmia sp!, {pc} + .align 2, 0 +_022295AC: .word 0x0223F1E0 +_022295B0: .word 0x0223F1C8 +_022295B4: .word 0x0224015C +_022295B8: .word 0x020C8FBC +_022295BC: .word 0x022430D4 +_022295C0: .word 0x04001008 +_022295C4: .word 0x0400100A +_022295C8: .word 0x04000008 +_022295CC: .word 0x0400000A +_022295D0: .word 0x0400000C +_022295D4: .word 0x0400000E + + arm_func_start MOD13_022295D8 +MOD13_022295D8: ; 0x022295D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x5c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _022296AC ; =0x022430D4 + mov r1, #0 + str r0, [r2] + add r0, sp, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + ldreq r0, _022296B0 ; =0x022430D0 + moveq r2, #0 + streqh r2, [r0] + ldr r0, _022296AC ; =0x022430D4 + ldreq r1, _022296B4 ; =0x022430CC + ldr r0, [r0] + streqb r2, [r1] + bl MOD13_0223333C + ldr r1, _022296AC ; =0x022430D4 + ldr r1, [r1] + strb r0, [r1, #0x51] + bl MOD13_02229478 + bl MOD13_0221F4AC + mov r0, #0x34 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + bl MOD13_022293CC + bl MOD13_02229248 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _022296AC ; =0x022430D4 + ldr r1, _022296B8 ; =MOD13_0222829C + ldr r3, [r2] + mov r2, #0 + str r0, [r3, #0xc] + mov r0, #1 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r1, _022296AC ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x3c] + bl MOD13_02228754 + bl MOD13_02228248 + ldr r0, _022296BC ; =MOD13_022291EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022296AC: .word 0x022430D4 +_022296B0: .word 0x022430D0 +_022296B4: .word 0x022430CC +_022296B8: .word MOD13_0222829C +_022296BC: .word MOD13_022291EC + + arm_func_start MOD13_022296C0 +MOD13_022296C0: ; 0x022296C0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02229704 ; =0x022430D8 + ldr r1, _02229708 ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _0222970C ; =MOD13_02229FD0 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229704: .word 0x022430D8 +_02229708: .word 0xC1FFFCFF +_0222970C: .word MOD13_02229FD0 + + arm_func_start MOD13_02229710 +MOD13_02229710: ; 0x02229710 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02229744 ; =MOD13_022296C0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229744: .word MOD13_022296C0 + + arm_func_start MOD13_02229748 +MOD13_02229748: ; 0x02229748 + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #1 + bne _02229778 + mov r0, #0x35 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_02229778: + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _022297B0 + ldr r0, _022298E0 ; =0x022430D8 + add sp, sp, #0xc + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {pc} +_022297B0: + ldr r0, [sp, #4] + cmp r0, #1 + bne _022297D8 + ldr r0, _022298E0 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {pc} +_022297D8: + ldr r0, _022298E0 ; =0x022430D8 + mov r1, #0x20 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_0223BDA4 + cmp r0, #0x10 + bgt _02229838 + cmp r0, #0xa + blt _02229818 + cmp r0, #0xa + beq _02229864 + cmp r0, #0xd + beq _02229858 + cmp r0, #0x10 + beq _02229858 + b _022298D4 +_02229818: + cmp r0, #0 + bgt _0222982C + cmp r0, #0 + beq _02229858 + b _022298D4 +_0222982C: + cmp r0, #5 + beq _02229858 + b _022298D4 +_02229838: + cmp r0, #0x1a + bgt _0222984C + cmp r0, #0x1a + beq _02229864 + b _022298D4 +_0222984C: + cmp r0, #0x20 + beq _02229864 + b _022298D4 +_02229858: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {pc} +_02229864: + cmp r0, #0 + mov r3, #0 + ble _022298C8 + ldr r1, _022298E0 ; =0x022430D8 + ldr r1, [r1] +_02229878: + ldrb r2, [r1, #8] + cmp r2, #0x30 + blo _0222988C + cmp r2, #0x39 + bls _022298B8 +_0222988C: + cmp r2, #0x41 + blo _0222989C + cmp r2, #0x46 + bls _022298B8 +_0222989C: + cmp r2, #0x61 + blo _022298AC + cmp r2, #0x66 + bls _022298B8 +_022298AC: + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {pc} +_022298B8: + add r3, r3, #1 + cmp r3, r0 + add r1, r1, #1 + blt _02229878 +_022298C8: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {pc} +_022298D4: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_022298E0: .word 0x022430D8 + + arm_func_start MOD13_022298E4 +MOD13_022298E4: ; 0x022298E4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _02229980 ; =0x0223F260 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [sp] + str r0, [sp, #4] + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {pc} + ldr r0, _02229984 ; =0x022430D8 + ldr r1, [r0] + ldrb r0, [r1, #0x2a] + cmp r0, #0 + bne _02229948 + ldr r3, [r1, #4] + ldr r1, _02229988 ; =0xC1FFFCFF + ldr r2, [r3] + ldr r0, _0222998C ; =MOD13_02229FD0 + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_02229948: + add r0, sp, #8 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, _02229984 ; =0x022430D8 + ldr r2, [sp, #8] + add r1, sp, #0 + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _02229990 ; =MOD13_02229B88 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02229980: .word 0x0223F260 +_02229984: .word 0x022430D8 +_02229988: .word 0xC1FFFCFF +_0222998C: .word MOD13_02229FD0 +_02229990: .word MOD13_02229B88 + + arm_func_start MOD13_02229994 +MOD13_02229994: ; 0x02229994 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + ldr r1, _022299F4 ; =0x022430D8 + ldr r2, [r1] + strb r0, [r2, #0x2a] + ldr r0, [r1] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + beq _022299CC + cmp r0, #1 + beq _022299D8 + add sp, sp, #4 + ldmia sp!, {pc} +_022299CC: + mov r0, #7 + bl MOD13_0223424C + b _022299E0 +_022299D8: + mov r0, #0xe + bl MOD13_0223424C +_022299E0: + bl MOD13_02235EB0 + ldr r0, _022299F8 ; =MOD13_022298E4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022299F4: .word 0x022430D8 +_022299F8: .word MOD13_022298E4 + + arm_func_start MOD13_022299FC +MOD13_022299FC: ; 0x022299FC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02229A64 ; =0x022430D8 + ldr r1, [r0] + ldrb r0, [r1, #0x29] + ldr lr, [r1, #4] + ldr r1, _02229A68 ; =0x0223F268 + cmp r0, #0x20 + and r3, r0, #0xf + mov r2, r0, asr #4 + movhs r3, #0xf + ldrb ip, [r1, r3] + ldr r0, _02229A6C ; =0x0223F250 + movhs r2, #1 + ldrb r2, [r0, r2] + ldr r3, [lr] + ldr r1, _02229A70 ; =0xFE00FF00 + ldr r0, _02229A74 ; =0x000001FF + and r1, r3, r1 + and r2, r2, #0xff + and r3, ip, r0 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [lr] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229A64: .word 0x022430D8 +_02229A68: .word 0x0223F268 +_02229A6C: .word 0x0223F250 +_02229A70: .word 0xFE00FF00 +_02229A74: .word 0x000001FF + + arm_func_start MOD13_02229A78 +MOD13_02229A78: ; 0x02229A78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + add r0, sp, #0x10 + mov r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + strh r1, [r0, #6] + ldr r2, _02229B74 ; =0x0223F250 + ldr r0, _02229B78 ; =0x0223F254 + ldrb r4, [r2] + ldrh r3, [r0] + ldrh r2, [r0, #2] + ldr r0, _02229B7C ; =0x022430D8 + strh r4, [sp, #0x12] + ldr r0, [r0] + strh r3, [sp, #0x14] + strh r2, [sp, #0x16] + ldr r0, [r0] + bl MOD13_0223A4D8 + mov sb, #0 + ldr r0, _02229B74 ; =0x0223F250 + ldr r6, _02229B80 ; =0x0000E01D + ldrb r8, [r0, #1] + ldr fp, _02229B84 ; =0x0223F268 + mov sl, sb + strh sb, [sp, #0x1a] + mov r7, sb + mov r5, #2 + mov r4, #0x480 +_02229AF0: + ldr r0, _02229B7C ; =0x022430D8 + cmp sb, #0x10 + ldr r0, [r0] + moveq sl, r7 + streqh r8, [sp, #0x12] + add r1, r0, sb + ldrb r1, [r1, #8] + ldrb r2, [fp, sl] + cmp r1, #0x20 + streqh r6, [sp, #0x18] + strneh r1, [sp, #0x18] + ldrh r1, [sp, #0x16] + strh r2, [sp, #0x10] + str r1, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + add r1, sp, #0x18 + str r1, [sp, #0xc] + ldrh r1, [sp, #0x10] + ldrh r2, [sp, #0x12] + ldrh r3, [sp, #0x14] + ldr r0, [r0] + bl MOD13_0223A4F0 + add sb, sb, #1 + cmp sb, #0x20 + add sl, sl, #1 + blt _02229AF0 + ldr r0, _02229B7C ; =0x022430D8 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223A410 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02229B74: .word 0x0223F250 +_02229B78: .word 0x0223F254 +_02229B7C: .word 0x022430D8 +_02229B80: .word 0x0000E01D +_02229B84: .word 0x0223F268 + + arm_func_start MOD13_02229B88 +MOD13_02229B88: ; 0x02229B88 + stmdb sp!, {lr} + sub sp, sp, #0xc + bl MOD13_0221EE54 + ldr r0, _02229C74 ; =0x022430D8 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02229C78 ; =0x02240174 + ldr r1, _02229C7C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #0 + bne _02229C0C + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r1, [sp] + mov r0, #0 + bl MOD13_02222F6C + ldr r0, _02229C80 ; =MOD13_0222DD4C + bl MOD13_02222FBC + b _02229C64 +_02229C0C: + ldr r0, _02229C74 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + bne _02229C44 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #1 + mov r1, #0 + bl MOD13_02222F6C + ldr r0, _02229C84 ; =MOD13_022295D8 + bl MOD13_02222FBC + b _02229C64 +_02229C44: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02229C88 ; =MOD13_0223197C + bl MOD13_02222FBC +_02229C64: + ldr r0, _02229C74 ; =0x022430D8 + bl MOD13_0223AF90 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02229C74: .word 0x022430D8 +_02229C78: .word 0x02240174 +_02229C7C: .word 0x020C9480 +_02229C80: .word MOD13_0222DD4C +_02229C84: .word MOD13_022295D8 +_02229C88: .word MOD13_0223197C + + arm_func_start MOD13_02229C8C +MOD13_02229C8C: ; 0x02229C8C + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _02229D50 ; =0x0223F258 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [sp, #4] + str r0, [sp, #8] + bl MOD13_022211C8 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + ldr r0, _02229D54 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + bne _02229CDC + ldr r0, _02229D58 ; =MOD13_02229B88 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} +_02229CDC: + cmp r0, #2 + bne _02229D10 + mov ip, #0 + mov r0, #6 + mov r1, #3 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _02229D5C ; =MOD13_02229710 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} +_02229D10: + add r1, sp, #0xc + mov r0, #0 + bl MOD13_02222F44 + mov r0, #0 + str r0, [sp] + ldr r2, [sp, #0xc] + add r0, sp, #4 + ldr r0, [r0, r2, lsl #2] + mov r1, #2 + mov r2, #1 + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02229D60 ; =MOD13_02229994 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02229D50: .word 0x0223F258 +_02229D54: .word 0x022430D8 +_02229D58: .word MOD13_02229B88 +_02229D5C: .word MOD13_02229710 +_02229D60: .word MOD13_02229994 + + arm_func_start MOD13_02229D64 +MOD13_02229D64: ; 0x02229D64 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02221220 + mov r0, #0x15 + bl MOD13_0223424C + ldr r0, _02229D9C ; =MOD13_02229C8C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229D9C: .word MOD13_02229C8C + + arm_func_start MOD13_02229DA0 +MOD13_02229DA0: ; 0x02229DA0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02229DC0 ; =MOD13_02229D64 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229DC0: .word MOD13_02229D64 + + arm_func_start MOD13_02229DC4 +MOD13_02229DC4: ; 0x02229DC4 + bx lr + + arm_func_start MOD13_02229DC8 +MOD13_02229DC8: ; 0x02229DC8 + stmdb sp!, {r4, lr} + bl MOD13_0222120C + mov r4, r0 + cmp r4, #0x83 + bgt _02229E0C + cmp r4, #0x80 + blt _02229E00 + cmp r4, #0x80 + beq _02229E18 + cmp r4, #0x82 + beq _02229E7C + cmp r4, #0x83 + beq _02229EA0 + b _02229F0C +_02229E00: + cmp r4, #0 + beq _02229F70 + b _02229F0C +_02229E0C: + ldr r0, _02229F7C ; =0x0000E01D + cmp r4, r0 + b _02229F0C +_02229E18: + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0 + beq _02229F70 + mov r0, #3 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + mov r0, #0 + ldr r3, [r1] + ldrb r2, [r3, #0x29] + sub r2, r2, #1 + strb r2, [r3, #0x29] + ldr r3, [r1] + ldrb r2, [r3, #0x29] + add r2, r3, r2 + strb r0, [r2, #8] + ldr r1, [r1] + ldrb r1, [r1, #0x29] + cmp r1, #0 + bne _02229E70 + bl MOD13_022211F8 +_02229E70: + mov r0, #1 + bl MOD13_022211E4 + b _02229F70 +_02229E7C: + mov r0, #7 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + ldr r0, _02229F84 ; =MOD13_02229DA0 + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x2a] + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02229EA0: + bl MOD13_02229748 + cmp r0, #0 + beq _02229EC8 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02229F80 ; =0x022430D8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x2a] + b _02229EE0 +_02229EC8: + ldr r0, _02229F80 ; =0x022430D8 + mov r2, #2 + ldr r1, [r0] + mov r0, #9 + strb r2, [r1, #0x2a] + bl MOD13_0223424C +_02229EE0: + ldr r0, _02229F80 ; =0x022430D8 + ldr r1, _02229F88 ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _02229F84 ; =MOD13_02229DA0 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + orr r1, r1, #0x200 + str r1, [r3] + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02229F0C: + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + beq _02229F70 + mov r0, #1 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + mov r0, #1 + ldr r3, [r1] + ldrb r2, [r3, #0x29] + add r2, r3, r2 + strb r4, [r2, #8] + ldr r2, [r1] + ldrb r1, [r2, #0x29] + add r1, r1, #1 + strb r1, [r2, #0x29] + bl MOD13_022211F8 + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + bne _02229F70 + mov r0, #0 + bl MOD13_022211E4 +_02229F70: + bl MOD13_02229A78 + bl MOD13_022299FC + ldmia sp!, {r4, pc} + .align 2, 0 +_02229F7C: .word 0x0000E01D +_02229F80: .word 0x022430D8 +_02229F84: .word MOD13_02229DA0 +_02229F88: .word 0xC1FFFCFF + + arm_func_start MOD13_02229F8C +MOD13_02229F8C: ; 0x02229F8C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02229DC8 + bl MOD13_02229DC4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222120C + cmp r0, #0xff + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02229FCC ; =MOD13_02229F8C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229FCC: .word MOD13_02229F8C + + arm_func_start MOD13_02229FD0 +MOD13_02229FD0: ; 0x02229FD0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222125C + mov r0, #0x14 + bl MOD13_0223424C + ldr r0, _0222A054 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0 + bne _0222A028 + mov r0, #0 + bl MOD13_022211F8 +_0222A028: + ldr r0, _0222A054 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + bne _0222A044 + mov r0, #0 + bl MOD13_022211E4 +_0222A044: + ldr r0, _0222A058 ; =0x02229FA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A054: .word 0x022430D8 +_0222A058: .word 0x02229FA4 + + arm_func_start MOD13_0222A05C +MOD13_0222A05C: ; 0x0222A05C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222A0B4 ; =MOD13_02229FD0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A0B4: .word MOD13_02229FD0 + + arm_func_start MOD13_0222A0B8 +MOD13_0222A0B8: ; 0x0222A0B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222A15C ; =0x0224018C + ldr r1, _0222A160 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _0222A164 ; =0x022401A0 + ldr r1, _0222A168 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222A16C ; =0x022401B8 + ldr r1, _0222A170 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222A174 ; =0x022401D0 + ldr r1, _0222A178 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222A17C ; =0x04001008 + ldr ip, _0222A180 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222A184 ; =0x04000008 + ldr r2, _0222A188 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222A18C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A15C: .word 0x0224018C +_0222A160: .word 0x020C9480 +_0222A164: .word 0x022401A0 +_0222A168: .word 0x020C8D4C +_0222A16C: .word 0x022401B8 +_0222A170: .word 0x020C9550 +_0222A174: .word 0x022401D0 +_0222A178: .word 0x020C908C +_0222A17C: .word 0x04001008 +_0222A180: .word 0x0400100A +_0222A184: .word 0x04000008 +_0222A188: .word 0x0400000A +_0222A18C: .word 0x0400000C + + arm_func_start MOD13_0222A190 +MOD13_0222A190: ; 0x0222A190 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _0222A2B8 ; =0x0223F24C + mov r0, #0x2c + ldrb r3, [r1] + ldrb r2, [r1, #1] + mov r1, #4 + strb r3, [sp] + strb r2, [sp, #1] + bl MOD13_0223AFE0 + ldr r2, _0222A2BC ; =0x022430D8 + add r1, sp, #8 + str r0, [r2] + add r0, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #0 + bne _0222A208 + ldr r0, _0222A2BC ; =0x022430D8 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_02233E90 + ldr r0, _0222A2BC ; =0x022430D8 + mov r1, #0x20 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_0223BDA4 + ldr r1, _0222A2BC ; =0x022430D8 + ldr r1, [r1] + strb r0, [r1, #0x29] +_0222A208: + bl MOD13_0222A0B8 + ldr r0, [sp, #4] + add r0, r0, #9 + bl MOD13_0221F4CC + ldr r0, [sp, #8] + cmp r0, #1 + bne _0222A238 + mov r0, #0x35 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + b _0222A250 +_0222A238: + ldr r2, [sp, #4] + add r0, sp, #0 + ldrb r0, [r0, r2] + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_0222A250: + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _0222A2BC ; =0x022430D8 + mov r1, #0x3e + ldr r2, [r2] + str r0, [r2] + mov r0, #0 + bl MOD13_02239E54 + ldr r1, _0222A2BC ; =0x022430D8 + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r1, [r0, #4] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + bl MOD13_022299FC + bl MOD13_02229A78 + ldr r0, _0222A2C0 ; =MOD13_0222A05C + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0222A2B8: .word 0x0223F24C +_0222A2BC: .word 0x022430D8 +_0222A2C0: .word MOD13_0222A05C + + arm_func_start MOD13_0222A2C4 +MOD13_0222A2C4: ; 0x0222A2C4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222A308 ; =0x022430DC + ldr r1, _0222A30C ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _0222A310 ; =MOD13_0222AD78 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A308: .word 0x022430DC +_0222A30C: .word 0xC1FFFCFF +_0222A310: .word MOD13_0222AD78 + + arm_func_start MOD13_0222A314 +MOD13_0222A314: ; 0x0222A314 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222A348 ; =MOD13_0222A2C4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A348: .word MOD13_0222A2C4 + + arm_func_start MOD13_0222A34C +MOD13_0222A34C: ; 0x0222A34C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + ldr r1, _0222A4A8 ; =0x0223F278 + ldr r0, _0222A4AC ; =0x022430DC + ldrb lr, [r1] + ldrb ip, [r1, #1] + ldrb r4, [r1, #2] + ldrb r3, [r1, #3] + mov r2, #0 + strb lr, [sp] + ldr r0, [r0] + strb r4, [sp, #2] + add r5, sp, #0 + mov r1, r2 + strb ip, [sp, #1] + strb r3, [sp, #3] + mov lr, r2 + add r4, r0, #8 +_0222A394: + ldrb r3, [r4, r1] + add r8, r4, r1 + cmp r3, #0x20 + beq _0222A3DC + mov r7, lr + mov r6, r5 +_0222A3AC: + ldrb ip, [r8, r7] + ldrb r3, [r6] + cmp ip, r3 + addhi sp, sp, #0x10 + movhi r0, #0 + ldmhiia sp!, {r4, r5, r6, r7, r8, pc} + cmp ip, r3 + blo _0222A3DC + add r7, r7, #1 + cmp r7, #3 + add r6, r6, #1 + blt _0222A3AC +_0222A3DC: + add r2, r2, #1 + cmp r2, #4 + add r1, r1, #3 + blt _0222A394 + add r1, sp, #8 + add r0, r0, #8 + bl MOD13_02233608 + add r0, sp, #4 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #1 + bne _0222A48C + mov ip, #0 + add r6, sp, #8 + mov r5, ip + mov r3, ip + mov r2, #1 +_0222A424: + mov r4, r3 +_0222A428: + cmp ip, #0 + beq _0222A450 + rsb r0, r4, #7 + ldrb r1, [r6] + mov r0, r2, lsl r0 + ands r0, r1, r0 + beq _0222A464 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0222A450: + rsb r0, r4, #7 + ldrb r1, [r6] + mov r0, r2, lsl r0 + ands r0, r1, r0 + moveq ip, r2 +_0222A464: + add r4, r4, #1 + cmp r4, #8 + blt _0222A428 + add r5, r5, #1 + cmp r5, #4 + add r6, r6, #1 + blt _0222A424 + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0222A48C: + add r0, sp, #8 + bl FUN_02095AE0 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222A4A8: .word 0x0223F278 +_0222A4AC: .word 0x022430DC + + arm_func_start MOD13_0222A4B0 +MOD13_0222A4B0: ; 0x0222A4B0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, #0 + mov r4, r6 + ldr r0, _0222A538 ; =0x022430DC + mov ip, r6 + mov r1, #0x20 + mov r2, #0x30 +_0222A4D0: + ldr r3, [r0] + mov r5, ip + add r3, r3, #8 + add r7, r3, r4 +_0222A4E0: + ldrb r3, [r7, r5] + add lr, r7, r5 + cmp r3, #0x30 + beq _0222A500 + cmp r3, #0x20 + beq _0222A500 + cmp r3, #0 + bne _0222A51C +_0222A500: + cmp r5, #2 + moveq r3, r2 + movne r3, r1 + add r5, r5, #1 + strb r3, [lr] + cmp r5, #3 + blt _0222A4E0 +_0222A51C: + add r6, r6, #1 + cmp r6, #4 + add r4, r4, #3 + blt _0222A4D0 + bl MOD13_0222A6B8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222A538: .word 0x022430DC + + arm_func_start MOD13_0222A53C +MOD13_0222A53C: ; 0x0222A53C + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr lr, _0222A5DC ; =0x0223F2B0 + add ip, sp, #4 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldr r0, [lr] + str r0, [ip] + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {pc} + ldr r0, _0222A5E0 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x15] + cmp r0, #0 + bne _0222A5A4 + ldr r3, [r1, #4] + ldr r1, _0222A5E4 ; =0xC1FFFCFF + ldr r2, [r3] + ldr r0, _0222A5E8 ; =MOD13_0222AD78 + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #0x1c + ldmia sp!, {pc} +_0222A5A4: + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, _0222A5E0 ; =0x022430DC + ldr r2, [sp] + add r1, sp, #4 + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _0222A5EC ; =MOD13_0222A79C + bl MOD13_02222FBC + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_0222A5DC: .word 0x0223F2B0 +_0222A5E0: .word 0x022430DC +_0222A5E4: .word 0xC1FFFCFF +_0222A5E8: .word MOD13_0222AD78 +_0222A5EC: .word MOD13_0222A79C + + arm_func_start MOD13_0222A5F0 +MOD13_0222A5F0: ; 0x0222A5F0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + ldr r1, _0222A650 ; =0x022430DC + ldr r2, [r1] + strb r0, [r2, #0x15] + ldr r0, [r1] + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _0222A628 + cmp r0, #1 + beq _0222A634 + add sp, sp, #4 + ldmia sp!, {pc} +_0222A628: + mov r0, #7 + bl MOD13_0223424C + b _0222A63C +_0222A634: + mov r0, #0xe + bl MOD13_0223424C +_0222A63C: + bl MOD13_02235EB0 + ldr r0, _0222A654 ; =MOD13_0222A53C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A650: .word 0x022430DC +_0222A654: .word MOD13_0222A53C + + arm_func_start MOD13_0222A658 +MOD13_0222A658: ; 0x0222A658 + ldr r0, _0222A6A8 ; =0x022430DC + ldr r2, [r0] + mov r0, #3 + ldrb r3, [r2, #0x14] + ldr ip, [r2, #4] + cmp r3, #3 + movgt r3, #3 + mul r1, r3, r0 + ldr r0, _0222A6AC ; =0x0223F290 + add r1, r1, #2 + ldrb r3, [r0, r1] + ldr r0, _0222A6B0 ; =0x000001FF + ldr r2, [ip] + ldr r1, _0222A6B4 ; =0xFE00FF00 + and r3, r3, r0 + and r0, r2, r1 + orr r0, r0, #0x28 + orr r0, r0, r3, lsl #16 + str r0, [ip] + bx lr + .align 2, 0 +_0222A6A8: .word 0x022430DC +_0222A6AC: .word 0x0223F290 +_0222A6B0: .word 0x000001FF +_0222A6B4: .word 0xFE00FF00 + + arm_func_start MOD13_0222A6B8 +MOD13_0222A6B8: ; 0x0222A6B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x1c + ldr r0, _0222A78C ; =0x0223F288 + ldr r1, _0222A790 ; =0x0223F27C + ldrh r4, [r0, #4] + ldrh r3, [r0, #6] + ldrh r6, [r0] + ldrh r5, [r0, #2] + ldr r0, _0222A794 ; =0x022430DC + ldrh r2, [r1] + strh r4, [sp, #0x14] + ldrh r1, [r1, #2] + strh r3, [sp, #0x16] + ldr r0, [r0] + strh r6, [sp, #0x10] + strh r5, [sp, #0x12] + strh r2, [sp, #0x14] + strh r1, [sp, #0x16] + ldr r0, [r0] + mov r1, #0 + bl MOD13_0223A4D8 + mov r5, #0 + ldr r4, _0222A798 ; =0x0223F290 + strh r5, [sp, #0x1a] + ldr r6, _0222A794 ; =0x022430DC + add r7, sp, #0x18 + mov sb, #2 + mov r8, #0x480 +_0222A728: + ldr ip, [r6] + ldrh r0, [sp, #0x16] + add r1, ip, r5 + ldrb r1, [r1, #8] + strh r1, [sp, #0x18] + ldrb r1, [r4] + strh r1, [sp, #0x10] + str r0, [sp] + str sb, [sp, #4] + str r8, [sp, #8] + str r7, [sp, #0xc] + ldrh r2, [sp, #0x12] + ldrh r3, [sp, #0x14] + ldr r0, [ip] + bl MOD13_0223A4F0 + add r5, r5, #1 + cmp r5, #0xc + add r4, r4, #1 + blt _0222A728 + ldr r0, _0222A794 ; =0x022430DC + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223A410 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0222A78C: .word 0x0223F288 +_0222A790: .word 0x0223F27C +_0222A794: .word 0x022430DC +_0222A798: .word 0x0223F290 + + arm_func_start MOD13_0222A79C +MOD13_0222A79C: ; 0x0222A79C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EE54 + ldr r0, _0222A834 ; =0x022430DC + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222A838 ; =0x022401E4 + ldr r1, _0222A83C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, [sp] + mov r1, #1 + cmp r0, #3 + addge r0, r0, #1 + strge r0, [sp] + mov r0, #2 + bl MOD13_02222FA8 + ldr r1, [sp] + mov r0, #0 + add r1, r1, #3 + bl MOD13_02222F6C + ldr r0, _0222A840 ; =MOD13_0222DD4C + bl MOD13_02222FBC + ldr r0, _0222A834 ; =0x022430DC + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A834: .word 0x022430DC +_0222A838: .word 0x022401E4 +_0222A83C: .word 0x020C9480 +_0222A840: .word MOD13_0222DD4C + + arm_func_start MOD13_0222A844 +MOD13_0222A844: ; 0x0222A844 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022228BC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222A8E0 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _0222A880 + ldr r0, _0222A8E4 ; =MOD13_0222A79C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222A880: + cmp r0, #2 + bne _0222A8B4 + mov ip, #0 + mov r0, #6 + mov r1, #3 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222A8E8 ; =MOD13_0222A314 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222A8B4: + mov ip, #0 + mov r0, #0x47 + mov r1, #2 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222A8EC ; =MOD13_0222A5F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A8E0: .word 0x022430DC +_0222A8E4: .word MOD13_0222A79C +_0222A8E8: .word MOD13_0222A314 +_0222A8EC: .word MOD13_0222A5F0 + + arm_func_start MOD13_0222A8F0 +MOD13_0222A8F0: ; 0x0222A8F0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222928 + mov r0, #0x15 + bl MOD13_0223424C + ldr r0, _0222A928 ; =MOD13_0222A844 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A928: .word MOD13_0222A844 + + arm_func_start MOD13_0222A92C +MOD13_0222A92C: ; 0x0222A92C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222A94C ; =MOD13_0222A8F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A94C: .word MOD13_0222A8F0 + + arm_func_start MOD13_0222A950 +MOD13_0222A950: ; 0x0222A950 + bx lr + + arm_func_start MOD13_0222A954 +MOD13_0222A954: ; 0x0222A954 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _0222A9EC ; =0x022430DC + mov r1, #3 + ldr r2, [r2] + mov r4, r0 + ldrb r0, [r2, #0x14] + add r3, r2, #8 + mul r2, r0, r1 + ldrb r1, [r3, r2] + add r0, r3, r2 + cmp r1, #0 + beq _0222A998 + cmp r1, #0x20 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} +_0222A998: + add r1, sp, #0 + mov r2, #3 + bl MI_CpuCopy8 + mov r3, #0 + add r2, sp, #0 + strb r3, [sp, #3] + mov r0, #0x20 +_0222A9B4: + ldrb r1, [r2] + cmp r1, #0 + bne _0222A9D0 + add r3, r3, #1 + cmp r3, #3 + strb r0, [r2], #1 + blt _0222A9B4 +_0222A9D0: + add r0, sp, #0 + bl atol + cmp r0, r4 + movge r0, #1 + movlt r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222A9EC: .word 0x022430DC + + arm_func_start MOD13_0222A9F0 +MOD13_0222A9F0: ; 0x0222A9F0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + bl MOD13_02222914 + mov r4, r0 + cmp r4, #0 + bgt _0222AA18 + cmp r4, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + b _0222ABF4 +_0222AA18: + sub r0, r4, #0x10 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0222ABF4 +_0222AA28: ; jump table + b _0222AA40 ; case 0 + b _0222AAF0 ; case 1 + b _0222AB48 ; case 2 + b _0222AB70 ; case 3 + add sp, sp, #4 ; case 4 + ldmia sp!, {r4, r5, pc} ; case 5 +_0222AA40: + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0222AA60 + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _0222AD18 +_0222AA60: + mov r0, #3 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #3 + ldr r2, [r1] + ldrb r1, [r2, #0x14] + mul r0, r1, r0 + add r0, r0, #2 + add r0, r2, r0 + ldrb r0, [r0, #8] + cmp r0, #0 + subeq r0, r1, #1 + streqb r0, [r2, #0x14] + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #3 + ldr r0, [r0] + mov r1, #0 + ldrb r3, [r0, #0x14] + add r0, r0, #8 + mla r0, r3, r2, r0 + bl MI_CpuFill8 + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0222AADC + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0222AADC + mov r0, #0 + bl MOD13_02222900 +_0222AADC: + mov r0, #1 + bl MOD13_022228EC + mov r0, #0 + bl MOD13_022228D8 + b _0222AD18 +_0222AAF0: + ldr r0, _0222AD28 ; =0x022430DC + ldr r2, [r0] + ldrb r1, [r2, #0x14] + cmp r1, #3 + bhs _0222AD18 + mov r0, #3 + mul r0, r1, r0 + add r0, r0, #2 + add r0, r2, r0 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0222AD18 + mov r0, #1 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #0 + ldr r2, [r1] + ldrb r1, [r2, #0x14] + add r1, r1, #1 + strb r1, [r2, #0x14] + bl MOD13_022228D8 + b _0222AD18 +_0222AB48: + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #0 + ldr r1, [r0] + mov r0, #7 + strb r2, [r1, #0x15] + bl MOD13_0223424C + ldr r0, _0222AD2C ; =MOD13_0222A92C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222AB70: + bl MOD13_0222A34C + cmp r0, #0 + beq _0222AB98 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222AD28 ; =0x022430DC + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x15] + b _0222ABB0 +_0222AB98: + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #2 + ldr r1, [r0] + mov r0, #9 + strb r2, [r1, #0x15] + bl MOD13_0223424C +_0222ABB0: + ldr r1, _0222AD28 ; =0x022430DC + mov r3, #3 + ldr r2, [r1] + ldr r0, _0222AD30 ; =0xC1FFFCFF + strb r3, [r2, #0x14] + ldr r1, [r1] + ldr r2, [r1, #4] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x200 + str r0, [r2] + bl MOD13_0222A658 + bl MOD13_0222A4B0 + ldr r0, _0222AD2C ; =MOD13_0222A92C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222ABF4: + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bne _0222AC18 + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + bne _0222AD18 +_0222AC18: + mov r0, #1 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #3 + ldr r3, [r1] + ldrb r2, [r3, #0x14] + add r5, r3, #8 + mul lr, r2, r0 + add r0, lr, #2 + ldrb r3, [r5, r0] + add ip, r5, r0 + cmp r3, #0 + streqb r4, [ip] + beq _0222ACBC + add r2, lr, #1 + ldrb r0, [r5, r2] + add r2, r5, r2 + cmp r0, #0 + bne _0222AC98 + strb r3, [r2] + mov r0, #0x1a + strb r4, [ip] + bl MOD13_0222A954 + cmp r0, #0 + beq _0222ACBC + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #3 + addlo r0, r0, #1 + strlob r0, [r1, #0x14] + b _0222ACBC +_0222AC98: + strb r0, [r5, lr] + ldrb r0, [ip] + strb r0, [r2] + strb r4, [ip] + ldr r1, [r1] + ldrb r0, [r1, #0x14] + cmp r0, #3 + addlo r0, r0, #1 + strlob r0, [r1, #0x14] +_0222ACBC: + mov r0, #1 + bl MOD13_02222900 + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bhs _0222ACE4 + mov r0, #1 + bl MOD13_022228D8 + b _0222ACEC +_0222ACE4: + mov r0, #0 + bl MOD13_022228D8 +_0222ACEC: + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bne _0222AD18 + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + beq _0222AD18 + mov r0, #0 + bl MOD13_022228EC +_0222AD18: + bl MOD13_0222A6B8 + bl MOD13_0222A658 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222AD28: .word 0x022430DC +_0222AD2C: .word MOD13_0222A92C +_0222AD30: .word 0xC1FFFCFF + + arm_func_start MOD13_0222AD34 +MOD13_0222AD34: ; 0x0222AD34 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222A9F0 + bl MOD13_0222A950 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02222914 + cmp r0, #0x1f + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _0222AD74 ; =MOD13_0222AD34 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AD74: .word MOD13_0222AD34 + + arm_func_start MOD13_0222AD78 +MOD13_0222AD78: ; 0x0222AD78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222964 + mov r0, #0x14 + bl MOD13_0223424C + ldr r0, _0222AE0C ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _0222ADDC + mov r0, #0 + bl MOD13_02222900 + mov r0, #0 + bl MOD13_022228D8 + b _0222ADFC +_0222ADDC: + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + beq _0222ADF4 + mov r0, #0 + bl MOD13_022228EC +_0222ADF4: + mov r0, #0 + bl MOD13_022228D8 +_0222ADFC: + ldr r0, _0222AE10 ; =0x0222AD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AE0C: .word 0x022430DC +_0222AE10: .word 0x0222AD4C + + arm_func_start MOD13_0222AE14 +MOD13_0222AE14: ; 0x0222AE14 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222AE6C ; =MOD13_0222AD78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AE6C: .word MOD13_0222AD78 + + arm_func_start MOD13_0222AE70 +MOD13_0222AE70: ; 0x0222AE70 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222AF14 ; =0x022401FC + ldr r1, _0222AF18 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _0222AF1C ; =0x02240210 + ldr r1, _0222AF20 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222AF24 ; =0x02240228 + ldr r1, _0222AF28 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222AF2C ; =0x02240240 + ldr r1, _0222AF30 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222AF34 ; =0x04001008 + ldr ip, _0222AF38 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222AF3C ; =0x04000008 + ldr r2, _0222AF40 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222AF44 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AF14: .word 0x022401FC +_0222AF18: .word 0x020C9480 +_0222AF1C: .word 0x02240210 +_0222AF20: .word 0x020C8D4C +_0222AF24: .word 0x02240228 +_0222AF28: .word 0x020C9550 +_0222AF2C: .word 0x02240240 +_0222AF30: .word 0x020C908C +_0222AF34: .word 0x04001008 +_0222AF38: .word 0x0400100A +_0222AF3C: .word 0x04000008 +_0222AF40: .word 0x0400000A +_0222AF44: .word 0x0400000C + + arm_func_start MOD13_0222AF48 +MOD13_0222AF48: ; 0x0222AF48 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x24 + ldr r7, _0222B0A8 ; =0x0223F29C + ldr ip, _0222B0AC ; =0x0223F280 + ldmia r7!, {r0, r1, r2, r3} + add r6, sp, #0xc + stmia r6!, {r0, r1, r2, r3} + ldrb r5, [ip] + ldrb r4, [ip, #1] + ldrb lr, [ip, #2] + ldrb r3, [ip, #3] + ldrb r2, [ip, #4] + ldr ip, [r7] + mov r0, #0x18 + mov r1, #4 + str ip, [r6] + strb r5, [sp] + strb r4, [sp, #1] + strb lr, [sp, #2] + strb r3, [sp, #3] + strb r2, [sp, #4] + bl MOD13_0223AFE0 + ldr r2, _0222B0B0 ; =0x022430DC + mov r1, #0 + str r0, [r2] + add r0, sp, #8 + bl MOD13_02222F44 + ldr r0, _0222B0B0 ; =0x022430DC + ldr r2, [sp, #8] + add r1, sp, #0xc + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _0222B0B0 ; =0x022430DC + ldr r1, _0222B0B4 ; =0x02240258 + ldr r4, [r0] + mov r2, #3 + add r0, r4, #8 + bl memcmp + cmp r0, #0 + movne r0, #3 + strneb r0, [r4, #0x14] + bne _0222B018 + add r0, r4, #8 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r0, _0222B0B0 ; =0x022430DC + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x14] +_0222B018: + bl MOD13_0222AE70 + ldr r0, [sp, #8] + add r0, r0, #0xb + bl MOD13_0221F4CC + ldr r2, [sp, #8] + add r0, sp, #0 + ldrb r0, [r0, r2] + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _0222B0B0 ; =0x022430DC + mov r1, #0x3f + ldr r2, [r2] + str r0, [r2] + mov r0, #0 + bl MOD13_02239E54 + ldr r1, _0222B0B0 ; =0x022430DC + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r1, [r0, #4] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + bl MOD13_0222A658 + bl MOD13_0222A6B8 + ldr r0, _0222B0B8 ; =MOD13_0222AE14 + bl MOD13_02222FBC + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222B0A8: .word 0x0223F29C +_0222B0AC: .word 0x0223F280 +_0222B0B0: .word 0x022430DC +_0222B0B4: .word 0x02240258 +_0222B0B8: .word MOD13_0222AE14 + + arm_func_start MOD13_0222B0BC +MOD13_0222B0BC: ; 0x0222B0BC + ldr r1, _0222B0C8 ; =0x022430E0 + str r0, [r1] + bx lr + .align 2, 0 +_0222B0C8: .word 0x022430E0 + + arm_func_start MOD13_0222B0CC +MOD13_0222B0CC: ; 0x0222B0CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + beq _0222B164 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222B194 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222B164: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #0 + bl MOD13_0222B7F4 + ldr r0, _0222B198 ; =MOD13_0222DD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B194: .word MOD13_02230714 +_0222B198: .word MOD13_0222DD4C + + arm_func_start MOD13_0222B19C +MOD13_0222B19C: ; 0x0222B19C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222B1F4 ; =MOD13_0222B0CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B1F4: .word MOD13_0222B0CC + + arm_func_start MOD13_0222B1F8 +MOD13_0222B1F8: ; 0x0222B1F8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222B21C ; =MOD13_0222B19C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B21C: .word MOD13_0222B19C + + arm_func_start MOD13_0222B220 +MOD13_0222B220: ; 0x0222B220 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222B250 ; =MOD13_0222B1F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B250: .word MOD13_0222B1F8 + + arm_func_start MOD13_0222B254 +MOD13_0222B254: ; 0x0222B254 + bx lr + + arm_func_start MOD13_0222B258 +MOD13_0222B258: ; 0x0222B258 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222B258 + bl MOD13_0222B254 + bl MOD13_0222B220 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222B2D0 ; =0x0222B284 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B2D0: .word 0x0222B284 + + arm_func_start MOD13_0222B2D4 +MOD13_0222B2D4: ; 0x0222B2D4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #4 + bl MOD13_0221F0EC + ldr r0, _0222B31C ; =0x0222B2A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B31C: .word 0x0222B2A0 + + arm_func_start MOD13_0222B320 +MOD13_0222B320: ; 0x0222B320 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222B358 ; =MOD13_0222B2D4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B358: .word MOD13_0222B2D4 + + arm_func_start MOD13_0222B35C +MOD13_0222B35C: ; 0x0222B35C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + add r1, sp, #0x10 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, _0222B690 ; =0x022430E0 + ldr r1, _0222B694 ; =0xFFFFB17D + ldr r0, [r0] + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B698 ; =0xFFFFB17C + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B69C ; =0xFFFFB17B + cmp r0, r1 + movge r4, #0x13 + bge _0222B5B8 + ldr r1, _0222B6A0 ; =0xFFFFB175 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6A4 ; =0xFFFFB174 + cmp r0, r1 + movge r4, #0x12 + bge _0222B5B8 + ldr r1, _0222B6A8 ; =0xFFFFB173 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6AC ; =0xFFFFB172 + cmp r0, r1 + movge r4, #3 + bge _0222B5B8 + ldr r1, _0222B6B0 ; =0xFFFFADF9 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6B4 ; =0xFFFFA629 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6B8 ; =0xFFFFA241 + cmp r0, r1 + movge r4, #0x13 + bge _0222B5B8 + ldr r1, _0222B6BC ; =0xFFFF3CB1 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6C0 ; =0xFFFF3CAE + cmp r0, r1 + movge r4, #7 + bge _0222B5B8 + ldr r1, _0222B6C4 ; =0xFFFF3CAD + cmp r0, r1 + movge r4, #5 + bge _0222B5B8 + ldr r1, _0222B6C8 ; =0xFFFF3C4E + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6CC ; =0xFFFF3C4D + cmp r0, r1 + blt _0222B478 + ldr r0, [sp, #0x10] + cmp r0, #2 + moveq r4, #5 + movne r4, #7 + b _0222B5B8 +_0222B478: + ldr r1, _0222B6D0 ; =0xFFFF3866 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6D4 ; =0xFFFF3865 + cmp r0, r1 + blt _0222B4A8 + ldr r0, [sp, #0x10] + cmp r0, #2 + moveq r4, #5 + movne r4, #8 + b _0222B5B8 +_0222B4A8: + ldr r1, _0222B6D8 ; =0xFFFF3862 + cmp r0, r1 + movge r4, #9 + bge _0222B5B8 + ldr r1, _0222B6DC ; =0xFFFF3861 + cmp r0, r1 + movge r4, #5 + bge _0222B5B8 + ldr r1, _0222B6E0 ; =0xFFFF3801 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6E4 ; =0xFFFF379D + cmp r0, r1 + movge r4, #0x14 + bge _0222B5B8 + ldr r1, _0222B6E8 ; =0xFFFF379A + cmp r0, r1 + movge r4, #0x15 + bge _0222B5B8 + ldr r1, _0222B6EC ; =0xFFFF3799 + cmp r0, r1 + movge r4, #4 + bge _0222B5B8 + ldr r1, _0222B6F0 ; =0xFFFF34E1 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6F4 ; =0xFFFF34DE + cmp r0, r1 + movge r4, #0xa + bge _0222B5B8 + ldr r1, _0222B6F8 ; =0xFFFF34DD + cmp r0, r1 + movge r4, #0x16 + bge _0222B5B8 + ldr r1, _0222B6FC ; =0xFFFF347D + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B700 ; =0xFFFF3479 + cmp r0, r1 + movge r4, #0xb + bge _0222B5B8 + ldr r1, _0222B704 ; =0xFFFF3419 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B708 ; =0xFFFF3415 + cmp r0, r1 + movge r4, #0xb + bge _0222B5B8 + ldr r1, _0222B70C ; =0xFFFF33B5 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B710 ; =0xFFFF3351 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B714 ; =0xFFFF30F9 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B718 ; =0xFFFF2FCD + cmp r0, r1 + movge r4, #2 + movlt r4, #0 +_0222B5B8: + bl MOD13_02222F34 + mov r2, r0 + ldr r1, _0222B71C ; =0x0223F2C4 + mov r0, #0 + ldrb r1, [r1, r2] + bl MOD13_0223A7F0 + ldr r1, _0222B720 ; =0x0224307C + mov r5, r0 + ldr r0, [r1] + mov r1, r4 + bl MOD13_02223568 + ldr r1, _0222B690 ; =0x022430E0 + mov r4, r0 + ldr r1, [r1] + ldr r2, _0222B724 ; =0x0224025C + rsb r3, r1, #0 + add r0, sp, #0x14 + mov r1, #8 + bl swprintf + bl MOD13_02222F34 + mov r1, r0, lsl #2 + ldr r0, _0222B728 ; =0x0223F2D6 + ldrh r6, [r0, r1] + bl MOD13_02222F34 + mov r1, r0, lsl #2 + ldr r0, _0222B72C ; =0x0223F2D4 + mov ip, #0xa + ldrh r1, [r0, r1] + add r3, sp, #0x14 + mov r0, #0 + str ip, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + mov r2, r6 + mov r0, r5 + mov r3, #2 + bl MOD13_0223A528 + bl MOD13_0221EF88 + ldr r3, _0222B730 ; =0x0223F2CC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, r5 + bl MOD13_0223A4F0 + mov r0, r5 + bl MOD13_0223A410 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222B690: .word 0x022430E0 +_0222B694: .word 0xFFFFB17D +_0222B698: .word 0xFFFFB17C +_0222B69C: .word 0xFFFFB17B +_0222B6A0: .word 0xFFFFB175 +_0222B6A4: .word 0xFFFFB174 +_0222B6A8: .word 0xFFFFB173 +_0222B6AC: .word 0xFFFFB172 +_0222B6B0: .word 0xFFFFADF9 +_0222B6B4: .word 0xFFFFA629 +_0222B6B8: .word 0xFFFFA241 +_0222B6BC: .word 0xFFFF3CB1 +_0222B6C0: .word 0xFFFF3CAE +_0222B6C4: .word 0xFFFF3CAD +_0222B6C8: .word 0xFFFF3C4E +_0222B6CC: .word 0xFFFF3C4D +_0222B6D0: .word 0xFFFF3866 +_0222B6D4: .word 0xFFFF3865 +_0222B6D8: .word 0xFFFF3862 +_0222B6DC: .word 0xFFFF3861 +_0222B6E0: .word 0xFFFF3801 +_0222B6E4: .word 0xFFFF379D +_0222B6E8: .word 0xFFFF379A +_0222B6EC: .word 0xFFFF3799 +_0222B6F0: .word 0xFFFF34E1 +_0222B6F4: .word 0xFFFF34DE +_0222B6F8: .word 0xFFFF34DD +_0222B6FC: .word 0xFFFF347D +_0222B700: .word 0xFFFF3479 +_0222B704: .word 0xFFFF3419 +_0222B708: .word 0xFFFF3415 +_0222B70C: .word 0xFFFF33B5 +_0222B710: .word 0xFFFF3351 +_0222B714: .word 0xFFFF30F9 +_0222B718: .word 0xFFFF2FCD +_0222B71C: .word 0x0223F2C4 +_0222B720: .word 0x0224307C +_0222B724: .word 0x0224025C +_0222B728: .word 0x0223F2D6 +_0222B72C: .word 0x0223F2D4 +_0222B730: .word 0x0223F2CC + + arm_func_start MOD13_0222B734 +MOD13_0222B734: ; 0x0222B734 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222B7B4 ; =0x02240264 + ldr r1, _0222B7B8 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222B7BC ; =0x04001008 + ldr ip, _0222B7C0 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222B7C4 ; =0x04000008 + ldr r2, _0222B7C8 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222B7CC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B7B4: .word 0x02240264 +_0222B7B8: .word 0x020C908C +_0222B7BC: .word 0x04001008 +_0222B7C0: .word 0x0400100A +_0222B7C4: .word 0x04000008 +_0222B7C8: .word 0x0400000A +_0222B7CC: .word 0x0400000C + + arm_func_start MOD13_0222B7D0 +MOD13_0222B7D0: ; 0x0222B7D0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222B734 + bl MOD13_0222B35C + ldr r0, _0222B7F0 ; =MOD13_0222B320 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B7F0: .word MOD13_0222B320 + + arm_func_start MOD13_0222B7F4 +MOD13_0222B7F4: ; 0x0222B7F4 + ldr r1, _0222B800 ; =0x022430E8 + strb r0, [r1] + bx lr + .align 2, 0 +_0222B800: .word 0x022430E8 + + arm_func_start MOD13_0222B804 +MOD13_0222B804: ; 0x0222B804 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222B82C ; =MOD13_0222DA24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B82C: .word MOD13_0222DA24 + + arm_func_start MOD13_0222B830 +MOD13_0222B830: ; 0x0222B830 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222B874 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_02232780 + ldr r0, _0222B878 ; =MOD13_0222B804 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B874: .word 0x022430F4 +_0222B878: .word MOD13_0222B804 + + arm_func_start MOD13_0222B87C +MOD13_0222B87C: ; 0x0222B87C + stmdb sp!, {r4, lr} + bl MOD13_02234164 + mov r4, r0 + ldrb r0, [r4, #0x40] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldrb r0, [r4, #0xf6] + cmp r0, #0 + bne _0222B8C8 + add r0, r4, #0xc8 + bl FUN_02095AE0 + cmp r0, #0 + bne _0222B8C8 + add r0, r4, #0xcc + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_0222B8C8: + ldrb r0, [r4, #0xf5] + cmp r0, #0 + bne _0222B914 + add r0, r4, #0xc0 + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0xc4 + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0xc0 + add r1, r4, #0xf0 + bl FUN_02095B0C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_0222B914: + mov r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222B91C +MOD13_0222B91C: ; 0x0222B91C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222B9D0 ; =0x0223F2F0 + ldr r0, _0222B9D4 ; =0x022430E4 + ldrb ip, [r1] + ldrb r3, [r1, #1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #3] + strb ip, [sp] + ldrb lr, [r0] + add r4, sp, #0 + strb r3, [sp, #1] + strb r2, [sp, #2] + strb r1, [sp, #3] + mov ip, #0 +_0222B958: + ldrb r0, [r4] + cmp lr, r0 + bne _0222B9B8 + ldr r0, _0222B9D8 ; =0x022430F4 + mov r3, #0x14 + ldr r2, [r0] + ands r1, ip, #1 + add r1, r2, ip + strb r3, [r1, #4] + beq _0222B99C + ldr r1, [r0] + sub r0, ip, #1 + add r0, r1, r0 + mov r1, #0 + strb r1, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222B99C: + ldr r1, [r0] + add r0, ip, #1 + add r0, r1, r0 + mov r1, #0 + strb r1, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222B9B8: + add ip, ip, #1 + cmp ip, #4 + add r4, r4, #1 + blt _0222B958 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222B9D0: .word 0x0223F2F0 +_0222B9D4: .word 0x022430E4 +_0222B9D8: .word 0x022430F4 + + arm_func_start MOD13_0222B9DC +MOD13_0222B9DC: ; 0x0222B9DC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r5, _0222BA34 ; =0x022430F4 + mov r4, #0 +_0222B9EC: + ldr r0, [r5] + add r1, r0, r4 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0222BA20 + sub r0, r0, #1 + strb r0, [r1, #4] + ldr r0, [r5] + add r0, r0, r4 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _0222BA20 + bl MOD13_0222CD8C +_0222BA20: + add r4, r4, #1 + cmp r4, #4 + blt _0222B9EC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222BA34: .word 0x022430F4 + + arm_func_start MOD13_0222BA38 +MOD13_0222BA38: ; 0x0222BA38 + ldr r1, _0222BA64 ; =0x022430E4 + ldr r0, _0222BA68 ; =0x022430F4 + ldrb r2, [r1] + ldr r0, [r0] + ldr r1, _0222BA6C ; =0x0223F2EC + sub r2, r2, #0xb + ldrb r1, [r1, r2] + ldr ip, _0222BA70 ; =MOD13_022327DC + ldr r0, [r0, #0x10] + mov r2, r1 + bx ip + .align 2, 0 +_0222BA64: .word 0x022430E4 +_0222BA68: .word 0x022430F4 +_0222BA6C: .word 0x0223F2EC +_0222BA70: .word MOD13_022327DC + + arm_func_start MOD13_0222BA74 +MOD13_0222BA74: ; 0x0222BA74 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl MOD13_02234164 + ldr r1, _0222BDA0 ; =0x022430E4 + mov r4, #0 + ldrb r2, [r1] + cmp r2, #8 + bne _0222BABC + ldrb r0, [r0, #0xf5] + cmp r0, #0 + bne _0222BABC + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + cmp r5, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} +_0222BABC: + cmp r2, #0 + bgt _0222BAD0 + cmp r2, #0 + beq _0222BAF0 + b _0222BC78 +_0222BAD0: + sub r0, r2, #0xa + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0222BC78 +_0222BAE0: ; jump table + b _0222BB20 ; case 0 + b _0222BB5C ; case 1 + b _0222BBD4 ; case 2 + b _0222BBD4 ; case 3 +_0222BAF0: + cmp r5, #1 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #0xb + streqb r1, [r0] + beq _0222BD74 + cmp r5, #3 + ldreq r0, _0222BDA4 ; =0x022430EC + movne r4, #2 + ldreqb r1, [r0] + addeq r1, r1, #1 + streqb r1, [r0] + b _0222BD74 +_0222BB20: + cmp r5, #1 + ldreq r0, _0222BDA4 ; =0x022430EC + ldreqb r1, [r0] + subeq r1, r1, #1 + streqb r1, [r0] + beq _0222BD74 + cmp r5, #3 + movne r4, #2 + bne _0222BD74 + ldr r1, _0222BDA8 ; =0x022430F4 + ldr r0, _0222BDA0 ; =0x022430E4 + ldr r1, [r1] + ldrb r1, [r1, #0x42] + strb r1, [r0] + b _0222BD74 +_0222BB5C: + cmp r5, #1 + bne _0222BB9C + ldr r0, _0222BDA8 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222BDA8 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {r4, r5, pc} +_0222BB9C: + cmp r5, #3 + movne r4, #2 + bne _0222BD74 + ldr r2, _0222BDA0 ; =0x022430E4 + mov r3, #0 + ldr r1, _0222BDA4 ; =0x022430EC + ldr r0, _0222BDAC ; =0x022430F0 + strb r3, [r2] + strb r3, [r1] + strh r3, [r0] + bl MOD13_0222CD8C + mov r0, #0 + bl MOD13_02232F44 + b _0222BD74 +_0222BBD4: + ldr r0, _0222BDA8 ; =0x022430F4 + cmp r5, #1 + ldr r1, [r0] + strb r2, [r1, #0x42] + bne _0222BC1C + ldr r2, _0222BDA0 ; =0x022430E4 + mov ip, #0xa + ldr r1, _0222BDA4 ; =0x022430EC + mov r5, #3 + ldr r0, _0222BDAC ; =0x022430F0 + mov r3, #0x91 + strb ip, [r2] + strb r5, [r1] + strh r3, [r0] + bl MOD13_0222CD8C + mov r0, #0x37 + bl MOD13_02232F44 + b _0222BD74 +_0222BC1C: + cmp r5, #3 + bne _0222BC58 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222BDA8 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {r4, r5, pc} +_0222BC58: + cmp r2, #0xc + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #0xd + streqb r1, [r0] + ldrne r0, _0222BDA0 ; =0x022430E4 + movne r1, #0xc + strneb r1, [r0] + b _0222BD74 +_0222BC78: + cmp r5, #1 + bne _0222BCC8 + ldr r0, _0222BDA4 ; =0x022430EC + ldrb r1, [r0] + cmp r1, #0 + subne r1, r1, #1 + strneb r1, [r0] + bne _0222BD74 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222BDB0 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222BDA8 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, r5, pc} +_0222BCC8: + cmp r5, #3 + bne _0222BD18 + ldr r0, _0222BDA4 ; =0x022430EC + ldrb r1, [r0] + cmp r1, #3 + addlo r1, r1, #1 + strlob r1, [r0] + blo _0222BD74 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222BDB4 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222BDA8 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, r5, pc} +_0222BD18: + cmp r2, #2 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #3 + mov r4, #2 + streqb r1, [r0] + beq _0222BD68 + cmp r2, #3 + ldreq r0, _0222BDA0 ; =0x022430E4 + streqb r4, [r0] + beq _0222BD68 + cmp r2, #7 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #8 + streqb r1, [r0] + beq _0222BD68 + cmp r2, #8 + bne _0222BD74 + ldr r0, _0222BDA0 ; =0x022430E4 + mov r1, #7 + strb r1, [r0] +_0222BD68: + mov r0, #8 + bl MOD13_0223424C + bl MOD13_0222BEC0 +_0222BD74: + cmp r4, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #8 + bl MOD13_0223424C + cmp r4, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_0222BDF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222BDA0: .word 0x022430E4 +_0222BDA4: .word 0x022430EC +_0222BDA8: .word 0x022430F4 +_0222BDAC: .word 0x022430F0 +_0222BDB0: .word MOD13_0222C0E8 +_0222BDB4: .word MOD13_0222C03C + + arm_func_start MOD13_0222BDB8 +MOD13_0222BDB8: ; 0x0222BDB8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222BDE8 ; =0x022430E4 + ldr r2, _0222BDEC ; =0x0223F32C + strb r0, [r1] + ldrb r0, [r2, r0] + bl MOD13_0222C1F4 + ldr r1, _0222BDF0 ; =0x022430EC + strb r0, [r1] + bl MOD13_0222BEC0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222BDE8: .word 0x022430E4 +_0222BDEC: .word 0x0223F32C +_0222BDF0: .word 0x022430EC + + arm_func_start MOD13_0222BDF4 +MOD13_0222BDF4: ; 0x0222BDF4 + stmdb sp!, {r4, lr} + ldr r0, _0222BEB0 ; =0x022430E4 + ldrb r0, [r0] + add r0, r0, #0xf5 + and r0, r0, #0xff + cmp r0, #2 + bhi _0222BE18 + bl MOD13_0222BEC0 + ldmia sp!, {r4, pc} +_0222BE18: + bl MOD13_02234164 + ldr r1, _0222BEB4 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + ldr r1, _0222BEB8 ; =0x022430EC + ldrb r1, [r1] + add r2, r1, r0 + cmp r2, #2 + beq _0222BE50 + cmp r2, #6 + beq _0222BE74 + b _0222BE98 +_0222BE50: + ldrb r0, [r4, #0xf5] + cmp r0, #0 + ldrne r0, _0222BEB0 ; =0x022430E4 + movne r1, #2 + strneb r1, [r0] + ldreq r0, _0222BEB0 ; =0x022430E4 + moveq r1, #3 + streqb r1, [r0] + b _0222BEA8 +_0222BE74: + ldrb r0, [r4, #0xf6] + cmp r0, #0 + ldrne r0, _0222BEB0 ; =0x022430E4 + movne r1, #7 + strneb r1, [r0] + ldreq r0, _0222BEB0 ; =0x022430E4 + moveq r1, #8 + streqb r1, [r0] + b _0222BEA8 +_0222BE98: + ldr r1, _0222BEBC ; =0x0223F314 + ldr r0, _0222BEB0 ; =0x022430E4 + ldrb r1, [r1, r2] + strb r1, [r0] +_0222BEA8: + bl MOD13_0222BEC0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222BEB0: .word 0x022430E4 +_0222BEB4: .word 0x022430F0 +_0222BEB8: .word 0x022430EC +_0222BEBC: .word 0x0223F314 + + arm_func_start MOD13_0222BEC0 +MOD13_0222BEC0: ; 0x0222BEC0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _0222BF90 ; =0x0223F338 + add r3, sp, #8 + mov r2, #7 +_0222BED4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _0222BED4 + ldr r0, _0222BF94 ; =0x022430E4 + add r1, sp, #8 + ldrb r0, [r0] + ldrb r2, [r1, r0] + cmp r2, #3 + blt _0222BF30 + mov r3, r2, lsl #3 + ldr r1, _0222BF98 ; =0x0223F3CC + ldr r2, _0222BF9C ; =0x0223F3D0 + ldr r0, _0222BFA0 ; =0x0223F3CE + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldrh r3, [r0, r3] + mov r0, #3 + bl MOD13_0221F348 + add sp, sp, #0x1c + ldmia sp!, {pc} +_0222BF30: + ldr r0, _0222BF98 ; =0x0223F3CC + mov r1, r2, lsl #3 + add lr, r0, r2, lsl #3 + ldrh ip, [r0, r1] + ldrh r1, [lr, #2] + ldr r0, _0222BFA4 ; =0x022430EC + ldrh r3, [lr, #4] + strh r1, [sp, #2] + ldrh r2, [sp, #2] + ldrb r1, [r0] + mov r0, #0x1d + strh ip, [sp] + mla r0, r1, r0, r2 + strh r3, [sp, #4] + strh r0, [sp, #2] + ldrh ip, [lr, #6] + ldrh r1, [sp] + ldrh r2, [sp, #4] + ldrh r3, [sp, #2] + mov r0, #1 + strh ip, [sp, #6] + bl MOD13_0221F348 + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_0222BF90: .word 0x0223F338 +_0222BF94: .word 0x022430E4 +_0222BF98: .word 0x0223F3CC +_0222BF9C: .word 0x0223F3D0 +_0222BFA0: .word 0x0223F3CE +_0222BFA4: .word 0x022430EC + + arm_func_start MOD13_0222BFA8 +MOD13_0222BFA8: ; 0x0222BFA8 + stmdb sp!, {r4, lr} + ldr r0, _0222C024 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x44] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _0222C028 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C028 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_ModS32 + ldr r1, _0222C02C ; =0x01FF0000 + sub ip, r0, #0x33 + ldr r2, _0222C030 ; =0x04000010 + and r3, r1, ip, lsl #16 + ldr r0, _0222C034 ; =0x0223F320 + str r3, [r2] + ldrb r3, [r0, r4] + ldr r2, _0222C038 ; =0x04000018 + ldr r0, _0222C024 ; =0x022430F4 + add r3, ip, r3 + and r1, r1, r3, lsl #16 + str r1, [r2] + ldr r0, [r0] + mov r1, #0 + strb r1, [r0, #0x44] + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C024: .word 0x022430F4 +_0222C028: .word 0x022430F0 +_0222C02C: .word 0x01FF0000 +_0222C030: .word 0x04000010 +_0222C034: .word 0x0223F320 +_0222C038: .word 0x04000018 + + arm_func_start MOD13_0222C03C +MOD13_0222C03C: ; 0x0222C03C + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _0222C0DC ; =0x022430F0 + mov r1, #0x1d + ldrh r2, [r0] + add r2, r2, #6 + strh r2, [r0] + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #6 + blt _0222C078 + bl MOD13_0222C4C8 + ldmia sp!, {r4, pc} +_0222C078: + ldr r1, _0222C0DC ; =0x022430F0 + ldrh r2, [r1] + sub r0, r2, r0 + strh r0, [r1] + bl MOD13_0222CD8C + ldr r1, _0222C0DC ; =0x022430F0 + mov r0, #0x37 + ldrh r1, [r1] + ldr r2, _0222C0E0 ; =0xE1FC780F + mul r3, r1, r0 + smull r1, r0, r2, r3 + add r0, r3, r0 + mov r0, r0, asr #7 + mov r1, r3, lsr #0x1f + add r0, r1, r0 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_0222BDF4 + ldr r0, _0222C0E4 ; =0x022430F4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C0DC: .word 0x022430F0 +_0222C0E0: .word 0xE1FC780F +_0222C0E4: .word 0x022430F4 + + arm_func_start MOD13_0222C0E8 +MOD13_0222C0E8: ; 0x0222C0E8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _0222C1C4 ; =0x022430F0 + ldrh r1, [r0] + cmp r1, #6 + subhi r1, r1, #6 + strhih r1, [r0] + movls r1, #0 + strlsh r1, [r0] + ldr r0, _0222C1C4 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_ModS32 + mov r5, r0 + cmp r5, #0x17 + bne _0222C140 + bl MOD13_0222CD8C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222C140: + cmp r5, #0x17 + ble _0222C160 + ldr r0, _0222C1C4 ; =0x022430F0 + rsb r1, r5, #0x1d + ldrh r2, [r0] + mov r5, #0 + add r1, r2, r1 + strh r1, [r0] +_0222C160: + bl MOD13_0222C4C8 + cmp r5, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222C1C4 ; =0x022430F0 + mov r0, #0x37 + ldrh r1, [r1] + ldr r2, _0222C1C8 ; =0xE1FC780F + mul r3, r1, r0 + smull r1, r0, r2, r3 + add r0, r3, r0 + mov r0, r0, asr #7 + mov r1, r3, lsr #0x1f + add r0, r1, r0 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_0222BDF4 + ldr r0, _0222C1CC ; =0x022430F4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222C1C4: .word 0x022430F0 +_0222C1C8: .word 0xE1FC780F +_0222C1CC: .word 0x022430F4 + + arm_func_start MOD13_0222C1D0 +MOD13_0222C1D0: ; 0x0222C1D0 + stmdb sp!, {r4, lr} + ldr r1, _0222C1F0 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + add r0, r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C1F0: .word 0x022430F0 + + arm_func_start MOD13_0222C1F4 +MOD13_0222C1F4: ; 0x0222C1F4 + stmdb sp!, {r4, lr} + ldr r1, _0222C234 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + mov r1, #0 +_0222C210: + cmp r0, r4 + moveq r0, r1 + ldmeqia sp!, {r4, pc} + add r1, r1, #1 + cmp r1, #4 + add r0, r0, #1 + blt _0222C210 + mvn r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C234: .word 0x022430F0 + + arm_func_start MOD13_0222C238 +MOD13_0222C238: ; 0x0222C238 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r0, _0222C4AC ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0xe + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C4B4 ; =0x0223F2FC + add r4, sp, #0 + ldrh ip, [r1] + ldrh r3, [r1, #2] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + mov r5, r0 + strh ip, [sp] + strh r3, [sp, #2] + strh r2, [sp, #4] + strh r1, [sp, #6] + mov r6, #0 +_0222C298: + cmp r5, #2 + beq _0222C2C4 + cmp r5, #6 + beq _0222C2C4 + mov r0, r4 + bl MOD13_0223B194 + cmp r0, #0 + ldrne r0, _0222C4B8 ; =0x0223F314 + addne sp, sp, #8 + ldrneb r0, [r0, r5] + ldmneia sp!, {r4, r5, r6, pc} +_0222C2C4: + ldrh r0, [sp, #2] + add r6, r6, #1 + cmp r6, #4 + add r0, r0, #0x1d + strh r0, [sp, #2] + add r5, r5, #1 + blt _0222C298 + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + mov r3, #0 +_0222C2F4: + cmp r0, #2 + bne _0222C398 + ldr r1, _0222C4BC ; =0x0223F30C + mov r0, #0x1d + ldrh r2, [r1, #2] + mul r4, r3, r0 + strh r2, [sp, #2] + ldrh r5, [r1] + ldrh r3, [r1, #4] + ldrh r2, [r1, #6] + ldrh r0, [sp, #2] + strh r5, [sp] + strh r3, [sp, #4] + add r1, r0, r4 + add r0, sp, #0 + strh r2, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0222C4C0 ; =0x0223F304 + add r0, sp, #0 + ldrh r2, [r1, #2] + ldrh ip, [r1] + ldrh r5, [r1, #4] + strh r2, [sp, #2] + ldrh r3, [r1, #6] + ldrh r2, [sp, #2] + strh ip, [sp] + strh r5, [sp, #4] + add r1, r2, r4 + strh r3, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + beq _0222C3A8 + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0222C398: + add r3, r3, #1 + cmp r3, #4 + add r0, r0, #1 + blt _0222C2F4 +_0222C3A8: + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + mov r3, #0 +_0222C3BC: + cmp r0, #6 + bne _0222C460 + ldr r1, _0222C4BC ; =0x0223F30C + mov r0, #0x1d + ldrh r2, [r1, #2] + mul r4, r3, r0 + strh r2, [sp, #2] + ldrh r5, [r1] + ldrh r3, [r1, #4] + ldrh r2, [r1, #6] + ldrh r0, [sp, #2] + strh r5, [sp] + strh r3, [sp, #4] + add r1, r0, r4 + add r0, sp, #0 + strh r2, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #7 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0222C4C0 ; =0x0223F304 + add r0, sp, #0 + ldrh r2, [r1, #2] + ldrh ip, [r1] + ldrh r5, [r1, #4] + strh r2, [sp, #2] + ldrh r3, [r1, #6] + ldrh r2, [sp, #2] + strh ip, [sp] + strh r5, [sp, #4] + add r1, r2, r4 + strh r3, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + beq _0222C470 + add sp, sp, #8 + mov r0, #8 + ldmia sp!, {r4, r5, r6, pc} +_0222C460: + add r3, r3, #1 + cmp r3, #4 + add r0, r0, #1 + blt _0222C3BC +_0222C470: + ldr r5, _0222C4C4 ; =0x0223F3B4 + mov r4, #0 +_0222C478: + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + addne sp, sp, #8 + addne r0, r4, #0xb + ldmneia sp!, {r4, r5, r6, pc} + add r4, r4, #1 + cmp r4, #3 + add r5, r5, #8 + blt _0222C478 + mov r0, #0xe + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C4AC: .word 0x0223F75C +_0222C4B0: .word 0x022430F0 +_0222C4B4: .word 0x0223F2FC +_0222C4B8: .word 0x0223F314 +_0222C4BC: .word 0x0223F30C +_0222C4C0: .word 0x0223F304 +_0222C4C4: .word 0x0223F3B4 + + arm_func_start MOD13_0222C4C8 +MOD13_0222C4C8: ; 0x0222C4C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r0, _0222C6EC ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C6EC ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_ModS32 + ldr r1, _0222C6F0 ; =0x022430F4 + rsb ip, r0, #0x34 + ldr r1, [r1] + ldr r0, [r1, #0x34] + cmp r0, #0 + beq _0222C54C + cmp r4, #0 + moveq r0, #0x26 + streq r0, [sp] + movne r0, #0x100 + strne r0, [sp] + ldr r5, [r1, #0x34] + ldr r1, _0222C6F4 ; =0xFE00FF00 + ldr r2, [r5] + ldr r3, [sp] + ldr r0, _0222C6F8 ; =0x000001FF + and r2, r2, r1 + and r1, ip, #0xff + and r3, r3, r0 + orr r0, r2, r1 + orr r0, r0, r3, lsl #16 + str r0, [r5] +_0222C54C: + mov r3, ip + mov r2, #0 + ldr r7, _0222C6F0 ; =0x022430F4 + ldr lr, _0222C6FC ; =0x01FF0000 + ldr r5, _0222C6F8 ; =0x000001FF + ldr r6, _0222C6F4 ; =0xFE00FF00 +_0222C564: + ldr r0, [r7] + and r8, r3, #0xff + add r1, r0, r2, lsl #2 + ldr r0, [r1, #0x18] + add r2, r2, #1 + ldr sb, [r0] + cmp r2, #5 + and sl, sb, lr + mov sb, sl, lsr #0x10 + str sb, [sp] + ldr sb, [r0] + and r0, r5, sl, lsr #16 + and sb, sb, #0xff + str sb, [sp, #4] + ldr r1, [r1, #0x18] + add r3, r3, #0x1d + ldr sb, [r1] + and sb, sb, r6 + orr r8, sb, r8 + orr r0, r8, r0, lsl #16 + str r0, [r1] + blt _0222C564 + cmp r4, #2 + bgt _0222C624 + ldr r6, [r7] + ldr r0, _0222C6FC ; =0x01FF0000 + ldr r5, [r6, #0x2c] + rsb r2, r4, #2 + ldr r3, [r5] + mov r1, #0x1d + and r0, r3, r0 + mov r3, r0, lsr #0x10 + str r3, [sp] + ldr r5, [r5] + mla r3, r2, r1, ip + and r1, r5, #0xff + str r1, [sp, #4] + ldr r6, [r6, #0x2c] + ldr r1, _0222C6F8 ; =0x000001FF + ldr r5, [r6] + ldr r2, _0222C6F4 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r5, r2 + and r1, r1, r0, lsr #16 + orr r0, r2, r3 + orr r0, r0, r1, lsl #16 + str r0, [r6] + b _0222C640 +_0222C624: + ldr r1, [r7] + ldr r0, _0222C6F4 ; =0xFE00FF00 + ldr r2, [r1, #0x2c] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] +_0222C640: + cmp r4, #2 + blt _0222C6B4 + cmp r4, #6 + bgt _0222C6B4 + ldr r0, _0222C6F0 ; =0x022430F4 + ldr r1, _0222C6FC ; =0x01FF0000 + ldr r0, [r0] + rsb r3, r4, #6 + ldr r6, [r0, #0x30] + mov r2, #0x1d + ldr r4, [r6] + mla r2, r3, r2, ip + and r5, r4, r1 + mov r1, r5, lsr #0x10 + str r1, [sp] + ldr r3, [r6] + ldr r1, _0222C6F4 ; =0xFE00FF00 + and r3, r3, #0xff + str r3, [sp, #4] + ldr r4, [r0, #0x30] + ldr r0, _0222C6F8 ; =0x000001FF + ldr r3, [r4] + and r2, r2, #0xff + and r1, r3, r1 + and r3, r0, r5, lsr #16 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [r4] + b _0222C6D4 +_0222C6B4: + ldr r1, _0222C6F0 ; =0x022430F4 + ldr r0, _0222C6F4 ; =0xFE00FF00 + ldr r1, [r1] + ldr r2, [r1, #0x30] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] +_0222C6D4: + ldr r0, _0222C6F0 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x44] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0222C6EC: .word 0x022430F0 +_0222C6F0: .word 0x022430F4 +_0222C6F4: .word 0xFE00FF00 +_0222C6F8: .word 0x000001FF +_0222C6FC: .word 0x01FF0000 + + arm_func_start MOD13_0222C700 +MOD13_0222C700: ; 0x0222C700 + stmdb sp!, {r4, lr} + sub sp, sp, #0x30 + mov ip, r0 + ldrb r2, [ip, #1] + mov r4, r1 + add r0, sp, #0xc + str r2, [sp] + ldrb r3, [ip, #2] + ldr r2, _0222C780 ; =0x02240278 + mov r1, #0x10 + str r3, [sp, #4] + ldrb r3, [ip, #3] + str r3, [sp, #8] + ldrb r3, [ip] + bl swprintf + mov r2, #7 + mov r0, #0x1d + mul r1, r4, r0 + str r2, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _0222C784 ; =0x022430F4 + add r2, r1, #8 + ldr r0, [r0] + mov r1, #0x5f + ldr r0, [r0, #0x14] + mov r3, #2 + bl MOD13_0223A528 + add sp, sp, #0x30 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C780: .word 0x02240278 +_0222C784: .word 0x022430F4 + + arm_func_start MOD13_0222C788 +MOD13_0222C788: ; 0x0222C788 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x30 + mov r6, r0 + mov r4, r1 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + mov r0, r6 + mov r1, #0x20 + bl MOD13_0223BDA4 + mov r5, r0 + cmp r5, #0x10 + movle lr, r5 + movgt lr, #0x10 + cmp lr, #0 + mov ip, #0 + ble _0222C7FC + ldr r2, _0222C8DC ; =0x0000E01D + add r1, sp, #0xc +_0222C7D8: + ldrb r3, [r6, ip] + cmp r3, #0x20 + moveq r0, ip, lsl #1 + streqh r2, [r1, r0] + movne r0, ip, lsl #1 + add ip, ip, #1 + strneh r3, [r1, r0] + cmp ip, lr + blt _0222C7D8 +_0222C7FC: + mov r0, #0x1d + mul r0, r4, r0 + mov r1, #8 + add r4, r0, #2 + str r1, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, _0222C8E0 ; =0x022430F4 + cmp r5, #0x10 + ldr r0, [r0] + addle r4, r4, #5 + ldr r0, [r0, #0x14] + mov r2, r4 + mov r1, #0x48 + mov r3, #2 + bl MOD13_0223A528 + cmp r5, #0x10 + addle sp, sp, #0x30 + ldmleia sp!, {r4, r5, r6, pc} + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + sub ip, r5, #0x10 + cmp ip, #0 + mov r5, #0 + ble _0222C8A0 + ldr r2, _0222C8DC ; =0x0000E01D + add r1, sp, #0xc +_0222C878: + add r0, r5, #0x10 + ldrb r3, [r6, r0] + cmp r3, #0x20 + moveq r0, r5, lsl #1 + streqh r2, [r1, r0] + movne r0, r5, lsl #1 + add r5, r5, #1 + strneh r3, [r1, r0] + cmp r5, ip + blt _0222C878 +_0222C8A0: + mov r1, #8 + str r1, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, _0222C8E0 ; =0x022430F4 + add r2, r4, #0xc + ldr r0, [r0] + mov r1, #0x48 + ldr r0, [r0, #0x14] + mov r3, #2 + bl MOD13_0223A528 + add sp, sp, #0x30 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C8DC: .word 0x0000E01D +_0222C8E0: .word 0x022430F4 + + arm_func_start MOD13_0222C8E4 +MOD13_0222C8E4: ; 0x0222C8E4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r5, _0222C9EC ; =0x0223F2FC + ldr r4, _0222C9F0 ; =0x0223F30C + ldr r3, _0222C9F4 ; =0x0223F304 + ldrh ip, [r4] + ldrh r4, [r3] + ldr r3, _0222C9F8 ; =0x022430F4 + ldrh lr, [r5] + ldr r3, [r3] + mov r6, r0 + add r3, r3, #0x18 + sub r0, r6, #1 + mov r5, r1 + strh lr, [sp] + strh ip, [sp, #2] + strh ip, [sp, #4] + strh r4, [sp, #6] + strh r4, [sp, #8] + cmp r0, #1 + add r4, r3, r2, lsl #2 + bhi _0222C960 + mov r0, r2 + bl MOD13_0222C1D0 + cmp r0, #2 + ldreq r0, _0222C9F8 ; =0x022430F4 + ldreq r0, [r0] + addeq r4, r0, #0x2c + ldrne r0, _0222C9F8 ; =0x022430F4 + ldrne r0, [r0] + addne r4, r0, #0x30 +_0222C960: + ldr r1, _0222C9FC ; =0x0223F348 + mov r0, #3 + mla r0, r6, r0, r1 + ldrb r1, [r5, r0] + cmp r1, #0 + beq _0222C9CC + ldr r2, [r4] + mov r0, #0 + bl MOD13_02239E8C + ldr r5, [r4] + add r0, sp, #0 + mov r1, r6, lsl #1 + ldrh r3, [r0, r1] + ldr r0, _0222CA00 ; =0x000001FF + ldr r2, [r5] + ldr r1, _0222CA04 ; =0xFE00FF00 + and r3, r3, r0 + and r0, r2, r1 + orr r0, r0, r3, lsl #16 + str r0, [r5] + ldr r1, [r4] + add sp, sp, #0x10 + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + ldmia sp!, {r4, r5, r6, pc} +_0222C9CC: + ldr r2, [r4] + ldr r0, _0222CA04 ; =0xFE00FF00 + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C9EC: .word 0x0223F2FC +_0222C9F0: .word 0x0223F30C +_0222C9F4: .word 0x0223F304 +_0222C9F8: .word 0x022430F4 +_0222C9FC: .word 0x0223F348 +_0222CA00: .word 0x000001FF +_0222CA04: .word 0xFE00FF00 + + arm_func_start MOD13_0222CA08 +MOD13_0222CA08: ; 0x0222CA08 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02234164 + cmp r4, #0xa + mov r1, #1 + addls pc, pc, r4, lsl #2 + b _0222CA94 +_0222CA24: ; jump table + b _0222CA60 ; case 0 + b _0222CA60 ; case 1 + b _0222CA94 ; case 2 + b _0222CA94 ; case 3 + b _0222CA78 ; case 4 + b _0222CA78 ; case 5 + b _0222CA78 ; case 6 + b _0222CA50 ; case 7 + b _0222CA94 ; case 8 + b _0222CA88 ; case 9 + b _0222CA88 ; case 10 +_0222CA50: + ldrb r0, [r0, #0xf5] + cmp r0, #0 + moveq r1, #0 + b _0222CA94 +_0222CA60: + ldrb r0, [r0, #0xe7] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #1 + movls r1, #0 + b _0222CA94 +_0222CA78: + ldrb r0, [r0, #0xf5] + cmp r0, #0 + movne r1, #0 + b _0222CA94 +_0222CA88: + ldrb r0, [r0, #0xf6] + cmp r0, #0 + movne r1, #0 +_0222CA94: + mov r0, r1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222CA9C +MOD13_0222CA9C: ; 0x0222CA9C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + bl MOD13_02234164 + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222CBD0 +_0222CAB8: ; jump table + b _0222CADC ; case 0 + b _0222CADC ; case 1 + b _0222CAF8 ; case 2 + b _0222CB44 ; case 3 + b _0222CB44 ; case 4 + b _0222CB44 ; case 5 + b _0222CB5C ; case 6 + b _0222CBB8 ; case 7 + b _0222CBB8 ; case 8 +_0222CADC: + mov r5, #0 + mov r0, r5 + mov r4, r5 + bl MOD13_0222CA08 + cmp r0, #0 + moveq r4, #2 + b _0222CBD8 +_0222CAF8: + ldr r2, _0222CBEC ; =0x022430F4 + ldrb r0, [r0, #0xf5] + ldr r3, [r2] + mov r1, #0 + ldrb r2, [r3, #4] + cmp r0, #0 + movne r5, #1 + movne r0, #4 + moveq r5, #2 + moveq r0, #3 + cmp r2, #0 + mov r4, r1 + ldrb r2, [r3, #5] + movne r4, #1 + cmp r2, #0 + movne r1, #1 + mov r2, r6 + bl MOD13_0222C8E4 + b _0222CBD8 +_0222CB44: + ldrb r0, [r0, #0xf5] + mov r5, #0 + cmp r0, #0 + movne r4, #2 + moveq r4, r5 + b _0222CBD8 +_0222CB5C: + ldrb r2, [r0, #0xf6] + mov r1, #0 + mov r4, r1 + cmp r2, #0 + movne r5, #1 + movne r0, #4 + bne _0222CB8C + ldrb r0, [r0, #0xf5] + mov r5, #2 + cmp r0, #0 + moveq r4, #2 + mov r0, #3 +_0222CB8C: + ldr r2, _0222CBEC ; =0x022430F4 + ldr r3, [r2] + ldrb r2, [r3, #6] + cmp r2, #0 + ldrb r2, [r3, #7] + movne r4, #1 + cmp r2, #0 + movne r1, #1 + mov r2, r6 + bl MOD13_0222C8E4 + b _0222CBD8 +_0222CBB8: + ldrb r0, [r0, #0xf6] + mov r5, #0 + cmp r0, #0 + movne r4, #2 + moveq r4, r5 + b _0222CBD8 +_0222CBD0: + mov r5, #0 + mov r4, #2 +_0222CBD8: + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl MOD13_0222C8E4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222CBEC: .word 0x022430F4 + + arm_func_start MOD13_0222CBF0 +MOD13_0222CBF0: ; 0x0222CBF0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + mov r6, r0 + mov r5, r1 + bl MOD13_02234164 + cmp r6, #8 + addls pc, pc, r6, lsl #2 + b _0222CD84 +_0222CC10: ; jump table + b _0222CC34 ; case 0 + b _0222CC48 ; case 1 + b _0222CD84 ; case 2 + b _0222CCD8 ; case 3 + b _0222CCFC ; case 4 + b _0222CD20 ; case 5 + b _0222CD84 ; case 6 + b _0222CD44 ; case 7 + b _0222CD68 ; case 8 +_0222CC34: + mov r1, r5 + add r0, r0, #0x40 + bl MOD13_0222C788 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CC48: + ldrb r1, [r0, #0xe6] + mov r1, r1, lsl #0x1e + mov r1, r1, lsr #0x1e + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _0222CC8C +_0222CC60: ; jump table + b _0222CC70 ; case 0 + b _0222CC78 ; case 1 + b _0222CC80 ; case 2 + b _0222CC88 ; case 3 +_0222CC70: + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CC78: + mov r4, #0xa + b _0222CC8C +_0222CC80: + mov r4, #0x1a + b _0222CC8C +_0222CC88: + mov r4, #0x20 +_0222CC8C: + ldrb r0, [r0, #0xe6] + mov r1, #0 + mov r2, #0x21 + mov r0, r0, lsl #0x18 + mov r0, r0, lsr #0x1a + cmp r0, #1 + addeq r0, r4, r4, lsr #31 + moveq r4, r0, asr #1 + add r0, sp, #0 + bl MI_CpuFill8 + add r0, sp, #0 + mov r2, r4 + mov r1, #0x2a + bl Call_FillMemWithValue + add r0, sp, #0 + mov r1, r5 + bl MOD13_0222C788 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CCD8: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc0 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CCFC: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xf0 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD20: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc4 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD44: + ldrb r1, [r0, #0xf6] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc8 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD68: + ldrb r1, [r0, #0xf6] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xcc + bl MOD13_0222C700 +_0222CD84: + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_0222CD8C +MOD13_0222CD8C: ; 0x0222CD8C + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _0222CE44 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222CE48 ; =0x022430F4 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0x14] + bl MOD13_0223A4D8 + mov r6, r4 + mov r5, #0 +_0222CDC0: + mov r0, r6 + mov r1, r5 + bl MOD13_0222CBF0 + add r5, r5, #1 + cmp r5, #5 + add r6, r6, #1 + blt _0222CDC0 + ldr r0, _0222CE48 ; =0x022430F4 + ldr r1, _0222CE4C ; =0x0223F358 + mov r2, r4, lsl #1 + ldr r3, [r0] + ldrh r0, [r1, r2] + ldr r2, [r3, #8] + mov r1, #0 + add r0, r2, r0, lsl #1 + mov r2, #0x1e + mov r3, #0x13 + bl MOD13_02232878 + mov r5, #0 +_0222CE0C: + mov r0, r4 + mov r1, r5 + bl MOD13_0222CA9C + add r5, r5, #1 + cmp r5, #5 + add r4, r4, #1 + blt _0222CE0C + bl MOD13_022328D0 + ldr r0, _0222CE48 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bl MOD13_0223A410 + bl MOD13_0222C4C8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222CE44: .word 0x022430F0 +_0222CE48: .word 0x022430F4 +_0222CE4C: .word 0x0223F358 + + arm_func_start MOD13_0222CE50 +MOD13_0222CE50: ; 0x0222CE50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222D130 ; =0x022430F4 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r1, _0222D130 ; =0x022430F4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x3c] + bl MOD13_0223C104 + mov r5, #0 + ldr r4, _0222D130 ; =0x022430F4 +_0222CEB0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x18] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #7 + blt _0222CEB0 + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0x34] + cmp r0, #0 + beq _0222CEE4 + bl MOD13_0223B974 +_0222CEE4: + bl MOD13_02232F78 + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221F21C + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x40] + cmp r0, #0xc + beq _0222CF0C + bl MOD13_0221EE54 +_0222CF0C: + bl MOD13_022328E8 + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_0223939C + mov r5, #0 + ldr r4, _0222D130 ; =0x022430F4 +_0222CF28: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xc] + bl MOD13_0223939C + add r5, r5, #1 + cmp r5, #2 + blt _0222CF28 + ldr r0, _0222D134 ; =0x02240298 + ldr r1, _0222D138 ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AE98 + ldr r2, _0222D13C ; =0x04000010 + mov r1, #0 + ldr r0, _0222D140 ; =0x04000018 + str r1, [r2] + str r1, [r0] + ldr r3, _0222D144 ; =0x0400000C + ldr r0, _0222D130 ; =0x022430F4 + ldrh r2, [r3] + and r2, r2, #0x43 + orr r2, r2, #0xe10 + strh r2, [r3] + ldr r0, [r0] + ldrb r0, [r0, #0x40] + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _0222D120 +_0222CFA8: ; jump table + b _0222CFE0 ; case 0 + b _0222CFE0 ; case 1 + b _0222D120 ; case 2 + b _0222D120 ; case 3 + b _0222CFFC ; case 4 + b _0222CFFC ; case 5 + b _0222CFFC ; case 6 + b _0222D120 ; case 7 + b _0222D120 ; case 8 + b _0222CFFC ; case 9 + b _0222CFFC ; case 10 + b _0222D02C ; case 11 + b _0222D0C4 ; case 12 + b _0222D0D8 ; case 13 +_0222CFE0: + bl MOD13_02222F6C + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _0222D148 ; =MOD13_0222A190 + bl MOD13_02222FBC + b _0222D120 +_0222CFFC: + sub r4, r0, #4 + cmp r0, #9 + subhs r4, r4, #2 + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, r4 + mov r1, #0 + bl MOD13_02222F6C + ldr r0, _0222D14C ; =MOD13_0222AF48 + bl MOD13_02222FBC + b _0222D120 +_0222D02C: + bl MOD13_02234164 + mov r4, r0 + add r0, r4, #0xf0 + bl FUN_02095BE0 + strb r0, [r4, #0xd0] + ldrb r0, [r4, #0xf5] + cmp r0, #0 + beq _0222D084 + add r0, r4, #0xc0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xc4 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xf0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r4, #0xd0] +_0222D084: + ldrb r0, [r4, #0xf6] + cmp r0, #0 + beq _0222D0A0 + add r0, r4, #0xc8 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 +_0222D0A0: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _0222D150 ; =MOD13_022313C8 + bl MOD13_02222FBC + b _0222D120 +_0222D0C4: + mov r0, r1 + bl MOD13_02222FA8 + ldr r0, _0222D154 ; =MOD13_0222E1B0 + bl MOD13_02222FBC + b _0222D120 +_0222D0D8: + ldr r0, _0222D158 ; =0x022430E8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222D100 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222D15C ; =MOD13_02230714 + bl MOD13_02222FBC + b _0222D120 +_0222D100: + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222D160 ; =MOD13_02230EC4 + bl MOD13_02222FBC +_0222D120: + ldr r0, _0222D130 ; =0x022430F4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222D130: .word 0x022430F4 +_0222D134: .word 0x02240298 +_0222D138: .word 0x020C9480 +_0222D13C: .word 0x04000010 +_0222D140: .word 0x04000018 +_0222D144: .word 0x0400000C +_0222D148: .word MOD13_0222A190 +_0222D14C: .word MOD13_0222AF48 +_0222D150: .word MOD13_022313C8 +_0222D154: .word MOD13_0222E1B0 +_0222D158: .word 0x022430E8 +_0222D15C: .word MOD13_02230714 +_0222D160: .word MOD13_02230EC4 + + arm_func_start MOD13_0222D164 +MOD13_0222D164: ; 0x0222D164 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222D1B8 ; =MOD13_0222CE50 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D1B8: .word MOD13_0222CE50 + + arm_func_start MOD13_0222D1BC +MOD13_0222D1BC: ; 0x0222D1BC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02232F14 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222D1E0 ; =MOD13_0222D164 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D1E0: .word MOD13_0222D164 + + arm_func_start MOD13_0222D1E4 +MOD13_0222D1E4: ; 0x0222D1E4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222D484 ; =0x022430F4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x41] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r1, #0x41] + bl MOD13_02232F50 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0222D47C +_0222D224: ; jump table + b _0222D47C ; case 0 + b _0222D244 ; case 1 + b _0222D25C ; case 2 + b _0222D2BC ; case 3 + b _0222D37C ; case 4 + b _0222D46C ; case 5 + b _0222D3F4 ; case 6 + b _0222D46C ; case 7 +_0222D244: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x45] + ldmia sp!, {pc} +_0222D25C: + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x41] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_02232F64 + mov r1, #0x91 + mul r1, r0, r1 + ldr r2, _0222D488 ; =0x094F2095 + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + mov r3, r3, asr #1 + ldr r1, _0222D48C ; =0x022430F0 + add r3, r0, r3 + strh r3, [r1] + bl MOD13_0222CD8C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x41] + ldmia sp!, {pc} +_0222D2BC: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x45] + bl MOD13_02232F64 + mov r1, #0x91 + mul r1, r0, r1 + ldr r2, _0222D488 ; =0x094F2095 + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + mov r3, r3, asr #1 + ldr r1, _0222D48C ; =0x022430F0 + add r3, r0, r3 + mov r0, #0x13 + strh r3, [r1] + bl MOD13_0223424C + bl MOD13_0222CD8C + ldr r0, _0222D48C ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #0 + bne _0222D324 + bl MOD13_0222BDF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D324: + cmp r0, #0x10 + bge _0222D354 + mov r0, #0 + ldr r1, _0222D490 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D354: + mov r0, #0 + ldr r1, _0222D494 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D37C: + ldr r0, _0222D48C ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0 + bne _0222D3C4 + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x46] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x46] + ldmia sp!, {pc} +_0222D3C4: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222D490 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D3F4: + ldr r0, _0222D48C ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0x91 + bne _0222D43C + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x46] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x46] + ldmia sp!, {pc} +_0222D43C: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222D494 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D46C: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x46] +_0222D47C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D484: .word 0x022430F4 +_0222D488: .word 0x094F2095 +_0222D48C: .word 0x022430F0 +_0222D490: .word MOD13_0222C0E8 +_0222D494: .word MOD13_0222C03C + + arm_func_start MOD13_0222D498 +MOD13_0222D498: ; 0x0222D498 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02234164 + ldrb r0, [r0, #0xf6] + cmp r0, r4 + ldmeqia sp!, {r4, pc} + ldr r1, _0222D4CC ; =0x022430F4 + mov r0, r4 + ldr r1, [r1] + strb r4, [r1, #0x43] + bl MOD13_0223413C + bl MOD13_0222CD8C + ldmia sp!, {r4, pc} + .align 2, 0 +_0222D4CC: .word 0x022430F4 + + arm_func_start MOD13_0222D4D0 +MOD13_0222D4D0: ; 0x0222D4D0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02234164 + ldrb r1, [r0, #0xf5] + cmp r1, r4 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + cmp r4, #0 + beq _0222D514 + ldr r0, _0222D544 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x43] + cmp r0, #0 + movne r5, #1 + moveq r5, #0 + b _0222D528 +_0222D514: + ldr r1, _0222D544 ; =0x022430F4 + ldrb r2, [r0, #0xf6] + ldr r0, [r1] + mov r5, #0 + strb r2, [r0, #0x43] +_0222D528: + mov r0, r4 + bl MOD13_02234150 + mov r0, r5 + bl MOD13_0223413C + bl MOD13_0222CD8C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222D544: .word 0x022430F4 + + arm_func_start MOD13_0222D548 +MOD13_0222D548: ; 0x0222D548 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl MOD13_0222CA08 + cmp r0, #0 + bne _0222D570 + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D570: + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222D5E8 +_0222D57C: ; jump table + b _0222D5E8 ; case 0 + b _0222D5E8 ; case 1 + b _0222D5A0 ; case 2 + b _0222D5A0 ; case 3 + b _0222D5E8 ; case 4 + b _0222D5E8 ; case 5 + b _0222D5E8 ; case 6 + b _0222D5C4 ; case 7 + b _0222D5C4 ; case 8 +_0222D5A0: + mov r0, #6 + bl MOD13_0223424C + sub r0, r4, #2 + eors r0, r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_0222D4D0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D5C4: + mov r0, #6 + bl MOD13_0223424C + sub r0, r4, #7 + eors r0, r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_0222D498 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D5E8: + ldr r0, _0222D6B8 ; =0x022430F4 + sub r1, r4, #0xb + ldr r0, [r0] + cmp r1, #1 + strb r4, [r0, #0x40] + bhi _0222D664 + bl MOD13_0222BA38 + bl MOD13_0222B87C + cmp r0, #0 + bne _0222D644 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #6 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222D6BC ; =MOD13_0222B830 + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D644: + cmp r4, #0xb + bne _0222D658 + mov r0, #6 + bl MOD13_0223424C + b _0222D6A4 +_0222D658: + mov r0, #0xe + bl MOD13_0223424C + b _0222D6A4 +_0222D664: + cmp r4, #0xd + bne _0222D67C + bl MOD13_0222BA38 + mov r0, #7 + bl MOD13_0223424C + b _0222D6A4 +_0222D67C: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222D6C0 ; =0x0223F32C + ldrb r0, [r0, r4] + bl MOD13_0222C1F4 + mov r2, r0 + mov r0, #0 + mov r1, #1 + bl MOD13_0222C8E4 + bl MOD13_0222C4C8 +_0222D6A4: + bl MOD13_02232F14 + ldr r0, _0222D6C4 ; =MOD13_0222D1BC + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222D6B8: .word 0x022430F4 +_0222D6BC: .word MOD13_0222B830 +_0222D6C0: .word 0x0223F32C +_0222D6C4: .word MOD13_0222D1BC + + arm_func_start MOD13_0222D6C8 +MOD13_0222D6C8: ; 0x0222D6C8 + stmdb sp!, {r4, lr} + bl MOD13_02234164 + bl MOD13_0222C238 + mov r4, r0 + cmp r4, #0xe + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_0222CA08 + cmp r0, #0 + bne _0222D700 + mov r0, #9 + bl MOD13_0223424C + mov r0, #1 + ldmia sp!, {r4, pc} +_0222D700: + mov r0, r4 + bl MOD13_0222BDB8 + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222D73C +_0222D714: ; jump table + b _0222D73C ; case 0 + b _0222D73C ; case 1 + b _0222D738 ; case 2 + b _0222D738 ; case 3 + b _0222D73C ; case 4 + b _0222D73C ; case 5 + b _0222D73C ; case 6 + b _0222D738 ; case 7 + b _0222D738 ; case 8 +_0222D738: + bl MOD13_0222B91C +_0222D73C: + mov r0, r4 + bl MOD13_0222D548 + mov r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222D74C +MOD13_0222D74C: ; 0x0222D74C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222DA0C ; =0x022430F4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x45] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222D6C8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222D7B0 + ldr r0, _0222DA10 ; =0x022430E4 + ldrb r0, [r0] + bl MOD13_0222D548 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D7B0: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222D7E8 + mov r0, #7 + bl MOD13_0223424C + ldr r1, _0222DA0C ; =0x022430F4 + ldr r0, _0222DA14 ; =MOD13_0222D1BC + ldr r1, [r1] + mov r2, #0xd + strb r2, [r1, #0x40] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222D7E8: + mov r0, #0x200 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D870 + ldr r0, _0222DA18 ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0x91 + bne _0222D840 + ldr r0, _0222DA0C ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222DA0C ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {pc} +_0222D840: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222DA1C ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222DA0C ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D870: + mov r0, #0x200 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x100 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D91C + ldr r0, _0222DA18 ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0 + bne _0222D8EC + ldr r0, _0222DA0C ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222DA0C ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {pc} +_0222D8EC: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222DA20 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222DA0C ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D91C: + mov r0, #0x100 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D960 + mov r0, #1 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D960: + mov r0, #0x40 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D9A4 + mov r0, #3 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D9A4: + mov r0, #0x80 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D9E8 + mov r0, #0 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D9E8: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #2 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DA0C: .word 0x022430F4 +_0222DA10: .word 0x022430E4 +_0222DA14: .word MOD13_0222D1BC +_0222DA18: .word 0x022430F0 +_0222DA1C: .word MOD13_0222C03C +_0222DA20: .word MOD13_0222C0E8 + + arm_func_start MOD13_0222DA24 +MOD13_0222DA24: ; 0x0222DA24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222D74C + bl MOD13_0222D1E4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222DA7C ; =MOD13_0222DA24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DA7C: .word MOD13_0222DA24 + + arm_func_start MOD13_0222DA80 +MOD13_0222DA80: ; 0x0222DA80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AEF4 + ldr r0, _0222DAD8 ; =0x0222DA3C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DAD8: .word 0x0222DA3C + + arm_func_start MOD13_0222DADC +MOD13_0222DADC: ; 0x0222DADC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r2, _0222DB28 ; =0x022430F0 + mov r3, #0 + ldr r1, _0222DB2C ; =0x022430E4 + ldr r0, _0222DB30 ; =0x022430EC + strh r3, [r2] + strb r3, [r1] + strb r3, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DB28: .word 0x022430F0 +_0222DB2C: .word 0x022430E4 +_0222DB30: .word 0x022430EC + + arm_func_start MOD13_0222DB34 +MOD13_0222DB34: ; 0x0222DB34 + stmdb sp!, {lr} + sub sp, sp, #0x44 + ldr r3, _0222DCFC ; =0x0223F39C + add ip, sp, #0 + mov r2, #0xb +_0222DB48: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [ip], #1 + strb r0, [ip], #1 + bne _0222DB48 + ldrb r0, [r3] + ldr r3, _0222DD00 ; =0x0223F36C + add lr, sp, #0x17 + strb r0, [ip] + mov r2, #0xa +_0222DB74: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [lr], #1 + strb r0, [lr], #1 + bne _0222DB74 + ldrb r0, [r3] + ldr ip, _0222DD04 ; =0x0223F384 + add r3, sp, #0x2c + strb r0, [lr] + mov r2, #0xb +_0222DBA0: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _0222DBA0 + ldr ip, _0222DD08 ; =0x0400000C + ldr r2, _0222DD0C ; =0x00000E18 + ldrh r3, [ip] + ldr r0, _0222DD10 ; =0x022402B0 + ldr r1, _0222DD14 ; =0x020C9480 + and r3, r3, #0x43 + orr r2, r3, r2 + strh r2, [ip] + bl MOD13_0221F174 + ldr r0, _0222DD18 ; =0x022402C4 + ldr r1, _0222DD1C ; =0x020C8C7C + bl MOD13_0221F174 + ldr r0, _0222DD20 ; =0x022402DC + ldr r1, _0222DD24 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r1, _0222DD28 ; =0x020C9550 + add r0, sp, #0x17 + bl MOD13_0221F174 + ldr r0, _0222DD2C ; =0x022402F4 + ldr r1, _0222DD30 ; =0x020C8FBC + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #8] + ldr r0, [r1] + ldr r0, [r0, #8] + bl MOD13_02232918 + bl MOD13_022328D0 + add r0, sp, #0x17 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r1, [r1] + str r0, [r1, #0xc] + add r0, sp, #0x2c + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r2, _0222DD38 ; =0x04001008 + ldr r3, [r1] + ldr r1, _0222DD3C ; =0x0400100A + str r0, [r3, #0x10] + ldrh r0, [r2] + ldr ip, _0222DD40 ; =0x04000008 + ldr r3, _0222DD44 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + ldr r2, _0222DD08 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222DD48 ; =0x0400000E + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r1] + add sp, sp, #0x44 + ldmia sp!, {pc} + .align 2, 0 +_0222DCFC: .word 0x0223F39C +_0222DD00: .word 0x0223F36C +_0222DD04: .word 0x0223F384 +_0222DD08: .word 0x0400000C +_0222DD0C: .word 0x00000E18 +_0222DD10: .word 0x022402B0 +_0222DD14: .word 0x020C9480 +_0222DD18: .word 0x022402C4 +_0222DD1C: .word 0x020C8C7C +_0222DD20: .word 0x022402DC +_0222DD24: .word 0x020C8D4C +_0222DD28: .word 0x020C9550 +_0222DD2C: .word 0x022402F4 +_0222DD30: .word 0x020C8FBC +_0222DD34: .word 0x022430F4 +_0222DD38: .word 0x04001008 +_0222DD3C: .word 0x0400100A +_0222DD40: .word 0x04000008 +_0222DD44: .word 0x0400000A +_0222DD48: .word 0x0400000E + + arm_func_start MOD13_0222DD4C +MOD13_0222DD4C: ; 0x0222DD4C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + bl MOD13_02234164 + mov r5, r0 + mov r0, #0x48 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0222DF38 ; =0x022430F4 + mov r2, #0xc + str r0, [r1] + ldrb r3, [r5, #0xf6] + strb r3, [r0, #0x43] + ldr r0, [r1] + strb r2, [r0, #0x42] + bl MOD13_0222DADC + bl MOD13_0222DB34 + ldr r0, _0222DF3C ; =0x022430E8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222DDBC + bl MOD13_02222F34 + ldr r1, _0222DF40 ; =0x0223F2F4 + ldrb r2, [r5, #0xf4] + ldrsb r1, [r1, r0] + mov r0, #0x30 + add r2, r2, #1 + bl MOD13_0221EE98 + b _0222DDCC +_0222DDBC: + mov r0, #0x45 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_0222DDCC: + mov r0, #1 + bl MOD13_0221F124 + bl MOD13_0221F48C + ldr r0, _0222DF44 ; =0x022430F0 + mov r1, #0x37 + ldrh r3, [r0] + ldr r2, _0222DF48 ; =0xE1FC780F + mov r0, #2 + mul r4, r3, r1 + smull r1, r3, r2, r4 + add r3, r4, r3 + mov r3, r3, asr #7 + mov r1, r4, lsr #0x1f + add r3, r1, r3 + str r3, [sp] + mov r1, #0x55 + mov r2, #0xf1 + mov r3, #0x41 + bl MOD13_02232FB8 + mov r0, #0 + mov r1, #1 + bl MOD13_0223A7F0 + ldr r6, _0222DF38 ; =0x022430F4 + mov r4, #0 + ldr r2, [r6] + ldr r1, _0222DF4C ; =0x0223F348 + str r0, [r2, #0x14] + ldrb r8, [r1, #1] + mov r7, r4 +_0222DE40: + mov r0, r7 + mov r1, r8 + bl MOD13_02239E54 + ldr r1, [r6] + add r1, r1, r4, lsl #2 + add r4, r4, #1 + str r0, [r1, #0x18] + cmp r4, #7 + blt _0222DE40 + ldrb r0, [r5, #0xe7] + cmp r0, #1 + beq _0222DE7C + cmp r0, #2 + beq _0222DEB0 + b _0222DEE0 +_0222DE7C: + mov r0, #0 + mov r1, #0x50 + bl MOD13_02239E54 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #0x34] + ldr r0, [r1] + ldr r1, [r0, #0x34] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + b _0222DEE0 +_0222DEB0: + mov r0, #0 + mov r1, #0x51 + bl MOD13_02239E54 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #0x34] + ldr r0, [r1] + ldr r1, [r0, #0x34] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] +_0222DEE0: + ldr r1, _0222DF50 ; =MOD13_0222BFA8 + mov r0, #1 + mov r2, #0 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r2, _0222DF38 ; =0x022430F4 + ldr r1, _0222DF54 ; =MOD13_0222B9DC + ldr r2, [r2] + mov r3, #0x78 + str r0, [r2, #0x3c] + mov r0, #0 + mov r2, r0 + bl MOD13_0223C1C4 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r1, [r1] + str r0, [r1] + bl MOD13_0222CD8C + bl MOD13_0222BEC0 + ldr r0, _0222DF58 ; =MOD13_0222DA80 + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222DF38: .word 0x022430F4 +_0222DF3C: .word 0x022430E8 +_0222DF40: .word 0x0223F2F4 +_0222DF44: .word 0x022430F0 +_0222DF48: .word 0xE1FC780F +_0222DF4C: .word 0x0223F348 +_0222DF50: .word MOD13_0222BFA8 +_0222DF54: .word MOD13_0222B9DC +_0222DF58: .word MOD13_0222DA80 + + arm_func_start MOD13_0222DF5C +MOD13_0222DF5C: ; 0x0222DF5C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222DFC4 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DFC4: .word MOD13_02230714 + + arm_func_start MOD13_0222DFC8 +MOD13_0222DFC8: ; 0x0222DFC8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E008 ; =MOD13_0222DF5C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E008: .word MOD13_0222DF5C + + arm_func_start MOD13_0222E00C +MOD13_0222E00C: ; 0x0222E00C + bx lr + + arm_func_start MOD13_0222E010 +MOD13_0222E010: ; 0x0222E010 + bx lr + + arm_func_start MOD13_0222E014 +MOD13_0222E014: ; 0x0222E014 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222E010 + bl MOD13_0222E00C + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E044 ; =MOD13_0222DFC8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E044: .word MOD13_0222DFC8 + + arm_func_start MOD13_0222E048 +MOD13_0222E048: ; 0x0222E048 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov ip, #0 + mov r0, #0x44 + mov r1, #5 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222E0A4 ; =MOD13_0222E014 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E0A4: .word MOD13_0222E014 + + arm_func_start MOD13_0222E0A8 +MOD13_0222E0A8: ; 0x0222E0A8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _0222E100 ; =MOD13_0222E048 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E100: .word MOD13_0222E048 + + arm_func_start MOD13_0222E104 +MOD13_0222E104: ; 0x0222E104 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E188 ; =0x02240308 + ldr r1, _0222E18C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222E190 ; =0x02240320 + ldr r1, _0222E194 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222E198 ; =0x02240338 + ldr r1, _0222E19C ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _0222E1A0 ; =0x04001008 + ldr r3, _0222E1A4 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _0222E1A8 ; =0x0400000A + ldr r1, _0222E1AC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E188: .word 0x02240308 +_0222E18C: .word 0x020C8D4C +_0222E190: .word 0x02240320 +_0222E194: .word 0x020C9550 +_0222E198: .word 0x02240338 +_0222E19C: .word 0x020C908C +_0222E1A0: .word 0x04001008 +_0222E1A4: .word 0x0400100A +_0222E1A8: .word 0x0400000A +_0222E1AC: .word 0x0400000C + + arm_func_start MOD13_0222E1B0 +MOD13_0222E1B0: ; 0x0222E1B0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222E104 + bl MOD13_0221F4AC + bl MOD13_02233B3C + ldr r0, _0222E1D4 ; =MOD13_0222E0A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E1D4: .word MOD13_0222E0A8 + + arm_func_start MOD13_0222E1D8 +MOD13_0222E1D8: ; 0x0222E1D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E200 ; =MOD13_0222E430 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E200: .word MOD13_0222E430 + + arm_func_start MOD13_0222E204 +MOD13_0222E204: ; 0x0222E204 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222E238 ; =MOD13_0222E1D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E238: .word MOD13_0222E1D8 + + arm_func_start MOD13_0222E23C +MOD13_0222E23C: ; 0x0222E23C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #2 + beq _0222E260 + cmp r0, #4 + beq _0222E27C + add sp, sp, #4 + ldmia sp!, {pc} +_0222E260: + ldr r1, _0222E2C4 ; =0x022430F8 + mov r2, #1 + ldr r0, _0222E2C8 ; =MOD13_0222E430 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E27C: + ldr r0, _0222E2C4 ; =0x022430F8 + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E2CC ; =MOD13_0222E204 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E2C4: .word 0x022430F8 +_0222E2C8: .word MOD13_0222E430 +_0222E2CC: .word MOD13_0222E204 + + arm_func_start MOD13_0222E2D0 +MOD13_0222E2D0: ; 0x0222E2D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E310 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222E310: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E34C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222E34C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E388 + bl MOD13_02223BE0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222E3A8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E388: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222E3AC ; =MOD13_0222EB58 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E3A4: .word 0x022430F8 +_0222E3A8: .word MOD13_02230EC4 +_0222E3AC: .word MOD13_0222EB58 + + arm_func_start MOD13_0222E3B0 +MOD13_0222E3B0: ; 0x0222E3B0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E428 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E3E0 + bl MOD13_0221ED28 +_0222E3E0: + ldr r0, _0222E428 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E404 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222E404: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E42C ; =MOD13_0222E2D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E428: .word 0x022430F8 +_0222E42C: .word MOD13_0222E2D0 + + arm_func_start MOD13_0222E430 +MOD13_0222E430: ; 0x0222E430 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222E454 ; =MOD13_0222E3B0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E454: .word MOD13_0222E3B0 + + arm_func_start MOD13_0222E458 +MOD13_0222E458: ; 0x0222E458 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222E48C ; =MOD13_0222E430 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E48C: .word MOD13_0222E430 + + arm_func_start MOD13_0222E490 +MOD13_0222E490: ; 0x0222E490 + bx lr + + arm_func_start MOD13_0222E494 +MOD13_0222E494: ; 0x0222E494 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222E4BC + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E4BC: + bl MOD13_0222E68C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222E23C + bl MOD13_0222E494 + bl MOD13_0222E490 + bl MOD13_0222E458 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222E534 ; =0x0222E4DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E534: .word 0x0222E4DC + + arm_func_start MOD13_0222E538 +MOD13_0222E538: ; 0x0222E538 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222E56C ; =0x0222E504 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E56C: .word 0x0222E504 + + arm_func_start MOD13_0222E570 +MOD13_0222E570: ; 0x0222E570 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222E5A8 ; =MOD13_0222E538 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E5A8: .word MOD13_0222E538 + + arm_func_start MOD13_0222E5AC +MOD13_0222E5AC: ; 0x0222E5AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E62C ; =0x0224034C + ldr r1, _0222E630 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222E634 ; =0x04001008 + ldr ip, _0222E638 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222E63C ; =0x04000008 + ldr r2, _0222E640 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222E644 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E62C: .word 0x0224034C +_0222E630: .word 0x020C908C +_0222E634: .word 0x04001008 +_0222E638: .word 0x0400100A +_0222E63C: .word 0x04000008 +_0222E640: .word 0x0400000A +_0222E644: .word 0x0400000C + + arm_func_start MOD13_0222E648 +MOD13_0222E648: ; 0x0222E648 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E684 ; =0x022430F8 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222E5AC + bl MOD13_0221F4AC + mov r0, #0x25 + bl MOD13_0221F070 + mov r0, #1 + bl MOD13_0221E694 + ldr r0, _0222E688 ; =MOD13_0222E570 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E684: .word 0x022430F8 +_0222E688: .word MOD13_0222E570 + + arm_func_start MOD13_0222E68C +MOD13_0222E68C: ; 0x0222E68C + ldr r0, _0222E6A8 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222E6A8: .word 0x027FFFA8 + + arm_func_start MOD13_0222E6AC +MOD13_0222E6AC: ; 0x0222E6AC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E6D4 ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E6D4: .word MOD13_0222E940 + + arm_func_start MOD13_0222E6D8 +MOD13_0222E6D8: ; 0x0222E6D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222E70C ; =MOD13_0222E6AC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E70C: .word MOD13_0222E6AC + + arm_func_start MOD13_0222E710 +MOD13_0222E710: ; 0x0222E710 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #3 + beq _0222E73C + cmp r0, #4 + beq _0222E760 + cmp r0, #5 + beq _0222E7A8 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E73C: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #1 + strb r1, [r0] + bl MOD13_022341E8 + bl MOD13_02223AF8 + ldr r0, _0222E7F4 ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E760: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E7F8 ; =MOD13_0222E6D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E7A8: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E7F8 ; =MOD13_0222E6D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E7F0: .word 0x022430FC +_0222E7F4: .word MOD13_0222E940 +_0222E7F8: .word MOD13_0222E6D8 + + arm_func_start MOD13_0222E7FC +MOD13_0222E7FC: ; 0x0222E7FC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E83C + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222E83C: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E878 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222E878: + bl MOD13_02223BE0 + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E8A8 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222E8C8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E8A8: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222E8CC ; =MOD13_0222EDE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E8C4: .word 0x022430FC +_0222E8C8: .word MOD13_02230EC4 +_0222E8CC: .word MOD13_0222EDE4 + + arm_func_start MOD13_0222E8D0 +MOD13_0222E8D0: ; 0x0222E8D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0222E938 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E914 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222E914: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E93C ; =MOD13_0222E7FC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E938: .word 0x022430FC +_0222E93C: .word MOD13_0222E7FC + + arm_func_start MOD13_0222E940 +MOD13_0222E940: ; 0x0222E940 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222E964 ; =MOD13_0222E8D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E964: .word MOD13_0222E8D0 + + arm_func_start MOD13_0222E968 +MOD13_0222E968: ; 0x0222E968 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222E99C ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E99C: .word MOD13_0222E940 + + arm_func_start MOD13_0222E9A0 +MOD13_0222E9A0: ; 0x0222E9A0 + bx lr + + arm_func_start MOD13_0222E9A4 +MOD13_0222E9A4: ; 0x0222E9A4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222E9CC + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E9CC: + bl MOD13_0222EB9C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222E710 + bl MOD13_0222E9A4 + bl MOD13_0222E9A0 + bl MOD13_0222E968 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222EA44 ; =0x0222E9EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EA44: .word 0x0222E9EC + + arm_func_start MOD13_0222EA48 +MOD13_0222EA48: ; 0x0222EA48 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222EA7C ; =0x0222EA14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EA7C: .word 0x0222EA14 + + arm_func_start MOD13_0222EA80 +MOD13_0222EA80: ; 0x0222EA80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222EAB8 ; =MOD13_0222EA48 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EAB8: .word MOD13_0222EA48 + + arm_func_start MOD13_0222EABC +MOD13_0222EABC: ; 0x0222EABC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EB3C ; =0x02240360 + ldr r1, _0222EB40 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222EB44 ; =0x04001008 + ldr ip, _0222EB48 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222EB4C ; =0x04000008 + ldr r2, _0222EB50 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222EB54 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EB3C: .word 0x02240360 +_0222EB40: .word 0x020C908C +_0222EB44: .word 0x04001008 +_0222EB48: .word 0x0400100A +_0222EB4C: .word 0x04000008 +_0222EB50: .word 0x0400000A +_0222EB54: .word 0x0400000C + + arm_func_start MOD13_0222EB58 +MOD13_0222EB58: ; 0x0222EB58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EB94 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_0222EABC + bl MOD13_0221F4AC + mov r0, #0x2a + bl MOD13_0221F070 + mov r0, #2 + bl MOD13_0221E694 + ldr r0, _0222EB98 ; =MOD13_0222EA80 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EB94: .word 0x022430FC +_0222EB98: .word MOD13_0222EA80 + + arm_func_start MOD13_0222EB9C +MOD13_0222EB9C: ; 0x0222EB9C + ldr r0, _0222EBB8 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222EBB8: .word 0x027FFFA8 + + arm_func_start MOD13_0222EBBC +MOD13_0222EBBC: ; 0x0222EBBC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EBF4 ; =0x02243100 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _0222EBF8 ; =MOD13_0222EC7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EBF4: .word 0x02243100 +_0222EBF8: .word MOD13_0222EC7C + + arm_func_start MOD13_0222EBFC +MOD13_0222EBFC: ; 0x0222EBFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _0222EC78 ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EC78: .word MOD13_0223197C + + arm_func_start MOD13_0222EC7C +MOD13_0222EC7C: ; 0x0222EC7C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222ECBC ; =MOD13_0222EBFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ECBC: .word MOD13_0222EBFC + + arm_func_start MOD13_0222ECC0 +MOD13_0222ECC0: ; 0x0222ECC0 + bx lr + + arm_func_start MOD13_0222ECC4 +MOD13_0222ECC4: ; 0x0222ECC4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222EBBC + bl MOD13_0222ECC0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222ED08 ; =MOD13_0222ECC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ED08: .word MOD13_0222ECC4 + + arm_func_start MOD13_0222ED0C +MOD13_0222ED0C: ; 0x0222ED0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222ED44 ; =0x0222ECDC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ED44: .word 0x0222ECDC + + arm_func_start MOD13_0222ED48 +MOD13_0222ED48: ; 0x0222ED48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EDC8 ; =0x02240374 + ldr r1, _0222EDCC ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222EDD0 ; =0x04001008 + ldr ip, _0222EDD4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222EDD8 ; =0x04000008 + ldr r2, _0222EDDC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222EDE0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EDC8: .word 0x02240374 +_0222EDCC: .word 0x020C908C +_0222EDD0: .word 0x04001008 +_0222EDD4: .word 0x0400100A +_0222EDD8: .word 0x04000008 +_0222EDDC: .word 0x0400000A +_0222EDE0: .word 0x0400000C + + arm_func_start MOD13_0222EDE4 +MOD13_0222EDE4: ; 0x0222EDE4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EE20 ; =0x02243100 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222ED48 + bl MOD13_0221F4AC + mov r0, #0x26 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _0222EE24 ; =MOD13_0222ED0C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE20: .word 0x02243100 +_0222EE24: .word MOD13_0222ED0C + + arm_func_start MOD13_0222EE28 +MOD13_0222EE28: ; 0x0222EE28 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222EE50 ; =MOD13_0222F080 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE50: .word MOD13_0222F080 + + arm_func_start MOD13_0222EE54 +MOD13_0222EE54: ; 0x0222EE54 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222EE88 ; =MOD13_0222EE28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE88: .word MOD13_0222EE28 + + arm_func_start MOD13_0222EE8C +MOD13_0222EE8C: ; 0x0222EE8C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #1 + beq _0222EEB0 + cmp r0, #4 + beq _0222EECC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EEB0: + ldr r1, _0222EF14 ; =0x02243104 + mov r2, #1 + ldr r0, _0222EF18 ; =MOD13_0222F080 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EECC: + ldr r0, _0222EF14 ; =0x02243104 + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222EF1C ; =MOD13_0222EE54 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EF14: .word 0x02243104 +_0222EF18: .word MOD13_0222F080 +_0222EF1C: .word MOD13_0222EE54 + + arm_func_start MOD13_0222EF20 +MOD13_0222EF20: ; 0x0222EF20 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EF60 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222EF60: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EF9C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222EF9C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EFD8 + bl MOD13_02223BE0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222EFF8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EFD8: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222EFFC ; =MOD13_0222E648 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EFF4: .word 0x02243104 +_0222EFF8: .word MOD13_02230EC4 +_0222EFFC: .word MOD13_0222E648 + + arm_func_start MOD13_0222F000 +MOD13_0222F000: ; 0x0222F000 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222F078 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222F030 + bl MOD13_0221ED28 +_0222F030: + ldr r0, _0222F078 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222F054 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222F054: + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222F07C ; =MOD13_0222EF20 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F078: .word 0x02243104 +_0222F07C: .word MOD13_0222EF20 + + arm_func_start MOD13_0222F080 +MOD13_0222F080: ; 0x0222F080 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222F0A4 ; =MOD13_0222F000 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F0A4: .word MOD13_0222F000 + + arm_func_start MOD13_0222F0A8 +MOD13_0222F0A8: ; 0x0222F0A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222F0DC ; =MOD13_0222F080 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F0DC: .word MOD13_0222F080 + + arm_func_start MOD13_0222F0E0 +MOD13_0222F0E0: ; 0x0222F0E0 + bx lr + + arm_func_start MOD13_0222F0E4 +MOD13_0222F0E4: ; 0x0222F0E4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222F10C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222F10C: + bl MOD13_0222F35C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222EE8C + bl MOD13_0222F0E4 + bl MOD13_0222F0E0 + bl MOD13_0222F0A8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222F184 ; =0x0222F12C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F184: .word 0x0222F12C + + arm_func_start MOD13_0222F188 +MOD13_0222F188: ; 0x0222F188 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02223C0C + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222F1D4 ; =0x0222F154 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F1D4: .word 0x0222F154 + + arm_func_start MOD13_0222F1D8 +MOD13_0222F1D8: ; 0x0222F1D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222F230 ; =MOD13_0222F188 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F230: .word MOD13_0222F188 + + arm_func_start MOD13_0222F234 +MOD13_0222F234: ; 0x0222F234 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F2CC ; =0x02240388 + ldr r1, _0222F2D0 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222F2D4 ; =0x022403A0 + ldr r1, _0222F2D8 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222F2DC ; =0x022403B8 + ldr r1, _0222F2E0 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222F2E4 ; =0x04001008 + ldr ip, _0222F2E8 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222F2EC ; =0x04000008 + ldr r2, _0222F2F0 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222F2F4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F2CC: .word 0x02240388 +_0222F2D0: .word 0x020C8D4C +_0222F2D4: .word 0x022403A0 +_0222F2D8: .word 0x020C9550 +_0222F2DC: .word 0x022403B8 +_0222F2E0: .word 0x020C908C +_0222F2E4: .word 0x04001008 +_0222F2E8: .word 0x0400100A +_0222F2EC: .word 0x04000008 +_0222F2F0: .word 0x0400000A +_0222F2F4: .word 0x0400000C + + arm_func_start MOD13_0222F2F8 +MOD13_0222F2F8: ; 0x0222F2F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F354 ; =0x02243104 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222F234 + bl MOD13_0221F4AC + mov r0, #0x37 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x24 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _0222F358 ; =MOD13_0222F1D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F354: .word 0x02243104 +_0222F358: .word MOD13_0222F1D8 + + arm_func_start MOD13_0222F35C +MOD13_0222F35C: ; 0x0222F35C + ldr r0, _0222F378 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222F378: .word 0x027FFFA8 + + arm_func_start MOD13_0222F37C +MOD13_0222F37C: ; 0x0222F37C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222F3A4 ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F3A4: .word MOD13_0222F520 + + arm_func_start MOD13_0222F3A8 +MOD13_0222F3A8: ; 0x0222F3A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222F3DC ; =MOD13_0222F37C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F3DC: .word MOD13_0222F37C + + arm_func_start MOD13_0222F3E0 +MOD13_0222F3E0: ; 0x0222F3E0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_0222F420: + bl MOD13_0223339C + cmp r0, #0 + beq _0222F420 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222F4B8 ; =0x02243108 + ldrb r0, [r0] + cmp r0, #1 + beq _0222F490 + bl MOD13_02233570 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222F4BC ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222F490: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _0222F4C0 ; =MOD13_022295D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F4B8: .word 0x02243108 +_0222F4BC: .word MOD13_02230EC4 +_0222F4C0: .word MOD13_022295D8 + + arm_func_start MOD13_0222F4C4 +MOD13_0222F4C4: ; 0x0222F4C4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222F51C ; =MOD13_0222F3E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F51C: .word MOD13_0222F3E0 + + arm_func_start MOD13_0222F520 +MOD13_0222F520: ; 0x0222F520 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222F544 ; =MOD13_0222F4C4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F544: .word MOD13_0222F4C4 + + arm_func_start MOD13_0222F548 +MOD13_0222F548: ; 0x0222F548 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222F57C ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F57C: .word MOD13_0222F520 + + arm_func_start MOD13_0222F580 +MOD13_0222F580: ; 0x0222F580 + bx lr + + arm_func_start MOD13_0222F584 +MOD13_0222F584: ; 0x0222F584 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022341E8 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0222F5B4 +MOD13_0222F5B4: ; 0x0222F5B4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _0222F6D0 ; =0x0224310C + ldrh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + ldrh r0, [r0] + cmp r0, #0x12c + addlo sp, sp, #0xc + ldmloia sp!, {pc} + bl MOD13_022341E8 + add r0, sp, #4 + bl MOD13_0223333C + cmp r0, #0 + bne _0222F634 + ldr r0, _0222F6D4 ; =0x02243108 + mov r3, #2 + strb r3, [r0] + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xf + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #0x12 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r0, _0222F6D8 ; =MOD13_0222F3A8 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_0222F634: + cmp r0, #0 + mov r3, #0 + ble _0222F660 + ldr r2, [sp, #4] +_0222F644: + ldrb r1, [r2, #0x28] + cmp r1, #2 + bne _0222F660 + add r3, r3, #1 + cmp r3, r0 + add r2, r2, #0x2a + blt _0222F644 +_0222F660: + cmp r3, r0 + bne _0222F6AC + ldr r0, _0222F6D4 ; =0x02243108 + mov r3, #3 + strb r3, [r0] + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #0x12 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r0, _0222F6D8 ; =MOD13_0222F3A8 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_0222F6AC: + ldr r1, _0222F6D4 ; =0x02243108 + mov r2, #1 + mov r0, #0xf + strb r2, [r1] + bl MOD13_0223424C + ldr r0, _0222F6DC ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0222F6D0: .word 0x0224310C +_0222F6D4: .word 0x02243108 +_0222F6D8: .word MOD13_0222F3A8 +_0222F6DC: .word MOD13_0222F520 + + arm_func_start MOD13_0222F6E0 +MOD13_0222F6E0: ; 0x0222F6E0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222F584 + bl MOD13_0222F580 + bl MOD13_0222F548 + bl MOD13_0222F5B4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222F730 ; =MOD13_0222F6E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F730: .word MOD13_0222F6E0 + + arm_func_start MOD13_0222F734 +MOD13_0222F734: ; 0x0222F734 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222F77C ; =0x0222F700 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F77C: .word 0x0222F700 + + arm_func_start MOD13_0222F780 +MOD13_0222F780: ; 0x0222F780 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222F7D8 ; =MOD13_0222F734 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F7D8: .word MOD13_0222F734 + + arm_func_start MOD13_0222F7DC +MOD13_0222F7DC: ; 0x0222F7DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F874 ; =0x022403CC + ldr r1, _0222F878 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222F87C ; =0x022403E4 + ldr r1, _0222F880 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222F884 ; =0x022403FC + ldr r1, _0222F888 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222F88C ; =0x04001008 + ldr ip, _0222F890 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222F894 ; =0x04000008 + ldr r2, _0222F898 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222F89C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F874: .word 0x022403CC +_0222F878: .word 0x020C8D4C +_0222F87C: .word 0x022403E4 +_0222F880: .word 0x020C9550 +_0222F884: .word 0x022403FC +_0222F888: .word 0x020C908C +_0222F88C: .word 0x04001008 +_0222F890: .word 0x0400100A +_0222F894: .word 0x04000008 +_0222F898: .word 0x0400000A +_0222F89C: .word 0x0400000C + + arm_func_start MOD13_0222F8A0 +MOD13_0222F8A0: ; 0x0222F8A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222F90C ; =0x0224310C + mov r2, #0 + ldr r0, _0222F910 ; =0x02243108 + strh r2, [r1] + strb r2, [r0] + bl MOD13_0222F7DC + mov r0, #0x33 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + bl MOD13_0221F4AC + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x33 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_022335AC + bl MOD13_0223348C + mov r0, #0xa + bl MOD13_0223424C + ldr r0, _0222F914 ; =MOD13_0222F780 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F90C: .word 0x0224310C +_0222F910: .word 0x02243108 +_0222F914: .word MOD13_0222F780 + + arm_func_start MOD13_0222F918 +MOD13_0222F918: ; 0x0222F918 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r2, _0222F9EC ; =0x0223F400 + ldr r1, _0222F9F0 ; =0x0223F404 + ldrb r7, [r2] + ldrb r6, [r2, #1] + ldrb r5, [r2, #2] + ldrb r4, [r2, #3] + ldrb lr, [r1] + ldrb ip, [r1, #1] + ldrb r3, [r1, #2] + ldrb r2, [r1, #3] + ldr r0, _0222F9F4 ; =0x02243110 + strb r7, [sp] + ldrb r1, [r0] + strb r2, [sp, #7] + strb r6, [sp, #1] + strb r5, [sp, #2] + strb r4, [sp, #3] + strb lr, [sp, #4] + strb ip, [sp, #5] + strb r3, [sp, #6] + cmp r1, #3 + add r2, sp, #0 + addhi sp, sp, #0xc + ldmhiia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0222F9F8 ; =0x02243114 + ldrb r1, [r2, r1] + ldr r0, [r0] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + ldr r0, _0222F9F4 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD13_02233D0C + ldr r1, _0222F9F4 ; =0x02243110 + ldr r2, _0222F9F8 ; =0x02243114 + ldrb r3, [r1] + ldr r2, [r2] + cmp r0, #2 + movgt r0, #3 + add r1, sp, #4 + add r2, r2, r3, lsl #2 + ldrb r3, [r1, r0] + ldr r0, [r2, #4] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222F9EC: .word 0x0223F400 +_0222F9F0: .word 0x0223F404 +_0222F9F4: .word 0x02243110 +_0222F9F8: .word 0x02243114 + + arm_func_start MOD13_0222F9FC +MOD13_0222F9FC: ; 0x0222F9FC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222FA28 ; =MOD13_022303D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FA28: .word MOD13_022303D8 + + arm_func_start MOD13_0222FA2C +MOD13_0222FA2C: ; 0x0222FA2C + stmdb sp!, {r4, lr} + ldr r0, _0222FB8C ; =0x02243110 + ldrb r0, [r0] + sub r4, r0, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _0222FB00 + cmp r0, #1 + ldmneia sp!, {r4, pc} + mov r0, #0xe + bl MOD13_0223424C + mov r0, r4 + bl MOD13_022338B8 + ldr r0, _0222FB90 ; =0x02243114 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + bl MOD13_02239ADC + ldr r1, _0222FB94 ; =0x0223F3FC + mov r2, r0 + ldrb r1, [r1, #3] + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _0222FB90 ; =0x02243114 + mov ip, r4, lsl #2 + ldr r0, [r0] + mvn r1, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + ldr r2, _0222FB98 ; =0x0223F428 + ldr r3, _0222FB9C ; =0x0223F42A + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldr r0, _0222FB90 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + bl MOD13_02239814 + ldr r0, _0222FB90 ; =0x02243114 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239AE8 + mov r1, #0 + ldr r0, _0222FB90 ; =0x02243114 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x10] + b _0222FB7C +_0222FB00: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222FB90 ; =0x02243114 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239ADC + mov r2, r0 + mov r0, #0 + mov r1, #0x11 + bl MOD13_02239E8C + ldr r0, _0222FB90 ; =0x02243114 + add r1, r4, #3 + ldr r0, [r0] + mov ip, r1, lsl #2 + ldr r2, _0222FB98 ; =0x0223F428 + ldr r3, _0222FB9C ; =0x0223F42A + add r0, r0, r4, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + ldr r0, [r0, #0x10] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0222FB90 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239814 +_0222FB7C: + bl MOD13_02235EB0 + ldr r0, _0222FBA0 ; =MOD13_0222F9FC + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_0222FB8C: .word 0x02243110 +_0222FB90: .word 0x02243114 +_0222FB94: .word 0x0223F3FC +_0222FB98: .word 0x0223F428 +_0222FB9C: .word 0x0223F42A +_0222FBA0: .word MOD13_0222F9FC + + arm_func_start MOD13_0222FBA4 +MOD13_0222FBA4: ; 0x0222FBA4 + stmdb sp!, {r4, lr} + ldr r1, _0222FC2C ; =0x02243110 + ldr r0, _0222FC30 ; =0x02243114 + ldrb r2, [r1] + ldr r0, [r0] + mov r1, #0 + sub r4, r2, #4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239ADC + mov r2, r0 + mov r0, #0 + mov r1, #0x32 + bl MOD13_02239E8C + ldr r0, _0222FC30 ; =0x02243114 + add r3, r4, #3 + ldr r2, [r0] + ldr r1, _0222FC34 ; =0x0223F428 + mov r3, r3, lsl #2 + ldr r0, _0222FC38 ; =0x0223F42A + add ip, r2, r4, lsl #2 + ldrh r2, [r1, r3] + ldrh r3, [r0, r3] + ldr r0, [ip, #0x10] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0222FC30 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239814 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222FC2C: .word 0x02243110 +_0222FC30: .word 0x02243114 +_0222FC34: .word 0x0223F428 +_0222FC38: .word 0x0223F42A + + arm_func_start MOD13_0222FC3C +MOD13_0222FC3C: ; 0x0222FC3C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _0222FE54 ; =0x02243110 + mov r1, #1 + ldrb r2, [r3] + cmp r2, #6 + addls pc, pc, r2, lsl #2 + b _0222FE34 +_0222FC5C: ; jump table + b _0222FC78 ; case 0 + b _0222FCBC ; case 1 + b _0222FD00 ; case 2 + b _0222FD44 ; case 3 + b _0222FD70 ; case 4 + b _0222FDB4 ; case 5 + b _0222FDF4 ; case 6 +_0222FC78: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #0 + strb ip, [r2, #0x1c] + moveq r0, #2 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + streqb r1, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #4 + strneb r0, [r3] + b _0222FE34 +_0222FCBC: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + moveq r0, #0 + strb r1, [r2, #0x1c] + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #2 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #5 + strneb r0, [r3] + b _0222FE34 +_0222FD00: + ldr r2, _0222FE58 ; =0x02243114 + mov ip, #2 + ldr r2, [r2] + cmp r0, #0 + strb ip, [r2, #0x1c] + streqb r1, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #0 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #6 + strneb r0, [r3] + b _0222FE34 +_0222FD44: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #1 + ldr r2, [r2] + ldrb ip, [r2, #0x1c] + add r2, ip, #4 + streqb r2, [r3] + beq _0222FE34 + cmp r0, #3 + streqb ip, [r3] + movne r1, #0 + b _0222FE34 +_0222FD70: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #0 + strb ip, [r2, #0x1c] + moveq r0, #6 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #5 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb ip, [r3] + movne r0, #3 + strneb r0, [r3] + b _0222FE34 +_0222FDB4: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + moveq r0, #4 + strb r1, [r2, #0x1c] + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #6 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb r1, [r3] + movne r0, #3 + strneb r0, [r3] + b _0222FE34 +_0222FDF4: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #2 + strb ip, [r2, #0x1c] + moveq r0, #5 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #4 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb ip, [r3] + movne r0, #3 + strneb r0, [r3] +_0222FE34: + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #8 + bl MOD13_0223424C + bl MOD13_0222FE5C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FE54: .word 0x02243110 +_0222FE58: .word 0x02243114 + + arm_func_start MOD13_0222FE5C +MOD13_0222FE5C: ; 0x0222FE5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222FED0 ; =0x02243110 + ldrb r2, [r0] + cmp r2, #4 + bhs _0222FEA4 + mov ip, r2, lsl #3 + ldr r0, _0222FED4 ; =0x0223F478 + ldr r1, _0222FED8 ; =0x0223F47C + ldr r2, _0222FEDC ; =0x0223F47A + ldr r3, _0222FEE0 ; =0x0223F47E + ldrh r0, [r0, ip] + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} +_0222FEA4: + ldr r1, _0222FED4 ; =0x0223F478 + mov r3, r2, lsl #3 + ldr r2, _0222FED8 ; =0x0223F47C + ldr r0, _0222FEDC ; =0x0223F47A + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldrh r3, [r0, r3] + mov r0, #0 + bl MOD13_0221F348 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FED0: .word 0x02243110 +_0222FED4: .word 0x0223F478 +_0222FED8: .word 0x0223F47C +_0222FEDC: .word 0x0223F47A +_0222FEE0: .word 0x0223F47E + + arm_func_start MOD13_0222FEE4 +MOD13_0222FEE4: ; 0x0222FEE4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_022343D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r4, _02230084 ; =0x02243114 + mov r5, #0 +_0222FF3C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0222FF54 + bl MOD13_02239AE8 +_0222FF54: + add r5, r5, #1 + cmp r5, #3 + blo _0222FF3C + ldr r4, _02230084 ; =0x02243114 + mov r5, #0 +_0222FF68: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0222FF80 + bl MOD13_02239AE8 +_0222FF80: + add r5, r5, #1 + cmp r5, #3 + blo _0222FF68 + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02230084 ; =0x02243114 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223939C + ldr r0, _02230088 ; =0x02240410 + ldr r1, _0223008C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02230084 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #2 + bne _0222FFF4 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02230090 ; =MOD13_022245B4 + bl MOD13_02222FBC + b _02230074 +_0222FFF4: + ldr r0, _02230094 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02230074 +_02230008: ; jump table + b _02230018 ; case 0 + b _02230018 ; case 1 + b _02230018 ; case 2 + b _02230060 ; case 3 +_02230018: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + bl MOD13_02234164 + ldrb r0, [r0, #0xe7] + cmp r0, #0xff + bne _02230040 + ldr r0, _02230098 ; =MOD13_02230EC4 + bl MOD13_02222FBC + b _02230074 +_02230040: + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #0 + bl MOD13_0222B7F4 + ldr r0, _0223009C ; =MOD13_0222DD4C + bl MOD13_02222FBC + b _02230074 +_02230060: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022300A0 ; =MOD13_0223201C + bl MOD13_02222FBC +_02230074: + ldr r0, _02230084 ; =0x02243114 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02230084: .word 0x02243114 +_02230088: .word 0x02240410 +_0223008C: .word 0x020C9480 +_02230090: .word MOD13_022245B4 +_02230094: .word 0x02243110 +_02230098: .word MOD13_02230EC4 +_0223009C: .word MOD13_0222DD4C +_022300A0: .word MOD13_0223201C + + arm_func_start MOD13_022300A4 +MOD13_022300A4: ; 0x022300A4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02230130 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #1 + bne _022300F8 + ldr r0, _02230134 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + beq _022300F4 + bl MOD13_02234164 + ldrb r0, [r0, #0xe7] + cmp r0, #0xff + beq _022300F8 +_022300F4: + bl MOD13_0221ED28 +_022300F8: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02230138 ; =MOD13_0222FEE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230130: .word 0x02243114 +_02230134: .word 0x02243110 +_02230138: .word MOD13_0222FEE4 + + arm_func_start MOD13_0223013C +MOD13_0223013C: ; 0x0223013C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02230178 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #2 + bne _0223015C + bl MOD13_02234908 +_0223015C: + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0223017C ; =MOD13_022300A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230178: .word 0x02243114 +_0223017C: .word MOD13_022300A4 + + arm_func_start MOD13_02230180 +MOD13_02230180: ; 0x02230180 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + bl MOD13_0221ED14 + cmp r0, #0 + beq _022301A4 + cmp r0, #1 + beq _022301EC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022301A4: + bl MOD13_02222F1C + cmp r0, #0 + beq _022301BC + cmp r0, #1 + beq _022301D8 + b _02230294 +_022301BC: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022302A4 ; =0x02243114 + mov r1, #2 + ldr r0, [r0] + strb r1, [r0, #0x1d] + b _02230294 +_022301D8: + bl MOD13_0221EC84 + ldr r0, _022302A8 ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022301EC: + ldr r0, _022302A4 ; =0x02243114 + mov r2, #1 + ldr r1, [r0] + ldr r0, _022302AC ; =0x02243110 + strb r2, [r1, #0x1d] + ldrb r0, [r0] + cmp r0, #4 + blo _0223027C + sub r4, r0, #4 + mov r0, r4 + bl MOD13_02233D0C + cmp r0, #0xff + bne _02230238 + mov r0, #9 + bl MOD13_0223424C + mvn r0, #0 + bl MOD13_0221ECE0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02230238: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02222F34 + add r2, r4, #1 + str r2, [sp] + ldr r1, _022302B0 ; =0x0223F408 + mov r2, #1 + ldrsb r3, [r1, r0] + mov r0, #0x46 + mov r1, #0 + bl MOD13_02235EFC + bl MOD13_0222FBA4 + bl MOD13_0221EC84 + ldr r0, _022302B4 ; =MOD13_0222FA2C + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0223027C: + cmp r0, #2 + bhi _02230288 + bl MOD13_02233C24 +_02230288: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_0222F918 +_02230294: + ldr r0, _022302B8 ; =MOD13_0223013C + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022302A4: .word 0x02243114 +_022302A8: .word MOD13_02223CFC +_022302AC: .word 0x02243110 +_022302B0: .word 0x0223F408 +_022302B4: .word MOD13_0222FA2C +_022302B8: .word MOD13_0223013C + + arm_func_start MOD13_022302BC +MOD13_022302BC: ; 0x022302BC + bx lr + + arm_func_start MOD13_022302C0 +MOD13_022302C0: ; 0x022302C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022303D0 ; =0x0223F440 + mov r5, #0 +_022302D0: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _022302FC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _022303D4 ; =0x02243110 + strb r5, [r0] + bl MOD13_0222FE5C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022302FC: + add r5, r5, #1 + cmp r5, #7 + add r4, r4, #8 + blo _022302D0 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0223032C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223032C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0223034C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223034C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0223036C + mov r0, #1 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223036C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0223038C + mov r0, #3 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223038C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022303AC + mov r0, #0 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022303AC: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #2 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022303D0: .word 0x0223F440 +_022303D4: .word 0x02243110 + + arm_func_start MOD13_022303D8 +MOD13_022303D8: ; 0x022303D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022302C0 + bl MOD13_022302BC + bl MOD13_02230180 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_02234800 + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02230434 ; =MOD13_022303D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230434: .word MOD13_022303D8 + + arm_func_start MOD13_02230438 +MOD13_02230438: ; 0x02230438 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02230480 ; =0x022303F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230480: .word 0x022303F4 + + arm_func_start MOD13_02230484 +MOD13_02230484: ; 0x02230484 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022304DC ; =MOD13_02230438 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022304DC: .word MOD13_02230438 + + arm_func_start MOD13_022304E0 +MOD13_022304E0: ; 0x022304E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, #0 + ldr r4, _022305F0 ; =0x02243114 + ldr r5, _022305F4 ; =0x0223F428 + str sb, [sp] + str sb, [sp, #4] + mov fp, #0x11 + mov r7, #1 + mvn r6, #0 + mov r8, #3 +_0223050C: + mov r0, sb + bl MOD13_02233D0C + mov sl, r0 + cmp sl, #0xff + moveq sl, r8 + beq _02230580 + ldr r0, [sp] + mov r1, fp + mov r2, r7 + bl MOD13_02239E0C + ldr r1, [r4] + add r3, sb, #3 + add r1, r1, sb, lsl #2 + str r0, [r1, #0x10] + mov r2, r3, lsl #2 + ldr r0, [r4] + add r3, r5, r3, lsl #2 + add r0, r0, sb, lsl #2 + ldrh r2, [r5, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, #0x10] + mov r1, r6 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r6 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x10] + mov r2, r8 + bl MOD13_02239814 +_02230580: + ldr r0, _022305F8 ; =0x0223F3FC + mov r2, r7 + ldrb r1, [r0, sl] + ldr r0, [sp, #4] + bl MOD13_02239E0C + ldr r1, [r4] + mov r2, sb, lsl #2 + add r1, r1, sb, lsl #2 + str r0, [r1, #4] + ldr r0, [r4] + add r3, r5, sb, lsl #2 + add r0, r0, sb, lsl #2 + ldrh r2, [r5, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, #4] + mov r1, r6 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r6 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #4] + mov r2, r8 + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, #3 + blt _0223050C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022305F0: .word 0x02243114 +_022305F4: .word 0x0223F428 +_022305F8: .word 0x0223F3FC + + arm_func_start MOD13_022305FC +MOD13_022305FC: ; 0x022305FC + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _022306DC ; =0x0223F410 + add r3, sp, #0 + mov r2, #0xb +_02230610: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02230610 + ldr r0, _022306E0 ; =0x02240428 + ldr r1, _022306E4 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _022306E8 ; =0x0224043C + ldr r1, _022306EC ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _022306F0 ; =0x02240454 + ldr r1, _022306F4 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _022306F8 ; =0x0224046C + ldr r1, _022306FC ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r2, _02230700 ; =0x02243114 + mov r1, #0x10 + ldr r2, [r2] + str r0, [r2] + mov r0, #1 + bl MOD13_0223AEF4 + ldr ip, _02230704 ; =0x04001008 + ldr r3, _02230708 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _0223070C ; =0x0400000A + ldr r1, _02230710 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_022306DC: .word 0x0223F410 +_022306E0: .word 0x02240428 +_022306E4: .word 0x020C9480 +_022306E8: .word 0x0224043C +_022306EC: .word 0x020C8D4C +_022306F0: .word 0x02240454 +_022306F4: .word 0x020C9550 +_022306F8: .word 0x0224046C +_022306FC: .word 0x020C908C +_02230700: .word 0x02243114 +_02230704: .word 0x04001008 +_02230708: .word 0x0400100A +_0223070C: .word 0x0400000A +_02230710: .word 0x0400000C + + arm_func_start MOD13_02230714 +MOD13_02230714: ; 0x02230714 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x20 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _02230774 ; =0x02243114 + mov r2, #0 + str r0, [r1] + strb r2, [r0, #0x1d] + bl MOD13_022305FC + mov r0, #1 + bl MOD13_0221F4CC + mov r0, #0x2f + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0 + bl MOD13_0221F124 + bl MOD13_022304E0 + bl MOD13_0222FE5C + ldr r0, _02230778 ; =MOD13_02230484 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230774: .word 0x02243114 +_02230778: .word MOD13_02230484 + + arm_func_start MOD13_0223077C +MOD13_0223077C: ; 0x0223077C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _022307D0 ; =0x0223F4B0 + ldr r1, _022307D4 ; =0x0224311C + ldrb lr, [r0] + ldrb ip, [r0, #1] + ldrb r3, [r0, #2] + ldrb r2, [r0, #3] + ldr r0, _022307D8 ; =0x02243124 + ldrsb r1, [r1] + add r4, sp, #0 + strb lr, [sp] + strb ip, [sp, #1] + strb r3, [sp, #2] + strb r2, [sp, #3] + ldrb r1, [r4, r1] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022307D0: .word 0x0223F4B0 +_022307D4: .word 0x0224311C +_022307D8: .word 0x02243124 + + arm_func_start MOD13_022307DC +MOD13_022307DC: ; 0x022307DC + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022308B8 ; =0x0224311C + mov r5, r0 + mov r0, #1 + ldrsb r4, [r1] + bl MOD13_02222EFC + ldr r2, _022308BC ; =0x0223F4D4 + mvn r1, #0 + add r0, r2, r0, lsl #4 + add r0, r0, r4, lsl #2 + ldrsb r2, [r5, r0] + cmp r2, r1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r2, #0 + ldreq r0, _022308C0 ; =0x02243118 + streqb r4, [r0] + mvn r0, #1 + cmp r2, r0 + ldreq r1, _022308C0 ; =0x02243118 + ldreq r0, _022308B8 ; =0x0224311C + ldreqsb r1, [r1] + streqb r1, [r0] + ldrne r0, _022308B8 ; =0x0224311C + strneb r2, [r0] + mov r0, #8 + bl MOD13_0223424C + mov r0, #1 + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r0, _022308B8 ; =0x0224311C + ldr r1, _022308C4 ; =0x0223F534 + ldrsb lr, [r0] + ldr r0, _022308C8 ; =0x0223F536 + add ip, r1, r6, lsl #5 + ldr r1, _022308CC ; =0x0223F538 + add r2, r0, r4, lsl #5 + ldr r4, _022308D0 ; =0x0223F53A + add r1, r1, r5, lsl #5 + mov r5, lr, lsl #3 + add r3, r4, r3, lsl #5 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldrh r3, [r5, r3] + bl MOD13_0221F25C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022308B8: .word 0x0224311C +_022308BC: .word 0x0223F4D4 +_022308C0: .word 0x02243118 +_022308C4: .word 0x0223F534 +_022308C8: .word 0x0223F536 +_022308CC: .word 0x0223F538 +_022308D0: .word 0x0223F53A + + arm_func_start MOD13_022308D4 +MOD13_022308D4: ; 0x022308D4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02230A14 ; =0x02243124 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02230A18 ; =0x02243120 + ldrb r0, [r0] + cmp r0, #0 + bne _0223096C + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _02230A1C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0223096C: + ldr r0, _02230A20 ; =0x0224311C + ldrsb r0, [r0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02230A0C +_02230980: ; jump table + b _02230990 ; case 0 + b _022309AC ; case 1 + b _022309C8 ; case 2 + b _022309E4 ; case 3 +_02230990: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A24 ; =MOD13_0222F8A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309AC: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A28 ; =MOD13_02227C38 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309C8: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A2C ; =MOD13_0222F2F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309E4: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #1 + bl MOD13_0222B7F4 + ldr r0, _02230A30 ; =MOD13_0222DD4C + bl MOD13_02222FBC +_02230A0C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230A14: .word 0x02243124 +_02230A18: .word 0x02243120 +_02230A1C: .word MOD13_02230714 +_02230A20: .word 0x0224311C +_02230A24: .word MOD13_0222F8A0 +_02230A28: .word MOD13_02227C38 +_02230A2C: .word MOD13_0222F2F8 +_02230A30: .word MOD13_0222DD4C + + arm_func_start MOD13_02230A34 +MOD13_02230A34: ; 0x02230A34 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02230A9C ; =0x02243120 + ldrb r0, [r0] + cmp r0, #0 + beq _02230A64 + bl MOD13_0221ED28 +_02230A64: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02230AA0 ; =MOD13_022308D4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230A9C: .word 0x02243120 +_02230AA0: .word MOD13_022308D4 + + arm_func_start MOD13_02230AA4 +MOD13_02230AA4: ; 0x02230AA4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02230AC8 ; =MOD13_02230A34 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230AC8: .word MOD13_02230A34 + + arm_func_start MOD13_02230ACC +MOD13_02230ACC: ; 0x02230ACC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02230AF0 + cmp r0, #1 + beq _02230AFC + add sp, sp, #4 + ldmia sp!, {pc} +_02230AF0: + mov r0, #7 + bl MOD13_0223424C + b _02230B14 +_02230AFC: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_0223077C + ldr r0, _02230B24 ; =0x02243120 + mov r1, #1 + strb r1, [r0] +_02230B14: + ldr r0, _02230B28 ; =MOD13_02230AA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230B24: .word 0x02243120 +_02230B28: .word MOD13_02230AA4 + + arm_func_start MOD13_02230B2C +MOD13_02230B2C: ; 0x02230B2C + bx lr + + arm_func_start MOD13_02230B30 +MOD13_02230B30: ; 0x02230B30 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, #0 + mov r6, r7 + ldr r4, _02230CC0 ; =0x0223F4F4 + mov r5, #1 +_02230B48: + mov r0, r5 + bl MOD13_02222EFC + add r0, r4, r0, lsl #5 + add r0, r0, r6 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02230BEC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r1, _02230CC4 ; =0x0224311C + mov r0, #1 + strb r7, [r1] + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r0, _02230CC4 ; =0x0224311C + ldr r1, _02230CC8 ; =0x0223F534 + ldrsb lr, [r0] + ldr r0, _02230CCC ; =0x0223F536 + add ip, r1, r6, lsl #5 + ldr r1, _02230CD0 ; =0x0223F538 + add r2, r0, r4, lsl #5 + ldr r4, _02230CD4 ; =0x0223F53A + add r1, r1, r5, lsl #5 + mov r5, lr, lsl #3 + add r3, r4, r3, lsl #5 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldrh r3, [r5, r3] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230BEC: + add r7, r7, #1 + cmp r7, #4 + add r6, r6, #8 + blo _02230B48 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02230C1C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C1C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02230C3C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C3C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C5C + mov r0, #1 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C5C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C7C + mov r0, #3 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C7C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C9C + mov r0, #0 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C9C: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, #2 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02230CC0: .word 0x0223F4F4 +_02230CC4: .word 0x0224311C +_02230CC8: .word 0x0223F534 +_02230CCC: .word 0x0223F536 +_02230CD0: .word 0x0223F538 +_02230CD4: .word 0x0223F53A + + arm_func_start MOD13_02230CD8 +MOD13_02230CD8: ; 0x02230CD8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02230B30 + bl MOD13_02230B2C + bl MOD13_02230ACC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02230D24 ; =MOD13_02230CD8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230D24: .word MOD13_02230CD8 + + arm_func_start MOD13_02230D28 +MOD13_02230D28: ; 0x02230D28 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02230D70 ; =0x02230CF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230D70: .word 0x02230CF4 + + arm_func_start MOD13_02230D74 +MOD13_02230D74: ; 0x02230D74 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _02230DCC ; =MOD13_02230D28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230DCC: .word MOD13_02230D28 + + arm_func_start MOD13_02230DD0 +MOD13_02230DD0: ; 0x02230DD0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _02230E94 ; =0x0223F4BC + add r3, sp, #0 + mov r2, #0xb +_02230DE4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02230DE4 + ldr r0, _02230E98 ; =0x02240480 + ldr r1, _02230E9C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02230EA0 ; =0x02240498 + ldr r1, _02230EA4 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02230EA8 ; =0x022404B0 + ldr r1, _02230EAC ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02230EB0 ; =0x02243124 + ldr ip, _02230EB4 ; =0x04001008 + str r0, [r1] + ldrh r0, [ip] + ldr r3, _02230EB8 ; =0x0400100A + ldr r2, _02230EBC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + ldr r1, _02230EC0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_02230E94: .word 0x0223F4BC +_02230E98: .word 0x02240480 +_02230E9C: .word 0x020C8D4C +_02230EA0: .word 0x02240498 +_02230EA4: .word 0x020C9550 +_02230EA8: .word 0x022404B0 +_02230EAC: .word 0x020C908C +_02230EB0: .word 0x02243124 +_02230EB4: .word 0x04001008 +_02230EB8: .word 0x0400100A +_02230EBC: .word 0x0400000A +_02230EC0: .word 0x0400000C + + arm_func_start MOD13_02230EC4 +MOD13_02230EC4: ; 0x02230EC4 + stmdb sp!, {r4, r5, r6, lr} + bl MOD13_02234164 + ldr r1, _02230FD0 ; =0x02243118 + ldr r2, _02230FD4 ; =0x02243120 + ldrsb r3, [r1] + mov r5, #0 + mov r4, r0 + cmp r3, #0 + moveq r0, #1 + strb r5, [r2] + streqb r0, [r1] + bl MOD13_02222F34 + cmp r0, #0 + beq _02230F24 + ldr r0, _02230FD8 ; =0x0224311C + ldrsb r1, [r0] + cmp r1, #2 + moveq r1, #0 + streqb r1, [r0] + ldr r0, _02230FD0 ; =0x02243118 + ldrsb r1, [r0] + cmp r1, #2 + moveq r1, #1 + streqb r1, [r0] +_02230F24: + bl MOD13_02230DD0 + bl MOD13_0221F4AC + bl MOD13_02222F34 + mov r5, r0 + ldrb r1, [r4, #0xf4] + mov r0, #0x32 + ldr r3, _02230FDC ; =0x0223F4B4 + add r2, r1, #1 + ldrsb r1, [r3, r5] + bl MOD13_0221EE98 + mov r0, #1 + bl MOD13_0221F124 + mov r0, #1 + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r1, _02230FE0 ; =0x0223F534 + ldr r0, _02230FD8 ; =0x0224311C + add ip, r1, r6, lsl #5 + ldrsb lr, [r0] + ldr r1, _02230FE4 ; =0x0223F538 + ldr r0, _02230FE8 ; =0x0223F536 + add r1, r1, r5, lsl #5 + add r2, r0, r4, lsl #5 + mov r5, lr, lsl #3 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldr r4, _02230FEC ; =0x0223F53A + add r3, r4, r3, lsl #5 + ldrh r3, [r5, r3] + bl MOD13_0221F25C + ldr r0, _02230FF0 ; =MOD13_02230D74 + bl MOD13_02222FBC + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02230FD0: .word 0x02243118 +_02230FD4: .word 0x02243120 +_02230FD8: .word 0x0224311C +_02230FDC: .word 0x0223F4B4 +_02230FE0: .word 0x0223F534 +_02230FE4: .word 0x0223F538 +_02230FE8: .word 0x0223F536 +_02230FEC: .word 0x0223F53A +_02230FF0: .word MOD13_02230D74 + + arm_func_start MOD13_02230FF4 +MOD13_02230FF4: ; 0x02230FF4 + ldr ip, _02231000 ; =MOD13_0223AF48 + mov r0, r1 + bx ip + .align 2, 0 +_02231000: .word MOD13_0223AF48 + + arm_func_start MOD13_02231004 +MOD13_02231004: ; 0x02231004 + ldr ip, _02231014 ; =MOD13_0223B004 + mov r0, r1 + mov r1, #0x20 + bx ip + .align 2, 0 +_02231014: .word MOD13_0223B004 + + arm_func_start MOD13_02231018 +MOD13_02231018: ; 0x02231018 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021EBB80 + movs r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_0221F694 + bl MOD13_022341E8 + cmp r4, #0 + ble _0223105C + ldr r1, _02231088 ; =0x02243128 + mov r2, #1 + mov r0, #0x11 + strb r2, [r1] + bl MOD13_0223424C + b _0223106C +_0223105C: + bl FUN_021EBAE8 + bl MOD13_0222B0BC + mov r0, #0x12 + bl MOD13_0223424C +_0223106C: + ldr r0, _0223108C ; =MOD13_0223115C + bl MOD13_02222FBC + mov r1, r5 + mov r0, #0 + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02231088: .word 0x02243128 +_0223108C: .word MOD13_0223115C + + arm_func_start MOD13_02231090 +MOD13_02231090: ; 0x02231090 + stmdb sp!, {r4, lr} + bl MOD13_022338FC + mov r4, r0 + bl FUN_021EB9D8 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl FUN_02095324 + add r1, r4, #0xf0 + mov r2, #0xe + bl MI_CpuCopy8 + bl FUN_02095324 + add r1, r4, #0x1f0 + mov r2, #0xe + bl MI_CpuCopy8 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02231120 ; =0x02243128 + ldrb r0, [r0] + cmp r0, #0 + bne _02231108 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231124 ; =MOD13_0222B7D0 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02231108: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231128 ; =MOD13_02231704 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_02231120: .word 0x02243128 +_02231124: .word MOD13_0222B7D0 +_02231128: .word MOD13_02231704 + + arm_func_start MOD13_0223112C +MOD13_0223112C: ; 0x0223112C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231158 ; =MOD13_02231090 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231158: .word MOD13_02231090 + + arm_func_start MOD13_0223115C +MOD13_0223115C: ; 0x0223115C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231188 ; =MOD13_0223112C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231188: .word MOD13_0223112C + + arm_func_start MOD13_0223118C +MOD13_0223118C: ; 0x0223118C + bx lr + + arm_func_start MOD13_02231190 +MOD13_02231190: ; 0x02231190 + bx lr + + arm_func_start MOD13_02231194 +MOD13_02231194: ; 0x02231194 + bx lr + + arm_func_start MOD13_02231198 +MOD13_02231198: ; 0x02231198 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02231194 + bl MOD13_02231190 + bl MOD13_0223118C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022311F4 ; =MOD13_02231198 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022311F4: .word MOD13_02231198 + + arm_func_start MOD13_022311F8 +MOD13_022311F8: ; 0x022311F8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231258 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 +_02231258: + ldr r0, _02231268 ; =0x022311B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231268: .word 0x022311B4 + + arm_func_start MOD13_0223126C +MOD13_0223126C: ; 0x0223126C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + bl MOD13_02234164 + mov r4, r0 + ldr r0, _022312FC ; =0x0223F574 + add r1, sp, #4 + mov r2, #0xc + bl MIi_CpuCopy32 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #2 + moveq r0, #4 + streqb r0, [sp, #0xe] + ldrneb r0, [r4, #0xf4] + addne r0, r0, #1 + strneb r0, [sp, #0xe] + add r0, sp, #4 + bl FUN_021EBC60 + cmp r0, #0 + bne _022312C8 + bl OS_Terminate +_022312C8: + ldr r0, [sp] + cmp r0, #0 + bne _022312E0 + ldrb r0, [r4, #0xf4] + mov r1, r4 + bl FUN_021EB9A4 +_022312E0: + mov r0, #0 + ldr r1, _02231300 ; =MOD13_02231018 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022312FC: .word 0x0223F574 +_02231300: .word MOD13_02231018 + + arm_func_start MOD13_02231304 +MOD13_02231304: ; 0x02231304 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223139C ; =0x022404C4 + ldr r1, _022313A0 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _022313A4 ; =0x022404DC + ldr r1, _022313A8 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _022313AC ; =0x022404F4 + ldr r1, _022313B0 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _022313B4 ; =0x04001008 + ldr ip, _022313B8 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _022313BC ; =0x04000008 + ldr r2, _022313C0 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022313C4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223139C: .word 0x022404C4 +_022313A0: .word 0x020C8D4C +_022313A4: .word 0x022404DC +_022313A8: .word 0x020C9550 +_022313AC: .word 0x022404F4 +_022313B0: .word 0x020C908C +_022313B4: .word 0x04001008 +_022313B8: .word 0x0400100A +_022313BC: .word 0x04000008 +_022313C0: .word 0x0400000A +_022313C4: .word 0x0400000C + + arm_func_start MOD13_022313C8 +MOD13_022313C8: ; 0x022313C8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231454 ; =0x02243128 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231304 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231408 + mov r0, #0x31 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_02231408: + mov r0, #2 + bl MOD13_0221F124 + ldr r0, [sp] + cmp r0, #0 + bne _02231420 + bl MOD13_0221F4AC +_02231420: + mov r0, #0x2c + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_0223126C + mov r0, #0 + bl MOD13_0221F6E0 + mov r0, #0xc + bl MOD13_0223424C + ldr r0, _02231458 ; =MOD13_022311F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231454: .word 0x02243128 +_02231458: .word MOD13_022311F8 + + arm_func_start MOD13_0223145C +MOD13_0223145C: ; 0x0223145C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022314D0 ; =0x0224312C + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0xb4 + addlo sp, sp, #4 + ldmloia sp!, {pc} + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + bl MOD13_02222F1C + cmp r0, #0 + beq _022314C0 + cmp r0, #1 + bne _022314C0 + ldr r0, [sp] + cmp r0, #0 + beq _022314C0 + ldr r0, _022314D4 ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022314C0: + ldr r0, _022314D8 ; =MOD13_02231598 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022314D0: .word 0x0224312C +_022314D4: .word MOD13_02223CFC +_022314D8: .word MOD13_02231598 + + arm_func_start MOD13_022314DC +MOD13_022314DC: ; 0x022314DC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022343D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231580 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _02231590 ; =MOD13_0222DD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02231580: + ldr r0, _02231594 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231590: .word MOD13_0222DD4C +_02231594: .word MOD13_022245B4 + + arm_func_start MOD13_02231598 +MOD13_02231598: ; 0x02231598 + stmdb sp!, {lr} + sub sp, sp, #4 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + beq _022315BC + bl MOD13_02234908 +_022315BC: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022315F4 ; =MOD13_022314DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022315F4: .word MOD13_022314DC + + arm_func_start MOD13_022315F8 +MOD13_022315F8: ; 0x022315F8 + bx lr + + arm_func_start MOD13_022315FC +MOD13_022315FC: ; 0x022315FC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223145C + bl MOD13_022315F8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231640 ; =MOD13_022315FC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231640: .word MOD13_022315FC + + arm_func_start MOD13_02231644 +MOD13_02231644: ; 0x02231644 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0223167C ; =0x02231614 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223167C: .word 0x02231614 + + arm_func_start MOD13_02231680 +MOD13_02231680: ; 0x02231680 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022316EC ; =0x02240508 + ldr r1, _022316F0 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _022316F4 ; =0x04001008 + ldr r3, _022316F8 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022316FC ; =0x0400000A + ldr r1, _02231700 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022316EC: .word 0x02240508 +_022316F0: .word 0x020C908C +_022316F4: .word 0x04001008 +_022316F8: .word 0x0400100A +_022316FC: .word 0x0400000A +_02231700: .word 0x0400000C + + arm_func_start MOD13_02231704 +MOD13_02231704: ; 0x02231704 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231734 ; =0x0224312C + mov r1, #0 + strb r1, [r0] + bl MOD13_02231680 + mov r0, #0x2d + bl MOD13_0221F070 + ldr r0, _02231738 ; =MOD13_02231644 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231734: .word 0x0224312C +_02231738: .word MOD13_02231644 + + arm_func_start MOD13_0223173C +MOD13_0223173C: ; 0x0223173C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231780 ; =MOD13_022313C8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231780: .word MOD13_022313C8 + + arm_func_start MOD13_02231784 +MOD13_02231784: ; 0x02231784 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022317C0 ; =MOD13_0223173C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022317C0: .word MOD13_0223173C + + arm_func_start MOD13_022317C4 +MOD13_022317C4: ; 0x022317C4 + bx lr + + arm_func_start MOD13_022317C8 +MOD13_022317C8: ; 0x022317C8 + bx lr + + arm_func_start MOD13_022317CC +MOD13_022317CC: ; 0x022317CC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022317C8 + bl MOD13_022317C4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02231810 ; =MOD13_02231784 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231810: .word MOD13_02231784 + + arm_func_start MOD13_02231814 +MOD13_02231814: ; 0x02231814 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _02231894 ; =0x0223F580 + add r3, sp, #8 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + add r1, sp, #4 + mov r0, #0 + bl MOD13_02222F44 + mov r0, #0 + str r0, [sp] + mov r1, #1 + ldr r3, [sp, #4] + add r0, sp, #8 + ldr r0, [r0, r3, lsl #2] + mov r2, r1 + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02231898 ; =MOD13_022317CC + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02231894: .word 0x0223F580 +_02231898: .word MOD13_022317CC + + arm_func_start MOD13_0223189C +MOD13_0223189C: ; 0x0223189C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022318F4 ; =MOD13_02231814 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022318F4: .word MOD13_02231814 + + arm_func_start MOD13_022318F8 +MOD13_022318F8: ; 0x022318F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231964 ; =0x0224051C + ldr r1, _02231968 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _0223196C ; =0x04001008 + ldr r3, _02231970 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _02231974 ; =0x0400000A + ldr r1, _02231978 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231964: .word 0x0224051C +_02231968: .word 0x020C908C +_0223196C: .word 0x04001008 +_02231970: .word 0x0400100A +_02231974: .word 0x0400000A +_02231978: .word 0x0400000C + + arm_func_start MOD13_0223197C +MOD13_0223197C: ; 0x0223197C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02233570 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + bl MOD13_022318F8 + mov r0, #0x31 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + ldr r0, [sp] + cmp r0, #2 + beq _022319B8 + bl MOD13_0221F4AC +_022319B8: + ldr r0, [sp] + cmp r0, #1 + bne _022319C8 + bl MOD13_02233B3C +_022319C8: + ldr r0, _022319D8 ; =MOD13_0223189C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022319D8: .word MOD13_0223189C + + arm_func_start MOD13_022319DC +MOD13_022319DC: ; 0x022319DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231A14 ; =0x02243130 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _02231A18 ; =MOD13_02231A9C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231A14: .word 0x02243130 +_02231A18: .word MOD13_02231A9C + + arm_func_start MOD13_02231A1C +MOD13_02231A1C: ; 0x02231A1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #2 + bl MOD13_02222F6C + ldr r0, _02231A98 ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231A98: .word MOD13_0223197C + + arm_func_start MOD13_02231A9C +MOD13_02231A9C: ; 0x02231A9C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231ADC ; =MOD13_02231A1C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231ADC: .word MOD13_02231A1C + + arm_func_start MOD13_02231AE0 +MOD13_02231AE0: ; 0x02231AE0 + bx lr + + arm_func_start MOD13_02231AE4 +MOD13_02231AE4: ; 0x02231AE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022319DC + bl MOD13_02231AE0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231B28 ; =MOD13_02231AE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231B28: .word MOD13_02231AE4 + + arm_func_start MOD13_02231B2C +MOD13_02231B2C: ; 0x02231B2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02231B64 ; =0x02231AFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231B64: .word 0x02231AFC + + arm_func_start MOD13_02231B68 +MOD13_02231B68: ; 0x02231B68 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231BE8 ; =0x02240530 + ldr r1, _02231BEC ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02231BF0 ; =0x04001008 + ldr ip, _02231BF4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02231BF8 ; =0x04000008 + ldr r2, _02231BFC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02231C00 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231BE8: .word 0x02240530 +_02231BEC: .word 0x020C908C +_02231BF0: .word 0x04001008 +_02231BF4: .word 0x0400100A +_02231BF8: .word 0x04000008 +_02231BFC: .word 0x0400000A +_02231C00: .word 0x0400000C + + arm_func_start MOD13_02231C04 +MOD13_02231C04: ; 0x02231C04 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231C44 ; =0x02243130 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231B68 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #0x29 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _02231C48 ; =MOD13_02231B2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231C44: .word 0x02243130 +_02231C48: .word MOD13_02231B2C + + arm_func_start MOD13_02231C4C +MOD13_02231C4C: ; 0x02231C4C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231C8C + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02231C8C: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231CC4 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02231CC4: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231CFC + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231D1C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02231CFC: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231D20 ; =MOD13_0223269C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231D18: .word 0x02243134 +_02231D1C: .word MOD13_02230714 +_02231D20: .word MOD13_0223269C + + arm_func_start MOD13_02231D24 +MOD13_02231D24: ; 0x02231D24 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02231D8C ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231D68 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02231D68: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231D90 ; =MOD13_02231C4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231D8C: .word 0x02243134 +_02231D90: .word MOD13_02231C4C + + arm_func_start MOD13_02231D94 +MOD13_02231D94: ; 0x02231D94 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02231DB8 ; =MOD13_02231D24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231DB8: .word MOD13_02231D24 + + arm_func_start MOD13_02231DBC +MOD13_02231DBC: ; 0x02231DBC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02231DE0 + cmp r0, #1 + beq _02231DEC + add sp, sp, #4 + ldmia sp!, {pc} +_02231DE0: + mov r0, #7 + bl MOD13_0223424C + b _02231E00 +_02231DEC: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02231E10 ; =0x02243134 + mov r1, #1 + strb r1, [r0] +_02231E00: + ldr r0, _02231E14 ; =MOD13_02231D94 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231E10: .word 0x02243134 +_02231E14: .word MOD13_02231D94 + + arm_func_start MOD13_02231E18 +MOD13_02231E18: ; 0x02231E18 + bx lr + + arm_func_start MOD13_02231E1C +MOD13_02231E1C: ; 0x02231E1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02231E3C + mov r0, #1 + bl MOD13_0221ECF4 +_02231E3C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02231E1C + bl MOD13_02231E18 + bl MOD13_02231DBC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02231EAC ; =0x02231E60 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231EAC: .word 0x02231E60 + + arm_func_start MOD13_02231EB0 +MOD13_02231EB0: ; 0x02231EB0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0221F0EC + ldr r0, _02231EF8 ; =0x02231E7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231EF8: .word 0x02231E7C + + arm_func_start MOD13_02231EFC +MOD13_02231EFC: ; 0x02231EFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02231F54 ; =MOD13_02231EB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231F54: .word MOD13_02231EB0 + + arm_func_start MOD13_02231F58 +MOD13_02231F58: ; 0x02231F58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231FF0 ; =0x02240544 + ldr r1, _02231FF4 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02231FF8 ; =0x0224055C + ldr r1, _02231FFC ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02232000 ; =0x02240574 + ldr r1, _02232004 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02232008 ; =0x04001008 + ldr ip, _0223200C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02232010 ; =0x04000008 + ldr r2, _02232014 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02232018 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231FF0: .word 0x02240544 +_02231FF4: .word 0x020C8D4C +_02231FF8: .word 0x0224055C +_02231FFC: .word 0x020C9550 +_02232000: .word 0x02240574 +_02232004: .word 0x020C908C +_02232008: .word 0x04001008 +_0223200C: .word 0x0400100A +_02232010: .word 0x04000008 +_02232014: .word 0x0400000A +_02232018: .word 0x0400000C + + arm_func_start MOD13_0223201C +MOD13_0223201C: ; 0x0223201C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223206C ; =0x02243134 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231F58 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #0x38 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #1 + bl MOD13_0221F124 + mov r0, #0x27 + bl MOD13_0221F070 + ldr r0, _02232070 ; =MOD13_02231EFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223206C: .word 0x02243134 +_02232070: .word MOD13_02231EFC + + arm_func_start MOD13_02232074 +MOD13_02232074: ; 0x02232074 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022320DC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #1 + bne _022320AC + ldr r0, _022320E0 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022320AC: + mov r0, #0xb + bl MOD13_0223424C + bl MOD13_0221EC9C + ldr r1, _022320DC ; =0x02243138 + mov r2, #0 + ldr r0, _022320E4 ; =MOD13_022321B8 + strb r2, [r1] + bl MOD13_022353A4 + ldr r0, _022320E8 ; =0x02232514 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022320DC: .word 0x02243138 +_022320E0: .word MOD13_02232444 +_022320E4: .word MOD13_022321B8 +_022320E8: .word 0x02232514 + + arm_func_start MOD13_022320EC +MOD13_022320EC: ; 0x022320EC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _02232124 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _0223214C ; =0x02243138 + mov r2, #3 + mov r0, #6 + strb r2, [r1] + bl MOD13_0223424C + b _02232138 +_02232124: + ldr r1, _0223214C ; =0x02243138 + mov r2, #1 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C +_02232138: + bl MOD13_02235EB0 + ldr r0, _02232150 ; =MOD13_02232074 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223214C: .word 0x02243138 +_02232150: .word MOD13_02232074 + + arm_func_start MOD13_02232154 +MOD13_02232154: ; 0x02232154 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0223217C ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223217C: .word MOD13_02232444 + + arm_func_start MOD13_02232180 +MOD13_02232180: ; 0x02232180 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _022321B4 ; =MOD13_02232154 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022321B4: .word MOD13_02232154 + + arm_func_start MOD13_022321B8 +MOD13_022321B8: ; 0x022321B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022322AC ; =0x02243138 + ldrb r2, [r1] + cmp r2, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022322A4 +_022321E0: ; jump table + b _022321F0 ; case 0 + b _02232234 ; case 1 + b _02232250 ; case 2 + b _02232288 ; case 3 +_022321F0: + mov r0, #3 + strb r0, [r1] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0x10 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022322B0 ; =MOD13_02232180 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232234: + mov r0, #1 + strb r0, [r1] + bl MOD13_022341E8 + ldr r0, _022322B4 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232250: + bl MOD13_022341E8 + mov r0, #0 + bl MOD13_022353A4 + mov r1, #0 + mov r0, #0x11 + mov r2, #1 + mvn r3, #0 + str r1, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022322B8 ; =MOD13_022320EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232288: + mov r0, #2 + strb r0, [r1] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022322B4 ; =MOD13_02232444 + bl MOD13_02222FBC +_022322A4: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022322AC: .word 0x02243138 +_022322B0: .word MOD13_02232180 +_022322B4: .word MOD13_02232444 +_022322B8: .word MOD13_022320EC + + arm_func_start MOD13_022322BC +MOD13_022322BC: ; 0x022322BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #2 + bne _022322FC + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_022322FC: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022353BC + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02232344 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02232344: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #2 + bne _0223237C + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022323C0 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0223237C: + cmp r0, #3 + bne _022323A0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022323C4 ; =MOD13_0223201C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022323A0: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _022323C8 ; =MOD13_02231C04 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022323BC: .word 0x02243138 +_022323C0: .word MOD13_02230714 +_022323C4: .word MOD13_0223201C +_022323C8: .word MOD13_02231C04 + + arm_func_start MOD13_022323CC +MOD13_022323CC: ; 0x022323CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0223243C ; =0x02243138 + ldrb r0, [r0] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02232418 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02232418: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02232440 ; =MOD13_022322BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223243C: .word 0x02243138 +_02232440: .word MOD13_022322BC + + arm_func_start MOD13_02232444 +MOD13_02232444: ; 0x02232444 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02232468 ; =MOD13_022323CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232468: .word MOD13_022323CC + + arm_func_start MOD13_0223246C +MOD13_0223246C: ; 0x0223246C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022324C0 ; =0x02243138 + ldrb r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022324C0 ; =0x02243138 + mov r1, #2 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022324C4 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022324C0: .word 0x02243138 +_022324C4: .word MOD13_02232444 + + arm_func_start MOD13_022324C8 +MOD13_022324C8: ; 0x022324C8 + bx lr + + arm_func_start MOD13_022324CC +MOD13_022324CC: ; 0x022324CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022324F4 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_022324F4: + bl MOD13_02232730 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022324CC + bl MOD13_022324C8 + bl MOD13_0223246C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02232560 ; =0x02232514 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232560: .word 0x02232514 + + arm_func_start MOD13_02232564 +MOD13_02232564: ; 0x02232564 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_0221F0EC + ldr r0, _02232598 ; =0x02232530 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232598: .word 0x02232530 + + arm_func_start MOD13_0223259C +MOD13_0223259C: ; 0x0223259C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022325D4 ; =MOD13_02232564 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022325D4: .word MOD13_02232564 + + arm_func_start MOD13_022325D8 +MOD13_022325D8: ; 0x022325D8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232670 ; =0x02240588 + ldr r1, _02232674 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02232678 ; =0x022405A0 + ldr r1, _0223267C ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02232680 ; =0x022405B8 + ldr r1, _02232684 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02232688 ; =0x04001008 + ldr ip, _0223268C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02232690 ; =0x04000008 + ldr r2, _02232694 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02232698 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232670: .word 0x02240588 +_02232674: .word 0x020C8D4C +_02232678: .word 0x022405A0 +_0223267C: .word 0x020C9550 +_02232680: .word 0x022405B8 +_02232684: .word 0x020C908C +_02232688: .word 0x04001008 +_0223268C: .word 0x0400100A +_02232690: .word 0x04000008 +_02232694: .word 0x0400000A +_02232698: .word 0x0400000C + + arm_func_start MOD13_0223269C +MOD13_0223269C: ; 0x0223269C + stmdb sp!, {lr} + sub sp, sp, #0x6c + ldr r0, _02232724 ; =0x02243138 + mov r1, #0 + strb r1, [r0] + bl MOD13_022325D8 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #2 + bl MOD13_0221F124 + add r0, sp, #0x16 + bl OS_GetOwnerInfo + add r1, sp, #0 + mov r0, #0 + mov r2, #0x16 + bl MIi_CpuClear16 + ldrh r2, [sp, #0x2e] + add r0, sp, #0x1a + add r1, sp, #0 + mov r2, r2, lsl #1 + bl MIi_CpuCopy16 + add r0, sp, #0 + mov r1, #0x28 + bl MOD13_0221EFA8 + mov r0, #0 + bl MOD13_0221E694 + ldr r0, _02232728 ; =MOD13_022321B8 + bl MOD13_022354F4 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _0223272C ; =MOD13_0223259C + bl MOD13_02222FBC + add sp, sp, #0x6c + ldmia sp!, {pc} + .align 2, 0 +_02232724: .word 0x02243138 +_02232728: .word MOD13_022321B8 +_0223272C: .word MOD13_0223259C + + arm_func_start MOD13_02232730 +MOD13_02232730: ; 0x02232730 + ldr r0, _0223274C ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0223274C: .word 0x027FFFA8 + + arm_func_start MOD13_02232750 +MOD13_02232750: ; 0x02232750 + stmdb sp!, {r4, lr} + ldr r1, _0223277C ; =0x02243140 + mov r4, r0 + ldr r0, [r1] + mov r1, #0x5000000 + mov r2, #0x200 + bl MIi_CpuCopy16 + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223277C: .word 0x02243140 + + arm_func_start MOD13_02232780 +MOD13_02232780: ; 0x02232780 + ldr r2, _022327A0 ; =0x02243140 + ldr ip, _022327A4 ; =MOD13_0223C1C4 + str r0, [r2] + ldr r1, _022327A8 ; =MOD13_02232750 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bx ip + .align 2, 0 +_022327A0: .word 0x02243140 +_022327A4: .word MOD13_0223C1C4 +_022327A8: .word MOD13_02232750 + + arm_func_start MOD13_022327AC +MOD13_022327AC: ; 0x022327AC + stmdb sp!, {r4, lr} + ldr r1, _022327D8 ; =0x02243140 + mov r4, r0 + ldr r0, [r1] + ldr r1, [r1, #4] + mov r2, #0x20 + bl MIi_CpuCopy16 + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022327D8: .word 0x02243140 + + arm_func_start MOD13_022327DC +MOD13_022327DC: ; 0x022327DC + stmdb sp!, {r4, lr} + add r4, r0, r1, lsl #5 + mov r0, r2, lsl #5 + ldr ip, _02232810 ; =0x02243140 + add lr, r0, #0x5000000 + ldr r1, _02232814 ; =MOD13_022327AC + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + str r4, [ip] + str lr, [ip, #4] + bl MOD13_0223C1C4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232810: .word 0x02243140 +_02232814: .word MOD13_022327AC + + arm_func_start MOD13_02232818 +MOD13_02232818: ; 0x02232818 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232874 ; =0x0224313C + ldr r1, [r0] + ldrb r0, [r1, #0x604] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + add r0, r1, #4 + mov r1, #0x600 + bl DC_FlushRange + ldr r0, _02232874 ; =0x0224313C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x600 + add r0, r0, #4 + bl GX_LoadBG2Scr + ldr r0, _02232874 ; =0x0224313C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x604] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232874: .word 0x0224313C + + arm_func_start MOD13_02232878 +MOD13_02232878: ; 0x02232878 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _022328CC ; =0x0224313C + mov r7, r3 + ldr r3, [ip] + mov r8, r0 + add r0, r3, #4 + add r6, r0, r1, lsl #1 + mov r5, #0 + cmp r7, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, r2, lsl #1 +_022328A4: + mov r0, r8 + mov r1, r6 + mov r2, r4 + bl MIi_CpuCopy16 + add r5, r5, #1 + cmp r5, r7 + add r8, r8, #0x40 + add r6, r6, #0x40 + blt _022328A4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022328CC: .word 0x0224313C + + arm_func_start MOD13_022328D0 +MOD13_022328D0: ; 0x022328D0 + ldr r0, _022328E4 ; =0x0224313C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x604] + bx lr + .align 2, 0 +_022328E4: .word 0x0224313C + + arm_func_start MOD13_022328E8 +MOD13_022328E8: ; 0x022328E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02232914 ; =0x0224313C + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r0, _02232914 ; =0x0224313C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232914: .word 0x0224313C + + arm_func_start MOD13_02232918 +MOD13_02232918: ; 0x02232918 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0223296C ; =0x00000608 + mov r1, #4 + bl MOD13_0223AFE0 + mov ip, r0 + ldr r3, _02232970 ; =0x0224313C + mov r0, r4 + add r1, ip, #4 + mov r2, #0x600 + str ip, [r3] + bl MIi_CpuCopyFast + ldr r1, _02232974 ; =MOD13_02232818 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02232970 ; =0x0224313C + ldr r1, [r1] + str r0, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0223296C: .word 0x00000608 +_02232970: .word 0x0224313C +_02232974: .word MOD13_02232818 + + arm_func_start MOD13_02232978 +MOD13_02232978: ; 0x02232978 + stmdb sp!, {r4, lr} + ldr r1, _022329B0 ; =0x02243148 + mov r4, r0 + ldr r0, [r1] + mvn r1, #0 + ldrh r3, [r0, #0x12] + ldrh r2, [r0, #0x10] + ldr r0, [r0] + add r3, r4, r3 + bl MOD13_02239888 + ldr r0, _022329B0 ; =0x02243148 + ldr r0, [r0] + strb r4, [r0, #0x1a] + ldmia sp!, {r4, pc} + .align 2, 0 +_022329B0: .word 0x02243148 + + arm_func_start MOD13_022329B4 +MOD13_022329B4: ; 0x022329B4 + ldr r2, _02232A8C ; =0x02243148 + cmp r0, #4 + ldr r3, [r2] + ldrh r3, [r3, #0x10] + strh r3, [r1] + ldrh r3, [r1] + add r3, r3, #0xc + strh r3, [r1, #4] + addls pc, pc, r0, lsl #2 + bx lr +_022329DC: ; jump table + bx lr ; case 0 + b _022329F0 ; case 1 + b _02232A24 ; case 2 + b _02232A44 ; case 3 + b _02232A68 ; case 4 +_022329F0: + ldr r3, [r2] + ldr r0, _02232A90 ; =0x0223F590 + ldrh ip, [r3, #0x12] + ldrb r3, [r3, #0x1a] + add r3, ip, r3 + strh r3, [r1, #2] + ldr r2, [r2] + ldrh r3, [r1, #2] + ldrb r2, [r2, #0x1b] + ldrb r0, [r0, r2] + add r0, r3, r0 + strh r0, [r1, #6] + bx lr +_02232A24: + ldr r0, [r2] + ldrh r0, [r0, #0x12] + sub r0, r0, #0xd + strh r0, [r1, #2] + ldr r0, [r2] + ldrh r0, [r0, #0x12] + strh r0, [r1, #6] + bx lr +_02232A44: + ldr r0, [r2] + ldrh r2, [r0, #0x12] + ldrb r0, [r0, #0x19] + add r0, r2, r0 + strh r0, [r1, #2] + ldrh r0, [r1, #2] + add r0, r0, #0xd + strh r0, [r1, #6] + bx lr +_02232A68: + ldr r0, [r2] + ldrh r0, [r0, #0x12] + strh r0, [r1, #2] + ldr r0, [r2] + ldrh r2, [r1, #2] + ldrb r0, [r0, #0x19] + add r0, r2, r0 + strh r0, [r1, #6] + bx lr + .align 2, 0 +_02232A8C: .word 0x02243148 +_02232A90: .word 0x0223F590 + + arm_func_start MOD13_02232A94 +MOD13_02232A94: ; 0x02232A94 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, #2 + add r4, sp, #0 +_02232AA4: + mov r0, r5 + mov r1, r4 + bl MOD13_022329B4 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, r5 + ldmneia sp!, {r4, r5, pc} + add r5, r5, #1 + cmp r5, #3 + ble _02232AA4 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02232AE0 +MOD13_02232AE0: ; 0x02232AE0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + add r1, sp, #0 + mov r0, #1 + bl MOD13_022329B4 + add r0, sp, #0 + bl MOD13_0223B248 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + mov r5, #2 + add r4, sp, #0 +_02232B14: + mov r0, r5 + mov r1, r4 + bl MOD13_022329B4 + mov r0, r4 + bl MOD13_0223B248 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, r5 + ldmneia sp!, {r4, r5, pc} + add r5, r5, #1 + cmp r5, #3 + ble _02232B14 + add r1, sp, #0 + mov r0, #4 + bl MOD13_022329B4 + add r0, sp, #0 + bl MOD13_0223B2B4 + cmp r0, #0 + movne r0, #4 + moveq r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02232B6C +MOD13_02232B6C: ; 0x02232B6C + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #0 + bl MOD13_0223B14C + ldr r0, _02232BD8 ; =0x02243148 + ldr r2, _02232BDC ; =0x0223F590 + ldr ip, [r0] + ldrh r1, [sp, #2] + ldrb r3, [ip, #0x1b] + ldrh r0, [ip, #0x12] + ldrb r2, [r2, r3] + sub r1, r1, r0 + mov r0, r2, lsr #1 + subs r0, r1, r0 + movmi r0, #0 + bmi _02232BBC + ldrb r1, [ip, #0x19] + sub r1, r1, r2 + cmp r0, r1 + movge r0, r1 +_02232BBC: + bl MOD13_02232978 + ldr r0, _02232BD8 ; =0x02243148 + mov r1, #3 + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232BD8: .word 0x02243148 +_02232BDC: .word 0x0223F590 + + arm_func_start MOD13_02232BE0 +MOD13_02232BE0: ; 0x02232BE0 + ldr r1, _02232C08 ; =0x02243148 + cmp r0, #2 + ldr r1, [r1] + strb r0, [r1, #0x1c] + ldr r0, _02232C08 ; =0x02243148 + moveq r1, #4 + ldr r0, [r0] + movne r1, #6 + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 +_02232C08: .word 0x02243148 + + arm_func_start MOD13_02232C0C +MOD13_02232C0C: ; 0x02232C0C + stmdb sp!, {r4, lr} + ldr r1, _02232C80 ; =0x02243148 + ldr r1, [r1] + ldrb r1, [r1, #0x1a] + subs r4, r1, r0 + rsbmi r4, r4, #0 + cmp r4, #2 + movlt r0, #0 + blt _02232C48 + cmp r4, #6 + movge r0, #0x7f + bge _02232C48 + rsb r1, r4, #6 + mov r0, #0x7f + bl FX_DivS32 +_02232C48: + bl MOD13_0223422C + cmp r4, #2 + mvnlt r1, #0xff + blt _02232C74 + cmp r4, #6 + movge r1, #0x100 + bge _02232C74 + rsb r1, r4, #6 + mov r0, #0x200 + bl FX_DivS32 + sub r1, r0, #0x100 +_02232C74: + ldr r0, _02232C84 ; =0x0000FFFF + bl MOD13_02234208 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232C80: .word 0x02243148 +_02232C84: .word 0x0000FFFF + + arm_func_start MOD13_02232C88 +MOD13_02232C88: ; 0x02232C88 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02232D4C ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _02232D24 + add r0, sp, #0 + bl MOD13_0223B14C + ldr r0, _02232D50 ; =0x02243148 + ldrh r1, [sp] + ldr r3, [r0] + ldrh r0, [r3, #0x10] + sub r0, r0, #0x1e + cmp r1, r0 + blt _02232D24 + ldrh r1, [sp, #2] + ldrh r0, [r3, #0x16] + ldrb r2, [r3, #0x18] + sub r0, r1, r0 + adds r4, r2, r0 + movmi r4, #0 + bmi _02232CFC + ldrb r1, [r3, #0x1b] + ldr r0, _02232D54 ; =0x0223F590 + ldrb r2, [r3, #0x19] + ldrb r0, [r0, r1] + sub r0, r2, r0 + cmp r4, r0 + movge r4, r0 +_02232CFC: + mov r0, r4 + bl MOD13_02232C0C + mov r0, r4 + bl MOD13_02232978 + ldr r0, _02232D50 ; =0x02243148 + mov r1, #2 + ldr r0, [r0] + add sp, sp, #8 + strb r1, [r0, #0x1d] + ldmia sp!, {r4, pc} +_02232D24: + bl MOD13_022341E8 + ldr r0, _02232D50 ; =0x02243148 + mov r3, #0 + ldr r2, [r0] + mov r1, #3 + strb r3, [r2, #0x1c] + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232D4C: .word 0x0223F75C +_02232D50: .word 0x02243148 +_02232D54: .word 0x0223F590 + + arm_func_start MOD13_02232D58 +MOD13_02232D58: ; 0x02232D58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232F10 ; =0x02243148 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x1d] + ldr r1, [r0] + ldrb r0, [r1, #0x1c] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02232F08 +_02232D84: ; jump table + b _02232D94 ; case 0 + b _02232E5C ; case 1 + b _02232E68 ; case 2 + b _02232EBC ; case 3 +_02232D94: + ldrb r0, [r1, #0x1e] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02232AE0 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _02232F08 +_02232DB4: ; jump table + b _02232F08 ; case 0 + b _02232DC8 ; case 1 + b _02232E30 ; case 2 + b _02232E40 ; case 3 + b _02232E50 ; case 4 +_02232DC8: + ldr r0, _02232F10 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1b] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0x16 + bl MOD13_0223424C + mov r0, #0 + bl MOD13_0223422C + ldr r0, _02232F10 ; =0x02243148 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x1d] + ldr r0, [r0] + add r0, r0, #0x14 + bl MOD13_0223B14C + ldr r0, _02232F10 ; =0x02243148 + mov r1, #1 + ldr r3, [r0] + add sp, sp, #4 + ldrb r2, [r3, #0x1a] + strb r2, [r3, #0x18] + ldr r0, [r0] + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232E30: + mov r0, #2 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E40: + mov r0, #3 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E50: + bl MOD13_02232B6C + add sp, sp, #4 + ldmia sp!, {pc} +_02232E5C: + bl MOD13_02232C88 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E68: + mov r0, #2 + bl MOD13_02232A94 + cmp r0, #2 + beq _02232E9C + ldr r0, _02232F10 ; =0x02243148 + mov r3, #5 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #0x1d] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232E9C: + bl MOD13_02232AE0 + cmp r0, #2 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232EBC: + mov r0, #3 + bl MOD13_02232A94 + cmp r0, #3 + beq _02232EF0 + ldr r0, _02232F10 ; =0x02243148 + mov r3, #7 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #0x1d] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232EF0: + bl MOD13_02232AE0 + cmp r0, #3 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02232BE0 +_02232F08: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232F10: .word 0x02243148 + + arm_func_start MOD13_02232F14 +MOD13_02232F14: ; 0x02232F14 + ldr r0, _02232F28 ; =0x02243148 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1e] + bx lr + .align 2, 0 +_02232F28: .word 0x02243148 + + arm_func_start MOD13_02232F2C +MOD13_02232F2C: ; 0x02232F2C + ldr r0, _02232F40 ; =0x02243148 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x1e] + bx lr + .align 2, 0 +_02232F40: .word 0x02243148 + + arm_func_start MOD13_02232F44 +MOD13_02232F44: ; 0x02232F44 + ldr ip, _02232F4C ; =MOD13_02232978 + bx ip + .align 2, 0 +_02232F4C: .word MOD13_02232978 + + arm_func_start MOD13_02232F50 +MOD13_02232F50: ; 0x02232F50 + ldr r0, _02232F60 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + bx lr + .align 2, 0 +_02232F60: .word 0x02243148 + + arm_func_start MOD13_02232F64 +MOD13_02232F64: ; 0x02232F64 + ldr r0, _02232F74 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1a] + bx lr + .align 2, 0 +_02232F74: .word 0x02243148 + + arm_func_start MOD13_02232F78 +MOD13_02232F78: ; 0x02232F78 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02232FB4 ; =0x02243148 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0xc] + bl MOD13_0223C104 + ldr r0, _02232FB4 ; =0x02243148 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_02239AE8 + ldr r0, _02232FB4 ; =0x02243148 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232FB4: .word 0x02243148 + + arm_func_start MOD13_02232FB8 +MOD13_02232FB8: ; 0x02232FB8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + mov r7, r1 + mov r0, #0x20 + mov r1, #4 + mov r5, r2 + mov r4, r3 + bl MOD13_0223AFE0 + ldr r2, _0223308C ; =0x02243148 + ldr ip, [sp, #0x18] + str r0, [r2] + strb r6, [r0, #0x1b] + ldr r1, [r2] + mov r0, r5 + strb r7, [r1, #0x19] + ldr r3, [r2] + mov r1, r4 + strb ip, [r3, #0x1a] + ldr r2, [r2] + add r2, r2, #0x10 + bl MOD13_0223ABC0 + ldr r1, _02233090 ; =0x0223F58C + mov r0, #0 + ldrb r1, [r1, r6] + mov r2, #1 + bl MOD13_02239E0C + mov r2, r5 + ldr r5, _0223308C ; =0x02243148 + ldr r3, [sp, #0x18] + ldr r6, [r5] + mvn r1, #0 + str r0, [r6] + ldr r0, [r5] + add r3, r4, r3 + ldr r0, [r0] + bl MOD13_02239888 + mov r0, r5 + ldr r0, [r0] + mvn r1, #0 + ldr r0, [r0] + mov r2, #1 + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02233094 ; =MOD13_02232D58 + mov r2, r0 + mov r3, #0x80 + bl MOD13_0223C1C4 + mov r1, r5 + ldr r1, [r1] + str r0, [r1, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223308C: .word 0x02243148 +_02233090: .word 0x0223F58C +_02233094: .word MOD13_02232D58 + + arm_func_start MOD13_02233098 +MOD13_02233098: ; 0x02233098 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xac + ldr r1, _022332AC ; =0x0224314C + str r0, [sp] + ldr r2, [r1] + mov r1, #0x400 + add r0, r2, #0xf00 + add r2, r2, #0x1300 + str r2, [sp, #4] + bl DC_InvalidateRange + ldr r0, [sp] + ldrh r1, [r0, #0xe] + mov r0, #0 + str r0, [sp, #8] + cmp r1, #0 + addle sp, sp, #0xac + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + mov r0, #0x20 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x24] + mov r0, #1 + ldr fp, _022332B0 ; =0x0223F598 + add r5, sp, #0x28 + mov r6, #6 + mov r4, #4 + str r0, [sp, #0x1c] +_02233114: + ldr r1, [sp] + ldr r0, [sp, #8] + add r0, r1, r0, lsl #2 + ldr sl, [r0, #0x10] + ldrb r0, [sl, #0xc] + cmp r0, #0 + beq _02233284 + ldrh r0, [sl, #0x3c] + cmp r0, #0 + bne _02233284 + ldr sb, [sp, #0xc] + ldr r8, [sp, #4] + add r7, sl, #4 +_02233148: + mov r0, r7 + add r1, r8, #0x20 + mov r2, r6 + bl memcmp + cmp r0, #0 + beq _02233170 + add r8, r8, #0x2a + add sb, sb, #1 + cmp sb, #0x14 + blt _02233148 +_02233170: + cmp sb, #0x14 + bne _022331B4 + ldr sb, [sp, #0x10] + ldr r7, [sp, #4] +_02233180: + add r0, r7, #0x20 + mov r1, fp + mov r2, r6 + bl memcmp + cmp r0, #0 + beq _022331A8 + add r7, r7, #0x2a + add sb, sb, #1 + cmp sb, #0x14 + blt _02233180 +_022331A8: + cmp sb, #0x14 + addeq sp, sp, #0xac + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022331B4: + ldr r0, [sp, #4] + mov r1, #0x2a + mla r7, sb, r1, r0 + add r0, sl, #4 + add r1, r7, #0x20 + mov r2, r6 + bl MI_CpuCopy8 + ldr r2, [sp, #0x14] + add r0, sl, #0xc + mov r1, r7 + bl MI_CpuCopy8 + ldr r1, [sp] + ldr r0, [sp, #8] + add r0, r1, r0, lsl #1 + ldrh r0, [r0, #0x50] + strh r0, [r7, #0x26] + ldrh r0, [sl, #0x2c] + ands r0, r0, #0x10 + ldreq r0, [sp, #0x18] + streqb r0, [r7, #0x28] + beq _02233284 + ldr r0, [sp, #0x1c] + mov r1, sl + strb r0, [r7, #0x28] + mov r0, r5 + bl WM_GetOtherElements + ldrb r8, [sp, #0x28] + ldr sb, [sp, #0x20] + cmp r8, #0 + ble _02233284 +_0223322C: + add r1, r5, sb, lsl #3 + ldrb r0, [r1, #4] + cmp r0, #0x30 + ldreq r0, [sp, #0x24] + streqb r0, [r7, #0x28] + beq _02233284 + cmp r0, #0xdd + bne _02233278 + ldrb r0, [r1, #5] + cmp r0, #4 + blo _02233278 + ldr r0, [r1, #8] + ldr r1, _022332B4 ; =0x0223F594 + mov r2, r4 + bl memcmp + cmp r0, #0 + ldreq r0, [sp, #0x24] + streqb r0, [r7, #0x28] + beq _02233284 +_02233278: + add sb, sb, #1 + cmp sb, r8 + blt _0223322C +_02233284: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + ldr r0, [sp] + ldrh r1, [r0, #0xe] + ldr r0, [sp, #8] + cmp r0, r1 + blt _02233114 + add sp, sp, #0xac + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022332AC: .word 0x0224314C +_022332B0: .word 0x0223F598 +_022332B4: .word 0x0223F594 + + arm_func_start MOD13_022332B8 +MOD13_022332B8: ; 0x022332B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _02233338 ; =0x0224314C + ldr r1, [r1] + add r1, r1, #0x1000 + ldrb r1, [r1, #0xe4c] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r1, [r0] + cmp r1, #0x26 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r1, [r0, #8] + cmp r1, #4 + beq _02233320 + cmp r1, #5 + bne _0223332C + bl MOD13_02233098 + bl MOD13_0223344C + add sp, sp, #4 + ldmia sp!, {pc} +_02233320: + bl MOD13_0223344C + add sp, sp, #4 + ldmia sp!, {pc} +_0223332C: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233338: .word 0x0224314C + + arm_func_start MOD13_0223333C +MOD13_0223333C: ; 0x0223333C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02233394 ; =0x0224314C + mov r4, #0 + ldr r1, [r1] + mov r8, r4 + add r1, r1, #0x1300 + str r1, [r0] + ldr r7, [r0] + ldr r6, _02233398 ; =0x0223F598 + mov r5, #6 +_02233364: + mov r1, r6 + mov r2, r5 + add r0, r7, #0x20 + bl memcmp + cmp r0, #0 + add r8, r8, #1 + addne r4, r4, #1 + cmp r8, #0x14 + add r7, r7, #0x2a + blt _02233364 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02233394: .word 0x0224314C +_02233398: .word 0x0223F598 + + arm_func_start MOD13_0223339C +MOD13_0223339C: ; 0x0223339C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02233440 ; =0x0224314C + mov r3, #1 + ldr r0, [r2] + ldr r1, _02233444 ; =0x0000168C + add r0, r0, #0x1000 + strb r3, [r0, #0xe4c] + ldr r0, [r2] + add r0, r0, r1 + bl WM_ReadStatus + ldr r0, _02233440 ; =0x0224314C + ldr r0, [r0] + add r0, r0, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + beq _02233424 + ldr r0, _02233448 ; =MOD13_022332B8 + bl WM_Reset + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} +_022333F8: + ldr r1, _02233440 ; =0x0224314C + ldr r0, _02233444 ; =0x0000168C + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _02233440 ; =0x0224314C + ldr r0, [r0] + add r0, r0, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + bne _022333F8 +_02233424: + ldr r0, _02233448 ; =MOD13_022332B8 + bl WM_End + cmp r0, #2 + movne r0, #0 + moveq r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233440: .word 0x0224314C +_02233444: .word 0x0000168C +_02233448: .word MOD13_022332B8 + + arm_func_start MOD13_0223344C +MOD13_0223344C: ; 0x0223344C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02233480 ; =0x0224314C + ldr r1, _02233484 ; =0x00001648 + ldr r2, [r0] + ldr r0, _02233488 ; =MOD13_022332B8 + add r1, r2, r1 + bl WM_StartScanEx + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233480: .word 0x0224314C +_02233484: .word 0x00001648 +_02233488: .word MOD13_022332B8 + + arm_func_start MOD13_0223348C +MOD13_0223348C: ; 0x0223348C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _0223355C ; =0x0224314C + mov r0, #0 + ldr r1, [r1] + mov r2, #0x348 + add r1, r1, #0x1300 + bl MIi_CpuClear16 + ldr r0, _0223355C ; =0x0224314C + ldr r1, _02233560 ; =MOD13_022332B8 + ldr r0, [r0] + mov r2, #3 + bl WM_Initialize + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} +_022334D0: + ldr r1, _0223355C ; =0x0224314C + ldr r0, _02233564 ; =0x0000168C + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _0223355C ; =0x0224314C + ldr r5, [r0] + add r0, r5, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + bne _022334D0 + ldr r0, _02233568 ; =0x00001648 + ldr r4, _0223356C ; =0x0223F5A0 + add lr, r5, r0 + mov ip, #4 +_0223350C: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0223350C + ldr r0, [r4] + add r1, r5, #0xf00 + str r0, [lr] + add r0, r5, #0x1000 + str r1, [r0, #0x648] + bl WM_GetDispersionScanPeriod + ldr r1, _0223355C ; =0x0224314C + ldr r1, [r1] + add r1, r1, #0x1600 + strh r0, [r1, #0x50] + bl MOD13_0223344C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223355C: .word 0x0224314C +_02233560: .word MOD13_022332B8 +_02233564: .word 0x0000168C +_02233568: .word 0x00001648 +_0223356C: .word 0x0223F5A0 + + arm_func_start MOD13_02233570 +MOD13_02233570: ; 0x02233570 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022335A8 ; =0x0224314C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_0223358C: + bl WM_GetAllowedChannel + cmp r0, #0x8000 + bne _0223358C + ldr r0, _022335A8 ; =0x0224314C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022335A8: .word 0x0224314C + + arm_func_start MOD13_022335AC +MOD13_022335AC: ; 0x022335AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022335E4 ; =0x0224314C + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022335E8 ; =0x00001E60 + mov r1, #0x20 + bl MOD13_0223AFE0 + ldr r1, _022335E4 ; =0x0224314C + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022335E4: .word 0x0224314C +_022335E8: .word 0x00001E60 + + arm_func_start MOD13_022335EC +MOD13_022335EC: ; 0x022335EC + cmp r0, #0x39 + subls r0, r0, #0x30 + bxls lr + cmp r0, #0x46 + subls r0, r0, #0x37 + subhi r0, r0, #0x57 + bx lr + + arm_func_start MOD13_02233608 +MOD13_02233608: ; 0x02233608 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + mov sb, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r8, #0 + mov r7, r8 + add r6, sp, #0 + mov fp, r8 + mov r4, #0x20 + mov r5, #3 +_02233640: + mov r1, r6 + mov r2, r5 + add r0, sl, r7 + bl MI_CpuCopy8 + mov r2, fp + mov r1, r6 +_02233658: + ldrb r0, [r1] + cmp r0, #0 + bne _02233674 + add r2, r2, #1 + cmp r2, #3 + strb r4, [r1], #1 + blt _02233658 +_02233674: + mov r0, r6 + bl atol + strb r0, [sb, r8] + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #3 + blt _02233640 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start MOD13_02233698 +MOD13_02233698: ; 0x02233698 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + ldr r1, _02233800 ; =0x02243150 + mov r7, r0 + ldr r0, [r1] + mov r4, #0 + add r2, r0, r7, lsl #8 + ldrb r6, [r2, #0xe7] + mov r3, #1 + add r0, sp, #4 + mov r1, r4 + mov r2, #0x10 + mov r5, r3, lsl r7 + bl MI_CpuFill8 + add r0, sp, #4 + mov r2, #1 + str r2, [r0, r7, lsl #2] + cmp r7, #2 + bgt _02233778 + ldr r0, _02233800 ; =0x02243150 + ldr r0, [r0] + ldrb r1, [r0, #0xef] + ands r1, r1, r5 + movne r4, r2 + cmp r6, #0xff + bne _0223373C + cmp r4, #0 + beq _0223373C + ldrb r2, [r0, #0xef] + mvn r3, r5 + ldr r1, _02233800 ; =0x02243150 + and r2, r2, r3 + strb r2, [r0, #0xef] + ldr r2, [r1] + mov r0, #1 + ldrb r1, [r2, #0x1ef] + and r1, r1, r3 + strb r1, [r2, #0x1ef] + str r0, [sp, #8] + str r0, [sp, #4] + b _02233778 +_0223373C: + cmp r6, #0xff + beq _02233778 + cmp r4, #0 + bne _02233778 + ldrb r3, [r0, #0xef] + ldr r1, _02233800 ; =0x02243150 + mov r2, #1 + orr r3, r3, r5 + strb r3, [r0, #0xef] + ldr r1, [r1] + ldrb r0, [r1, #0x1ef] + orr r0, r0, r5 + strb r0, [r1, #0x1ef] + str r2, [sp, #8] + str r2, [sp, #4] +_02233778: + mov r7, #0 + mov r6, r7 + ldr sb, _02233800 ; =0x02243150 + add r5, sp, #4 + mov r4, #0xfe + ldr r8, _02233804 ; =0x000004F8 +_02233790: + ldr r0, [r5, r7, lsl #2] + cmp r0, #0 + beq _022337BC + ldr r1, [sb] + mov r2, r4 + add r0, r1, r8 + add r1, r1, r6 + bl MATH_CalcCRC16 + ldr r1, [sb] + add r1, r1, r7, lsl #8 + strh r0, [r1, #0xfe] +_022337BC: + add r7, r7, #1 + cmp r7, #4 + add r6, r6, #0x100 + blt _02233790 + mov r0, #0x100 + mov r1, #0x20 + bl MOD13_0223B004 + mov r2, r0 + ldr r0, _02233800 ; =0x02243150 + add r1, sp, #4 + ldr r0, [r0] + str r2, [sp] + bl FUN_02095CDC + add r0, sp, #0 + bl MOD13_0223AF90 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02233800: .word 0x02243150 +_02233804: .word 0x000004F8 + + arm_func_start MOD13_02233808 +MOD13_02233808: ; 0x02233808 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + ldr r1, _022338B4 ; =0x02243150 + mov r0, #0 + ldr r1, [r1] + mov r2, #0x400 + bl MIi_CpuClear16 + mov r3, #0 + ldr r0, _022338B4 ; =0x02243150 + mov r2, #0xff +_02233830: + ldr r1, [r0] + add r1, r1, r3, lsl #8 + add r3, r3, #1 + strb r2, [r1, #0xe7] + cmp r3, #3 + blt _02233830 + add r0, sp, #0 + bl FUN_020967A4 + add r0, sp, #0 + bl FUN_02095330 + mov r6, #0 + ldr r4, _022338B4 ; =0x02243150 + mov r8, r0 + mov r7, r6 + mov r5, #0xe +_0223386C: + ldr r1, [r4] + mov r0, r8 + add r1, r1, r7 + mov r2, r5 + add r1, r1, #0xf0 + bl MI_CpuCopy8 + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #0x100 + blt _0223386C + mov r4, #0 +_02233898: + mov r0, r4 + bl MOD13_02233698 + add r4, r4, #1 + cmp r4, #4 + blt _02233898 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022338B4: .word 0x02243150 + + arm_func_start MOD13_022338B8 +MOD13_022338B8: ; 0x022338B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _022338F8 ; =0x02243150 + mov r5, r0 + ldr r0, [r1] + mov r1, #0 + add r4, r0, r5, lsl #8 + mov r0, r4 + mov r2, #0xef + bl MI_CpuFill8 + mov r1, #0xff + mov r0, r5 + strb r1, [r4, #0xe7] + bl MOD13_02233698 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022338F8: .word 0x02243150 + + arm_func_start MOD13_022338FC +MOD13_022338FC: ; 0x022338FC + ldr r0, _02233908 ; =0x02243150 + ldr r0, [r0] + bx lr + .align 2, 0 +_02233908: .word 0x02243150 + + arm_func_start MOD13_0223390C +MOD13_0223390C: ; 0x0223390C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02233A20 ; =0x02243150 + mov r5, r0 + ldr r0, [r1] + mov r1, #0 + add r4, r0, #0x400 + mov r0, r4 + mov r2, #0xef + bl MI_CpuFill8 + mov r0, r5 + add r1, r4, #0xd1 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #6 + add r1, r4, #0xd6 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0xc + add r1, r4, #0xdb + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0x12 + add r1, r4, #0xe0 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0x18 + add r1, r4, #0x60 + mov r2, #0x20 + bl MI_CpuCopy8 + add r0, r5, #0x39 + add r1, r4, #0x80 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x47 + add r1, r4, #0x90 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x55 + add r1, r4, #0xa0 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x63 + add r1, r4, #0xb0 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x71 + add r1, r4, #0x40 + mov r2, #0x20 + bl MI_CpuCopy8 + ldrb r1, [r4, #0xe6] + mov r3, #1 + add r0, r4, #0xf0 + bic r1, r1, #3 + orr r1, r1, #2 + strb r1, [r4, #0xe6] + ldrb ip, [r4, #0xe6] + mov r1, #0 + mov r2, #4 + bic ip, ip, #0xfc + strb ip, [r4, #0xe6] + strb r3, [r4, #0xe7] + bl MI_CpuFill8 + mov r0, #1 + strb r0, [r4, #0xf5] + strb r0, [r4, #0xf6] + bl MOD13_02233B3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233A20: .word 0x02243150 + + arm_func_start MOD13_02233A24 +MOD13_02233A24: ; 0x02233A24 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02233B38 ; =0x02243150 + mov r6, r0 + ldr r0, [r1] + mov r1, #0 + add r5, r0, #0x400 + mov r0, r5 + mov r2, #0xef + bl MI_CpuFill8 + mov r0, r6 + add r1, r5, #0x40 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r6, #0x20] + cmp r0, #1 + beq _02233A78 + cmp r0, #2 + beq _02233A90 + cmp r0, #3 + beq _02233AA8 + b _02233AC0 +_02233A78: + ldrb r0, [r5, #0xe6] + mov r4, #5 + bic r0, r0, #3 + orr r0, r0, #1 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233A90: + ldrb r0, [r5, #0xe6] + mov r4, #0xd + bic r0, r0, #3 + orr r0, r0, #2 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233AA8: + ldrb r0, [r5, #0xe6] + mov r4, #0x10 + bic r0, r0, #3 + orr r0, r0, #3 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233AC0: + ldrb r0, [r5, #0xe6] + mov r4, #0 + bic r0, r0, #3 + strb r0, [r5, #0xe6] +_02233AD0: + ldrb r0, [r5, #0xe6] + add r7, r5, #0x80 + add r6, r6, #0x28 + bic r0, r0, #0xfc + strb r0, [r5, #0xe6] + mov r8, #0 +_02233AE8: + mov r0, r6 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #0x10 + add r6, r6, #0x20 + blt _02233AE8 + mov r3, #2 + add r0, r5, #0xf0 + mov r1, #0 + mov r2, #4 + strb r3, [r5, #0xe7] + bl MI_CpuFill8 + mov r0, #1 + strb r0, [r5, #0xf5] + strb r0, [r5, #0xf6] + bl MOD13_02233B3C + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02233B38: .word 0x02243150 + + arm_func_start MOD13_02233B3C +MOD13_02233B3C: ; 0x02233B3C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _02233C20 ; =0x02243150 + mov r2, #0x78 + ldr r1, [r0] + add r5, r1, #0x400 + ldrb r0, [r5, #0xf4] + mov ip, r5 + add r4, r1, r0, lsl #8 + mov r3, r4 +_02233B64: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02233B64 + ldrb r0, [r5, #0xf5] + cmp r0, #0 + beq _02233BB4 + add r0, r4, #0xc0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xc4 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r4, #0xd0] + b _02233BE0 +_02233BB4: + add r0, r5, #0xc0 + add r1, r4, #0xc0 + mov r2, #4 + bl MI_CpuCopy8 + add r0, r5, #0xc4 + add r1, r4, #0xc4 + mov r2, #4 + bl MI_CpuCopy8 + add r0, r5, #0xf0 + bl FUN_02095BE0 + strb r0, [r4, #0xd0] +_02233BE0: + ldrb r0, [r5, #0xf6] + cmp r0, #0 + beq _02233C00 + add r0, r4, #0xc8 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + b _02233C10 +_02233C00: + add r0, r5, #0xc8 + add r1, r4, #0xc8 + mov r2, #8 + bl MI_CpuCopy8 +_02233C10: + ldrb r0, [r5, #0xf4] + bl MOD13_02233698 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233C20: .word 0x02243150 + + arm_func_start MOD13_02233C24 +MOD13_02233C24: ; 0x02233C24 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02233D04 ; =0x02243150 + mov r3, #0x78 + ldr r5, [r1] + add r4, r5, r0, lsl #8 + mov lr, r4 + add ip, r5, #0x400 +_02233C44: + ldrb r2, [lr], #1 + ldrb r1, [lr], #1 + subs r3, r3, #1 + strb r2, [ip], #1 + strb r1, [ip], #1 + bne _02233C44 + ldr r1, _02233D08 ; =0x0223F5E4 + strb r0, [r5, #0x4f4] + add r0, r4, #0xc0 + mov r2, #4 + bl memcmp + cmp r0, #0 + ldrne r0, _02233D04 ; =0x02243150 + movne r1, #0 + ldrne r0, [r0] + mov r2, #4 + strneb r1, [r0, #0x4f5] + ldreq r0, _02233D04 ; =0x02243150 + moveq r1, #1 + ldreq r0, [r0] + streqb r1, [r0, #0x4f5] + ldr r1, _02233D08 ; =0x0223F5E4 + add r0, r4, #0xc8 + bl memcmp + cmp r0, #0 + bne _02233CC4 + ldr r1, _02233D08 ; =0x0223F5E4 + add r0, r4, #0xcc + mov r2, #4 + bl memcmp + cmp r0, #0 + beq _02233CD8 +_02233CC4: + ldr r0, _02233D04 ; =0x02243150 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x4f6] + b _02233CE8 +_02233CD8: + ldr r0, _02233D04 ; =0x02243150 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x4f6] +_02233CE8: + ldr r1, _02233D04 ; =0x02243150 + ldrb r0, [r4, #0xd0] + ldr r1, [r1] + add r1, r1, #0x4f0 + bl FUN_02095BB0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233D04: .word 0x02243150 +_02233D08: .word 0x0223F5E4 + + arm_func_start MOD13_02233D0C +MOD13_02233D0C: ; 0x02233D0C + ldr r1, _02233D20 ; =0x02243150 + ldr r1, [r1] + add r0, r1, r0, lsl #8 + ldrb r0, [r0, #0xe7] + bx lr + .align 2, 0 +_02233D20: .word 0x02243150 + + arm_func_start MOD13_02233D24 +MOD13_02233D24: ; 0x02233D24 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233D64 ; =0x02243150 + ldr r2, _02233D68 ; =0x000004CC + ldr r3, [r1] + ldr r1, _02233D6C ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4cc] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233D64: .word 0x02243150 +_02233D68: .word 0x000004CC +_02233D6C: .word 0x022405CC + + arm_func_start MOD13_02233D70 +MOD13_02233D70: ; 0x02233D70 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233DB0 ; =0x02243150 + ldr r2, _02233DB4 ; =0x000004C8 + ldr r3, [r1] + ldr r1, _02233DB8 ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c8] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233DB0: .word 0x02243150 +_02233DB4: .word 0x000004C8 +_02233DB8: .word 0x022405CC + + arm_func_start MOD13_02233DBC +MOD13_02233DBC: ; 0x02233DBC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233DFC ; =0x02243150 + ldr r2, _02233E00 ; =0x000004C4 + ldr r3, [r1] + ldr r1, _02233E04 ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c4] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233DFC: .word 0x02243150 +_02233E00: .word 0x000004C4 +_02233E04: .word 0x022405CC + + arm_func_start MOD13_02233E08 +MOD13_02233E08: ; 0x02233E08 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _02233E44 ; =0x02243150 + ldr r1, _02233E48 ; =0x022405CC + ldr r3, [r2] + add ip, r3, #0x4f0 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4f0] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233E44: .word 0x02243150 +_02233E48: .word 0x022405CC + + arm_func_start MOD13_02233E4C +MOD13_02233E4C: ; 0x02233E4C + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _02233E88 ; =0x02243150 + ldr r1, _02233E8C ; =0x022405CC + ldr r3, [r2] + add ip, r3, #0x4c0 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c0] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233E88: .word 0x02243150 +_02233E8C: .word 0x022405CC + + arm_func_start MOD13_02233E90 +MOD13_02233E90: ; 0x02233E90 + ldr r2, _02233EAC ; =0x02243150 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02233EB0 ; =0x020CE3E0 + mov r2, #0x20 + add r0, r0, #0x440 + bx ip + .align 2, 0 +_02233EAC: .word 0x02243150 +_02233EB0: .word 0x020CE3E0 + + arm_func_start MOD13_02233EB4 +MOD13_02233EB4: ; 0x02233EB4 + ldr r2, _02233ECC ; =0x02243150 + ldr r1, _02233ED0 ; =0x000004CC + ldr r2, [r2] + ldr ip, _02233ED4 ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233ECC: .word 0x02243150 +_02233ED0: .word 0x000004CC +_02233ED4: .word MOD13_02233608 + + arm_func_start MOD13_02233ED8 +MOD13_02233ED8: ; 0x02233ED8 + ldr r2, _02233EF0 ; =0x02243150 + ldr r1, _02233EF4 ; =0x000004C8 + ldr r2, [r2] + ldr ip, _02233EF8 ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233EF0: .word 0x02243150 +_02233EF4: .word 0x000004C8 +_02233EF8: .word MOD13_02233608 + + arm_func_start MOD13_02233EFC +MOD13_02233EFC: ; 0x02233EFC + ldr r2, _02233F14 ; =0x02243150 + ldr r1, _02233F18 ; =0x000004C4 + ldr r2, [r2] + ldr ip, _02233F1C ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233F14: .word 0x02243150 +_02233F18: .word 0x000004C4 +_02233F1C: .word MOD13_02233608 + + arm_func_start MOD13_02233F20 +MOD13_02233F20: ; 0x02233F20 + ldr r1, _02233F34 ; =0x02243150 + ldr ip, _02233F38 ; =MOD13_02233608 + ldr r1, [r1] + add r1, r1, #0x4f0 + bx ip + .align 2, 0 +_02233F34: .word 0x02243150 +_02233F38: .word MOD13_02233608 + + arm_func_start MOD13_02233F3C +MOD13_02233F3C: ; 0x02233F3C + ldr r1, _02233F50 ; =0x02243150 + ldr ip, _02233F54 ; =MOD13_02233608 + ldr r1, [r1] + add r1, r1, #0x4c0 + bx ip + .align 2, 0 +_02233F50: .word 0x02243150 +_02233F54: .word MOD13_02233608 + + arm_func_start MOD13_02233F58 +MOD13_02233F58: ; 0x02233F58 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02234100 ; =0x02243150 + mov r6, r0 + ldr r0, [r1] + mov r1, #0 + add r0, r0, #0x480 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, r6 + mov r1, #0x20 + bl MOD13_0223BDA4 + mov r4, r0 + cmp r4, #0xa + bgt _02233FA4 + cmp r4, #0xa + bge _02233FC0 + cmp r4, #0 + beq _02233FC0 + b _0223401C +_02233FA4: + cmp r4, #0x1a + bgt _02233FB8 + cmp r4, #0x1a + beq _02233FC0 + b _0223401C +_02233FB8: + cmp r4, #0x20 + bne _0223401C +_02233FC0: + ldr r0, _02234100 ; =0x02243150 + cmp r4, #0 + ldr r2, [r0] + mov r5, #0 + ldrb r1, [r2, #0x4e6] + bic r1, r1, #0xfc + strb r1, [r2, #0x4e6] + ldr r0, [r0] + add r8, r0, #0x480 + ble _02234048 +_02233FE8: + ldrb r0, [r6, r5] + bl MOD13_022335EC + add r1, r5, #1 + mov r7, r0 + ldrb r0, [r6, r1] + bl MOD13_022335EC + add r0, r0, r7, lsl #4 + add r5, r5, #2 + strb r0, [r8] + cmp r5, r4 + add r8, r8, #1 + blt _02233FE8 + b _02234048 +_0223401C: + ldr r1, _02234100 ; =0x02243150 + mov r0, r6 + ldr r5, [r1] + mov r2, #0x10 + ldrb r3, [r5, #0x4e6] + bic r3, r3, #0xfc + orr r3, r3, #4 + strb r3, [r5, #0x4e6] + ldr r1, [r1] + add r1, r1, #0x480 + bl MI_CpuCopy8 +_02234048: + cmp r4, #5 + bgt _02234064 + cmp r4, #5 + bge _022340AC + cmp r4, #0 + beq _02234094 + b _022340E4 +_02234064: + cmp r4, #0xd + bgt _02234088 + cmp r4, #0xa + blt _022340E4 + cmp r4, #0xa + beq _022340AC + cmp r4, #0xd + beq _022340C8 + b _022340E4 +_02234088: + cmp r4, #0x1a + beq _022340C8 + b _022340E4 +_02234094: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340AC: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #1 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340C8: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #2 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340E4: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #3 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234100: .word 0x02243150 + + arm_func_start MOD13_02234104 +MOD13_02234104: ; 0x02234104 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02234138 ; =0x02243150 + mov r2, #0x20 + ldr r1, [r1] + add r1, r1, #0x440 + bl MI_CpuCopy8 + ldr r0, _02234138 ; =0x02243150 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x4e7] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02234138: .word 0x02243150 + + arm_func_start MOD13_0223413C +MOD13_0223413C: ; 0x0223413C + ldr r1, _0223414C ; =0x02243150 + ldr r1, [r1] + strb r0, [r1, #0x4f6] + bx lr + .align 2, 0 +_0223414C: .word 0x02243150 + + arm_func_start MOD13_02234150 +MOD13_02234150: ; 0x02234150 + ldr r1, _02234160 ; =0x02243150 + ldr r1, [r1] + strb r0, [r1, #0x4f5] + bx lr + .align 2, 0 +_02234160: .word 0x02243150 + + arm_func_start MOD13_02234164 +MOD13_02234164: ; 0x02234164 + ldr r0, _02234174 ; =0x02243150 + ldr r0, [r0] + add r0, r0, #0x400 + bx lr + .align 2, 0 +_02234174: .word 0x02243150 + + arm_func_start MOD13_02234178 +MOD13_02234178: ; 0x02234178 + ldr ip, _02234184 ; =MOD13_0223AF90 + ldr r0, _02234188 ; =0x02243150 + bx ip + .align 2, 0 +_02234184: .word MOD13_0223AF90 +_02234188: .word 0x02243150 + + arm_func_start MOD13_0223418C +MOD13_0223418C: ; 0x0223418C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022341CC ; =0x000006F8 + mov r1, #0x20 + bl MOD13_0223B004 + ldr r1, _022341D0 ; =0x02243150 + ldr r2, _022341D4 ; =0x000004F8 + str r0, [r1] + ldr r1, _022341D8 ; =0x0000A001 + add r0, r0, r2 + bl MATHi_CRC16InitTableRev + ldr r0, _022341D0 ; =0x02243150 + ldr r0, [r0] + bl FUN_02095D68 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022341CC: .word 0x000006F8 +_022341D0: .word 0x02243150 +_022341D4: .word 0x000004F8 +_022341D8: .word 0x0000A001 + + arm_func_start MOD13_022341DC +MOD13_022341DC: ; 0x022341DC + ldr ip, _022341E4 ; =0x020C01A0 + bx ip + .align 2, 0 +_022341E4: .word 0x020C01A0 + + arm_func_start MOD13_022341E8 +MOD13_022341E8: ; 0x022341E8 + ldr r0, _02234200 ; =0x02243154 + ldr ip, _02234204 ; =0x020C10A4 + ldr r0, [r0] + mov r1, #0 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234200: .word 0x02243154 +_02234204: .word 0x020C10A4 + + arm_func_start MOD13_02234208 +MOD13_02234208: ; 0x02234208 + ldr r2, _02234224 ; =0x02243154 + ldr ip, _02234228 ; =0x020C0EA4 + ldr r3, [r2] + mov r2, r1 + mov r1, r0 + add r0, r3, #0x90 + bx ip + .align 2, 0 +_02234224: .word 0x02243154 +_02234228: .word 0x020C0EA4 + + arm_func_start MOD13_0223422C +MOD13_0223422C: ; 0x0223422C + ldr r2, _02234244 ; =0x02243154 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02234248 ; =0x020C0F40 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234244: .word 0x02243154 +_02234248: .word 0x020C0F40 + + arm_func_start MOD13_0223424C +MOD13_0223424C: ; 0x0223424C + ldr r1, _02234268 ; =0x02243154 + mov r2, r0 + ldr r0, [r1] + ldr ip, _0223426C ; =0x020C3888 + mov r1, #0 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234268: .word 0x02243154 +_0223426C: .word 0x020C3888 + + arm_func_start MOD13_02234270 +MOD13_02234270: ; 0x02234270 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0223429C ; =0x02243154 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0x98] + bl MOD13_0223C110 + ldr r0, _0223429C ; =0x02243154 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223429C: .word 0x02243154 + + arm_func_start MOD13_022342A0 +MOD13_022342A0: ; 0x022342A0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x9c + mov r1, #4 + bl MOD13_0223B004 + ldr r2, _0223432C ; =0x02243154 + add r1, sp, #0 + str r0, [r2] + ldr r0, _02234330 ; =0x022405DC + mov r2, #0x20 + bl MOD13_022393D8 + ldr r1, _0223432C ; =0x02243154 + ldr r1, [r1] + str r0, [r1, #0x94] + bl FUN_020C01D0 + ldr r0, _0223432C ; =0x02243154 + ldr r0, [r0] + ldr r1, [r0, #0x94] + bl FUN_020C2444 + mov r0, #0 + bl FUN_020C39CC + ldr r0, _0223432C ; =0x02243154 + ldr r0, [r0] + add r0, r0, #0x90 + bl FUN_020C0F80 + mov r0, #0 + ldr r1, _02234334 ; =MOD13_022341DC + mov r2, r0 + mov r3, #0xc8 + bl MOD13_0223C1C4 + ldr r1, _0223432C ; =0x02243154 + ldr r1, [r1] + str r0, [r1, #0x98] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223432C: .word 0x02243154 +_02234330: .word 0x022405DC +_02234334: .word MOD13_022341DC + + arm_func_start MOD13_02234338 +MOD13_02234338: ; 0x02234338 + stmdb sp!, {r4, lr} + ldr r1, _02234380 ; =0x02243158 + mov r4, r0 + ldr r0, [r1] + mov r1, #0x600 + bl DC_FlushRange + ldr r0, _02234380 ; =0x02243158 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x600 + bl GXS_LoadBG1Scr + ldr r0, _02234380 ; =0x02243158 + ldr r0, [r0] + bl MOD13_0223939C + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_02234380: .word 0x02243158 + + arm_func_start MOD13_02234384 +MOD13_02234384: ; 0x02234384 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022343C8 ; =0x02240658 + ldr r0, [r1, r0, lsl #2] + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r2, _022343CC ; =0x02243158 + ldr r1, _022343D0 ; =MOD13_02234338 + str r0, [r2] + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022343C8: .word 0x02240658 +_022343CC: .word 0x02243158 +_022343D0: .word MOD13_02234338 + + arm_func_start MOD13_022343D4 +MOD13_022343D4: ; 0x022343D4 + ldr r0, _022343FC ; =0x0224315C + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + bxeq lr + ldrb r0, [r0, #0x18] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_022343FC: .word 0x0224315C + + arm_func_start MOD13_02234400 +MOD13_02234400: ; 0x02234400 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _022344C8 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp] + ldr r6, _022344C8 ; =0x0224315C + sub r0, r0, #8 + ldr r7, _022344CC ; =0x0223F608 + mov r4, #0 + str r0, [sp] + mvn r8, #0 +_02234444: + add r0, r7, r4, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r4, lsl #2] + ldr r2, [sp] + mov r1, r8 + bl MOD13_02239888 + add r4, r4, #1 + cmp r4, #5 + blt _02234444 + ldr r1, [sp] + ldr r0, _022344D0 ; =0x000001D6 + cmp r1, r0 + addgt sp, sp, #8 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + cmp r1, #0x100 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + mov r1, r5 + mov r0, #0 + bl MOD13_0223C110 + mov r5, #0 + ldr r4, _022344C8 ; =0x0224315C +_022344A0: + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #5 + blt _022344A0 + ldr r0, _022344C8 ; =0x0224315C + bl MOD13_0223AF90 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022344C8: .word 0x0224315C +_022344CC: .word 0x0223F608 +_022344D0: .word 0x000001D6 + + arm_func_start MOD13_022344D4 +MOD13_022344D4: ; 0x022344D4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _022345A0 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _022345A4 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _02234554 + ldr r5, _022345A0 ; =0x0224315C + mov r7, #1 + mvn r6, #0 +_02234524: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234524 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234554: + str r0, [sp] + mov r8, #1 + ldr r6, _022345A0 ; =0x0224315C + mvn r7, #0 +_02234564: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234564 + ldr r1, _022345A8 ; =MOD13_02234400 + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022345A0: .word 0x0224315C +_022345A4: .word 0x0223F608 +_022345A8: .word MOD13_02234400 + + arm_func_start MOD13_022345AC +MOD13_022345AC: ; 0x022345AC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234678 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _0223467C ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4, #4] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _0223462C + ldr r5, _02234678 ; =0x0224315C + mov r7, #2 + mvn r6, #0 +_022345FC: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _022345FC + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0223462C: + str r0, [sp] + mov r8, #2 + ldr r6, _02234678 ; =0x0224315C + mvn r7, #0 +_0223463C: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _0223463C + ldr r1, _02234680 ; =MOD13_022344D4 + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234678: .word 0x0224315C +_0223467C: .word 0x0223F608 +_02234680: .word MOD13_022344D4 + + arm_func_start MOD13_02234684 +MOD13_02234684: ; 0x02234684 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234750 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _02234754 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4, #8] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _02234704 + ldr r5, _02234750 ; =0x0224315C + mov r7, #3 + mvn r6, #0 +_022346D4: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _022346D4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234704: + str r0, [sp] + mov r8, #3 + ldr r6, _02234750 ; =0x0224315C + mvn r7, #0 +_02234714: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234714 + ldr r1, _02234758 ; =MOD13_022345AC + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234750: .word 0x0224315C +_02234754: .word 0x0223F608 +_02234758: .word MOD13_022345AC + + arm_func_start MOD13_0223475C +MOD13_0223475C: ; 0x0223475C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022347F4 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x10] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r1, _022347F8 ; =0x0223F608 + ldr r0, [sp] + ldrh ip, [r1, #0xc] + sub r2, r0, #8 + str r2, [sp] + cmp r2, ip + ble _022347C0 + ldr r0, _022347F4 ; =0x0224315C + ldrh r3, [r1, #0x12] + ldr r0, [r0] + mvn r1, #0 + ldr r0, [r0, #0x10] + bl MOD13_02239888 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022347C0: + ldr r0, _022347F4 ; =0x0224315C + str ip, [sp] + ldr r0, [r0] + ldrh r3, [r1, #0x12] + ldr r0, [r0, #0x10] + mov r2, ip + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _022347FC ; =MOD13_02234684 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022347F4: .word 0x0224315C +_022347F8: .word 0x0223F608 +_022347FC: .word MOD13_02234684 + + arm_func_start MOD13_02234800 +MOD13_02234800: ; 0x02234800 + ldr r0, _0223481C ; =0x0224315C + ldr r0, [r0] + ldr r0, [r0, #0x14] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0223481C: .word 0x0224315C + + arm_func_start MOD13_02234820 +MOD13_02234820: ; 0x02234820 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r1, #5 + mul r2, r0, r1 + mov sl, #0 + str r0, [sp] + ldr r1, _022348F8 ; =0x0223F5E8 + ldr r0, _022348FC ; =0x0223F5F8 + ldr r4, _02234900 ; =0x0224315C + add sb, r1, r2 + add r8, r0, r2 + mov r7, sl + mov fp, sl + str sl, [sp, #4] + mov r6, #1 + mvn r5, #0 +_02234860: + ldr r0, [r4] + mov r1, r7 + ldr r0, [r0, sl, lsl #2] + bl MOD13_02239ADC + mov r2, r0 + ldrb r1, [sb] + mov r0, r6 + bl MOD13_02239E8C + ldr r0, [r4] + mov r1, r5 + ldr r0, [r0, sl, lsl #2] + mov r2, fp + bl MOD13_02239814 + ldr r3, _02234904 ; =0x0223F608 + ldr r0, [r4] + add r3, r3, sl, lsl #2 + ldr r1, _02234904 ; =0x0223F608 + mov r2, sl, lsl #2 + ldrh r2, [r1, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, sl, lsl #2] + mov r1, r5 + bl MOD13_02239888 + ldr r0, [r4] + ldrb r3, [r8] + ldr r0, [r0, sl, lsl #2] + ldr r2, [sp, #4] + mov r1, r5 + bl MOD13_02239994 + add sl, sl, #2 + add sb, sb, #2 + add r8, r8, #2 + cmp sl, #5 + blt _02234860 + ldr r0, [sp] + bl MOD13_02234384 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022348F8: .word 0x0223F5E8 +_022348FC: .word 0x0223F5F8 +_02234900: .word 0x0224315C +_02234904: .word 0x0223F608 + + arm_func_start MOD13_02234908 +MOD13_02234908: ; 0x02234908 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02234948 ; =0x0224315C + mov r0, #0 + ldr ip, [r1] + mov lr, #1 + ldr r1, _0223494C ; =MOD13_0223475C + mov r2, r0 + mov r3, #0x78 + strb lr, [ip, #0x18] + bl MOD13_0223C1C4 + ldr r1, _02234948 ; =0x0224315C + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02234948: .word 0x0224315C +_0223494C: .word MOD13_0223475C + + arm_func_start MOD13_02234950 +MOD13_02234950: ; 0x02234950 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _0223497C ; =0x0224315C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223497C: .word 0x0224315C + + arm_func_start MOD13_02234980 +MOD13_02234980: ; 0x02234980 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02234A24 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x10] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r1, _02234A28 ; =0x0223F608 + ldr r0, [sp] + ldrh ip, [r1, #0x10] + add r2, r0, #8 + str r2, [sp] + cmp r2, ip + blt _022349CC + cmp r2, #0x100 + ble _022349F0 +_022349CC: + ldr r1, _02234A24 ; =0x0224315C + ldr r0, _02234A28 ; =0x0223F608 + ldr r1, [r1] + ldrh r3, [r0, #0x12] + ldr r0, [r1, #0x10] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022349F0: + ldr r0, _02234A24 ; =0x0224315C + str ip, [sp] + ldr r0, [r0] + ldrh r3, [r1, #0x12] + ldr r0, [r0, #0x10] + mov r2, ip + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _02234A2C ; =MOD13_02234950 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02234A24: .word 0x0224315C +_02234A28: .word 0x0223F608 +_02234A2C: .word MOD13_02234950 + + arm_func_start MOD13_02234A30 +MOD13_02234A30: ; 0x02234A30 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234B08 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234B0C ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #0xc] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234A7C + cmp r1, #0x100 + ble _02234ABC +_02234A7C: + ldr r4, _02234B08 ; =0x0224315C + ldr r5, _02234B0C ; =0x0223F608 + mov r7, #3 + mvn r6, #0 +_02234A8C: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234A8C + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234ABC: + str r0, [sp] + mov r8, #3 + ldr r5, _02234B08 ; =0x0224315C + mvn r7, #0 +_02234ACC: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234ACC + ldr r1, _02234B10 ; =MOD13_02234980 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234B08: .word 0x0224315C +_02234B0C: .word 0x0223F608 +_02234B10: .word MOD13_02234980 + + arm_func_start MOD13_02234B14 +MOD13_02234B14: ; 0x02234B14 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234BEC ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234BF0 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #8] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234B60 + cmp r1, #0x100 + ble _02234BA0 +_02234B60: + ldr r4, _02234BEC ; =0x0224315C + ldr r5, _02234BF0 ; =0x0223F608 + mov r7, #2 + mvn r6, #0 +_02234B70: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234B70 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234BA0: + str r0, [sp] + mov r8, #2 + ldr r5, _02234BEC ; =0x0224315C + mvn r7, #0 +_02234BB0: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234BB0 + ldr r1, _02234BF4 ; =MOD13_02234A30 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234BEC: .word 0x0224315C +_02234BF0: .word 0x0223F608 +_02234BF4: .word MOD13_02234A30 + + arm_func_start MOD13_02234BF8 +MOD13_02234BF8: ; 0x02234BF8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234CD0 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234CD4 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #4] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234C44 + cmp r1, #0x100 + ble _02234C84 +_02234C44: + ldr r4, _02234CD0 ; =0x0224315C + ldr r5, _02234CD4 ; =0x0223F608 + mov r7, #1 + mvn r6, #0 +_02234C54: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234C54 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234C84: + str r0, [sp] + mov r8, #1 + ldr r5, _02234CD0 ; =0x0224315C + mvn r7, #0 +_02234C94: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234C94 + ldr r1, _02234CD8 ; =MOD13_02234B14 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234CD0: .word 0x0224315C +_02234CD4: .word 0x0223F608 +_02234CD8: .word MOD13_02234B14 + + arm_func_start MOD13_02234CDC +MOD13_02234CDC: ; 0x02234CDC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234DB4 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234DB8 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234D28 + cmp r1, #0x100 + ble _02234D68 +_02234D28: + ldr r4, _02234DB4 ; =0x0224315C + ldr r5, _02234DB8 ; =0x0223F608 + mov r7, #0 + mvn r6, #0 +_02234D38: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234D38 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234D68: + str r0, [sp] + mov r8, #0 + ldr r5, _02234DB4 ; =0x0224315C + mvn r7, #0 +_02234D78: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234D78 + ldr r1, _02234DBC ; =MOD13_02234BF8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234DB4: .word 0x0224315C +_02234DB8: .word 0x0223F608 +_02234DBC: .word MOD13_02234BF8 + + arm_func_start MOD13_02234DC0 +MOD13_02234DC0: ; 0x02234DC0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + str r0, [sp] + mov r0, #0x1c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, [sp] + mov r2, #5 + mul r3, r1, r2 + mov sl, #0 + ldr r4, _02234EC4 ; =0x0224315C + ldr r2, _02234EC8 ; =0x0223F5E8 + ldr r1, _02234ECC ; =0x0223F5F8 + str r0, [r4] + add sb, r2, r3 + add r8, r1, r3 + mov fp, sl + str sl, [sp, #4] + mov r7, #1 + mvn r6, #0 + mvn r5, #0x29 +_02234E14: + ldrb r1, [sb] + mov r0, r7 + mov r2, r7 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r6 + str r0, [r2, sl, lsl #2] + ldr r0, [r4] + mov r2, fp + ldr r0, [r0, sl, lsl #2] + bl MOD13_02239814 + ldr r3, _02234ED0 ; =0x0223F608 + ldr r0, [r4] + add r3, r3, sl, lsl #2 + ldrh r3, [r3, #2] + ldr r0, [r0, sl, lsl #2] + mov r1, r6 + mov r2, r5 + bl MOD13_02239888 + ldr r0, [r4] + ldrb r3, [r8] + ldr r0, [r0, sl, lsl #2] + ldr r2, [sp, #4] + mov r1, r6 + bl MOD13_02239994 + add sl, sl, #1 + add sb, sb, #1 + add r8, r8, #1 + cmp sl, #5 + blt _02234E14 + mov r0, #0 + ldr r1, _02234ED4 ; =MOD13_02234CDC + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02234EC4 ; =0x0224315C + ldr r1, [r1] + str r0, [r1, #0x14] + ldr r0, [sp] + bl MOD13_02234384 + mov r0, #0xd + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02234EC4: .word 0x0224315C +_02234EC8: .word 0x0223F5E8 +_02234ECC: .word 0x0223F5F8 +_02234ED0: .word 0x0223F608 +_02234ED4: .word MOD13_02234CDC + + arm_func_start MOD13_02234ED8 +MOD13_02234ED8: ; 0x02234ED8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + str r0, [sp] + bl OS_GetTick + ldr r2, _02235018 ; =0x02243160 + ldr r3, _0223501C ; =0x0017F898 + ldr fp, [r2] + mov r8, #0 + add r2, fp, #0x1000 + ldr r4, [r2, #0xb78] + ldr r2, [r2, #0xb7c] + adds r3, r4, r3 + adc r2, r2, #0 + cmp r1, r2 + cmpeq r0, r3 + addlo sp, sp, #4 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov sb, r8 + mov sl, r8 + mov r6, fp + add r7, fp, #0x1300 + mov r4, #1 + mov r5, #6 +_02234F34: + ldr r1, _02235020 ; =0x0223F61C + mov r0, r7 + mov r2, r5 + bl memcmp + cmp r0, #0 + beq _02234F60 + add r0, r6, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + movne sb, r4 + moveq r8, r4 +_02234F60: + add sl, sl, #1 + cmp sl, #0x10 + add r7, r7, #7 + add r6, r6, #7 + blt _02234F34 + cmp sb, #0 + beq _02234FA0 + cmp r8, #0 + beq _02234FA0 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #2 + blx r1 + b _02234FE4 +_02234FA0: + cmp sb, #0 + beq _02234FC4 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #1 + blx r1 + b _02234FE4 +_02234FC4: + cmp r8, #0 + bne _02234FE4 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #0 + blx r1 +_02234FE4: + ldr r3, _02235018 ; =0x02243160 + mov r0, #0 + ldr r2, [r3] + ldr r1, [sp] + add r2, r2, #0x1000 + str r0, [r2, #0xb80] + ldr r2, [r3] + mov r3, #1 + add r2, r2, #0x1000 + strb r3, [r2, #0xb86] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235018: .word 0x02243160 +_0223501C: .word 0x0017F898 +_02235020: .word 0x0223F61C + + arm_func_start MOD13_02235024 +MOD13_02235024: ; 0x02235024 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r1, _02235154 ; =0x02243160 + mov r4, r0 + ldr r2, [r1] + add r1, r2, #0x1000 + ldrb r0, [r1, #0xb85] + cmp r0, #0 + beq _02235064 + ldr r1, [r1, #0x370] + cmp r1, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02235064: + add r0, r2, #0xf00 + mov r1, #0x400 + bl DC_InvalidateRange + ldrh fp, [r4, #0xe] + mov sl, #0 + cmp fp, #0 + addle sp, sp, #0xc + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _02235154 ; =0x02243160 + ldr r7, [r0] + str sl, [sp, #4] + mov r5, #6 + mov r0, #8 + str r0, [sp] +_0223509C: + add r0, r4, sl, lsl #2 + ldr r6, [r0, #0x10] + ldr r1, _02235158 ; =0x0223F624 + ldr r2, [sp] + add r0, r6, #0xc + bl memcmp + cmp r0, #0 + bne _02235140 + ldrb r0, [r6, #0x15] + ands r0, r0, #1 + beq _02235140 + ldr sb, [sp, #4] + add r8, r7, #0x1300 + add r6, r6, #4 +_022350D4: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _02235130 + mov r0, #7 + mla r0, sb, r0, r7 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + bne _02235140 + add r0, r7, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0xb85] + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02235130: + add sb, sb, #1 + cmp sb, #0x10 + add r8, r8, #7 + blt _022350D4 +_02235140: + add sl, sl, #1 + cmp sl, fp + blt _0223509C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235154: .word 0x02243160 +_02235158: .word 0x0223F624 + + arm_func_start MOD13_0223515C +MOD13_0223515C: ; 0x0223515C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + str r0, [sp] + ldrh r0, [r0, #0xe] + mov fp, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0xc0 + str r0, [sp, #4] + mov r0, #8 + ldr r4, _022352EC ; =0x0223F61C + str fp, [sp, #0x18] + str fp, [sp, #0xc] + str fp, [sp, #0x10] + mov r5, #6 + str r0, [sp, #8] +_022351A8: + ldr r0, [sp] + ldr r1, [sp, #4] + add r0, r0, fp, lsl #2 + ldr sl, [r0, #0x10] + mov r0, sl + bl DC_InvalidateRange + ldr r1, _022352F0 ; =0x0223F624 + ldr r2, [sp, #8] + add r0, sl, #0xc + bl memcmp + cmp r0, #0 + bne _022352D0 + ldr r0, _022352F4 ; =0x02243160 + ldr sb, [sp, #0xc] + ldr r7, [r0] + add r6, sl, #4 + add r8, r7, #0x1300 +_022351EC: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _0223524C + mov r0, #7 + mla r0, sb, r0, r7 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + bne _022352D0 + ldrb r0, [sl, #0x15] + ands r0, r0, #1 + beq _022352D0 + add r0, r7, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + blx r1 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0223524C: + add r8, r8, #7 + add sb, sb, #1 + cmp sb, #0x10 + blt _022351EC + ldr r6, [sp, #0x10] + add r8, r7, #0x1300 +_02235264: + mov r0, r8 + mov r1, r4 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _022352C0 + mov r0, #7 + add r1, r7, #0x1300 + mul r7, r6, r0 + add r1, r1, r7 + add r0, sl, #4 + mov r2, r5 + bl MI_CpuCopy8 + ldrb r0, [sl, #0x15] + ands r0, r0, #1 + ldr r0, _022352F4 ; =0x02243160 + ldrne r1, [sp, #0x14] + ldr r0, [r0] + ldreq r1, [sp, #0x18] + add r0, r0, r7 + add r0, r0, #0x1000 + strb r1, [r0, #0x306] + b _022352D0 +_022352C0: + add r8, r8, #7 + add r6, r6, #1 + cmp r6, #0x10 + blt _02235264 +_022352D0: + ldr r0, [sp] + add fp, fp, #1 + ldrh r0, [r0, #0xe] + cmp fp, r0 + blt _022351A8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022352EC: .word 0x0223F61C +_022352F0: .word 0x0223F624 +_022352F4: .word 0x02243160 + + arm_func_start MOD13_022352F8 +MOD13_022352F8: ; 0x022352F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _022353A0 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1000 + ldrb r2, [r1, #0xb84] + cmp r2, #0 + beq _02235340 + ldrh r0, [r0] + add sp, sp, #4 + cmp r0, #2 + moveq r0, #2 + streqb r0, [r1, #0xb84] + ldmia sp!, {pc} +_02235340: + ldrh r2, [r0] + cmp r2, #0x26 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r2, [r0, #8] + cmp r2, #4 + beq _02235388 + cmp r2, #5 + bne _02235394 + ldrb r1, [r1, #0xb86] + cmp r1, #0 + beq _02235378 + bl MOD13_02235024 + b _0223537C +_02235378: + bl MOD13_0223515C +_0223537C: + bl MOD13_022354B4 + add sp, sp, #4 + ldmia sp!, {pc} +_02235388: + bl MOD13_022354B4 + add sp, sp, #4 + ldmia sp!, {pc} +_02235394: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022353A0: .word 0x02243160 + + arm_func_start MOD13_022353A4 +MOD13_022353A4: ; 0x022353A4 + ldr r1, _022353B8 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1000 + str r0, [r1, #0x370] + bx lr + .align 2, 0 +_022353B8: .word 0x02243160 + + arm_func_start MOD13_022353BC +MOD13_022353BC: ; 0x022353BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _022354A8 ; =0x02243160 + mov r3, #1 + ldr r0, [r2] + ldr r1, _022354AC ; =0x000013B8 + add r0, r0, #0x1000 + strb r3, [r0, #0xb84] + ldr r0, [r2] + add r0, r0, r1 + bl WM_ReadStatus + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + beq _02235444 + ldr r0, _022354B0 ; =MOD13_022352F8 + bl WM_Reset + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} +_02235418: + ldr r1, _022354A8 ; =0x02243160 + ldr r0, _022354AC ; =0x000013B8 + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + bne _02235418 +_02235444: + ldr r0, _022354B0 ; =MOD13_022352F8 + bl WM_End + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r1, [r0, #0xb80] + cmp r1, #0 + beq _0223547C + mov r0, #0 + bl MOD13_0223C104 +_0223547C: + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1000 +_02235488: + ldrb r1, [r0, #0xb84] + cmp r1, #2 + bne _02235488 + ldr r0, _022354A8 ; =0x02243160 + bl MOD13_0223AF90 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022354A8: .word 0x02243160 +_022354AC: .word 0x000013B8 +_022354B0: .word MOD13_022352F8 + + arm_func_start MOD13_022354B4 +MOD13_022354B4: ; 0x022354B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022354E8 ; =0x02243160 + ldr r1, _022354EC ; =0x00001374 + ldr r2, [r0] + ldr r0, _022354F0 ; =MOD13_022352F8 + add r1, r2, r1 + bl WM_StartScanEx + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022354E8: .word 0x02243160 +_022354EC: .word 0x00001374 +_022354F0: .word MOD13_022352F8 + + arm_func_start MOD13_022354F4 +MOD13_022354F4: ; 0x022354F4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x54 + mov r4, r0 + ldr r0, _0223565C ; =0x00001BA0 + mov r1, #0x20 + bl MOD13_0223AFE0 + ldr r2, _02235660 ; =0x02243160 + add r1, r0, #0x1000 + str r0, [r2] + str r4, [r1, #0x370] + ldr r4, [r2] + bl OS_GetTick + add r2, r4, #0x1000 + str r0, [r2, #0xb78] + str r1, [r2, #0xb7c] + ldr r1, _02235664 ; =MOD13_022352F8 + mov r0, r4 + mov r2, #3 + bl WM_Initialize + cmp r0, #2 + bne _02235648 + ldr r5, _02235660 ; =0x02243160 + ldr r4, _02235668 ; =0x000013B8 +_02235550: + ldr r0, [r5] + add r0, r0, r4 + bl WM_ReadStatus + ldr ip, [r5] + add r0, ip, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + bne _02235550 + ldr r0, _0223566C ; =0x00001374 + ldr lr, _02235670 ; =0x0223F630 + add r5, ip, r0 + mov r4, #4 +_02235580: + ldmia lr!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _02235580 + ldr r0, [lr] + add r1, ip, #0xf00 + str r0, [r5] + add r0, ip, #0x1000 + str r1, [r0, #0x374] + bl WM_GetDispersionScanPeriod + ldr r1, _02235660 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1300 + strh r0, [r1, #0x7c] + add r0, sp, #0 + bl OS_GetOwnerInfo + ldr r0, _02235660 ; =0x02243160 + ldr r1, _02235674 ; =0x00001388 + ldr r2, [r0] + ldr r0, _02235678 ; =0x0223F624 + add r1, r2, r1 + mov r2, #8 + bl MI_CpuCopy8 + ldr r2, _02235660 ; =0x02243160 + mov r3, #1 + ldr r0, [r2] + ldr r1, _0223567C ; =0x00001394 + add r0, r0, #0x1000 + strb r3, [r0, #0x391] + ldr r2, [r2] + ldrh r3, [sp, #0x18] + add r1, r2, r1 + add r0, sp, #4 + mov r2, r3, lsl #1 + bl MI_CpuCopy8 + bl MOD13_022354B4 + cmp r0, #0 + beq _02235648 + mov r0, #0 + ldr r1, _02235680 ; =MOD13_02234ED8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235660 ; =0x02243160 + add sp, sp, #0x54 + ldr r1, [r1] + add r1, r1, #0x1000 + str r0, [r1, #0xb80] + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_02235648: + ldr r0, _02235660 ; =0x02243160 + bl MOD13_0223AF90 + mov r0, #0 + add sp, sp, #0x54 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223565C: .word 0x00001BA0 +_02235660: .word 0x02243160 +_02235664: .word MOD13_022352F8 +_02235668: .word 0x000013B8 +_0223566C: .word 0x00001374 +_02235670: .word 0x0223F630 +_02235674: .word 0x00001388 +_02235678: .word 0x0223F624 +_0223567C: .word 0x00001394 +_02235680: .word MOD13_02234ED8 + + arm_func_start MOD13_02235684 +MOD13_02235684: ; 0x02235684 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r3, #0x4000000 + ldr r2, [r3] + ldr r1, _02235730 ; =0x02243164 + bic r2, r2, #0xe000 + str r2, [r3] + ldr r1, [r1] + mov r6, r0 + ldr r0, [r1] + bl MOD13_02239AE8 + ldr r0, _02235730 ; =0x02243164 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_02239AE8 + ldr r7, _02235730 ; =0x02243164 + ldr r4, _02235734 ; =0x0223F680 + ldr r1, [r7] + mov r5, #0 + ldrb r0, [r1, #0x1c] + ldrb r0, [r4, r0] + cmp r0, #0 + ble _0223570C +_022356E0: + add r0, r1, r5, lsl #2 + ldr r0, [r0, #8] + cmp r0, #0 + beq _022356F4 + bl MOD13_02239AE8 +_022356F4: + ldr r1, [r7] + add r5, r5, #1 + ldrb r0, [r1, #0x1c] + ldrb r0, [r4, r0] + cmp r5, r0 + blt _022356E0 +_0223570C: + ldr r0, [r1, #0x10] + bl MOD13_0223A978 + mov r1, r6 + mov r0, #1 + bl MOD13_0223C110 + ldr r0, _02235730 ; =0x02243164 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02235730: .word 0x02243164 +_02235734: .word 0x0223F680 + + arm_func_start MOD13_02235738 +MOD13_02235738: ; 0x02235738 + stmdb sp!, {r4, lr} + ldr r1, _02235788 ; =0x02243164 + mov r4, r0 + ldr r3, [r1] + ldr r0, _0223578C ; =0x04000050 + ldrsb r2, [r3, #0x1a] + add r2, r2, #1 + strb r2, [r3, #0x1a] + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + bl G2x_ChangeBlendBrightness_ + ldr r0, _02235788 ; =0x02243164 + ldr r0, [r0] + ldrsb r0, [r0, #0x1a] + cmp r0, #0 + ldmltia sp!, {r4, pc} + ldr r1, _02235790 ; =MOD13_02235684 + mov r0, r4 + bl MOD13_0223C130 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235788: .word 0x02243164 +_0223578C: .word 0x04000050 +_02235790: .word MOD13_02235684 + + arm_func_start MOD13_02235794 +MOD13_02235794: ; 0x02235794 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02235818 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + add r0, r0, #0xc + str r0, [sp, #4] + bl MOD13_022359B8 + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r0, _02235818 ; =0x02243164 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + cmp r0, #0 + beq _02235804 + ldr r1, _0223581C ; =MOD13_02235738 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02235804: + ldr r1, _02235820 ; =MOD13_02235684 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235818: .word 0x02243164 +_0223581C: .word MOD13_02235738 +_02235820: .word MOD13_02235684 + + arm_func_start MOD13_02235824 +MOD13_02235824: ; 0x02235824 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02235864 ; =0x02243164 + ldr r3, [r1] + ldrb r2, [r3, #0x1d] + add r2, r2, #1 + strb r2, [r3, #0x1d] + ldr r1, [r1] + ldrb r1, [r1, #0x1d] + cmp r1, #8 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r1, _02235868 ; =MOD13_02235794 + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235864: .word 0x02243164 +_02235868: .word MOD13_02235794 + + arm_func_start MOD13_0223586C +MOD13_0223586C: ; 0x0223586C + stmdb sp!, {r4, lr} + ldr r1, _02235918 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + bl MOD13_02239ADC + ldr r1, _02235918 ; =0x02243164 + mov r2, r0 + ldr r0, [r1] + ldr r1, _0223591C ; =0x0223F6B0 + ldrb r3, [r0, #0x1c] + mov r0, #0 + add r1, r1, r3, lsl #1 + ldrb r1, [r4, r1] + add r1, r1, #1 + bl MOD13_02239E8C + ldr r0, _02235918 ; =0x02243164 + ldr r2, _02235920 ; =0x0223F698 + ldr r0, [r0] + ldr r1, _02235924 ; =0x0223F718 + ldrb lr, [r0, #0x1c] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + add r2, r2, lr, lsl #1 + ldrb r3, [r4, r2] + add r2, r1, lr, lsl #3 + mvn r1, #0 + mov ip, r3, lsl #2 + ldrh r2, [ip, r2] + ldr r3, _02235928 ; =0x0223F71A + add r3, r3, lr, lsl #3 + ldrh r3, [ip, r3] + bl MOD13_02239888 + ldr r0, _02235918 ; =0x02243164 + mvn r1, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + bl MOD13_02239814 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235918: .word 0x02243164 +_0223591C: .word 0x0223F6B0 +_02235920: .word 0x0223F698 +_02235924: .word 0x0223F718 +_02235928: .word 0x0223F71A + + arm_func_start MOD13_0223592C +MOD13_0223592C: ; 0x0223592C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov sb, r1 + bl MOD13_02239AD4 + mov r8, r0 + cmp r8, #0 + mov r7, #0 + addle sp, sp, #0xc + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add fp, sp, #0 + mov r6, r7 + mov r4, r7 + mov r5, #0x200 +_02235964: + mov r0, sl + mov r1, r7 + mov r2, fp + add r3, sp, #4 + bl MOD13_022397DC + ldr r0, [sp, #4] + cmp r0, sb + blt _02235990 + cmp r0, #0xc0 + movlt r2, r6 + blt _02235994 +_02235990: + mov r2, r5 +_02235994: + mov r0, sl + mov r1, r7 + mov r3, r4 + bl MOD13_02239A1C + add r7, r7, #1 + cmp r7, r8 + blt _02235964 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start MOD13_022359B8 +MOD13_022359B8: ; 0x022359B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r1, _02235B4C ; =0x02243164 + mov sl, r0 + ldr r0, [r1] + ldr r1, _02235B50 ; =0x0223F6E8 + ldrb r2, [r0, #0x1c] + ldr r0, [r0] + mov r3, sl + mov r2, r2, lsl #2 + ldrh r2, [r1, r2] + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _02235B4C ; =0x02243164 + ldr r0, _02235B54 ; =0x0223F674 + ldr r5, [r1] + ldr r2, _02235B50 ; =0x0223F6E8 + ldrb r3, [r5, #0x1c] + ldrh r1, [r0, #2] + ldrh r4, [r0] + mov r0, r3, lsl #2 + ldrh r2, [r2, r0] + ldr r0, [r5, #4] + add r3, sl, r1 + add r2, r4, r2 + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _02235B4C ; =0x02243164 + mov r1, sl + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223592C + ldr r0, _02235B4C ; =0x02243164 + mov r1, sl + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223592C + ldr r4, _02235B4C ; =0x02243164 + ldr r8, _02235B58 ; =0x0223F680 + ldr r0, [r4] + mov sb, #0 + ldrb r0, [r0, #0x1c] + ldrb r1, [r8, r0] + cmp r1, #0 + ble _02235AE8 + ldr r7, _02235B5C ; =0x0223F698 + ldr r5, _02235B60 ; =0x0223F718 + ldr fp, _02235B50 ; =0x0223F6E8 + mvn r6, #0 +_02235A7C: + add r1, r7, r0, lsl #1 + ldrb ip, [sb, r1] + add r2, r5, r0, lsl #3 + add r3, fp, r0, lsl #2 + add r0, r2, ip, lsl #2 + ldr r1, [r4] + mov ip, ip, lsl #2 + ldrh r2, [ip, r2] + ldrh r0, [r0, #2] + add r1, r1, sb, lsl #2 + ldrh r3, [r3, #2] + add ip, sl, r0 + ldr r0, [r1, #8] + mov r1, r6 + sub r3, ip, r3 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, sl + add r0, r0, sb, lsl #2 + ldr r0, [r0, #8] + bl MOD13_0223592C + ldr r0, [r4] + add sb, sb, #1 + ldrb r0, [r0, #0x1c] + ldrb r1, [r8, r0] + cmp sb, r1 + blt _02235A7C +_02235AE8: + and r1, sl, #0xff + cmp r1, #0xc0 + movge r3, #0 + movge r1, r3 + ldrlt r2, _02235B64 ; =0x0223F702 + movlt r3, r0, lsl #2 + ldrlth r2, [r2, r3] + mov r5, r0, lsl #2 + add r4, sp, #4 + addlt r3, r1, r2 + ldr r2, _02235B50 ; =0x0223F6E8 + cmp r3, #0xc0 + ldrh r0, [r2, r5] + ldr r2, _02235B68 ; =0x0223F700 + movgt r3, #0xc0 + str r4, [sp] + ldrh r2, [r2, r5] + add r2, r0, r2 + bl MOD13_0223ABA8 + mov r0, #0 + mov r2, r4 + mov r1, r0 + bl MOD13_0223AD38 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235B4C: .word 0x02243164 +_02235B50: .word 0x0223F6E8 +_02235B54: .word 0x0223F674 +_02235B58: .word 0x0223F680 +_02235B5C: .word 0x0223F698 +_02235B60: .word 0x0223F718 +_02235B64: .word 0x0223F702 +_02235B68: .word 0x0223F700 + + arm_func_start MOD13_02235B6C +MOD13_02235B6C: ; 0x02235B6C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02235BDC ; =0x02243164 + mvn ip, #0 + ldr r3, [r2] + mov r1, r0 + strb ip, [r3, #0x1b] + ldr r3, [r2] + ldrh r0, [r3, #0x18] + add r0, r0, #1 + strh r0, [r3, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #0x18] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + mov r0, #0 + bl MOD13_0223C110 + ldr r1, _02235BE0 ; =MOD13_02235824 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235BDC ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235BDC: .word 0x02243164 +_02235BE0: .word MOD13_02235824 + + arm_func_start MOD13_02235BE4 +MOD13_02235BE4: ; 0x02235BE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r5, _02235D20 ; =0x02243164 + ldr sl, _02235D24 ; =0x0223F680 + ldr r0, [r5] + mov r4, #0 + ldrb r1, [r0, #0x1c] + ldrb r0, [sl, r1] + cmp r0, #0 + ble _02235C6C + ldr sb, _02235D28 ; =0x0223F718 + ldr r8, _02235D2C ; =0x0223F698 + ldr r7, _02235D30 ; =0x0223F6BC + add r6, sp, #0 +_02235C1C: + add r0, r8, r1, lsl #1 + ldrb r0, [r4, r0] + add r3, sb, r1, lsl #3 + mov r2, r6 + add r0, r3, r0, lsl #2 + add r1, r7, r1, lsl #2 + bl MOD13_0223AB74 + mov r0, r6 + bl MOD13_0223B2B4 + cmp r0, #0 + ldrne r0, _02235D20 ; =0x02243164 + ldrne r0, [r0] + strneb r4, [r0, #0x1b] + bne _02235C6C + ldr r0, [r5] + add r4, r4, #1 + ldrb r1, [r0, #0x1c] + ldrb r0, [sl, r1] + cmp r4, r0 + blt _02235C1C +_02235C6C: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02235C98 + ldr r0, _02235D20 ; =0x02243164 + ldr r1, _02235D34 ; =0x0223F6A4 + ldr r2, [r0] + ldrb r0, [r2, #0x1c] + mov r0, r0, lsl #1 + ldrsb r0, [r1, r0] + strb r0, [r2, #0x1b] +_02235C98: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02235CC4 + ldr r0, _02235D20 ; =0x02243164 + ldr r1, _02235D38 ; =0x0223F6A5 + ldr r2, [r0] + ldrb r0, [r2, #0x1c] + mov r0, r0, lsl #1 + ldrsb r0, [r1, r0] + strb r0, [r2, #0x1b] +_02235CC4: + ldr r0, _02235D20 ; =0x02243164 + ldr r2, _02235D24 ; =0x0223F680 + ldr r4, [r0] + mov r0, #0 + ldrb r1, [r4, #0x1c] + ldrb r1, [r2, r1] + cmp r1, #0 + ble _02235D10 + ldrsb r3, [r4, #0x1b] +_02235CE8: + cmp r0, r3 + bne _02235CFC + bl MOD13_0223586C + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02235CFC: + ldrb r1, [r4, #0x1c] + add r0, r0, #1 + ldrb r1, [r2, r1] + cmp r0, r1 + blt _02235CE8 +_02235D10: + mvn r0, #0 + strb r0, [r4, #0x1b] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02235D20: .word 0x02243164 +_02235D24: .word 0x0223F680 +_02235D28: .word 0x0223F718 +_02235D2C: .word 0x0223F698 +_02235D30: .word 0x0223F6BC +_02235D34: .word 0x0223F6A4 +_02235D38: .word 0x0223F6A5 + + arm_func_start MOD13_02235D3C +MOD13_02235D3C: ; 0x02235D3C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02235E10 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + ldr r1, _02235E10 ; =0x02243164 + sub r0, r0, #0xc + ldr r1, [r1] + str r0, [sp, #4] + ldrb r2, [r1, #0x1c] + ldr r1, _02235E14 ; =0x0223F6EA + mov r2, r2, lsl #2 + ldrh r1, [r1, r2] + cmp r0, r1 + ble _02235D9C + bl MOD13_022359B8 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02235D9C: + mov r0, r1 + bl MOD13_022359B8 + ldr r0, _02235E10 ; =0x02243164 + ldr r0, [r0] + ldrb r0, [r0, #0x1c] + cmp r0, #5 + bne _02235DDC + mov r0, #0 + ldr r1, _02235E18 ; =MOD13_02235B6C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235E10 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + b _02235DFC +_02235DDC: + mov r0, #0 + ldr r1, _02235E1C ; =MOD13_02235BE4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235E10 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] +_02235DFC: + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235E10: .word 0x02243164 +_02235E14: .word 0x0223F6EA +_02235E18: .word MOD13_02235B6C +_02235E1C: .word MOD13_02235BE4 + + arm_func_start MOD13_02235E20 +MOD13_02235E20: ; 0x02235E20 + stmdb sp!, {r4, lr} + ldr r1, _02235E74 ; =0x02243164 + mov r4, r0 + ldr r3, [r1] + ldr r0, _02235E78 ; =0x04000050 + ldrsb r2, [r3, #0x1a] + sub r2, r2, #1 + strb r2, [r3, #0x1a] + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + bl G2x_ChangeBlendBrightness_ + ldr r1, _02235E74 ; =0x02243164 + mvn r0, #0xb + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + cmp r1, r0 + ldmgtia sp!, {r4, pc} + ldr r1, _02235E7C ; =MOD13_02235D3C + mov r0, r4 + bl MOD13_0223C130 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235E74: .word 0x02243164 +_02235E78: .word 0x04000050 +_02235E7C: .word MOD13_02235D3C + + arm_func_start MOD13_02235E80 +MOD13_02235E80: ; 0x02235E80 + ldr r0, _02235E98 ; =0x02243164 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02235E98: .word 0x02243164 + + arm_func_start MOD13_02235E9C +MOD13_02235E9C: ; 0x02235E9C + ldr r0, _02235EAC ; =0x02243164 + ldr r0, [r0] + ldrsb r0, [r0, #0x1b] + bx lr + .align 2, 0 +_02235EAC: .word 0x02243164 + + arm_func_start MOD13_02235EB0 +MOD13_02235EB0: ; 0x02235EB0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02235EF4 ; =0x02243164 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0x14] + bl MOD13_0223C110 + ldr r1, _02235EF8 ; =MOD13_02235824 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235EF4 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235EF4: .word 0x02243164 +_02235EF8: .word MOD13_02235824 + + arm_func_start MOD13_02235EFC +MOD13_02235EFC: ; 0x02235EFC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + ldr r5, _02236224 ; =0x0223F688 + ldr r4, _02236228 ; =0x0224307C + ldrb sl, [r5] + ldrb sb, [r5, #1] + ldrb r8, [r5, #2] + ldrb r7, [r5, #3] + ldrb r6, [r5, #4] + ldrb r5, [r5, #5] + mov fp, r0 + str r2, [sp, #0x14] + mov r2, r3 + str r1, [sp, #0x10] + ldr r0, [r4] + ldr r3, [sp, #0x50] + mov r1, fp + strb sl, [sp, #0x20] + strb sb, [sp, #0x21] + strb r8, [sp, #0x22] + strb r7, [sp, #0x23] + strb r6, [sp, #0x24] + strb r5, [sp, #0x25] + bl MOD13_0222352C + str r0, [sp, #0x18] + mov r0, #0x20 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0223622C ; =0x02243164 + ldr r1, [sp, #0x10] + str r0, [r2] + strb r1, [r0, #0x1c] + ldr r1, [r2] + mvn r3, #1 + strb r3, [r1, #0x1b] + ldr r3, [r2] + ldr r2, [sp, #0x14] + ldr r0, _02236230 ; =0x04000050 + strb r2, [r3, #0x1e] + mov r1, #0x1f + mov r2, #0 + bl G2x_SetBlendBrightness_ + mov r0, #0 + ldr r3, _02236234 ; =0x0223F678 + ldr r1, [sp, #0x10] + mov r2, r0 + ldrb r1, [r3, r1] + bl MOD13_02239E0C + ldr r3, _0223622C ; =0x02243164 + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x100 + str r0, [r4] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0] + bl MOD13_02239888 + ldr r0, _0223622C ; =0x02243164 + mvn r1, #0 + ldr r0, [r0] + mov r2, #0 + ldr r0, [r0] + bl MOD13_02239814 + ldr r2, _02236238 ; =0x0223F680 + ldr r0, [sp, #0x10] + mov sl, #0 + ldrb r0, [r2, r0] + cmp r0, #0 + ble _0223609C + ldr r0, [sp, #0x10] + ldr r1, _0223623C ; =0x0223F6B0 + ldr r4, _0223622C ; =0x02243164 + add r8, r2, r0 + add sb, r1, r0, lsl #1 + str sl, [sp, #0x1c] + mov r5, sl + mov fp, sl + mvn r7, #0 + mov r6, #0x100 +_02236038: + ldr r0, [sp, #0x1c] + ldrb r1, [sb] + mov r2, r0 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r7 + add r2, r2, sl, lsl #2 + str r0, [r2, #8] + ldr r0, [r4] + mov r2, r6 + add r0, r0, sl, lsl #2 + ldr r0, [r0, #8] + mov r3, r5 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r7 + add r0, r0, sl, lsl #2 + ldr r0, [r0, #8] + mov r2, fp + bl MOD13_02239814 + ldrb r0, [r8] + add sl, sl, #1 + add sb, sb, #1 + cmp sl, r0 + blt _02236038 +_0223609C: + add r1, sp, #0x28 + str r1, [sp] + mov r0, #0 + mov r1, #0x20 + mov r2, #0xc + mov r3, #1 + str r0, [sp, #4] + bl MOD13_0223A9A4 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x10] + mov r0, #0 + ldr r1, [sp, #0x28] + mov r2, r0 + bl MOD13_02239B74 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #4] + bl MOD13_0221EF88 + ldr r1, [sp, #0x10] + mov r3, #2 + mov r5, r1, lsl #2 + ldr r1, _02236240 ; =0x0223F6D2 + ldr r2, _0223622C ; =0x02243164 + ldrh r4, [r1, r5] + mov r1, #0 + str r4, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x18] + ldr r3, _02236244 ; =0x0223F6D0 + str r0, [sp, #0xc] + ldr r0, [r2] + ldrh r3, [r3, r5] + ldr r0, [r0, #0x10] + mov r2, r1 + bl MOD13_0223A4F0 + ldr r0, _0223622C ; =0x02243164 + mov r2, #0 + ldr r3, [r0] + mov r1, #0x100 + str r2, [sp] + ldr r0, [r3, #0x10] + ldr r3, [r3, #4] + bl MOD13_0223A440 + mov r0, #0 + mov r1, r0 + mov r2, #0x1f + mov r3, r0 + bl MOD13_0223ABCC + ldr r3, _0223622C ; =0x02243164 + add r4, sp, #0x20 + ldr r3, [r3] + mov r0, #0 + ldrb r3, [r3, #0x1c] + mov r1, #1 + mov r2, #0x1f + ldrb r3, [r4, r3] + bl MOD13_0223ABCC + mov r0, #0 + mov r1, #3 + mov r2, #0x1f + mov r3, #1 + bl MOD13_0223ABCC + ldr r2, _02236248 ; =0x0223F690 + mov r0, #0 + mov r1, #1 + bl MOD13_0223AD38 + mov r0, #0xc0 + bl MOD13_022359B8 + mov r2, #0x4000000 + ldr r0, [sp, #0x14] + ldr r1, [r2] + cmp r0, #0 + bic r0, r1, #0xe000 + orr r0, r0, #0x6000 + str r0, [r2] + beq _022361FC + ldr r1, _0223624C ; =MOD13_02235E20 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0223622C ; =0x02243164 + add sp, sp, #0x2c + ldr r1, [r1] + str r0, [r1, #0x14] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022361FC: + ldr r1, _02236250 ; =MOD13_02235D3C + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02236224: .word 0x0223F688 +_02236228: .word 0x0224307C +_0223622C: .word 0x02243164 +_02236230: .word 0x04000050 +_02236234: .word 0x0223F678 +_02236238: .word 0x0223F680 +_0223623C: .word 0x0223F6B0 +_02236240: .word 0x0223F6D2 +_02236244: .word 0x0223F6D0 +_02236248: .word 0x0223F690 +_0223624C: .word MOD13_02235E20 +_02236250: .word MOD13_02235D3C + + arm_func_start MOD13_02236254 +MOD13_02236254: ; 0x02236254 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02236310 ; =0x02243168 + mov r5, #1 + ldr lr, [r1] + ldrh r4, [lr, #2] + mov ip, r5 + add r1, lr, #0x24 + mov r6, #0x1e +_02236274: + mov r2, ip, lsl r5 + ands r2, r4, r2 + beq _022362F4 + sub r2, r5, #1 + mul r3, r2, r6 + ldrb r8, [r0] + ldrb r7, [r1, r3] + add r2, r1, r3 + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #1] + ldrb r7, [r2, #1] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #2] + ldrb r7, [r2, #2] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #3] + ldrb r7, [r2, #3] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #4] + ldrb r7, [r2, #4] + cmp r8, r7 + bne _022362F4 + ldrb r7, [r0, #5] + ldrb r2, [r2, #5] + cmp r7, r2 + addeq r0, lr, r3 + ldreqh r0, [r0, #0x2a] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_022362F4: + add r2, r5, #1 + mov r2, r2, lsl #0x10 + mov r5, r2, lsr #0x10 + cmp r5, #2 + blo _02236274 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02236310: .word 0x02243168 + + arm_func_start MOD13_02236314 +MOD13_02236314: ; 0x02236314 + ldr r1, _02236344 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mov r1, r2, lsl r0 + ldrh r2, [r3, #2] + ands r1, r2, r1 + subne r1, r0, #1 + addne r2, r3, #0xe + movne r0, #0x1e + mlane r0, r1, r0, r2 + moveq r0, #0 + bx lr + .align 2, 0 +_02236344: .word 0x02243168 + + arm_func_start MOD13_02236348 +MOD13_02236348: ; 0x02236348 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02236410 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mov r1, r2, lsl r4 + mov r1, r1, lsl #0x10 + ldrh r2, [r3, #2] + mov r4, r1, lsr #0x10 + mov r5, r0 + ands r1, r2, r4 + bne _02236390 + bl OS_RestoreInterrupts + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_02236390: + add r1, sp, #0 + mov r0, r3 + mov r2, #0xe + bl MI_CpuCopy8 + mov r0, r5 + bl OS_RestoreInterrupts + ldrh r0, [sp, #4] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #2 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #6] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #3 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #8] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #0xa] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #5 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #0xc] + ands r0, r0, r4 + movne r0, #6 + moveq r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236410: .word 0x02243168 + + arm_func_start MOD13_02236414 +MOD13_02236414: ; 0x02236414 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _02236468 ; =0x02243168 + ldr r1, _0223646C ; =0x0224316C + ldr r2, [r2] + add r5, r2, #2 + add r4, r2, #4 + add lr, r2, #6 + add ip, r2, #8 + add r3, r2, #0xa + add r2, r2, #0xc + str r5, [r1] + str r4, [r1, #4] + str lr, [r1, #8] + str ip, [r1, #0xc] + str r3, [r1, #0x10] + str r2, [r1, #0x14] + ldr r0, [r1, r0, lsl #2] + ldrh r0, [r0] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236468: .word 0x02243168 +_0223646C: .word 0x0224316C + + arm_func_start MOD13_02236470 +MOD13_02236470: ; 0x02236470 + ldr r0, _02236480 ; =0x02243168 + ldr r0, [r0] + ldrh r0, [r0] + bx lr + .align 2, 0 +_02236480: .word 0x02243168 + + arm_func_start MOD13_02236484 +MOD13_02236484: ; 0x02236484 + ldr r1, _02236494 ; =0x02243168 + ldr r1, [r1] + strh r0, [r1] + bx lr + .align 2, 0 +_02236494: .word 0x02243168 + + arm_func_start MOD13_02236498 +MOD13_02236498: ; 0x02236498 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r2 + cmp r1, #0xe + addls pc, pc, r1, lsl #2 + b _022367CC +_022364B0: ; jump table + b _022367CC ; case 0 + ldmia sp!, {r4, r5, r6, pc} ; case 1 + b _022364EC ; case 2 + b _02236574 ; case 3 + ldmia sp!, {r4, r5, r6, pc} ; case 4 + ldmia sp!, {r4, r5, r6, pc} ; case 5 + ldmia sp!, {r4, r5, r6, pc} ; case 6 + b _022366AC ; case 7 + ldmia sp!, {r4, r5, r6, pc} ; case 8 + b _022366DC ; case 9 + b _022365FC ; case 10 + ldmia sp!, {r4, r5, r6, pc} ; case 11 + b _02236724 ; case 12 + b _02236780 ; case 13 + b _02236668 ; case 14 +_022364EC: + bl MOD13_02236470 + cmp r0, #2 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _022367D4 ; =0x02243168 + ldr r6, [r0] + bl OS_DisableInterrupts + ldrh r2, [r6, #2] + mov r1, #1 + orr r1, r2, r1, lsl r5 + strh r1, [r6, #2] + bl OS_RestoreInterrupts + ldr r1, _022367D4 ; =0x02243168 + sub r3, r5, #1 + mov r0, #0x1e + mul r0, r3, r0 + ldr r2, [r1] + add r3, r2, #0x24 + ldrb r2, [r4, #0xa] + add ip, r3, r0 + strb r2, [r3, r0] + ldrb r2, [r4, #0xb] + strb r2, [ip, #1] + ldrb r2, [r4, #0xc] + strb r2, [ip, #2] + ldrb r2, [r4, #0xd] + strb r2, [ip, #3] + ldrb r2, [r4, #0xe] + strb r2, [ip, #4] + ldrb r2, [r4, #0xf] + strb r2, [ip, #5] + ldr r1, [r1] + add r0, r1, r0 + strh r5, [r0, #0x2a] + ldmia sp!, {r4, r5, r6, pc} +_02236574: + bl MOD13_02236348 + cmp r0, #6 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #1 + mvn r0, r0, lsl r5 + mov r4, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _022367D4 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r4, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r4, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r4, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r4, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r4, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r4, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + ldmia sp!, {r4, r5, r6, pc} +_022365FC: + bl MOD13_02236470 + cmp r0, #2 + beq _02236614 + mov r0, r5 + bl MOD13_02236B38 + ldmia sp!, {r4, r5, r6, pc} +_02236614: + ldr r0, _022367D4 ; =0x02243168 + mov r1, #1 + ldr r3, [r0] + mov r0, r5 + ldrh r2, [r3, #4] + orr r1, r2, r1, lsl r5 + strh r1, [r3, #4] + bl MOD13_02236C1C + mov r0, r5 + bl MOD13_022132CC + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _022367D4 ; =0x02243168 + sub r2, r5, #1 + ldr r3, [r1] + mov r1, #0x1e + add r3, r3, #0xe + mla r1, r2, r1, r3 + mov r2, #0x16 + bl MI_CpuCopy8 + ldmia sp!, {r4, r5, r6, pc} +_02236668: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #4] + and r1, r2, r1 + strh r1, [r3, #4] + ldr r1, [r0] + ldrh r0, [r1, #6] + orr r0, r0, r4, lsl r5 + strh r0, [r1, #6] + bl MOD13_02236470 + cmp r0, #3 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl MOD13_02236A54 + ldmia sp!, {r4, r5, r6, pc} +_022366AC: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #8] + and r1, r2, r1 + strh r1, [r3, #8] + ldr r1, [r0] + ldrh r0, [r1, #0xa] + orr r0, r0, r4, lsl r5 + strh r0, [r1, #0xa] + ldmia sp!, {r4, r5, r6, pc} +_022366DC: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #0xa] + and r1, r2, r1 + strh r1, [r3, #0xa] + ldr r2, [r0] + ldrh r1, [r2, #0xc] + orr r1, r1, r4, lsl r5 + strh r1, [r2, #0xc] + ldr r0, [r0] + ldrh r1, [r0, #2] + ldrh r0, [r0, #0xc] + cmp r1, r0 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD13_02214F18 + ldmia sp!, {r4, r5, r6, pc} +_02236724: + bl MOD13_02236470 + cmp r0, #4 + bne _0223673C + mov r0, #5 + bl MOD13_02236484 + b _02236744 +_0223673C: + mov r0, #0 + bl MOD13_02236484 +_02236744: + ldr r0, _022367D4 ; =0x02243168 + ldr r0, [r0] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x144] + cmp r1, #0 + movne r1, #0 + strne r1, [r0, #0x144] + ldr r0, _022367D4 ; =0x02243168 + ldr r0, [r0] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x140] + cmp r1, #0 + movne r1, #0 + strne r1, [r0, #0x140] + ldmia sp!, {r4, r5, r6, pc} +_02236780: + ldrh r0, [r4] + cmp r0, #8 + bgt _022367B8 + cmp r0, #8 + ldmgeia sp!, {r4, r5, r6, pc} + cmp r0, #2 + ldmgtia sp!, {r4, r5, r6, pc} + cmp r0, #1 + ldmltia sp!, {r4, r5, r6, pc} + cmp r0, #1 + beq _022367C0 + cmp r0, #2 + beq _022367C0 + ldmia sp!, {r4, r5, r6, pc} +_022367B8: + cmp r0, #9 + ldmneia sp!, {r4, r5, r6, pc} +_022367C0: + mov r0, #7 + bl MOD13_02236484 + ldmia sp!, {r4, r5, r6, pc} +_022367CC: + bl OS_Terminate + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022367D4: .word 0x02243168 + + arm_func_start MOD13_022367D8 +MOD13_022367D8: ; 0x022367D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #6 + bl MOD13_02236484 + bl MOD13_02214F18 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_022367F4 +MOD13_022367F4: ; 0x022367F4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, #0 + mov sb, #1 + ldr r4, _022368F8 ; =0x02243168 + mov r6, sb + mov r5, #3 +_02236810: + ldr r0, [r4] + mov r7, r6, lsl sb + ldrh r0, [r0, #0xa] + ands r0, r0, r7 + beq _022368BC + mov r0, sb + mov r1, r5 + bl MOD13_02213174 + cmp r0, #0 + orrne r0, r8, r7 + movne r0, r0, lsl #0x10 + movne r8, r0, lsr #0x10 + bne _022368BC + mvn r0, r7 + mov r7, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r2, [r4] + ldrh r1, [r2, #2] + and r1, r1, r7, lsr #16 + strh r1, [r2, #2] + ldr r2, [r4] + ldrh r1, [r2, #4] + and r1, r1, r7, lsr #16 + strh r1, [r2, #4] + ldr r2, [r4] + ldrh r1, [r2, #6] + and r1, r1, r7, lsr #16 + strh r1, [r2, #6] + ldr r2, [r4] + ldrh r1, [r2, #8] + and r1, r1, r7, lsr #16 + strh r1, [r2, #8] + ldr r2, [r4] + ldrh r1, [r2, #0xa] + and r1, r1, r7, lsr #16 + strh r1, [r2, #0xa] + ldr r2, [r4] + ldrh r1, [r2, #0xc] + and r1, r1, r7, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, sb + bl MOD13_02214D6C +_022368BC: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 + cmp sb, #0x10 + blo _02236810 + cmp r8, #0 + bne _022368E8 + mov r0, #7 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022368E8: + mov r0, #4 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022368F8: .word 0x02243168 + + arm_func_start MOD13_022368FC +MOD13_022368FC: ; 0x022368FC + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _02236964 ; =0x02243168 + ldr r0, [r4] + ldrh r0, [r0, #2] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r6, #1 + mov r5, r6 +_02236920: + ldr r1, [r4] + mov r0, r5, lsl r6 + ldrh r1, [r1, #2] + ands r0, r1, r0 + beq _02236948 + mov r0, r6 + bl MOD13_02213270 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} +_02236948: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0x10 + blo _02236920 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02236964: .word 0x02243168 + + arm_func_start MOD13_02236968 +MOD13_02236968: ; 0x02236968 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02236484 + mov r5, #1 + ldr r7, _02236A50 ; =0x02243168 + mov r4, r5 +_02236984: + ldr r1, [r7] + mov r2, r4, lsl r5 + ldrh r0, [r1, #2] + ands r0, r0, r2 + beq _02236A34 + ldrh r0, [r1, #4] + ands r0, r0, r2 + bne _02236A34 + ldrh r0, [r1, #6] + ands r0, r0, r2 + bne _02236A2C + mvn r0, r2 + mov r6, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r2, [r7] + ldrh r1, [r2, #2] + and r1, r1, r6, lsr #16 + strh r1, [r2, #2] + ldr r2, [r7] + ldrh r1, [r2, #4] + and r1, r1, r6, lsr #16 + strh r1, [r2, #4] + ldr r2, [r7] + ldrh r1, [r2, #6] + and r1, r1, r6, lsr #16 + strh r1, [r2, #6] + ldr r2, [r7] + ldrh r1, [r2, #8] + and r1, r1, r6, lsr #16 + strh r1, [r2, #8] + ldr r2, [r7] + ldrh r1, [r2, #0xa] + and r1, r1, r6, lsr #16 + strh r1, [r2, #0xa] + ldr r2, [r7] + ldrh r1, [r2, #0xc] + and r1, r1, r6, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r5 + bl MOD13_02214D6C + b _02236A34 +_02236A2C: + mov r0, r5 + bl MOD13_02236A54 +_02236A34: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + cmp r5, #0x10 + blo _02236984 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02236A50: .word 0x02243168 + + arm_func_start MOD13_02236A54 +MOD13_02236A54: ; 0x02236A54 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #2 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + bne _02236AF8 + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236B34 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236AF8: + bl OS_DisableInterrupts + ldr r1, _02236B34 ; =0x02243168 + mov ip, #1 + ldr r5, [r1] + mvn r2, ip, lsl r4 + ldrh r3, [r5, #6] + and r2, r3, r2 + strh r2, [r5, #6] + ldr r2, [r1] + ldrh r1, [r2, #8] + orr r1, r1, ip, lsl r4 + strh r1, [r2, #8] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236B34: .word 0x02243168 + + arm_func_start MOD13_02236B38 +MOD13_02236B38: ; 0x02236B38 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #0 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + bne _02236BDC + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236C18 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236BDC: + bl OS_DisableInterrupts + ldr r1, _02236C18 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mvn r4, r2, lsl r4 + ldrh r2, [r3, #4] + and r2, r2, r4 + strh r2, [r3, #4] + ldr r2, [r1] + ldrh r1, [r2, #2] + and r1, r1, r4 + strh r1, [r2, #2] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236C18: .word 0x02243168 + + arm_func_start MOD13_02236C1C +MOD13_02236C1C: ; 0x02236C1C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #1 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236CC4 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236CC4: .word 0x02243168 + + arm_func_start MOD13_02236CC8 +MOD13_02236CC8: ; 0x02236CC8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + mov r6, r0 + ldr r0, [r6] + mov r4, #0 + cmp r0, #0 + moveq r5, r4 + beq _02236D10 + add r0, sp, #0 + bl FS_InitFile + ldr r1, [r6] + add r0, sp, #0 + bl FS_OpenFile + cmp r0, #0 + addeq sp, sp, #0x48 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, sp, #0 +_02236D10: + mov r0, r5 + bl MOD13_0221411C + cmp r0, #0 + beq _02236D7C + ldr r1, _02236D98 ; =0x02243168 + ldr r0, [r1] + add r2, r0, #0x2c + add r0, r0, #0x1b000 + str r2, [r0, #0x144] + ldr r0, [r1] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x144] + cmp r1, #0 + beq _02236D7C + mov r0, r5 + mov r2, #0x10000 + bl MOD13_02213CB0 + cmp r0, #0 + beq _02236D7C + ldr r1, _02236D98 ; =0x02243168 + mov r0, r6 + ldr r1, [r1] + add r1, r1, #0x1b000 + ldr r1, [r1, #0x144] + bl MOD13_02213944 + cmp r0, #0 + movne r4, #1 +_02236D7C: + add r0, sp, #0 + cmp r5, r0 + bne _02236D8C + bl FS_CloseFile +_02236D8C: + mov r0, r4 + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02236D98: .word 0x02243168 + + arm_func_start MOD13_02236D9C +MOD13_02236D9C: ; 0x02236D9C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + mov r0, #2 + bl MOD13_02236484 + mov r0, r4 + bl MOD13_02215028 + cmp r0, #0 + beq _02236DD4 + mov r0, #7 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236DD4: + mov r0, r5 + bl MOD13_02236CC8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02236DF4 +MOD13_02236DF4: ; 0x02236DF4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x7c + mov r5, r0 + add r0, sp, #0x28 + mov r4, r1 + bl OS_GetOwnerInfo + ldrb r2, [sp, #4] + ldrb r1, [sp, #0x29] + ldrh r3, [sp, #0x40] + bic r2, r2, #0xf + and r1, r1, #0xf + orr r2, r2, r1 + strb r2, [sp, #4] + add r0, sp, #0x2c + add r1, sp, #6 + mov r2, r3, lsl #1 + strb r3, [sp, #5] + bl MI_CpuCopy8 + ldrb r0, [sp, #4] + add ip, sp, #0x1a + mov r1, #0 + bic r0, r0, #0xf0 + strb r0, [sp, #4] + strh r1, [ip] + strh r1, [ip, #2] + strh r1, [ip, #4] + strh r1, [ip, #6] + strh r1, [ip, #8] + strh r1, [ip, #0xa] + ldr r0, _02236F04 ; =0x02243168 + strh r1, [ip, #0xc] + ldr lr, [r0] + mov r2, #3 + mov r3, lr +_02236E7C: + ldrh r1, [ip], #2 + ldrh r0, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + strh r0, [r3], #2 + bne _02236E7C + ldrh r2, [ip] + ldr r0, _02236F08 ; =0x00010040 + add r1, lr, #0x1b000 + strh r2, [r3] + add r0, lr, r0 + str r0, [r1, #0x140] + mov r1, #2 + str r1, [sp] + ldr r0, _02236F04 ; =0x02243168 + add r1, sp, #4 + ldr r0, [r0] + mov r2, r5 + add r0, r0, #0x1b000 + ldr r0, [r0, #0x140] + mov r3, r4 + bl MOD13_02215474 + cmp r0, #0 + beq _02236EE0 + bl OS_Terminate +_02236EE0: + mov r0, #0x100 + mov r1, #1 + bl MOD13_02215360 + ldr r0, _02236F0C ; =MOD13_02236498 + bl MOD13_02213368 + mov r0, #1 + bl MOD13_02236484 + add sp, sp, #0x7c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236F04: .word 0x02243168 +_02236F08: .word 0x00010040 +_02236F0C: .word MOD13_02236498 + + arm_func_start MOD13_02236F10 +MOD13_02236F10: ; 0x02236F10 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02236F54 ; =0x02243168 + ldr r1, _02236F58 ; =0x0001B160 + str r0, [r2] + add r0, r0, r1 + bl MOD13_0223831C + ldr r1, _02236F54 ; =0x02243168 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1b000 + str r2, [r0, #0x140] + ldr r0, [r1] + add r0, r0, #0x1b000 + str r2, [r0, #0x144] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02236F54: .word 0x02243168 +_02236F58: .word 0x0001B160 + + arm_func_start MOD13_02236F5C +MOD13_02236F5C: ; 0x02236F5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02236FB0 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #1 + beq _02236F7C + bl OS_Terminate +_02236F7C: + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02236FB4 ; =MOD13_0223794C + bl WM_End + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02236FB0: .word 0x02243188 +_02236FB4: .word MOD13_0223794C + + arm_func_start MOD13_02236FB8 +MOD13_02236FB8: ; 0x02236FB8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r2, [r0, #0x40] + cmp r2, #1 + bne _02236FFC + ldr r0, _022370FC ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02237100 ; =0x022407D0 + mov r0, #0x8000000 + blx r2 + add sp, sp, #4 + ldmia sp!, {pc} +_02236FFC: + ldr r0, _022370FC ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237018 + ldr r1, _02237104 ; =0x022407F4 + mov r0, #0x8000000 + blx r3 +_02237018: + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #6 + beq _02237050 + cmp r0, #5 + beq _02237050 + cmp r0, #4 + beq _02237050 + mov r0, #3 + bl MOD13_02238294 + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02237050: + mov r0, #3 + bl MOD13_02238294 + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x44] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022370F0 +_02237070: ; jump table + b _022370DC ; case 0 + b _022370A4 ; case 1 + b _022370C0 ; case 2 + b _02237088 ; case 3 + b _022370DC ; case 4 + b _022370A4 ; case 5 +_02237088: + bl MOD13_02237AE4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370A4: + bl MOD13_02237AA8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370C0: + bl MOD13_02237C48 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370DC: + bl MOD13_02237C0C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 +_022370F0: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022370F8: .word 0x02243188 +_022370FC: .word 0x02243184 +_02237100: .word 0x022407D0 +_02237104: .word 0x022407F4 + + arm_func_start MOD13_02237108 +MOD13_02237108: ; 0x02237108 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022379B4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237130 +MOD13_02237130: ; 0x02237130 + stmdb sp!, {r4, lr} + ldr r1, _022371CC ; =0x02243188 + ldr r2, _022371D0 ; =0x000013E0 + ldr r3, [r1] + mov r1, r0 + add r0, r3, r2 + add r2, r3, #0x1c00 + bl WM_StepDataSharing + mov r4, r0 + cmp r4, #7 + bne _02237180 + ldr r0, _022371D4 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237178 + ldr r1, _022371D8 ; =0x02240818 + mov r0, #0x8000000 + blx r2 +_02237178: + mov r0, #0 + ldmia sp!, {r4, pc} +_02237180: + cmp r4, #5 + bne _022371B4 + ldr r0, _022371D4 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _022371A4 + ldr r1, _022371DC ; =0x02240848 + mov r0, #0x8000000 + blx r2 +_022371A4: + mov r0, r4 + bl MOD13_02238274 + mov r0, #0 + ldmia sp!, {r4, pc} +_022371B4: + cmp r4, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + bl MOD13_02238274 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022371CC: .word 0x02243188 +_022371D0: .word 0x000013E0 +_022371D4: .word 0x02243184 +_022371D8: .word 0x02240818 +_022371DC: .word 0x02240848 + + arm_func_start MOD13_022371E0 +MOD13_022371E0: ; 0x022371E0 + ldr r2, _02237200 ; =0x02243188 + ldr r1, _02237204 ; =0x000013E0 + ldr r3, [r2] + ldr ip, _02237208 ; =0x020DA048 + mov r2, r0 + add r0, r3, r1 + add r1, r3, #0x1c00 + bx ip + .align 2, 0 +_02237200: .word 0x02243188 +_02237204: .word 0x000013E0 +_02237208: .word 0x020DA048 + + arm_func_start MOD13_0223720C +MOD13_0223720C: ; 0x0223720C + ldr r1, _0223721C ; =0x02243188 + ldr r1, [r1] + str r0, [r1, #0x4c] + bx lr + .align 2, 0 +_0223721C: .word 0x02243188 + + arm_func_start MOD13_02237220 +MOD13_02237220: ; 0x02237220 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _02237398 ; =0x02243188 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + ldr r0, [r0, #0x40] + mov r4, r2 + cmp r0, #1 + beq _02237248 + bl OS_Terminate +_02237248: + ldr r2, _02237398 ; =0x02243188 + mov r1, #0x180 + ldr r0, [r2] + mov r3, #0xe0 + add r0, r0, #0x1000 + str r1, [r0, #0x2a4] + ldr r0, [r2] + ldr r1, _0223739C ; =0x02243184 + add r0, r0, #0x1000 + str r3, [r0, #0x2a0] + ldr r3, [r1] + cmp r3, #0 + beq _02237294 + ldr r0, [r2] + ldr r1, _022373A0 ; =0x0224087C + add r0, r0, #0x1000 + ldr r2, [r0, #0x2a4] + mov r0, #0x8000000 + blx r3 +_02237294: + ldr r0, _0223739C ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _022372C0 + ldr r0, _02237398 ; =0x02243188 + ldr r1, _022373A4 ; =0x02240894 + ldr r2, [r0] + mov r0, #0x8000000 + add r2, r2, #0x1000 + ldr r2, [r2, #0x2a0] + blx r3 +_022372C0: + ldr r1, _02237398 ; =0x02243188 + mov r0, #3 + ldr r1, [r1] + str r6, [r1, #0x44] + bl MOD13_02238294 + ldr r0, _02237398 ; =0x02243188 + ldr r1, [r0] + strh r5, [r1, #0xc] + ldr r0, [r0] + strh r4, [r0, #0x32] + bl WM_GetDispersionBeaconPeriod + ldr r1, _02237398 ; =0x02243188 + mov r2, #0xd0 + ldr r3, [r1] + mov r4, #0x44 + strh r0, [r3, #0x18] + ldr r0, [r1] + mov r3, #2 + strh r2, [r0, #0x34] + ldr r0, [r1] + mov r2, #0 + strh r4, [r0, #0x36] + ldr r0, [r1] + mov r4, #1 + strh r3, [r0, #0x10] + ldr r0, [r1] + cmp r6, #2 + strh r2, [r0, #0x16] + ldr r0, [r1] + strh r2, [r0, #0x12] + ldr r0, [r1] + strh r4, [r0, #0xe] + ldr r0, _02237398 ; =0x02243188 + movne r4, r2 + ldr r0, [r0] + cmp r6, #0 + strh r4, [r0, #0x14] + beq _02237368 + cmp r6, #2 + beq _02237368 + cmp r6, #4 + bne _02237370 +_02237368: + bl MOD13_02238224 + ldmia sp!, {r4, r5, r6, pc} +_02237370: + ldr r0, _0223739C ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237390 + ldr r1, _022373A8 ; =0x022408AC + mov r2, r6 + mov r0, #0x8000000 + blx r3 +_02237390: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02237398: .word 0x02243188 +_0223739C: .word 0x02243184 +_022373A0: .word 0x0224087C +_022373A4: .word 0x02240894 +_022373A8: .word 0x022408AC + + arm_func_start MOD13_022373AC +MOD13_022373AC: ; 0x022373AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022373D4 + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022373D4: + ldr r0, _02237408 ; =MOD13_02237464 + bl WM_SetIndCallback + cmp r0, #0 + beq _022373F8 + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022373F8: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237408: .word MOD13_02237464 + + arm_func_start MOD13_0223740C +MOD13_0223740C: ; 0x0223740C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _0223745C ; =0x02243188 + ldr r1, _02237460 ; =MOD13_022373AC + ldr r0, [r0] + mov r2, #2 + add r0, r0, #0x80 + bl WM_Initialize + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223745C: .word 0x02243188 +_02237460: .word MOD13_022373AC + + arm_func_start MOD13_02237464 +MOD13_02237464: ; 0x02237464 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #8 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237490 +MOD13_02237490: ; 0x02237490 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0223750C ; =0x02243188 + mov r0, #0 + ldr r1, [r2] + mov r3, #1 + add r1, r1, #0x1000 + str r0, [r1, #0x2a4] + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #0x2a0] + ldr r1, [r2] + str r0, [r1, #0x48] + ldr r1, [r2] + strh r0, [r1, #0x50] + ldr r1, [r2] + strh r3, [r1, #0x52] + ldr r1, [r2] + str r0, [r1, #0x54] + ldr r1, [r2] + str r0, [r1] + ldr r1, [r2] + strh r0, [r1, #4] + ldr r1, [r2] + str r0, [r1, #0x4c] + bl MOD13_0223740C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223750C: .word 0x02243188 + + arm_func_start MOD13_02237510 +MOD13_02237510: ; 0x02237510 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, #0 + mov r2, r4 + mov r5, r4 + mov r3, #1 +_02237528: + mov r1, r3, lsl r5 + ands r1, r0, r1 + beq _0223754C + add r1, r5, #1 + add r2, r2, #1 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r4, r1, asr #0x10 + mov r2, r2, lsr #0x10 +_0223754C: + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + cmp r5, #0x10 + blt _02237528 + cmp r2, #1 + addls sp, sp, #4 + movls r0, r4 + ldmlsia sp!, {r4, r5, pc} + ldr lr, _022375FC ; =0x02243188 + ldr r3, _02237600 ; =0x00010DCD + ldr r5, [lr] + ldr ip, _02237604 ; =0x00003039 + ldr r4, [r5, #0x58] + mov r1, #0 + mla r3, r4, r3, ip + str r3, [r5, #0x58] + ldr r3, [lr] + ldr r3, [r3, #0x58] + and r3, r3, #0xff + mul r3, r2, r3 + mov r2, r3, lsl #8 + mov r3, r2, lsr #0x10 +_022375A8: + ands r2, r0, #1 + beq _022375D4 + cmp r3, #0 + addeq r0, r1, #1 + moveq r0, r0, lsl #0x10 + addeq sp, sp, #4 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r4, r5, pc} + sub r2, r3, #1 + mov r2, r2, lsl #0x10 + mov r3, r2, lsr #0x10 +_022375D4: + add r1, r1, #1 + mov r1, r1, lsl #0x10 + mov r0, r0, lsl #0xf + mov r1, r1, asr #0x10 + cmp r1, #0x10 + mov r0, r0, lsr #0x10 + blt _022375A8 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022375FC: .word 0x02243188 +_02237600: .word 0x00010DCD +_02237604: .word 0x00003039 + + arm_func_start MOD13_02237608 +MOD13_02237608: ; 0x02237608 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #7 + beq _02237628 + bl OS_Terminate +_02237628: + mov r0, #1 + bl MOD13_02238294 + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x60] + bl MOD13_02237510 + ldr r2, _02237684 ; =0x02243188 + ldr r1, _02237688 ; =0x02243184 + ldr r3, [r2] + strh r0, [r3, #0x5c] + ldr r3, [r1] + cmp r3, #0 + beq _02237670 + ldr r0, [r2] + ldr r1, _0223768C ; =0x022408C8 + ldrh r2, [r0, #0x5c] + mov r0, #0x8000000 + blx r3 +_02237670: + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x5c] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237684: .word 0x02243188 +_02237688: .word 0x02243184 +_0223768C: .word 0x022408C8 + + arm_func_start MOD13_02237690 +MOD13_02237690: ; 0x02237690 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r3, r1 + mov ip, #0x1e + mov r1, #3 + mov r2, #0x11 + str ip, [sp] + bl WM_MeasureChannel + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + mov r4, r0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022376DC + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + ldmia sp!, {r4, pc} +_022376DC: + ldr r0, _02237788 ; =0x02243184 + ldr ip, [r0] + cmp ip, #0 + beq _02237700 + ldrh r2, [r4, #8] + ldrh r3, [r4, #0xa] + ldr r1, _0223778C ; =0x022408E0 + mov r0, #0x8000000 + blx ip +_02237700: + ldr r0, _02237790 ; =0x02243188 + ldrh r2, [r4, #0xa] + ldr r3, [r0] + ldrh ip, [r4, #8] + ldrh r1, [r3, #0x5e] + cmp r1, r2 + bls _02237738 + strh r2, [r3, #0x5e] + sub r1, ip, #1 + mov r2, #1 + mov r1, r2, lsl r1 + ldr r0, [r0] + strh r1, [r0, #0x60] + b _02237750 +_02237738: + cmp r1, r2 + ldreqh r2, [r3, #0x60] + subeq r0, ip, #1 + moveq r1, #1 + orreq r0, r2, r1, lsl r0 + streqh r0, [r3, #0x60] +_02237750: + add r0, ip, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl MOD13_02237794 + cmp r0, #0x18 + bne _02237774 + mov r0, #7 + bl MOD13_02238294 + ldmia sp!, {r4, pc} +_02237774: + cmp r0, #2 + ldmeqia sp!, {r4, pc} + mov r0, #9 + bl MOD13_02238294 + ldmia sp!, {r4, pc} + .align 2, 0 +_02237788: .word 0x02243184 +_0223778C: .word 0x022408E0 +_02237790: .word 0x02243188 + + arm_func_start MOD13_02237794 +MOD13_02237794: ; 0x02237794 + stmdb sp!, {r4, lr} + mov r4, r0 + bl WM_GetAllowedChannel + cmp r0, #0x8000 + bne _022377C0 + mov r0, #3 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #3 + ldmia sp!, {r4, pc} +_022377C0: + cmp r0, #0 + bne _022377E0 + mov r0, #0x16 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0x18 + ldmia sp!, {r4, pc} +_022377E0: + sub r1, r4, #1 + mov r2, #1 + mov r1, r2, lsl r1 + ands r1, r1, r0 + bne _0223781C +_022377F4: + add r1, r4, #1 + mov r1, r1, lsl #0x10 + mov r4, r1, lsr #0x10 + cmp r4, #0x10 + movhi r0, #0x18 + ldmhiia sp!, {r4, pc} + sub r1, r4, #1 + mov r1, r2, lsl r1 + ands r1, r1, r0 + beq _022377F4 +_0223781C: + ldr r0, _02237834 ; =0x022376B8 + mov r1, r4 + bl MOD13_02237690 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02237834: .word 0x022376B8 + + arm_func_start MOD13_02237838 +MOD13_02237838: ; 0x02237838 + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + bl OS_GetMacAddress + ldr r1, _02237900 ; =0x027FFC3C + ldrh r0, [sp] + ldr r3, [r1] + ldrh r1, [sp, #2] + add r0, r0, r3 + ldr r2, _02237904 ; =0x02243188 + add r1, r1, r0 + ldrh r3, [sp, #4] + ldr r0, [r2] + mov ip, #0 + add r1, r3, r1 + str r1, [r0, #0x58] + ldr lr, [r2] + ldr r0, _02237908 ; =0x00010DCD + ldr r3, [lr, #0x58] + ldr r1, _0223790C ; =0x00003039 + mla r0, r3, r0, r1 + str r0, [lr, #0x58] + ldr r0, [r2] + mov r3, #0x65 + strh ip, [r0, #0x5c] + ldr r1, [r2] + mov r0, #3 + strh r3, [r1, #0x5e] + bl MOD13_02238294 + mov r0, #1 + bl MOD13_02237794 + cmp r0, #0x18 + bne _022378D8 + mov r0, #0x18 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {pc} +_022378D8: + cmp r0, #2 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02237900: .word 0x027FFC3C +_02237904: .word 0x02243188 +_02237908: .word 0x00010DCD +_0223790C: .word 0x00003039 + + arm_func_start MOD13_02237910 +MOD13_02237910: ; 0x02237910 + ldr r0, _02237920 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + bx lr + .align 2, 0 +_02237920: .word 0x02243188 + + arm_func_start MOD13_02237924 +MOD13_02237924: ; 0x02237924 + ldr r0, _02237934 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x52] + bx lr + .align 2, 0 +_02237934: .word 0x02243188 + + arm_func_start MOD13_02237938 +MOD13_02237938: ; 0x02237938 + ldr r1, _02237948 ; =0x02243188 + ldr r1, [r1] + str r0, [r1, #8] + bx lr + .align 2, 0 +_02237948: .word 0x02243188 + + arm_func_start MOD13_0223794C +MOD13_0223794C: ; 0x0223794C + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237970 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237970: + mov r0, #0 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + mov r4, r0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022379A8 + mov r0, #9 + bl MOD13_02238294 + ldrh r0, [r4, #2] + bl MOD13_02238274 + ldmia sp!, {r4, pc} +_022379A8: + mov r0, #1 + bl MOD13_02238294 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022379B4 +MOD13_022379B4: ; 0x022379B4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _022379EC ; =0x02237980 + bl WM_Reset + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022379EC: .word 0x02237980 + + arm_func_start MOD13_022379F0 +MOD13_022379F0: ; 0x022379F0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237A10 + bl MOD13_02238274 + add sp, sp, #4 + ldmia sp!, {pc} +_02237A10: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237A20 +MOD13_02237A20: ; 0x02237A20 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237A60 ; =MOD13_022379F0 + mov r1, #0 + bl WM_Disconnect + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + bl MOD13_02237108 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237A60: .word MOD13_022379F0 + + arm_func_start MOD13_02237A64 +MOD13_02237A64: ; 0x02237A64 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237A88 + bl MOD13_02238274 + bl MOD13_02236FB8 + add sp, sp, #4 + ldmia sp!, {pc} +_02237A88: + bl MOD13_02237A20 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237AA8 +MOD13_02237AA8: ; 0x02237AA8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237AE0 ; =MOD13_02237A64 + bl WM_EndMP + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237AE0: .word MOD13_02237A64 + + arm_func_start MOD13_02237AE4 +MOD13_02237AE4: ; 0x02237AE4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237B40 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #6 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237B40 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_EndKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237B40: .word 0x02243188 + + arm_func_start MOD13_02237B44 +MOD13_02237B44: ; 0x02237B44 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237B64 + bl MOD13_02238274 + add sp, sp, #4 + ldmia sp!, {pc} +_02237B64: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237B74 +MOD13_02237B74: ; 0x02237B74 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237BA4 ; =MOD13_02237B44 + bl WM_EndParent + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237BA4: .word MOD13_02237B44 + + arm_func_start MOD13_02237BA8 +MOD13_02237BA8: ; 0x02237BA8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237BCC + bl MOD13_02238274 + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02237BCC: + bl MOD13_02237B74 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02237C04 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237BF8 + ldr r1, _02237C08 ; =0x02240918 + mov r0, #0x8000000 + blx r2 +_02237BF8: + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C04: .word 0x02243184 +_02237C08: .word 0x02240918 + + arm_func_start MOD13_02237C0C +MOD13_02237C0C: ; 0x02237C0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237C44 ; =MOD13_02237BA8 + bl WM_EndMP + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C44: .word MOD13_02237BA8 + + arm_func_start MOD13_02237C48 +MOD13_02237C48: ; 0x02237C48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237C80 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_EndKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C80: .word 0x02243188 + + arm_func_start MOD13_02237C84 +MOD13_02237C84: ; 0x02237C84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #6 + bl MOD13_02238294 + ldr r0, _02237CC8 ; =0x02243188 + mov r1, #0xd + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_StartKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237CC8: .word 0x02243188 + + arm_func_start MOD13_02237CCC +MOD13_02237CCC: ; 0x02237CCC + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + beq _02237CF8 + mov r0, r1 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237CF8: + ldrh r2, [r0, #4] + sub r0, r2, #0xa + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02237DEC +_02237D0C: ; jump table + b _02237D1C ; case 0 + b _02237E0C ; case 1 + b _02237DEC ; case 2 + b _02237DEC ; case 3 +_02237D1C: + ldr r0, _02237E14 ; =0x02243188 + ldr r1, [r0] + ldr r0, [r1, #0x44] + cmp r0, #2 + bne _02237D88 + ldr r0, [r1, #0x40] + cmp r0, #4 + bne _02237D78 + bl MOD13_02237C84 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02237E18 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237D68 + ldr r1, _02237E1C ; =0x02240940 + mov r0, #0x8000000 + blx r2 +_02237D68: + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237D78: + cmp r0, #6 + bne _02237DDC + add sp, sp, #4 + ldmia sp!, {pc} +_02237D88: + cmp r0, #4 + bne _02237DDC + ldr r0, _02237E20 ; =0x000013E0 + mov ip, #1 + add r0, r1, r0 + mov r1, #0xd + mov r2, #7 + mov r3, #0x44 + str ip, [sp] + bl WM_StartDataSharing + cmp r0, #0 + beq _02237DCC + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DCC: + mov r0, #5 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DDC: + mov r0, #4 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DEC: + ldr r0, _02237E18 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02237E24 ; =0x022408F8 + mov r0, #0x8000000 + blx r3 +_02237E0C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237E14: .word 0x02243188 +_02237E18: .word 0x02243184 +_02237E1C: .word 0x02240940 +_02237E20: .word 0x000013E0 +_02237E24: .word 0x022408F8 + + arm_func_start MOD13_02237E28 +MOD13_02237E28: ; 0x02237E28 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _02237EBC ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + sub r0, r0, #4 + cmp r0, #2 + addls sp, sp, #0xc + movls r0, #1 + ldmlsia sp!, {pc} + mov r0, #4 + bl MOD13_02238294 + ldr r0, _02237EBC ; =0x02243188 + mov ip, #1 + ldr lr, [r0] + ldr r2, _02237EC0 ; =0x00001060 + add r3, lr, #0x1000 + ldr r1, [r3, #0x2a0] + ldr r0, _02237EC4 ; =MOD13_02237CCC + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + str r1, [sp] + str ip, [sp, #4] + ldr r3, [r3, #0x2a4] + add r1, lr, r2 + mov r2, r3, lsl #0x10 + mov r2, r2, lsr #0x10 + add r3, lr, #0xf80 + bl WM_StartMP + cmp r0, #2 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02237EBC: .word 0x02243188 +_02237EC0: .word 0x00001060 +_02237EC4: .word MOD13_02237CCC + + arm_func_start MOD13_02237EC8 +MOD13_02237EC8: ; 0x02237EC8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldrh r2, [r5, #0x10] + mov r1, #1 + ldrh r0, [r5, #2] + mov r1, r1, lsl r2 + mov r1, r1, lsl #0x10 + cmp r0, #0 + mov r4, r1, lsr #0x10 + beq _02237F08 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02237F08: + ldrh ip, [r5, #8] + cmp ip, #7 + bgt _02237F44 + cmp ip, #7 + bge _02237F50 + cmp ip, #2 + bgt _02238034 + cmp ip, #0 + blt _02238034 + cmp ip, #0 + beq _02238014 + cmp ip, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + b _02238034 +_02237F44: + cmp ip, #9 + beq _02237FD8 + b _02238034 +_02237F50: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237F6C + ldr r1, _02238064 ; =0x02240970 + mov r0, #0x8000000 + blx r3 +_02237F6C: + ldr r0, _02238068 ; =0x02243188 + ldr r0, [r0] + ldr r1, [r0, #0x4c] + cmp r1, #0 + beq _02237FBC + mov r0, r5 + blx r1 + cmp r0, #0 + bne _02237FBC + ldrh r1, [r5, #0x10] + mov r0, #0 + bl WM_Disconnect + cmp r0, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02237FBC: + ldr r0, _02238068 ; =0x02243188 + add sp, sp, #4 + ldr r1, [r0] + ldrh r0, [r1, #0x52] + orr r0, r0, r4 + strh r0, [r1, #0x52] + ldmia sp!, {r4, r5, pc} +_02237FD8: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237FF4 + ldr r1, _0223806C ; =0x0224099C + mov r0, #0x8000000 + blx r3 +_02237FF4: + ldr r0, _02238068 ; =0x02243188 + mvn r1, r4 + ldr r2, [r0] + add sp, sp, #4 + ldrh r0, [r2, #0x52] + and r0, r0, r1 + strh r0, [r2, #0x52] + ldmia sp!, {r4, r5, pc} +_02238014: + bl MOD13_02237E28 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02238034: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _02238070 ; =0x022408F8 + mov r2, ip + mov r0, #0x8000000 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02238060: .word 0x02243184 +_02238064: .word 0x02240970 +_02238068: .word 0x02243188 +_0223806C: .word 0x0224099C +_02238070: .word 0x022408F8 + + arm_func_start MOD13_02238074 +MOD13_02238074: ; 0x02238074 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022380E0 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + sub r0, r0, #4 + cmp r0, #2 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {pc} + ldr r0, _022380E4 ; =MOD13_02237EC8 + bl WM_StartParent + cmp r0, #2 + beq _022380BC + bl MOD13_02238274 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_022380BC: + ldr r1, _022380E0 ; =0x02243188 + mov r3, #0 + ldr r2, [r1] + mov r0, #1 + strh r3, [r2, #0x50] + ldr r1, [r1] + strh r0, [r1, #0x52] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022380E0: .word 0x02243188 +_022380E4: .word MOD13_02237EC8 + + arm_func_start MOD13_022380E8 +MOD13_022380E8: ; 0x022380E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02238110 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02238110: + bl MOD13_02238074 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02238130 +MOD13_02238130: ; 0x02238130 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02238198 ; =0x02243188 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r2, [r0, #0x3ac] + add r0, r1, #0x13c0 + blx r2 + ldr r2, _02238198 ; =0x02243188 + mov r1, r0 + ldr r2, [r2] + ldr r0, _0223819C ; =MOD13_022380E8 + add r2, r2, #0x13c0 + bl WM_SetWEPKeyEx2 + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238198: .word 0x02243188 +_0223819C: .word MOD13_022380E8 + + arm_func_start MOD13_022381A0 +MOD13_022381A0: ; 0x022381A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022381C8 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022381C8: + ldr r0, _02238220 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x3ac] + cmp r0, #0 + beq _02238200 + bl MOD13_02238130 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02238200: + bl MOD13_02238074 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238220: .word 0x02243188 + + arm_func_start MOD13_02238224 +MOD13_02238224: ; 0x02238224 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r1, _0223826C ; =0x02243188 + ldr r0, _02238270 ; =MOD13_022381A0 + ldr r1, [r1] + bl WM_SetParentParameter + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223826C: .word 0x02243188 +_02238270: .word MOD13_022381A0 + + arm_func_start MOD13_02238274 +MOD13_02238274: ; 0x02238274 + ldr r1, _02238290 ; =0x02243188 + ldr r2, [r1] + ldr r1, [r2, #0x40] + sub r1, r1, #9 + cmp r1, #1 + strhi r0, [r2, #0x54] + bx lr + .align 2, 0 +_02238290: .word 0x02243188 + + arm_func_start MOD13_02238294 +MOD13_02238294: ; 0x02238294 + stmdb sp!, {r4, lr} + ldr r1, _02238308 ; =0x02243184 + mov r4, r0 + ldr ip, [r1] + cmp ip, #0 + beq _022382CC + ldr r0, _0223830C ; =0x02243188 + ldr r2, _02238310 ; =0x022407A8 + ldr r0, [r0] + ldr r1, _02238314 ; =0x022409C8 + ldr r3, [r0, #0x40] + mov r0, #0x8000000 + ldr r2, [r2, r3, lsl #2] + blx ip +_022382CC: + ldr r1, _0223830C ; =0x02243188 + ldr r0, _02238308 ; =0x02243184 + ldr r2, [r1] + str r4, [r2, #0x40] + ldr r3, [r0] + cmp r3, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r1] + ldr r0, _02238310 ; =0x022407A8 + ldr r2, [r1, #0x40] + ldr r1, _02238318 ; =0x022409D0 + ldr r2, [r0, r2, lsl #2] + mov r0, #0x8000000 + blx r3 + ldmia sp!, {r4, pc} + .align 2, 0 +_02238308: .word 0x02243184 +_0223830C: .word 0x02243188 +_02238310: .word 0x022407A8 +_02238314: .word 0x022409C8 +_02238318: .word 0x022409D0 + + arm_func_start MOD13_0223831C +MOD13_0223831C: ; 0x0223831C + ldr r1, _02238354 ; =0x02243188 + mov r2, #0 + str r0, [r1] + str r2, [r0, #0x40] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3a8] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3ac] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3b0] + bx lr + .align 2, 0 +_02238354: .word 0x02243188 + + arm_func_start MOD13_02238358 +MOD13_02238358: ; 0x02238358 + ldr r0, _0223836C ; =0x0224318C + ldr r0, [r0] + add r0, r0, #0x100 + ldrh r0, [r0, #0x44] + bx lr + .align 2, 0 +_0223836C: .word 0x0224318C + + arm_func_start MOD13_02238370 +MOD13_02238370: ; 0x02238370 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov ip, #0 + ldr r4, _0223845C ; =0x0224318C + mov r5, ip + mov r2, ip + mov r0, #1 + mov r1, #0xbc + mov lr, #0x44 +_02238394: + ldr r3, [r4] + add r6, r3, ip, lsl #2 + ldr r6, [r6, #0x208] + cmp r6, #0 + beq _02238448 + add r6, r3, #0x100 + mla r7, ip, lr, r6 + cmp ip, #1 + bne _02238448 + ldrb r6, [r3, #0xa93] + cmp r6, #1 + bne _02238418 + ldrh r6, [r7] + cmp r6, #0x10 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r6, [r3, #0xa94] + add r6, r6, #1 + str r6, [r3, #0xa94] + ldr r6, [r4] + ldr r3, [r6, #0xa94] + ands r3, r3, #1 + bne _02238448 + add r3, r6, #0x200 + ldrh r6, [r3] + add r6, r6, #1 + strh r6, [r3] + ldr r3, [r4] + add r3, r3, #0x200 + ldrh r6, [r3] + cmp r6, #0x24 + strhsh r2, [r3] + b _02238448 +_02238418: + add r3, r3, #0x200 + strh r1, [r3, #2] + ldrh r3, [r7] + cmp r3, #0xbd + bne _02238448 + ldr r3, [r4] + strb r0, [r3, #0xa93] + ldr r3, [r4] + add r3, r3, #0x200 + strh r5, [r3] + ldr r3, [r4] + str r5, [r3, #0xa94] +_02238448: + add ip, ip, #1 + cmp ip, #0x10 + blt _02238394 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223845C: .word 0x0224318C + + arm_func_start MOD13_02238460 +MOD13_02238460: ; 0x02238460 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r3, _022385B8 ; =0x0224318C + ldr r5, [r3] + ldrb r4, [r5, #0xa93] + cmp r4, #1 + bne _022384A8 + ldr r4, [r5, #0xab0] + strh r0, [r4] + ldr r4, [r3] + mov r0, r2 + ldr r4, [r4, #0xab0] + mov r2, #0x40 + strh r1, [r4, #2] + ldr r1, [r3] + ldr r1, [r1, #0xab0] + add r1, r1, #4 + bl MI_CpuCopy8 + b _022384D4 +_022384A8: + ldr r0, [r5, #0x204] + mov r1, #0xbc + add r0, r0, #1 + str r0, [r5, #0x204] + ldr r0, [r3] + ldr r0, [r0, #0xab0] + strh r1, [r0] + ldr r0, [r3] + ldrb r1, [r0, #0xa92] + ldr r0, [r0, #0xab0] + strb r1, [r0, #4] +_022384D4: + bl MOD13_02237910 + cmp r0, #5 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022385B8 ; =0x0224318C + ldr r0, [r0] + bl MOD13_02237130 + cmp r0, #0 + bne _0223850C + ldr r0, _022385B8 ; =0x0224318C + ldr r1, [r0] + ldr r0, [r1, #0x204] + add r0, r0, #4 + str r0, [r1, #0x204] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0223850C: + ldr r0, _022385B8 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa93] + cmp r0, #0 + ldreq r0, [r1, #0x204] + addeq r0, r0, #1 + streq r0, [r1, #0x204] + beq _02238550 + mov r0, #0 + str r0, [r1, #0x204] + bl MOD13_02237924 + cmp r0, #3 + ldrne r0, _022385B8 ; =0x0224318C + movne r1, #0x1b + ldrne r0, [r0] + strneb r1, [r0, #0xa90] + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02238550: + mov r7, #0 + ldr r8, _022385B8 ; =0x0224318C + mov r4, r7 + mov r6, #0x44 + mov r5, #1 +_02238564: + mov r0, r7 + bl MOD13_022371E0 + cmp r0, #0 + ldreq r0, [r8] + addeq r0, r0, r7, lsl #2 + streq r4, [r0, #0x208] + beq _022385A0 + ldr r1, [r8] + mov r2, r6 + add r1, r1, #0x100 + mla r1, r7, r6, r1 + bl MI_CpuCopy8 + ldr r0, [r8] + add r0, r0, r7, lsl #2 + str r5, [r0, #0x208] +_022385A0: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + cmp r7, #2 + blo _02238564 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022385B8: .word 0x0224318C + + arm_func_start MOD13_022385BC +MOD13_022385BC: ; 0x022385BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02238604 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x100 + add r0, r0, #0x100 + bl MI_CpuFill8 + ldr r0, _02238604 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x100 + bl MI_CpuFill8 + ldr r0, _02238604 ; =0x0224318C + ldr r0, [r0] + str r0, [r0, #0xab0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238604: .word 0x0224318C + + arm_func_start MOD13_02238608 +MOD13_02238608: ; 0x02238608 + stmdb sp!, {r4, lr} + add r0, r0, #0xa + bl MOD13_02236254 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_02236314 + ldr r1, _02238640 ; =0x0224318C + sub r2, r4, #1 + ldr r1, [r1] + add r1, r1, r2, lsl #2 + str r0, [r1, #0xaa0] + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02238640: .word 0x0224318C + + arm_func_start MOD13_02238644 +MOD13_02238644: ; 0x02238644 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r1, _0223867C ; =0x0224318C + mov r0, #1 + ldr r1, [r1] + strb r0, [r1, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223867C: .word 0x0224318C + + arm_func_start MOD13_02238680 +MOD13_02238680: ; 0x02238680 + ldr r0, _02238694 ; =0x0224318C + mov r1, #0xc + ldr r0, [r0] + strb r1, [r0, #0xa90] + bx lr + .align 2, 0 +_02238694: .word 0x0224318C + + arm_func_start MOD13_02238698 +MOD13_02238698: ; 0x02238698 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02238878 +_022386B0: ; jump table + b _02238878 ; case 0 + b _022386CC ; case 1 + b _02238878 ; case 2 + b _02238878 ; case 3 + b _022386FC ; case 4 + b _022386FC ; case 5 + b _022386FC ; case 6 +_022386CC: + ldr r1, _02238880 ; =0x0224318C + mov r0, #4 + ldr r1, [r1] + add r1, r1, #0x600 + ldrh r3, [r1, #0x48] + ldrh r2, [r1, #0x4a] + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl MOD13_02237220 + add sp, sp, #4 + ldmia sp!, {pc} +_022386FC: + ldr r1, _02238880 ; =0x0224318C + mov r0, #0 + ldr r2, [r1] + add r1, r2, #0x200 + ldrh r1, [r1] + ldr ip, [r2, #0xaa4] + mov r3, r1, lsr #0x1f + rsb r2, r3, r1, lsl #28 + add r2, r3, r2, ror #28 + add r2, ip, r2, lsl #6 + bl MOD13_02238460 + bl MOD13_02238370 + ldr r0, _02238880 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + cmp r0, #0x1b + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r1, #0x204] + cmp r0, #0x1e0 + movhi r0, #0x1b + strhib r0, [r1, #0xa90] + addhi sp, sp, #4 + ldmhiia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x10 + beq _02238774 + bl MOD13_02238358 + cmp r0, #0x20 + bne _02238790 +_02238774: + bl MOD13_02238358 + ldr r0, _02238880 ; =0x0224318C + mov r1, #0xa + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238790: + bl MOD13_02238358 + cmp r0, #0x40 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0xb + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0xff + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x1b + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x50 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x15 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x60 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x18 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x70 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x1b + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #8 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0xbd + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #9 + ldreq r0, [r0] + streqb r1, [r0, #0xa90] + ldrne r0, _02238880 ; =0x0224318C + movne r1, #0x1f + ldrne r0, [r0] + strneb r1, [r0, #0xa90] +_02238878: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238880: .word 0x0224318C + + arm_func_start MOD13_02238884 +MOD13_02238884: ; 0x02238884 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022385BC + ldr r0, _022388B0 ; =MOD13_02238608 + bl MOD13_0223720C + ldr r0, _022388B4 ; =0x0224318C + mov r1, #8 + ldr r0, [r0] + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022388B0: .word MOD13_02238608 +_022388B4: .word 0x0224318C + + arm_func_start MOD13_022388B8 +MOD13_022388B8: ; 0x022388B8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02236470 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02238A94 +_022388D0: ; jump table + b _02238A3C ; case 0 + b _022388F0 ; case 1 + b _02238914 ; case 2 + b _022389AC ; case 3 + b _02238A94 ; case 4 + b _02238A08 ; case 5 + b _02238A94 ; case 6 + b _02238A20 ; case 7 +_022388F0: + ldr r1, _02238A9C ; =0x0224318C + ldr r0, _02238AA0 ; =0x00000AB4 + ldr r2, [r1] + add r1, r2, #0x600 + ldrh r1, [r1, #0x4a] + add r0, r2, r0 + bl MOD13_02236D9C + add sp, sp, #4 + ldmia sp!, {pc} +_02238914: + mov r0, #2 + bl MOD13_02236414 + cmp r0, #0 + ldrne r0, _02238A9C ; =0x0224318C + movne r1, #5 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0xa90] + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02236414 + cmp r0, #0 + bne _02238958 + mov r0, #4 + bl MOD13_02236414 + cmp r0, #0 + beq _02238970 +_02238958: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #6 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238970: + ldr r0, _02238A9C ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + cmp r0, #5 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_02236414 + cmp r0, #0 + ldreq r0, _02238A9C ; =0x0224318C + moveq r1, #0xd + ldreq r0, [r0] + add sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmia sp!, {pc} +_022389AC: + bl MOD13_022368FC + cmp r0, #0 + beq _022389C4 + bl MOD13_022367F4 + add sp, sp, #4 + ldmia sp!, {pc} +_022389C4: + ldr r0, _02238A9C ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + add r0, r0, #0xfa + and r0, r0, #0xff + cmp r0, #1 + addhi sp, sp, #4 + ldmhiia sp!, {pc} + mov r0, #3 + bl MOD13_02236414 + cmp r0, #0 + ldreq r0, _02238A9C ; =0x0224318C + moveq r1, #0x12 + ldreq r0, [r0] + add sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A08: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #7 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A20: + bl MOD13_022367D8 + ldr r0, _02238A9C ; =0x0224318C + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A3C: + bl MOD13_02237910 + cmp r0, #0 + beq _02238A6C + cmp r0, #1 + beq _02238A60 + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + b _02238A84 +_02238A60: + bl MOD13_02236F5C + add sp, sp, #4 + ldmia sp!, {pc} +_02238A6C: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #0x1f + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A84: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #0x1f + ldr r0, [r0] + strb r1, [r0, #0xa90] +_02238A94: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238A9C: .word 0x0224318C +_02238AA0: .word 0x00000AB4 + + arm_func_start MOD13_02238AA4 +MOD13_02238AA4: ; 0x02238AA4 + ldr r0, _02238AC0 ; =0x0224318C + ldr ip, _02238AC4 ; =MOD13_02236DF4 + ldr r2, [r0] + add r0, r2, #0x600 + ldrh r1, [r0, #0x48] + ldr r0, [r2, #0xac8] + bx ip + .align 2, 0 +_02238AC0: .word 0x0224318C +_02238AC4: .word MOD13_02236DF4 + + arm_func_start MOD13_02238AC8 +MOD13_02238AC8: ; 0x02238AC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _02238B78 +_02238AE0: ; jump table + b _02238B48 ; case 0 + b _02238B08 ; case 1 + b _02238B78 ; case 2 + b _02238B7C ; case 3 + b _02238B78 ; case 4 + b _02238B78 ; case 5 + b _02238B78 ; case 6 + b _02238B14 ; case 7 + b _02238B78 ; case 8 + b _02238B6C ; case 9 +_02238B08: + bl MOD13_02237838 + add sp, sp, #4 + ldmia sp!, {pc} +_02238B14: + bl MOD13_02237608 + ldr r2, _02238B84 ; =0x0224318C + mov ip, #0 + ldr r1, [r2] + mov r3, #3 + add r1, r1, #0x600 + strh r0, [r1, #0x4a] + ldr r0, [r2] + add sp, sp, #4 + str ip, [r0, #0xa98] + ldr r0, [r2] + strb r3, [r0, #0xa90] + ldmia sp!, {pc} +_02238B48: + ldr r0, _02238B84 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #3 + str r3, [r2, #0xa98] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238B6C: + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02238B78: + bl OS_Terminate +_02238B7C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238B84: .word 0x0224318C + + arm_func_start MOD13_02238B88 +MOD13_02238B88: ; 0x02238B88 + ldr ip, _02238B94 ; =MOD13_022132CC + mov r0, #1 + bx ip + .align 2, 0 +_02238B94: .word MOD13_022132CC + + arm_func_start MOD13_02238B98 +MOD13_02238B98: ; 0x02238B98 + ldr r2, _02238BDC ; =0x0224318C + ldr r3, [r2] + ldrb r3, [r3, #0xa90] + strb r3, [r0] + ldr r0, [r2] + ldrb r2, [r0, #0xa90] + ldrb r0, [r0, #0xa91] + cmp r2, r0 + movne r0, #1 + strneb r0, [r1] + moveq r0, #0 + streqb r0, [r1] + ldr r0, _02238BDC ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + strb r0, [r1, #0xa91] + bx lr + .align 2, 0 +_02238BDC: .word 0x0224318C + + arm_func_start MOD13_02238BE0 +MOD13_02238BE0: ; 0x02238BE0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02238FF0 ; =0x0224318C + ldr r0, [r1] + ldrb r2, [r0, #0xa90] + cmp r2, #0x22 + addls pc, pc, r2, lsl #2 + b _02238FE8 +_02238C00: ; jump table + b _02238FE8 ; case 0 + b _02238C8C ; case 1 + b _02238CD4 ; case 2 + b _02238CE0 ; case 3 + b _02238CFC ; case 4 + b _02238D14 ; case 5 + b _02238D14 ; case 6 + b _02238D20 ; case 7 + b _02238D2C ; case 8 + b _02238D2C ; case 9 + b _02238D2C ; case 10 + b _02238D38 ; case 11 + b _02238FE8 ; case 12 + b _02238FE8 ; case 13 + b _02238FE8 ; case 14 + b _02238FE8 ; case 15 + b _02238D44 ; case 16 + b _02238D60 ; case 17 + b _02238D84 ; case 18 + b _02238DAC ; case 19 + b _02238FE8 ; case 20 + b _02238DF0 ; case 21 + b _02238E18 ; case 22 + b _02238FE8 ; case 23 + b _02238E5C ; case 24 + b _02238E84 ; case 25 + b _02238FE8 ; case 26 + b _02238EC8 ; case 27 + b _02238EF0 ; case 28 + b _02238FE8 ; case 29 + b _02238FE4 ; case 30 + b _02238FE8 ; case 31 + b _02238F78 ; case 32 + b _02238FA0 ; case 33 + b _02238FE8 ; case 34 +_02238C8C: + ldrb r2, [r0, #0xaac] + cmp r2, #1 + bne _02238CAC + mov r1, #0 + strb r1, [r0, #0xaac] + bl MOD13_0223903C + add sp, sp, #4 + ldmia sp!, {pc} +_02238CAC: + cmp r2, #2 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r2, #0 + strb r2, [r0, #0xaac] + ldr r0, [r1] + mov r1, #0x22 + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} +_02238CD4: + bl MOD13_02238AC8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238CE0: + bl MOD13_02238AA4 + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238CFC: + ldr r1, [r0, #0xa98] + add r1, r1, #1 + str r1, [r0, #0xa98] + bl MOD13_022388B8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D14: + bl MOD13_022388B8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D20: + bl MOD13_02238884 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D2C: + bl MOD13_02238698 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D38: + bl MOD13_02238680 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D44: + mov r2, #0 + str r2, [r0, #0xa9c] + ldr r0, [r1] + mov r1, #0x11 + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} +_02238D60: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02238644 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D84: + bl MOD13_02214F18 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x16 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238DAC: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x14 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238DF0: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x16 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E18: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x17 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E5C: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x19 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E84: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x1a + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238EC8: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x1c + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238EF0: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + bne _02238F30 + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x1d + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238F30: + ldr r1, _02238FF0 ; =0x0224318C + ldr r0, _02238FF4 ; =0x88888889 + ldr r1, [r1] + ldr r2, _02238FF8 ; =0x0000001E + ldr r3, [r1, #0xa9c] + umull r0, r1, r3, r0 + mov r1, r1, lsr #4 + umull r0, r1, r2, r1 + sub r1, r3, r0 + cmp r1, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + cmp r3, #0x37 + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02236FB8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238F78: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x21 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238FA0: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x22 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238FE4: + bl MOD13_02236FB8 +_02238FE8: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238FF0: .word 0x0224318C +_02238FF4: .word 0x88888889 +_02238FF8: .word 0x0000001E + + arm_func_start MOD13_02238FFC +MOD13_02238FFC: ; 0x02238FFC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239038 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + cmp r0, #5 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + mov r0, #6 + strb r0, [r1, #0xa90] + bl MOD13_02236968 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239038: .word 0x0224318C + + arm_func_start MOD13_0223903C +MOD13_0223903C: ; 0x0223903C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239098 ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + cmp r0, #1 + beq _02239068 + cmp r0, #0x1a + beq _02239068 + cmp r0, #0x1d + bne _0223908C +_02239068: + bl MOD13_0223909C + bl MOD13_02237490 + ldr r0, _02239098 ; =0x0224318C + mov r2, #2 + ldr r1, [r0] + add sp, sp, #4 + strb r2, [r1, #0xa90] + mov r0, #1 + ldmia sp!, {pc} +_0223908C: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239098: .word 0x0224318C + + arm_func_start MOD13_0223909C +MOD13_0223909C: ; 0x0223909C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239120 ; =0x0224318C + ldr r0, [r0] + ldr r0, [r0, #0xac8] + bl MOD13_02237938 + ldr r0, _02239120 ; =0x0224318C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xa90] + bl WM_GetNextTgid + ldr r3, _02239120 ; =0x0224318C + mov r2, #0x40 + ldr r1, [r3] + add r1, r1, #0x600 + strh r0, [r1, #0x48] + ldr r1, [r3] + ldr r0, [r1, #0xaa4] + add r1, r1, #0xa50 + bl MI_CpuCopy8 + ldr r0, _02239120 ; =0x0224318C + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0xa93] + ldr r1, [r0] + str r2, [r1, #0x204] + ldr r0, [r0] + add r0, r0, #0x600 + ldrh r1, [r0, #0x48] + add r1, r1, #1 + strh r1, [r0, #0x48] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239120: .word 0x0224318C + + arm_func_start MOD13_02239124 +MOD13_02239124: ; 0x02239124 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239238 ; =0x0224318C + ldr r2, [r0] + ldrb r1, [r2, #0xa90] + cmp r1, #1 + beq _02239160 + cmp r1, #0x14 + beq _02239160 + cmp r1, #0x17 + beq _02239160 + cmp r1, #0x1a + beq _02239160 + cmp r1, #0x1d + bne _02239184 +_02239160: + mov r1, #0x22 + strb r1, [r2, #0xa90] + ldr r0, _02239238 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xaac] + mov r0, #1 + ldmia sp!, {pc} +_02239184: + cmp r1, #4 + beq _022391A4 + cmp r1, #5 + beq _022391A4 + cmp r1, #6 + beq _022391A4 + cmp r1, #0xd + bne _022391EC +_022391A4: + cmp r1, #4 + bne _022391C0 + ldr r0, [r2, #0xa98] + cmp r0, #6 + addlo sp, sp, #4 + movlo r0, #0 + ldmloia sp!, {pc} +_022391C0: + bl MOD13_02214F18 + ldr r0, _02239238 ; =0x0224318C + mov r3, #0x10 + ldr r1, [r0] + mov r2, #2 + strb r3, [r1, #0xa90] + ldr r1, [r0] + add sp, sp, #4 + strb r2, [r1, #0xaac] + mov r0, #1 + ldmia sp!, {pc} +_022391EC: + add r0, r1, #0xf7 + and r0, r0, #0xff + cmp r0, #1 + movls r0, #0x20 + strlsb r0, [r2, #0xa90] + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {pc} + cmp r1, #0xc + moveq r0, #0x22 + streqb r0, [r2, #0xa90] + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + cmp r1, #2 + moveq r0, #0 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239238: .word 0x0224318C + + arm_func_start MOD13_0223923C +MOD13_0223923C: ; 0x0223923C + stmdb sp!, {r4, lr} + ldr r2, _02239328 ; =0x0224318C + mov r4, r1 + str r0, [r2] + add r0, r0, #0xb00 + bl MOD13_02236F10 + ldr r1, _02239328 ; =0x0224318C + mov r3, #0 + ldr r0, [r1] + mov r2, #1 + add r0, r0, #0x600 + strh r3, [r0, #0x48] + ldr r0, [r1] + add r0, r0, #0x600 + strh r3, [r0, #0x4a] + ldr r0, [r1] + strb r2, [r0, #0xa90] + ldr r0, [r1] + strb r2, [r0, #0xa91] + ldr r0, [r1] + str r3, [r0, #0xa9c] + bl MOD13_022385BC + ldr r0, _02239328 ; =0x0224318C + ldr r3, [r4] + ldr r2, [r0] + mov r1, #2 + str r3, [r2, #0xab4] + ldr r3, [r4, #4] + ldr r2, [r0] + str r3, [r2, #0xab8] + ldr r3, [r4, #8] + ldr r2, [r0] + str r3, [r2, #0xabc] + ldr r3, [r4, #0xc] + ldr r2, [r0] + str r3, [r2, #0xac0] + ldr r3, [r4, #0x10] + ldr r2, [r0] + str r3, [r2, #0xac4] + ldr r3, [r4, #0x14] + ldr r2, [r0] + str r3, [r2, #0xac8] + ldrb r3, [r4, #0x18] + ldr r2, [r0] + strb r3, [r2, #0xa92] + ldr r0, [r0] + strb r1, [r0, #0xacc] + bl OS_GetTick + ldr r1, _02239328 ; =0x0224318C + ldr r0, _0223932C ; =0x0000064C + ldr r1, [r1] + add r0, r1, r0 + bl FUN_02095D68 + bl OS_GetTick + bl MOD13_022338FC + ldr r1, _02239328 ; =0x0224318C + ldr r1, [r1] + str r0, [r1, #0xaa4] + ldmia sp!, {r4, pc} + .align 2, 0 +_02239328: .word 0x0224318C +_0223932C: .word 0x0000064C + + arm_func_start MOD13_02239330 +MOD13_02239330: ; 0x02239330 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r1 + mov r7, r0 + mov r5, r2 + bl strlen + mov r4, r0 + mov r0, r6 + bl strlen + cmp r4, r5 + blt _02239364 + cmp r0, r5 + bge _02239370 +_02239364: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_02239370: + sub r1, r0, r5 + sub r3, r4, r5 + mov r2, r5 + add r0, r7, r3 + add r1, r6, r1 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start MOD13_0223939C +MOD13_0223939C: ; 0x0223939C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + ldr r0, _022393D4 ; =0x02243190 + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0x84] + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022393D4: .word 0x02243190 + + arm_func_start MOD13_022393D8 +MOD13_022393D8: ; 0x022393D8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x4c + ldr r3, _022394C4 ; =0x02243190 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + ldr r0, [r0, #0x84] + mov r4, r2 + bl MOD13_02239F78 + add r0, sp, #4 + bl FS_InitFile + add r0, sp, #4 + mov r1, r6 + bl FS_OpenFile + cmp r0, #0 + bne _0223941C + bl OS_Terminate +_0223941C: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x28] + mov r2, #2 + sub r7, r1, r0 + cmp r5, #0 + ldr r1, _022394C8 ; =0x022409D4 + mov r0, r6 + strne r7, [r5] + bl MOD13_02239330 + cmp r0, #0 + mvnne r6, #3 + moveq r6, r4 + mov r0, r7 + mov r1, r6 + bl MOD13_0223B004 + mov r1, r0 + add r0, sp, #4 + mov r2, r7 + str r1, [sp] + bl FS_ReadFile + add r0, sp, #4 + bl FS_CloseFile + cmp r6, #0 + ldrgt r0, [sp] + addgt sp, sp, #0x4c + ldmgtia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp] + cmp r5, #0 + ldr r0, [r0] + mov r1, r4 + mov r0, r0, lsr #8 + strne r0, [r5] + bl MOD13_0223B004 + mov r4, r0 + ldr r0, [sp] + mov r1, r4 + bl MI_UncompressLZ8 + add r0, sp, #0 + bl MOD13_0223AF90 + mov r0, r4 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022394C4: .word 0x02243190 +_022394C8: .word 0x022409D4 + + arm_func_start MOD13_022394CC +MOD13_022394CC: ; 0x022394CC + mov r0, #1 + bx lr + + arm_func_start MOD13_022394D4 +MOD13_022394D4: ; 0x022394D4 + ldr ip, _022394E0 ; =0x020D0B40 + mov r1, #0 + bx ip + .align 2, 0 +_022394E0: .word 0x020D0B40 + + arm_func_start MOD13_022394E4 +MOD13_022394E4: ; 0x022394E4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr ip, _02239524 ; =MOD13_022394D4 + str ip, [sp] + str r0, [sp, #4] + mov ip, #1 + str ip, [sp, #8] + ldr r0, [r0, #0x28] + mov ip, r1 + add r1, r2, r0 + mov r2, ip + mvn r0, #0 + bl CARDi_ReadRom + mov r0, #6 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02239524: .word MOD13_022394D4 + + arm_func_start MOD13_02239528 +MOD13_02239528: ; 0x02239528 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #1 + beq _02239584 + cmp r1, #9 + beq _0223954C + cmp r1, #0xa + beq _02239568 + b _02239590 +_0223954C: + ldr r0, _0223959C ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl CARD_LockRom + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02239568: + ldr r0, _0223959C ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl CARD_UnlockRom + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02239584: + add sp, sp, #4 + mov r0, #4 + ldmia sp!, {pc} +_02239590: + mov r0, #8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223959C: .word 0x02243190 + + arm_func_start MOD13_022395A0 +MOD13_022395A0: ; 0x022395A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239624 ; =0x022409D8 + bl FS_ChangeDir + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FS_UnloadArchiveTables + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FUN_020D0EB0 + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FUN_020D0FF0 + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl OS_ReleaseLockID + ldr r0, _02239628 ; =0x02243190 + mov r2, #0 + ldr r1, [r0] + strh r2, [r1, #0xe4] + ldr r0, [r0] + bl MOD13_0223AF90 + ldr r0, _02239628 ; =0x02243190 + mov r2, #0 + ldr r1, [r0] + str r2, [r1] + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239624: .word 0x022409D8 +_02239628: .word 0x02243190 + + arm_func_start MOD13_0223962C +MOD13_0223962C: ; 0x0223962C + stmdb sp!, {r4, lr} + sub sp, sp, #0xe8 + mov r0, #0xe8 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _022397BC ; =0x02243190 + str r0, [r1] + add r0, sp, #0x20 + bl FS_InitFile + ldr r1, _022397C0 ; =0x022409E0 + add r0, sp, #0x20 + bl FS_OpenFile + cmp r0, #0 + bne _02239668 + bl OS_Terminate +_02239668: + bl OS_GetLockID + ldr r2, _022397BC ; =0x02243190 + add r1, sp, #0x10 + ldr r3, [r2] + mov r2, #8 + strh r0, [r3, #0xe4] + add r0, sp, #0x20 + ldr r4, [sp, #0x44] + bl FS_ReadFile + add r0, sp, #0x20 + add r1, sp, #0x18 + mov r2, #8 + bl FS_ReadFile + add r0, sp, #0x20 + bl FS_CloseFile + ldr r0, _022397BC ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FS_InitArchive + ldr r0, _022397BC ; =0x02243190 + ldr r1, _022397C4 ; =0x0223F740 + ldr r0, [r0] + mov r2, #3 + add r0, r0, #0x88 + bl FS_RegisterArchiveName + cmp r0, #0 + bne _022396D8 + bl OS_Terminate +_022396D8: + ldr r0, _022397BC ; =0x02243190 + ldr r1, _022397C8 ; =MOD13_02239528 + ldr r0, [r0] + ldr r2, _022397CC ; =0x00000602 + add r0, r0, #0x88 + bl FS_SetArchiveProc + ldr r0, [sp, #0x10] + ldr r1, _022397D0 ; =MOD13_022394E4 + str r0, [sp] + ldr r2, [sp, #0x14] + ldr r0, _022397D4 ; =MOD13_022394CC + str r2, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _022397BC ; =0x02243190 + ldr r2, [sp, #0x18] + ldr r0, [r0] + ldr r3, [sp, #0x1c] + mov r1, r4 + add r0, r0, #0x88 + bl FS_LoadArchive + cmp r0, #0 + bne _02239738 + bl OS_Terminate +_02239738: + ldr r0, _022397BC ; =0x02243190 + mov r1, #0 + ldr r0, [r0] + mov r2, r1 + add r0, r0, #0x88 + bl FUN_020D0D84 + mov r1, #4 + mov r4, r0 + bl MOD13_0223B004 + ldr r1, _022397BC ; =0x02243190 + mov r2, r4 + ldr r3, [r1] + str r0, [r3] + ldr r0, [r1] + ldr r1, [r0], #0x88 + bl FUN_020D0D84 + ldr r1, _022397BC ; =0x02243190 + mov r0, #0x20 + ldr r1, [r1] + mov r2, #4 + add r1, r1, #4 + bl MOD13_0223A054 + ldr r2, _022397BC ; =0x02243190 + ldr r1, _022397D8 ; =0x022409F8 + ldr r3, [r2] + ldr r2, _022397C4 ; =0x0223F740 + str r0, [r3, #0x84] + add r0, sp, #0x68 + bl OS_SPrintf + add r0, sp, #0x68 + bl FS_ChangeDir + add sp, sp, #0xe8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022397BC: .word 0x02243190 +_022397C0: .word 0x022409E0 +_022397C4: .word 0x0223F740 +_022397C8: .word MOD13_02239528 +_022397CC: .word 0x00000602 +_022397D0: .word MOD13_022394E4 +_022397D4: .word MOD13_022394CC +_022397D8: .word 0x022409F8 + + arm_func_start MOD13_022397DC +MOD13_022397DC: ; 0x022397DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr lr, [r0, #8] + ldr r0, _02239810 ; =0x01FF0000 + ldr ip, [lr, r1, lsl #3] + and r0, ip, r0 + mov r0, r0, lsr #0x10 + str r0, [r2] + ldr r0, [lr, r1, lsl #3] + and r0, r0, #0xff + str r0, [r3] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239810: .word 0x01FF0000 + + arm_func_start MOD13_02239814 +MOD13_02239814: ; 0x02239814 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0 + ldr lr, [r0, #8] + blt _02239844 + add r1, lr, r1, lsl #3 + ldrh r0, [r1, #4] + add sp, sp, #4 + bic r0, r0, #0xc00 + orr r0, r0, r2, lsl #10 + strh r0, [r1, #4] + ldmia sp!, {pc} +_02239844: + ldrb r1, [r0, #0xc] + mov ip, #0 + cmp r1, #0 + addle sp, sp, #4 + ldmleia sp!, {pc} + mov r3, r2, lsl #0xa +_0223985C: + add r2, lr, ip, lsl #3 + ldrh r1, [r2, #4] + add ip, ip, #1 + bic r1, r1, #0xc00 + orr r1, r1, r3 + strh r1, [r2, #4] + ldrb r1, [r0, #0xc] + cmp ip, r1 + blt _0223985C + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02239888 +MOD13_02239888: ; 0x02239888 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + cmp r1, #0 + ldr ip, [r0, #8] + blt _022398C8 + ldr r5, [ip, r1, lsl #3] + ldr r4, _02239988 ; =0xFE00FF00 + ldr r0, _0223998C ; =0x000001FF + and r4, r5, r4 + and r3, r3, #0xff + and r2, r2, r0 + orr r0, r4, r3 + orr r0, r0, r2, lsl #16 + str r0, [ip, r1, lsl #3] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022398C8: + ldr r1, [ip] + ldr lr, _02239990 ; =0x01FF0000 + ldr r4, _0223998C ; =0x000001FF + and r1, r1, lr + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [ip] + ldr r5, _02239988 ; =0xFE00FF00 + and r1, r1, #0xff + str r1, [sp, #4] + ldr r6, [ip] + and r1, r3, #0xff + and r6, r6, r5 + and r7, r2, r4 + orr r1, r6, r1 + orr r1, r1, r7, lsl #16 + str r1, [ip] + ldrb r1, [r0, #0xc] + ldr r7, [sp] + ldr r6, [sp, #4] + cmp r1, #1 + sub r1, r3, r6 + addle sp, sp, #0x10 + sub r2, r2, r7 + mov r3, #1 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} +_02239930: + ldr r6, [ip, r3, lsl #3] + and r7, r6, lr + mov r6, r7, lsr #0x10 + str r6, [sp, #8] + ldr r6, [ip, r3, lsl #3] + add r8, r2, r7, lsr #16 + and r6, r6, #0xff + str r6, [sp, #0xc] + ldr r7, [ip, r3, lsl #3] + add r6, r6, r1 + and r7, r7, r5 + and r6, r6, #0xff + and r8, r8, r4 + orr r6, r7, r6 + orr r6, r6, r8, lsl #16 + str r6, [ip, r3, lsl #3] + ldrb r6, [r0, #0xc] + add r3, r3, #1 + cmp r3, r6 + blt _02239930 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02239988: .word 0xFE00FF00 +_0223998C: .word 0x000001FF +_02239990: .word 0x01FF0000 + + arm_func_start MOD13_02239994 +MOD13_02239994: ; 0x02239994 + stmdb sp!, {r4, lr} + cmp r1, #0 + ldr ip, [r0, #8] + blt _022399CC + ldr r0, [ip, r1, lsl #3] + add lr, ip, r1, lsl #3 + bic r0, r0, #0xc00 + orr r0, r0, r2, lsl #10 + str r0, [ip, r1, lsl #3] + ldrh r0, [lr, #4] + bic r0, r0, #0xf000 + orr r0, r0, r3, lsl #12 + strh r0, [lr, #4] + ldmia sp!, {r4, pc} +_022399CC: + ldrb lr, [r0, #0xc] + mov r1, #0 + cmp lr, #0 + ldmleia sp!, {r4, pc} + mov r4, r2, lsl #0xa + mov lr, r3, lsl #0xc +_022399E4: + ldr r2, [ip, r1, lsl #3] + add r3, ip, r1, lsl #3 + bic r2, r2, #0xc00 + orr r2, r2, r4 + str r2, [ip, r1, lsl #3] + ldrh r2, [r3, #4] + add r1, r1, #1 + bic r2, r2, #0xf000 + orr r2, r2, lr + strh r2, [r3, #4] + ldrb r2, [r0, #0xc] + cmp r1, r2 + blt _022399E4 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_02239A1C +MOD13_02239A1C: ; 0x02239A1C + stmdb sp!, {r4, lr} + cmp r1, #0 + ldr ip, [r0, #8] + blt _02239A70 + cmp r2, #0x100 + beq _02239A54 + cmp r2, #0x300 + beq _02239A54 + ldr r3, [ip, r1, lsl #3] + ldr r0, _02239AD0 ; =0xC1FFFCFF + and r0, r3, r0 + orr r0, r0, r2 + str r0, [ip, r1, lsl #3] + ldmia sp!, {r4, pc} +_02239A54: + ldr lr, [ip, r1, lsl #3] + ldr r0, _02239AD0 ; =0xC1FFFCFF + and r0, lr, r0 + orr r0, r0, r2 + orr r0, r0, r3, lsl #25 + str r0, [ip, r1, lsl #3] + ldmia sp!, {r4, pc} +_02239A70: + ldrb lr, [r0, #0xc] + mov r1, #0 + cmp lr, #0 + ldmleia sp!, {r4, pc} + mov r4, r3, lsl #0x19 + ldr r3, _02239AD0 ; =0xC1FFFCFF +_02239A88: + cmp r2, #0x100 + beq _02239AA8 + cmp r2, #0x300 + ldrne lr, [ip, r1, lsl #3] + andne lr, lr, r3 + orrne lr, lr, r2 + strne lr, [ip, r1, lsl #3] + bne _02239ABC +_02239AA8: + ldr lr, [ip, r1, lsl #3] + and lr, lr, r3 + orr lr, lr, r2 + orr lr, r4, lr + str lr, [ip, r1, lsl #3] +_02239ABC: + ldrb lr, [r0, #0xc] + add r1, r1, #1 + cmp r1, lr + blt _02239A88 + ldmia sp!, {r4, pc} + .align 2, 0 +_02239AD0: .word 0xC1FFFCFF + + arm_func_start MOD13_02239AD4 +MOD13_02239AD4: ; 0x02239AD4 + ldrb r0, [r0, #0xc] + bx lr + + arm_func_start MOD13_02239ADC +MOD13_02239ADC: ; 0x02239ADC + ldr r0, [r0, #8] + add r0, r0, r1, lsl #3 + bx lr + + arm_func_start MOD13_02239AE8 +MOD13_02239AE8: ; 0x02239AE8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldrb r0, [r5, #0xc] + mov r4, #0 + mov r2, r4 + cmp r0, #0 + ldr r3, [r5, #8] + ble _02239B34 + ldr r0, _02239B6C ; =0xC1FFFCFF +_02239B10: + ldr r1, [r3] + add r2, r2, #1 + and r1, r1, r0 + orr r1, r1, #0x200 + str r1, [r3] + ldrb r1, [r5, #0xc] + add r3, r3, #8 + cmp r2, r1 + blt _02239B10 +_02239B34: + mov r0, r5 + bl MOD13_0223B8C4 + ldr r0, _02239B70 ; =0x02243194 + ldr r1, [r0] + add r0, r1, #0x228 + cmp r5, r0 + movhs r4, #1 + mov r0, #0x228 + mla r0, r4, r0, r1 + ldr r0, [r0, #0x224] + mov r1, r5 + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02239B6C: .word 0xC1FFFCFF +_02239B70: .word 0x02243194 + + arm_func_start MOD13_02239B74 +MOD13_02239B74: ; 0x02239B74 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r0, #0x228 + mul r7, sb, r0 + ldr r0, _02239CE4 ; =0x02243194 + mov r5, r1 + ldr r0, [r0] + mov r6, r2 + add r0, r0, r7 + ldr r0, [r0, #0x224] + bl MOD13_02239F78 + mov r4, r0 + mov r0, #1 + bl OS_DisableIrqMask + mov r8, r0 + cmp r6, #0 + beq _02239C44 + ldr r1, _02239CE4 ; =0x02243194 + mov r0, #0x228 + ldr r2, [r1] + mla r0, sb, r0, r2 + add r6, r0, #0x200 + add r0, r0, #0x210 + cmp r6, r0 + beq _02239C24 + mov r1, r5, lsl #3 + add r0, r2, r7 + add r2, r0, #0x210 +_02239BE8: + ldrb sb, [r6, #0xc] + ldr r0, [r6, #4] + ldr ip, [r6, #8] + ldr r3, [r0, #8] + add ip, ip, sb, lsl #3 + add sb, ip, r1 + cmp sb, r3 + bhi _02239C18 + mov r1, r4 + str ip, [r4, #8] + bl MOD13_0223B888 + b _02239C24 +_02239C18: + mov r6, r0 + cmp r0, r2 + bne _02239BE8 +_02239C24: + ldr r0, _02239CE4 ; =0x02243194 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x210 + cmp r6, r0 + bne _02239CCC + bl OS_Terminate + b _02239CCC +_02239C44: + ldr r1, _02239CE4 ; =0x02243194 + mov r0, #0x228 + ldr r1, [r1] + mla r0, sb, r0, r1 + add r6, r0, #0x210 + add r0, r0, #0x200 + cmp r6, r0 + beq _02239CB0 + mov r0, r5, lsl #3 + add r1, r1, r7 + add r1, r1, #0x200 +_02239C70: + ldr ip, [r6] + ldr sb, [r6, #8] + ldrb r2, [ip, #0xc] + ldr r3, [ip, #8] + sub sb, sb, r0 + add r2, r3, r2, lsl #3 + cmp sb, r2 + blo _02239CA4 + mov r0, r6 + mov r1, r4 + str sb, [r4, #8] + bl MOD13_0223B888 + b _02239CB0 +_02239CA4: + mov r6, ip + cmp ip, r1 + bne _02239C70 +_02239CB0: + ldr r0, _02239CE4 ; =0x02243194 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x200 + cmp r6, r0 + bne _02239CCC + bl OS_Terminate +_02239CCC: + mov r0, r8 + bl OS_EnableIrqMask + mov r0, r4 + strb r5, [r4, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02239CE4: .word 0x02243194 + + arm_func_start MOD13_02239CE8 +MOD13_02239CE8: ; 0x02239CE8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r5, r6 + ldr r4, _02239D34 ; =0x02243194 +_02239CF8: + ldr r0, [r4] + add r0, r0, r5 + ldr r0, [r0, #0x220] + bl MOD13_0223B904 + ldr r0, [r4] + add r0, r0, r5 + ldr r0, [r0, #0x224] + bl MOD13_0223A030 + add r6, r6, #1 + cmp r6, #2 + add r5, r5, #0x228 + blt _02239CF8 + ldr r0, _02239D34 ; =0x02243194 + bl MOD13_0223AF90 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02239D34: .word 0x02243194 + + arm_func_start MOD13_02239D38 +MOD13_02239D38: ; 0x02239D38 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r0, #0x450 + mov r1, #4 + bl MOD13_0223AFE0 + ldr sl, _02239E08 ; =0x02243194 + mov sb, #0 + mov r8, sb + str r0, [sl] + mov r7, #0x20 + mov r6, #0x10 + mov r5, #0x40 + mov r4, #0x7f +_02239D68: + ldr r1, [sl] + mov r0, r7 + mov r2, r6 + add r1, r1, r8 + bl MOD13_0223A054 + ldr r1, [sl] + add r1, r1, r8 + str r0, [r1, #0x224] + bl MOD13_0223B928 + ldr r2, [sl] + mov r1, r5 + add r2, r2, r8 + str r0, [r2, #0x220] + mov r0, sb + bl MOD13_0223B95C + ldr r2, [sl] + mov r1, r4 + add r2, r2, r8 + str r0, [r2, #0x208] + mov r0, sb + bl MOD13_0223B95C + add r1, r0, #8 + ldr r0, [sl] + add r0, r0, r8 + str r1, [r0, #0x218] + ldr r0, [sl] + add r1, r0, r8 + ldr r0, [r1, #0x220] + add r1, r1, #0x200 + bl MOD13_0223B868 + ldr r0, [sl] + add r1, r0, r8 + ldr r0, [r1, #0x220] + add r1, r1, #0x210 + bl MOD13_0223B878 + add r8, r8, #0x228 + add sb, sb, #1 + cmp sb, #2 + blt _02239D68 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02239E08: .word 0x02243194 + + arm_func_start MOD13_02239E0C +MOD13_02239E0C: ; 0x02239E0C + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _02239E50 ; =0x02243198 + mov r6, r0 + mov r5, r1 + ldr r3, [r3, r6, lsl #2] + mov r1, r5, lsl #3 + ldrh r1, [r3, r1] + bl MOD13_02239B74 + mov r1, #0 + mov r4, r0 + bl MOD13_02239ADC + mov r2, r0 + mov r0, r6 + mov r1, r5 + bl MOD13_02239E8C + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02239E50: .word 0x02243198 + + arm_func_start MOD13_02239E54 +MOD13_02239E54: ; 0x02239E54 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + add r1, sp, #0 + mov r6, r0 + bl MOD13_0223B9C0 + mov r4, r0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_02239E8C + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_02239E8C +MOD13_02239E8C: ; 0x02239E8C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r3, _02239F1C ; =0x02243198 + mov r5, r2 + ldr r6, [r3, r0, lsl #2] + mov r2, r1, lsl #3 + add r0, r6, r1, lsl #3 + ldr r3, [r0, #4] + ldrh r4, [r6, r2] + add r1, sp, #0 + mov r0, #0 + mov r2, #8 + add sl, r6, r3 + bl MIi_CpuClear32 + cmp r4, #0 + mov sb, #0 + addle sp, sp, #8 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r8, sp, #0 + mov r7, #6 + mov r6, #8 +_02239EE0: + mov r0, sl + mov r1, r8 + mov r2, r7 + bl MIi_CpuCopy16 + mov r0, r8 + mov r1, r5 + mov r2, r6 + bl MIi_CpuCopy32 + add sb, sb, #1 + cmp sb, r4 + add sl, sl, #6 + add r5, r5, #8 + blt _02239EE0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02239F1C: .word 0x02243198 + + arm_func_start MOD13_02239F20 +MOD13_02239F20: ; 0x02239F20 + stmdb sp!, {r4, lr} + ldr r1, _02239F44 ; =0x02243198 + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + bl MOD13_0223939C + ldr r0, _02239F44 ; =0x02243198 + mov r1, #0 + str r1, [r0, r4, lsl #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_02239F44: .word 0x02243198 + + arm_func_start MOD13_02239F48 +MOD13_02239F48: ; 0x02239F48 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + mov r0, r1 + add r1, sp, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02239F74 ; =0x02243198 + str r0, [r1, r4, lsl #2] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02239F74: .word 0x02243198 + + arm_func_start MOD13_02239F78 +MOD13_02239F78: ; 0x02239F78 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + mov r5, #0 + bl OS_DisableIrqMask + ldrb r2, [r6, #3] + ldrb r1, [r6, #2] + mov r4, r0 + cmp r1, r2 + beq _02239FC0 + ldrh r1, [r6] + add r0, r2, r1 + sub r0, r0, #1 + bl FX_ModS32 + strb r0, [r6, #3] + ldrb r0, [r6, #3] + add r0, r6, r0, lsl #2 + ldr r5, [r0, #4] +_02239FC0: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_02239FD0 +MOD13_02239FD0: ; 0x02239FD0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + mov r4, r1 + bl OS_DisableIrqMask + ldrb r2, [r5, #3] + mov r7, r0 + ldrh r1, [r5] + add r0, r2, #1 + bl FX_ModS32 + ldrb r1, [r5, #2] + mov r6, r0 + cmp r6, r1 + bne _0223A010 + bl OS_Terminate +_0223A010: + ldrb r1, [r5, #3] + mov r0, r7 + add r1, r5, r1, lsl #2 + str r4, [r1, #4] + strb r6, [r5, #3] + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start MOD13_0223A030 +MOD13_0223A030: ; 0x0223A030 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start MOD13_0223A054 +MOD13_0223A054: ; 0x0223A054 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD13_0223A094 + cmp r6, #0 + mov r2, #0 + ble _0223A08C +_0223A074: + add r1, r0, r2, lsl #2 + add r2, r2, #1 + str r5, [r1, #4] + cmp r2, r6 + add r5, r5, r4 + blt _0223A074 +_0223A08C: + strb r6, [r0, #3] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_0223A094 +MOD13_0223A094: ; 0x0223A094 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #1 + mov r0, r0, lsl #2 + add r0, r0, #8 + mov r1, #4 + bl MOD13_0223B004 + add r1, r4, #1 + strh r1, [r0] + mov r1, #0 + strb r1, [r0, #2] + strb r1, [r0, #3] + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223A0C8 +MOD13_0223A0C8: ; 0x0223A0C8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrsh r2, [r1, #4] + add r2, r2, #1 + strh r2, [r1, #4] + ldrsh r3, [r1, #4] + ldrh r2, [r1, #6] + cmp r3, r2 + addlt sp, sp, #4 + ldmltia sp!, {pc} + mov r2, #0 + strb r2, [r1, #9] + mov r1, r0 + mov r0, #1 + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A10C +MOD13_0223A10C: ; 0x0223A10C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _0223A168 ; =0x022431A0 + mov r5, r0 + ldr r4, [r1] + ldrb r0, [r4, #9] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0223A16C ; =MOD13_0223A0C8 + mov r2, r4 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r4] + mov r0, #0 + strh r0, [r4, #4] + strh r5, [r4, #6] + mov r0, #1 + strb r0, [r4, #9] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223A168: .word 0x022431A0 +_0223A16C: .word MOD13_0223A0C8 + + arm_func_start MOD13_0223A170 +MOD13_0223A170: ; 0x0223A170 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r3, _0223A294 ; =0x0223F748 + ldr r2, _0223A298 ; =0x0223F744 + ldrb r8, [r3] + ldrb r7, [r3, #1] + ldrb r6, [r3, #2] + ldrb lr, [r3, #3] + ldrb ip, [r2] + ldrb r5, [r2, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r5, [sp, #5] + mov r4, r1 + strb r8, [sp] + strb r7, [sp, #1] + strb r6, [sp, #2] + strb lr, [sp, #3] + strb ip, [sp, #4] + strb r3, [sp, #6] + strb r2, [sp, #7] + ldrsh r1, [r4, #4] + mov r5, r0 + add r0, r1, #1 + strh r0, [r4, #4] + ldrsh r0, [r4, #4] + ldrh r1, [r4, #6] + mov r0, r0, lsl #4 + bl FX_DivS32 + ldrb r3, [r4, #8] + add r2, sp, #0 + mov r1, r0 + ldrb r2, [r2, r3] + ands r0, r2, #1 + rsbne r1, r1, #0x10 + ands r0, r2, #0x10 + ldr r0, _0223A29C ; =0x022431A0 + rsbne r1, r1, #0 + ldr r0, [r0] + cmp r4, r0 + bne _0223A220 + ldr r0, _0223A2A0 ; =0x04001050 + bl G2x_ChangeBlendBrightness_ + b _0223A228 +_0223A220: + ldr r0, _0223A2A4 ; =0x04000050 + bl G2x_ChangeBlendBrightness_ +_0223A228: + ldrsh r1, [r4, #4] + ldrh r0, [r4, #6] + cmp r1, r0 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _0223A29C ; =0x022431A0 + ldr r0, [r0] + cmp r4, r0 + bne _0223A264 + ldrb r2, [r4, #8] + add r1, sp, #4 + ldr r0, _0223A2A0 ; =0x04001050 + ldrsb r1, [r1, r2] + bl G2x_ChangeBlendBrightness_ + b _0223A278 +_0223A264: + ldrb r2, [r4, #8] + add r1, sp, #4 + ldr r0, _0223A2A4 ; =0x04000050 + ldrsb r1, [r1, r2] + bl G2x_ChangeBlendBrightness_ +_0223A278: + mov r2, #0 + mov r1, r5 + mov r0, #1 + strb r2, [r4, #9] + bl MOD13_0223C110 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223A294: .word 0x0223F748 +_0223A298: .word 0x0223F744 +_0223A29C: .word 0x022431A0 +_0223A2A0: .word 0x04001050 +_0223A2A4: .word 0x04000050 + + arm_func_start MOD13_0223A2A8 +MOD13_0223A2A8: ; 0x0223A2A8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r4, _0223A374 ; =0x0223F74C + mov r5, r0 + ldrb r0, [r4, #3] + ldrb r6, [r4] + ldrb lr, [r4, #1] + strb r0, [sp, #3] + cmp r1, #1 + ldreq r0, _0223A378 ; =0x022431A0 + ldrb ip, [r4, #2] + strb r6, [sp] + ldreq r6, [r0] + ldrne r0, _0223A378 ; =0x022431A0 + strb lr, [sp, #1] + ldrne r0, [r0] + strb ip, [sp, #2] + addne r6, r0, #0xc + ldrb r0, [r6, #9] + mov r4, r3 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r1, #1 + bne _0223A328 + add r0, sp, #0 + mov r1, r2 + ldrsb r2, [r0, r5] + ldr r0, _0223A37C ; =0x04001050 + bl G2x_SetBlendBrightness_ + b _0223A33C +_0223A328: + add r0, sp, #0 + mov r1, r2 + ldrsb r2, [r0, r5] + ldr r0, _0223A380 ; =0x04000050 + bl G2x_SetBlendBrightness_ +_0223A33C: + ldr r1, _0223A384 ; =MOD13_0223A170 + mov r2, r6 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r6] + mov r0, #0 + strh r0, [r6, #4] + strb r5, [r6, #8] + strh r4, [r6, #6] + mov r0, #1 + strb r0, [r6, #9] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0223A374: .word 0x0223F74C +_0223A378: .word 0x022431A0 +_0223A37C: .word 0x04001050 +_0223A380: .word 0x04000050 +_0223A384: .word MOD13_0223A170 + + arm_func_start MOD13_0223A388 +MOD13_0223A388: ; 0x0223A388 + cmp r0, #1 + ldreq r0, _0223A3A8 ; =0x022431A0 + ldreq r0, [r0] + ldrne r0, _0223A3A8 ; =0x022431A0 + ldrne r0, [r0] + addne r0, r0, #0xc + ldrb r0, [r0, #9] + bx lr + .align 2, 0 +_0223A3A8: .word 0x022431A0 + + arm_func_start MOD13_0223A3AC +MOD13_0223A3AC: ; 0x0223A3AC + ldr ip, _0223A3B8 ; =MOD13_0223AF90 + ldr r0, _0223A3BC ; =0x022431A0 + bx ip + .align 2, 0 +_0223A3B8: .word MOD13_0223AF90 +_0223A3BC: .word 0x022431A0 + + arm_func_start MOD13_0223A3C0 +MOD13_0223A3C0: ; 0x0223A3C0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x18 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0223A404 ; =0x022431A0 + mov r1, #0x3f + str r0, [r2] + ldr r0, _0223A408 ; =0x04000050 + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + ldr r0, _0223A40C ; =0x04001050 + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223A404: .word 0x022431A0 +_0223A408: .word 0x04000050 +_0223A40C: .word 0x04001050 + + arm_func_start MOD13_0223A410 +MOD13_0223A410: ; 0x0223A410 + ldr r2, _0223A438 ; =0x022431A4 + ldr r1, _0223A43C ; =0x00000718 + ldr r2, [r2] + add r1, r2, r1 + cmp r0, r1 + moveq r0, #1 + streqb r0, [r2, #0x794] + movne r0, #1 + strneb r0, [r2, #0x795] + bx lr + .align 2, 0 +_0223A438: .word 0x022431A4 +_0223A43C: .word 0x00000718 + + arm_func_start MOD13_0223A440 +MOD13_0223A440: ; 0x0223A440 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r6, r3 + mov r4, r0 + mov r8, r1 + mov r0, r6 + mov r1, #0 + mov r7, r2 + bl MOD13_02239ADC + mov r2, #0 + mov r5, r0 + mov r0, r6 + mvn r1, #0 + mov r3, r2 + bl MOD13_02239A1C + mov r0, r6 + mvn r1, #0 + mov r2, #0 + mov r3, #0xf + bl MOD13_02239994 + mov r0, r6 + mvn r1, #0 + ldr r2, [sp, #0x28] + bl MOD13_02239814 + str r7, [sp] + mov r0, r5 + mov r3, r8 + mov r1, #0 + str r1, [sp, #4] + ldrh r2, [r4, #0x34] + mov r1, #2 + str r2, [sp, #8] + str r1, [sp, #0xc] + ldrb r1, [r4, #0x36] + ldrb r2, [r4, #0x37] + bl FUN_020B5E50 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start MOD13_0223A4D8 +MOD13_0223A4D8: ; 0x0223A4D8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, [r0, #0x18] + blx r2 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A4F0 +MOD13_0223A4F0: ; 0x0223A4F0 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, [sp, #0x1c] + str lr, [sp] + ldr lr, [sp, #0x20] + str ip, [sp, #4] + ldr ip, [sp, #0x24] + str lr, [sp, #8] + add r0, r0, #0x20 + str ip, [sp, #0xc] + bl FUN_020B7168 + add sp, sp, #0x14 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A528 +MOD13_0223A528: ; 0x0223A528 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r7, [sp, #0x34] + mov sb, r1 + ldrh r1, [r7] + ldr r8, [sp, #0x30] + ldr r6, [sp, #0x38] + mov sl, r0 + mov fp, r2 + str r3, [sp, #8] + cmp r1, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #0xc + mul r4, r6, r0 +_0223A564: + ldr r0, _0223A5E8 ; =0x022431A4 + ldr r0, [r0] + add r5, r0, r4 + mov r0, r5 + bl FUN_020B5CE4 + mov r1, r0 + ldr r0, _0223A5EC ; =0x0000FFFF + cmp r1, r0 + ldreq r0, [r5] + ldreqh r1, [r0, #2] + mov r0, r5 + bl FUN_020B5C88 + ldrh r1, [r5, #8] + ldrh r2, [r7] + ldr r3, [sp, #8] + cmp r1, #0 + ldrnesb r1, [r0] + ldrneb r0, [r0, #1] + addne r0, r1, r0 + ldreqsb r0, [r0, #2] + sub r1, r8, r0 + str r2, [sp] + mov r0, sl + mov r2, fp + add r1, sb, r1, asr #1 + str r6, [sp, #4] + bl MOD13_0223A5F0 + ldrh r1, [r7, #2]! + add sb, sb, r8 + cmp r1, #0 + bne _0223A564 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0223A5E8: .word 0x022431A4 +_0223A5EC: .word 0x0000FFFF + + arm_func_start MOD13_0223A5F0 +MOD13_0223A5F0: ; 0x0223A5F0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldrh ip, [sp, #0x10] + str r3, [sp] + ldr r3, _0223A630 ; =0x022431A4 + str ip, [sp, #4] + ldr lr, [r3] + ldr ip, [sp, #0x14] + mov r3, #0xc + mov r4, r1 + mla r1, ip, r3, lr + mov r3, r2 + mov r2, r4 + bl FUN_020B63CC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A630: .word 0x022431A4 + + arm_func_start MOD13_0223A634 +MOD13_0223A634: ; 0x0223A634 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr lr, [sp, #0x10] + ldr ip, [sp, #0x14] + str lr, [sp] + add r0, r0, #0x20 + str ip, [sp, #4] + bl FUN_020B7218 + add sp, sp, #0xc + ldmia sp!, {pc} + + arm_func_start MOD13_0223A65C +MOD13_0223A65C: ; 0x0223A65C + ldr r2, _0223A67C ; =0x022431A4 + ldr r1, _0223A680 ; =0x00000718 + ldr r3, [r2] + mov r2, #0x38 + add r1, r3, r1 + mla r0, r2, r0, r1 + ldr ip, _0223A684 ; =MOD13_0223A688 + bx ip + .align 2, 0 +_0223A67C: .word 0x022431A4 +_0223A680: .word 0x00000718 +_0223A684: .word MOD13_0223A688 + + arm_func_start MOD13_0223A688 +MOD13_0223A688: ; 0x0223A688 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x34] + mov r0, #1 + bl MOD13_0223C104 + ldr r1, _0223A70C ; =0x022431A4 + ldr r0, _0223A710 ; =0x00000718 + ldr r1, [r1] + add r0, r1, r0 + cmp r4, r0 + bne _0223A6DC + bl G2_GetBG0CharPtr + ldr r2, _0223A714 ; =0x0223F754 + mov r1, r0 + ldrh r3, [r2] + ldrh r2, [r2, #2] + mov r0, #0 + mul r2, r3, r2 + mov r2, r2, lsl #5 + bl MIi_CpuClear16 + b _0223A700 +_0223A6DC: + bl G2_GetBG0CharPtr + ldr r2, _0223A714 ; =0x0223F754 + mov r1, r0 + ldrh r3, [r2, #4] + ldrh r2, [r2, #6] + mov r0, #0 + mul r2, r3, r2 + mov r2, r2, lsl #5 + bl MIi_CpuClear16 +_0223A700: + add r0, r4, #0x30 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A70C: .word 0x022431A4 +_0223A710: .word 0x00000718 +_0223A714: .word 0x0223F754 + + arm_func_start MOD13_0223A718 +MOD13_0223A718: ; 0x0223A718 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + ldrb r0, [r4] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7E4 ; =0x00000794 + ldr r2, [r1] + add r0, r2, r0 + cmp r4, r0 + bne _0223A790 + ldr r1, _0223A7E8 ; =0x0223F754 + ldr r0, [r2, #0x748] + ldrh r2, [r1] + ldrh r1, [r1, #2] + mul r1, r2, r1 + mov r5, r1, lsl #5 + mov r1, r5 + bl DC_FlushRange + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7EC ; =0x0223F750 + ldr r2, [r1] + ldrh r1, [r0] + ldr r0, [r2, #0x748] + mov r2, r5 + mov r1, r1, lsl #5 + bl GX_LoadBG0Char + b _0223A7D0 +_0223A790: + ldr r1, _0223A7E8 ; =0x0223F754 + ldr r0, [r2, #0x780] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + mul r1, r2, r1 + mov r5, r1, lsl #5 + mov r1, r5 + bl DC_FlushRange + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7EC ; =0x0223F750 + ldr r2, [r1] + ldrh r1, [r0, #2] + ldr r0, [r2, #0x780] + mov r2, r5 + mov r1, r1, lsl #5 + bl GXS_LoadBG0Char +_0223A7D0: + mov r0, #0 + strb r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223A7E0: .word 0x022431A4 +_0223A7E4: .word 0x00000794 +_0223A7E8: .word 0x0223F754 +_0223A7EC: .word 0x0223F750 + + arm_func_start MOD13_0223A7F0 +MOD13_0223A7F0: ; 0x0223A7F0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r0, _0223A954 ; =0x022431A4 + ldr r3, _0223A958 ; =0x0223F756 + mov r4, r8, lsl #2 + ldr r2, _0223A95C ; =0x0223F754 + ldrh r5, [r3, r4] + ldrh r4, [r2, r4] + ldr r3, [r0] + ldr r0, _0223A960 ; =0x00000718 + mul r2, r4, r5 + mov r7, r1 + add r1, r3, r0 + mov r0, #0x38 + mla r6, r8, r0, r1 + mov r0, r2, lsl #5 + mov r1, #0x20 + bl MOD13_0223B004 + str r0, [r6, #0x30] + cmp r8, #1 + bne _0223A86C + ldr r1, _0223A964 ; =0x04001008 + ldrh r0, [r1] + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r1] + b _0223A88C +_0223A86C: + ldr r1, _0223A968 ; =0x04000008 + ldrh r0, [r1] + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r1] +_0223A88C: + mov r0, #4 + str r0, [sp] + ldr r1, [r6, #0x30] + mov r0, r6 + mov r2, r4 + mov r3, r5 + bl FUN_020B6388 + ldr r1, _0223A954 ; =0x022431A4 + mov r0, #0xc + ldr r2, [r1] + mov r1, #1 + mla r0, r7, r0, r2 + str r6, [r6, #0x20] + str r0, [r6, #0x24] + str r1, [r6, #0x28] + str r1, [r6, #0x2c] + cmp r8, #1 + bne _0223A8DC + bl G2S_GetBG0ScrPtr + b _0223A8E0 +_0223A8DC: + bl G2_GetBG0ScrPtr +_0223A8E0: + mov r3, #0 + str r3, [sp] + mov r2, #0x20 + ldr r1, _0223A96C ; =0x0223F750 + str r2, [sp, #4] + mov r2, r8, lsl #1 + ldrh r7, [r1, r2] + mov r1, r4 + mov r2, r5 + str r7, [sp, #8] + mov r4, #0xf + str r4, [sp, #0xc] + bl FUN_020B6240 + mov r0, r6 + mov r1, #0 + bl MOD13_0223A4D8 + ldr r1, _0223A954 ; =0x022431A4 + ldr r0, _0223A970 ; =0x00000794 + ldr r2, [r1] + ldr r1, _0223A974 ; =MOD13_0223A718 + add r0, r2, r0 + add r2, r0, r8 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r6, #0x34] + mov r0, r6 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223A954: .word 0x022431A4 +_0223A958: .word 0x0223F756 +_0223A95C: .word 0x0223F754 +_0223A960: .word 0x00000718 +_0223A964: .word 0x04001008 +_0223A968: .word 0x04000008 +_0223A96C: .word 0x0223F750 +_0223A970: .word 0x00000794 +_0223A974: .word MOD13_0223A718 + + arm_func_start MOD13_0223A978 +MOD13_0223A978: ; 0x0223A978 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x30] + bl MOD13_0223BB20 + ldr r0, _0223A9A0 ; =0x022431A4 + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, #0x788] + bl MOD13_02239FD0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A9A0: .word 0x022431A4 + + arm_func_start MOD13_0223A9A4 +MOD13_0223A9A4: ; 0x0223A9A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r4, _0223AA7C ; =0x022431A4 + mov r7, r0 + ldr r0, [r4] + mov r6, r1 + ldr r0, [r0, #0x788] + mov r5, r2 + mov r8, r3 + bl MOD13_02239F78 + mov r4, r0 + strb r6, [r4, #0x36] + mul r1, r6, r5 + mov r2, r8 + strb r5, [r4, #0x37] + mov r0, r7 + add r3, sp, #4 + bl MOD13_0223BB68 + str r0, [r4, #0x30] + ldr r1, [sp, #4] + mov r0, r6 + strh r1, [r4, #0x34] + mov r1, r5 + bl FUN_020B6180 + ldr r1, [sp, #0x20] + cmp r7, #1 + str r0, [r1] + moveq ip, #0x6600000 + ldr r7, [sp, #4] + mov r1, #4 + movne ip, #0x6400000 + str r1, [sp] + mov r0, r4 + mov r2, r6 + mov r3, r5 + add r1, ip, r7, lsl #7 + bl FUN_020B62F8 + ldr r2, [r4, #0x18] + mov r0, r4 + mov r1, #0 + blx r2 + ldr r0, _0223AA7C ; =0x022431A4 + ldr r1, [sp, #0x24] + ldr r2, [r0] + mov r0, #0xc + mla r0, r1, r0, r2 + str r4, [r4, #0x20] + str r0, [r4, #0x24] + mov r1, #1 + str r1, [r4, #0x28] + mov r0, r4 + str r1, [r4, #0x2c] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223AA7C: .word 0x022431A4 + + arm_func_start MOD13_0223AA80 +MOD13_0223AA80: ; 0x0223AA80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _0223AACC ; =0x022431A4 + mov r5, #0 +_0223AA90: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x78c] + bl MOD13_0223939C + add r5, r5, #1 + cmp r5, #2 + blt _0223AA90 + ldr r0, _0223AACC ; =0x022431A4 + ldr r0, [r0] + ldr r0, [r0, #0x788] + bl MOD13_0223A030 + ldr r0, _0223AACC ; =0x022431A4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AACC: .word 0x022431A4 + + arm_func_start MOD13_0223AAD0 +MOD13_0223AAD0: ; 0x0223AAD0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r0, _0223AB68 ; =0x00000798 + mov r1, #4 + bl MOD13_0223B004 + mov r4, r0 + ldr r3, _0223AB6C ; =0x022431A4 + add r1, r4, #0x18 + mov r0, #0x20 + mov r2, #0x38 + str r4, [r3] + bl MOD13_0223A054 + ldr sb, _0223AB6C ; =0x022431A4 + mov r8, #0 + ldr r1, [sb] + mov r7, r8 + str r0, [r1, #0x788] + ldr r6, _0223AB70 ; =0x02240A00 + mov r5, r8 + mov r4, #4 +_0223AB20: + ldr r0, [r6, r8, lsl #2] + mov r1, r5 + mov r2, r4 + bl MOD13_022393D8 + ldr r1, [sb] + add r1, r1, r8, lsl #2 + str r0, [r1, #0x78c] + ldr r2, [sb] + add r0, r2, r8, lsl #2 + ldr r1, [r0, #0x78c] + add r0, r2, r7 + bl FUN_020B5D3C + add r8, r8, #1 + cmp r8, #2 + add r7, r7, #0xc + blt _0223AB20 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0223AB68: .word 0x00000798 +_0223AB6C: .word 0x022431A4 +_0223AB70: .word 0x02240A00 + + arm_func_start MOD13_0223AB74 +MOD13_0223AB74: ; 0x0223AB74 + ldrh r3, [r0] + strh r3, [r2] + ldrh r3, [r0, #2] + strh r3, [r2, #2] + ldrh ip, [r0] + ldrh r3, [r1] + add r3, ip, r3 + strh r3, [r2, #4] + ldrh r3, [r0, #2] + ldrh r0, [r1, #2] + add r0, r3, r0 + strh r0, [r2, #6] + bx lr + + arm_func_start MOD13_0223ABA8 +MOD13_0223ABA8: ; 0x0223ABA8 + ldr ip, [sp] + strh r0, [ip] + strh r1, [ip, #2] + strh r2, [ip, #4] + strh r3, [ip, #6] + bx lr + + arm_func_start MOD13_0223ABC0 +MOD13_0223ABC0: ; 0x0223ABC0 + strh r0, [r2] + strh r1, [r2, #2] + bx lr + + arm_func_start MOD13_0223ABCC +MOD13_0223ABCC: ; 0x0223ABCC + cmp r1, #3 + addls pc, pc, r1, lsl #2 + bx lr +_0223ABD8: ; jump table + b _0223ABE8 ; case 0 + b _0223AC38 ; case 1 + b _0223AC88 ; case 2 + b _0223ACD8 ; case 3 +_0223ABE8: + cmp r0, #1 + bne _0223AC14 + ldr r0, _0223AD28 ; =0x04001048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD28 ; =0x04001048 + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AC14: + ldr r0, _0223AD2C ; =0x04000048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD2C ; =0x04000048 + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AC38: + cmp r0, #1 + bne _0223AC64 + ldr r0, _0223AD28 ; =0x04001048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD28 ; =0x04001048 + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223AC64: + ldr r0, _0223AD2C ; =0x04000048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD2C ; =0x04000048 + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223AC88: + cmp r0, #1 + bne _0223ACB4 + ldr r0, _0223AD30 ; =0x0400104A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD30 ; =0x0400104A + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223ACB4: + ldr r0, _0223AD34 ; =0x0400004A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD34 ; =0x0400004A + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223ACD8: + cmp r0, #1 + bne _0223AD04 + ldr r0, _0223AD30 ; =0x0400104A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD30 ; =0x0400104A + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AD04: + ldr r0, _0223AD34 ; =0x0400004A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD34 ; =0x0400004A + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr + .align 2, 0 +_0223AD28: .word 0x04001048 +_0223AD2C: .word 0x04000048 +_0223AD30: .word 0x0400104A +_0223AD34: .word 0x0400004A + + arm_func_start MOD13_0223AD38 +MOD13_0223AD38: ; 0x0223AD38 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + bne _0223ADE0 + cmp r1, #0 + bne _0223AD98 + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE78 ; =0x04001040 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE7C ; =0x04001044 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223AD98: + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE80 ; =0x04001042 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE84 ; =0x04001046 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223ADE0: + cmp r1, #0 + bne _0223AE30 + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE88 ; =0x04000040 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE8C ; =0x04000044 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223AE30: + ldrh r0, [r2] + ldrh r3, [r2, #2] + ldrh r1, [r2, #4] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + ldr r3, _0223AE90 ; =0x04000042 + orr ip, r2, r1 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE94 ; =0x04000046 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223AE78: .word 0x04001040 +_0223AE7C: .word 0x04001044 +_0223AE80: .word 0x04001042 +_0223AE84: .word 0x04001046 +_0223AE88: .word 0x04000040 +_0223AE8C: .word 0x04000044 +_0223AE90: .word 0x04000042 +_0223AE94: .word 0x04000046 + + arm_func_start MOD13_0223AE98 +MOD13_0223AE98: ; 0x0223AE98 + cmp r0, #1 + bne _0223AEC8 + ldr r3, _0223AEF0 ; =0x04001000 + mvn r0, r1 + ldr r2, [r3] + ldr r1, [r3] + and r2, r2, #0x1f00 + bic r1, r1, #0x1f00 + and r0, r0, r2, lsr #8 + orr r0, r1, r0, lsl #8 + str r0, [r3] + bx lr +_0223AEC8: + mov r3, #0x4000000 + ldr r0, [r3] + ldr r2, [r3] + and ip, r0, #0x1f00 + mvn r0, r1 + bic r1, r2, #0x1f00 + and r0, r0, ip, lsr #8 + orr r0, r1, r0, lsl #8 + str r0, [r3] + bx lr + .align 2, 0 +_0223AEF0: .word 0x04001000 + + arm_func_start MOD13_0223AEF4 +MOD13_0223AEF4: ; 0x0223AEF4 + cmp r0, #1 + bne _0223AF20 + ldr r3, _0223AF44 ; =0x04001000 + ldr r2, [r3] + ldr r0, [r3] + and ip, r2, #0x1f00 + bic r2, r0, #0x1f00 + orr r0, r1, ip, lsr #8 + orr r0, r2, r0, lsl #8 + str r0, [r3] + bx lr +_0223AF20: + mov r3, #0x4000000 + ldr r2, [r3] + ldr r0, [r3] + and ip, r2, #0x1f00 + bic r2, r0, #0x1f00 + orr r0, r1, ip, lsr #8 + orr r0, r2, r0, lsl #8 + str r0, [r3] + bx lr + .align 2, 0 +_0223AF44: .word 0x04001000 + + arm_func_start MOD13_0223AF48 +MOD13_0223AF48: ; 0x0223AF48 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + bl OS_DisableIrqMask + cmp r5, #0 + mov r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _0223AF8C ; =0x022431A8 + mov r1, r5 + ldr r0, [r0] + bl FUN_020ADDF0 + mov r0, r4 + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AF8C: .word 0x022431A8 + + arm_func_start MOD13_0223AF90 +MOD13_0223AF90: ; 0x0223AF90 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + bl OS_DisableIrqMask + ldr r1, [r5] + mov r4, r0 + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _0223AFDC ; =0x022431A8 + ldr r0, [r0] + bl FUN_020ADDF0 + mov r0, r4 + bl OS_EnableIrqMask + mov r0, #0 + str r0, [r5] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AFDC: .word 0x022431A8 + + arm_func_start MOD13_0223AFE0 +MOD13_0223AFE0: ; 0x0223AFE0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_0223B004 + mov r2, r4 + mov r1, #0 + mov r4, r0 + bl MI_CpuFill8 + mov r0, r4 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223B004 +MOD13_0223B004: ; 0x0223B004 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + mov r5, r1 + bl OS_DisableIrqMask + ldr r1, _0223B04C ; =0x022431A8 + mov r4, r0 + ldr r0, [r1] + mov r1, r6 + mov r2, r5 + bl tempName_NNS_FndAllocFromExpHeapEx + movs r5, r0 + bne _0223B03C + bl OS_Terminate +_0223B03C: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0223B04C: .word 0x022431A8 + + arm_func_start MOD13_0223B050 +MOD13_0223B050: ; 0x0223B050 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B078 ; =0x022431A8 + ldr r0, [r0] + bl thunk_FUN_020adc8c + ldr r0, _0223B078 ; =0x022431A8 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B078: .word 0x022431A8 + + arm_func_start MOD13_0223B07C +MOD13_0223B07C: ; 0x0223B07C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, #0 + mov r2, #0x40000 + bl MI_CpuFill8 + mov r0, r4 + mov r1, #0x40000 + mov r2, #0 + bl tempName_NNS_FndCreateExpHeapEx + ldr r1, _0223B0B8 ; =0x022431A8 + cmp r0, #0 + str r0, [r1] + ldmneia sp!, {r4, pc} + bl OS_Terminate + ldmia sp!, {r4, pc} + .align 2, 0 +_0223B0B8: .word 0x022431A8 + + arm_func_start MOD13_0223B0BC +MOD13_0223B0BC: ; 0x0223B0BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B144 ; =0x022431AC + ldrb r0, [r0] + cmp r0, #0 + beq _0223B10C + ldr r0, _0223B148 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl PM_SetLCDPower + cmp r0, #0 + ldrne r0, _0223B144 ; =0x022431AC + movne r1, #0 + strneb r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223B10C: + ldr r0, _0223B148 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl PM_SetLCDPower + cmp r0, #0 + ldrne r0, _0223B144 ; =0x022431AC + movne r1, #1 + strneb r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B144: .word 0x022431AC +_0223B148: .word 0x027FFFA8 + + arm_func_start MOD13_0223B14C +MOD13_0223B14C: ; 0x0223B14C + ldr r1, _0223B190 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + ldrneh r2, [r3, #0x28] + ldrneh r1, [r3, #0x2a] + strneh r2, [r0] + strneh r1, [r0, #2] + movne r0, #1 + bxne lr + ldrh r2, [r3, #0x2c] + ldrh r1, [r3, #0x2e] + strh r2, [r0] + strh r1, [r0, #2] + mov r0, #0 + bx lr + .align 2, 0 +_0223B190: .word 0x022431B4 + + arm_func_start MOD13_0223B194 +MOD13_0223B194: ; 0x0223B194 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldrh r1, [r0] + strh r1, [sp] + ldrh r1, [r0, #2] + strh r1, [sp, #2] + ldrh r2, [r0] + ldrh r1, [r0, #4] + add r1, r2, r1 + strh r1, [sp, #4] + ldrh r2, [r0, #2] + ldrh r1, [r0, #6] + add r0, sp, #0 + add r1, r2, r1 + strh r1, [sp, #6] + bl MOD13_0223B2B4 + add sp, sp, #0xc + ldmia sp!, {pc} + + arm_func_start MOD13_0223B1DC +MOD13_0223B1DC: ; 0x0223B1DC + ldr r1, _0223B244 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1c + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B244: .word 0x022431B4 + + arm_func_start MOD13_0223B248 +MOD13_0223B248: ; 0x0223B248 + ldr r1, _0223B2B0 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1d + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B2B0: .word 0x022431B4 + + arm_func_start MOD13_0223B2B4 +MOD13_0223B2B4: ; 0x0223B2B4 + ldr r1, _0223B31C ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1e + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B31C: .word 0x022431B4 + + arm_func_start MOD13_0223B320 +MOD13_0223B320: ; 0x0223B320 + ldr r1, _0223B388 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B388: .word 0x022431B4 + + arm_func_start MOD13_0223B38C +MOD13_0223B38C: ; 0x0223B38C + ldr r1, _0223B3AC ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x36] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3AC: .word 0x022431B4 + + arm_func_start MOD13_0223B3B0 +MOD13_0223B3B0: ; 0x0223B3B0 + ldr r1, _0223B3D0 ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x34] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3D0: .word 0x022431B4 + + arm_func_start MOD13_0223B3D4 +MOD13_0223B3D4: ; 0x0223B3D4 + ldr r1, _0223B3F4 ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x32] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3F4: .word 0x022431B4 + + arm_func_start MOD13_0223B3F8 +MOD13_0223B3F8: ; 0x0223B3F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r0, _0223B598 ; =0x022431B4 + mov r4, #0 + ldr r0, [r0] + ldrb r0, [r0, #0x38] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + movne r6, #1 + moveq r6, #0 + bl TP_GetLatestIndexInAuto + ldr r7, _0223B598 ; =0x022431B4 + mov r5, r4 + ldr r3, [r7] + mov r8, #5 + ldrh r2, [r3, #0x28] + ldrh r1, [r3, #0x2a] + strh r2, [r3, #0x2c] + strh r1, [r3, #0x2e] +_0223B444: + ldr r1, [r7] + add r1, r1, r0, lsl #3 + ldrh r2, [r1, #4] + cmp r2, #1 + bne _0223B48C + ldrh r2, [r1, #6] + cmp r2, #0 + bne _0223B48C + add r0, sp, #0 + mov r4, #1 + bl TP_GetCalibratedPoint + ldr r1, _0223B598 ; =0x022431B4 + ldrh r0, [sp] + ldr r2, [r1] + ldrh r1, [sp, #2] + add r2, r2, #0x28 + bl MOD13_0223ABC0 + b _0223B4A4 +_0223B48C: + mov r1, r8 + add r5, r5, #1 + add r0, r0, #4 + bl FX_ModS32 + cmp r5, #4 + blt _0223B444 +_0223B4A4: + ldr r1, _0223B598 ; =0x022431B4 + eor r7, r4, r6 + ldr r5, [r1] + and r0, r4, r7 + ldrb r3, [r5, #0x38] + and r2, r0, #0xff + and r0, r6, r7 + bic r3, r3, #2 + and r2, r2, #1 + orr r2, r3, r2, lsl #1 + strb r2, [r5, #0x38] + ldr r5, [r1] + and r0, r0, #0xff + ldrb r3, [r5, #0x38] + and r2, r0, #1 + cmp r4, #0 + bic r3, r3, #8 + orr r2, r3, r2, lsl #3 + strb r2, [r5, #0x38] + ldr r3, [r1] + and r0, r4, #1 + ldrb r2, [r3, #0x38] + addeq sp, sp, #8 + bic r2, r2, #1 + orr r0, r2, r0 + strb r0, [r3, #0x38] + ldr r3, [r1] + moveq r1, #0 + ldrb r2, [r3, #0x38] + mov r0, r2, lsl #0x1e + mov r0, r0, lsr #0x1f + bic r2, r2, #4 + and r0, r0, #1 + orr r0, r2, r0, lsl #2 + strb r0, [r3, #0x38] + ldreq r0, _0223B59C ; =0x022431B0 + streqb r1, [r0] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _0223B59C ; =0x022431B0 + ldrb r2, [r0] + add r2, r2, #1 + strb r2, [r0] + ldrb r2, [r0] + cmp r2, #0x28 + ldreq r1, [r1] + addeq sp, sp, #8 + ldreqb r0, [r1, #0x38] + orreq r0, r0, #4 + streqb r0, [r1, #0x38] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r2, #0x2f + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r3, [r1] + mov r1, #0x28 + ldrb r2, [r3, #0x38] + orr r2, r2, #4 + strb r2, [r3, #0x38] + strb r1, [r0] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223B598: .word 0x022431B4 +_0223B59C: .word 0x022431B0 + + arm_func_start MOD13_0223B5A0 +MOD13_0223B5A0: ; 0x0223B5A0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, _0223B694 ; =0x04000130 + ldr r0, _0223B698 ; =0x027FFFA8 + ldrh r2, [r1] + ldrh r1, [r0] + ldr r4, _0223B69C ; =0x022431B4 + ldr r0, _0223B6A0 ; =0x00002FFF + ldr r5, [r4] + orr r1, r2, r1 + eor r1, r1, r0 + and r0, r1, r0 + mov r0, r0, lsl #0x10 + ldrh r1, [r5, #0x30] + mov r3, r0, lsr #0x10 + ldr ip, _0223B6A4 ; =0x022431B8 + eor r1, r1, r0, lsr #16 + and r1, r1, r0, lsr #16 + strh r1, [r5, #0x32] + ldrh r2, [r5, #0x30] + ldr r1, [r4] + mov lr, #0 + eor r0, r2, r0, lsr #16 + and r0, r2, r0 + strh r0, [r1, #0x36] + ldr r0, [r4] + strh r3, [r0, #0x30] + ldr r1, [r4] + ldrh r0, [r1, #0x32] + strh r0, [r1, #0x34] + mov r0, lr + mov r5, #0x28 + mov r2, #1 +_0223B624: + mov r1, r2, lsl lr + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + ands r6, r3, r1 + streqb r0, [ip] + beq _0223B67C + ldrb r6, [ip] + add r6, r6, #1 + strb r6, [ip] + ldrb r6, [ip] + cmp r6, #0x28 + ldreq r7, [r4] + ldreqh r6, [r7, #0x34] + orreq r1, r6, r1 + streqh r1, [r7, #0x34] + beq _0223B67C + cmp r6, #0x2f + ldreq r7, [r4] + ldreqh r6, [r7, #0x34] + orreq r1, r6, r1 + streqh r1, [r7, #0x34] + streqb r5, [ip] +_0223B67C: + add lr, lr, #1 + cmp lr, #0xe + add ip, ip, #1 + blt _0223B624 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B694: .word 0x04000130 +_0223B698: .word 0x027FFFA8 +_0223B69C: .word 0x022431B4 +_0223B6A0: .word 0x00002FFF +_0223B6A4: .word 0x022431B8 + + arm_func_start MOD13_0223B6A8 +MOD13_0223B6A8: ; 0x0223B6A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223B5A0 + bl MOD13_0223B3F8 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223B6C0 +MOD13_0223B6C0: ; 0x0223B6C0 + stmdb sp!, {r4, lr} + mov r4, #4 +_0223B6C8: + bl TP_RequestAutoSamplingStopAsync + mov r0, r4 + bl TP_WaitBusy + mov r0, r4 + bl TP_CheckError + cmp r0, #0 + bne _0223B6C8 + ldr r0, _0223B6F0 ; =0x022431B4 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223B6F0: .word 0x022431B4 + + arm_func_start MOD13_0223B6F4 +MOD13_0223B6F4: ; 0x0223B6F4 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r0, #0x3a + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0223B76C ; =0x022431B4 + str r0, [r1] + add r0, sp, #0 + bl TP_GetUserInfo + cmp r0, #0 + bne _0223B724 + bl OS_Terminate +_0223B724: + add r0, sp, #0 + bl TP_SetCalibrateParam + ldr r1, _0223B76C ; =0x022431B4 + mov r0, #0 + ldr r2, [r1] + mov r1, #4 + mov r3, #5 + bl TP_RequestAutoSamplingStartAsync + mov r0, #2 + bl TP_WaitBusy + mov r0, #2 + bl TP_CheckError + cmp r0, #0 + beq _0223B760 + bl OS_Terminate +_0223B760: + bl MOD13_0223B6A8 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0223B76C: .word 0x022431B4 + + arm_func_start MOD13_0223B770 +MOD13_0223B770: ; 0x0223B770 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223C1E0 + ldr r0, _0223B79C ; =0x027E0000 + add r0, r0, #0x3000 + ldr r1, [r0, #0xff8] + orr r1, r1, #1 + str r1, [r0, #0xff8] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B79C: .word 0x027E0000 + + arm_func_start MOD13_0223B7A0 +MOD13_0223B7A0: ; 0x0223B7A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0223B7DC ; =0x04000208 + mov r1, #0 + ldrh r0, [r2] + ldr r0, _0223B7E0 ; =0x022431CC + strh r1, [r2] + ldr r0, [r0] + bl OS_SetIrqMask + ldr r1, _0223B7E4 ; =0x022431C8 + mov r0, #1 + ldr r1, [r1] + bl OS_SetIrqFunction + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B7DC: .word 0x04000208 +_0223B7E0: .word 0x022431CC +_0223B7E4: .word 0x022431C8 + + arm_func_start MOD13_0223B7E8 +MOD13_0223B7E8: ; 0x0223B7E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B850 ; =0x04000210 + ldr r1, _0223B854 ; =0x022431CC + ldr r2, [r0] + ldr r0, _0223B858 ; =0x00040018 + str r2, [r1] + bl OS_SetIrqMask + mov r0, #1 + bl OS_EnableIrqMask + mov r0, #1 + bl OS_GetIrqFunction + ldr r2, _0223B85C ; =0x022431C8 + ldr r1, _0223B860 ; =MOD13_0223B770 + str r0, [r2] + mov r0, #1 + bl OS_SetIrqFunction + mov r0, #1 + bl OS_ResetRequestIrqMask + ldr r2, _0223B864 ; =0x04000208 + mov r0, #1 + ldrh r1, [r2] + strh r0, [r2] + bl OS_EnableInterrupts + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B850: .word 0x04000210 +_0223B854: .word 0x022431CC +_0223B858: .word 0x00040018 +_0223B85C: .word 0x022431C8 +_0223B860: .word MOD13_0223B770 +_0223B864: .word 0x04000208 + + arm_func_start MOD13_0223B868 +MOD13_0223B868: ; 0x0223B868 + ldr ip, _0223B874 ; =MOD13_0223B888 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0223B874: .word MOD13_0223B888 + + arm_func_start MOD13_0223B878 +MOD13_0223B878: ; 0x0223B878 + ldr ip, _0223B884 ; =MOD13_0223B888 + add r0, r0, #8 + bx ip + .align 2, 0 +_0223B884: .word MOD13_0223B888 + + arm_func_start MOD13_0223B888 +MOD13_0223B888: ; 0x0223B888 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + mov r4, r1 + bl OS_DisableIrqMask + ldr r1, [r5] + str r4, [r1, #4] + ldr r1, [r5] + str r1, [r4] + str r5, [r4, #4] + str r4, [r5] + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_0223B8C4 +MOD13_0223B8C4: ; 0x0223B8C4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #1 + bl OS_DisableIrqMask + ldr r3, [r4, #4] + ldr r2, [r4] + mov r1, #0 + str r3, [r2, #4] + ldr r3, [r4] + ldr r2, [r4, #4] + str r3, [r2] + str r1, [r4, #4] + ldr r1, [r4, #4] + str r1, [r4] + bl OS_EnableIrqMask + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223B904 +MOD13_0223B904: ; 0x0223B904 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start MOD13_0223B928 +MOD13_0223B928: ; 0x0223B928 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x10 + mov r1, #4 + bl MOD13_0223B004 + mov r2, #0 + str r2, [r0] + add r1, r0, #8 + str r1, [r0, #4] + str r0, [r0, #8] + str r2, [r0, #0xc] + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223B95C +MOD13_0223B95C: ; 0x0223B95C + ldr r2, _0223B970 ; =0x022431D0 + ldr r2, [r2] + add r0, r2, r0, lsl #10 + add r0, r0, r1, lsl #3 + bx lr + .align 2, 0 +_0223B970: .word 0x022431D0 + + arm_func_start MOD13_0223B974 +MOD13_0223B974: ; 0x0223B974 + mov r1, r0 + ldr r3, [r1] + ldr r0, _0223B9B4 ; =0xC1FFFCFF + ldr r2, _0223B9B8 ; =0x022431D0 + and r0, r3, r0 + orr r0, r0, #0x200 + str r0, [r1] + ldr r2, [r2] + mov r3, #0 + add r0, r2, #0x400 + cmp r1, r0 + movhs r3, #1 + add r0, r2, r3, lsl #2 + ldr ip, _0223B9BC ; =MOD13_02239FD0 + ldr r0, [r0, #0x800] + bx ip + .align 2, 0 +_0223B9B4: .word 0xC1FFFCFF +_0223B9B8: .word 0x022431D0 +_0223B9BC: .word MOD13_02239FD0 + + arm_func_start MOD13_0223B9C0 +MOD13_0223B9C0: ; 0x0223B9C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _0223BA00 ; =0x022431D0 + mov r5, r1 + ldr r1, [r2] + add r0, r1, r0, lsl #2 + ldr r0, [r0, #0x800] + bl MOD13_02239F78 + mov r4, r0 + mov r0, r5 + mov r1, r4 + mov r2, #8 + bl MIi_CpuCopy32 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223BA00: .word 0x022431D0 + + arm_func_start MOD13_0223BA04 +MOD13_0223BA04: ; 0x0223BA04 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0223BA30 ; =0x022431D0 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x808] + bl MOD13_0223C104 + ldr r0, _0223BA30 ; =0x022431D0 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BA30: .word 0x022431D0 + + arm_func_start MOD13_0223BA34 +MOD13_0223BA34: ; 0x0223BA34 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0x800 + ldr r0, [r0] + bl DC_FlushRange + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x400 + bl GX_LoadOAM + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x400 + add r0, r0, #0x400 + bl GXS_LoadOAM + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BA80: .word 0x022431D0 + + arm_func_start MOD13_0223BA84 +MOD13_0223BA84: ; 0x0223BA84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r0, _0223BB14 ; =0x0000080C + mov r1, #4 + bl MOD13_0223B004 + mov r1, r0 + ldr r3, _0223BB18 ; =0x022431D0 + mov r0, #0x200 + mov r2, #0x800 + str r1, [r3] + bl MIi_CpuClearFast + mov r6, #0 + mov r5, r6 + ldr r7, _0223BB18 ; =0x022431D0 + mov r4, #0x40 + mov r8, #8 +_0223BAC0: + ldr r1, [r7] + mov r0, r4 + mov r2, r8 + add r1, r1, r5 + bl MOD13_0223A054 + ldr r1, [r7] + add r5, r5, #0x400 + add r1, r1, r6, lsl #2 + add r6, r6, #1 + str r0, [r1, #0x800] + cmp r6, #2 + blt _0223BAC0 + ldr r1, _0223BB1C ; =MOD13_0223BA34 + mov r0, #1 + mov r2, #0 + mov r3, #0xc8 + bl MOD13_0223C1C4 + ldr r1, _0223BB18 ; =0x022431D0 + ldr r1, [r1] + str r0, [r1, #0x808] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223BB14: .word 0x0000080C +_0223BB18: .word 0x022431D0 +_0223BB1C: .word MOD13_0223BA34 + + arm_func_start MOD13_0223BB20 +MOD13_0223BB20: ; 0x0223BB20 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, #0 + bl MOD13_0223B8C4 + ldr r0, _0223BB64 ; =0x022431D4 + ldr r1, [r0] + add r0, r1, #0x1a0 + cmp r5, r0 + movhs r4, #1 + mov r0, #0x1a0 + mla r0, r4, r0, r1 + ldr r0, [r0, #0x19c] + mov r1, r5 + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223BB64: .word 0x022431D4 + + arm_func_start MOD13_0223BB68 +MOD13_0223BB68: ; 0x0223BB68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, r0 + mov r0, #0x1a0 + mul r7, r6, r0 + ldr r0, _0223BCE0 ; =0x022431D4 + mov r4, r1 + ldr r0, [r0] + mov sl, r2 + add r0, r0, r7 + ldr r0, [r0, #0x19c] + mov r5, r3 + bl MOD13_02239F78 + add r1, r4, #3 + bic r1, r1, #3 + mov r4, r0 + mov r8, r1, asr #2 + mov r0, #1 + strh r8, [r4, #0xa] + bl OS_DisableIrqMask + mov sb, r0 + cmp sl, #0 + beq _0223BC44 + ldr r1, _0223BCE0 ; =0x022431D4 + mov r0, #0x1a0 + ldr r1, [r1] + mla r0, r6, r0, r1 + add r6, r0, #0x180 + add r0, r0, #0x18c + cmp r6, r0 + beq _0223BC24 + add r0, r1, r7 + add r1, r0, #0x18c +_0223BBE8: + ldr r0, [r6, #4] + ldrh sl, [r6, #8] + ldrh r3, [r6, #0xa] + ldrh r2, [r0, #8] + add sl, sl, r3 + add r3, sl, r8 + cmp r3, r2 + bgt _0223BC18 + mov r1, r4 + strh sl, [r4, #8] + bl MOD13_0223B888 + b _0223BC24 +_0223BC18: + mov r6, r0 + cmp r0, r1 + bne _0223BBE8 +_0223BC24: + ldr r0, _0223BCE0 ; =0x022431D4 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x18c + cmp r6, r0 + bne _0223BCC8 + bl OS_Terminate + b _0223BCC8 +_0223BC44: + ldr r1, _0223BCE0 ; =0x022431D4 + mov r0, #0x1a0 + ldr r1, [r1] + mla r0, r6, r0, r1 + add r6, r0, #0x18c + add r0, r0, #0x180 + cmp r6, r0 + beq _0223BCAC + add r0, r1, r7 + add r0, r0, #0x180 +_0223BC6C: + ldr sl, [r6] + ldrh r3, [r6, #8] + ldrh r2, [sl, #8] + ldrh r1, [sl, #0xa] + sub r3, r3, r8 + add r1, r2, r1 + cmp r3, r1 + blt _0223BCA0 + mov r0, r6 + mov r1, r4 + strh r3, [r4, #8] + bl MOD13_0223B888 + b _0223BCAC +_0223BCA0: + mov r6, sl + cmp sl, r0 + bne _0223BC6C +_0223BCAC: + ldr r0, _0223BCE0 ; =0x022431D4 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x180 + cmp r6, r0 + bne _0223BCC8 + bl OS_Terminate +_0223BCC8: + ldrh r1, [r4, #8] + mov r0, sb + str r1, [r5] + bl OS_EnableIrqMask + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0223BCE0: .word 0x022431D4 + + arm_func_start MOD13_0223BCE4 +MOD13_0223BCE4: ; 0x0223BCE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r0, #0x340 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r4, _0223BDA0 ; =0x022431D4 + mov sl, #0 + mov sb, sl + str r0, [r4] + mov r8, #0x20 + mov r7, #0xc + mov r6, #0x300 + mov r5, #0x400 +_0223BD14: + ldr r1, [r4] + mov r0, r8 + mov r2, r7 + add r1, r1, sb + bl MOD13_0223A054 + ldr r1, [r4] + add r1, r1, sb + str r0, [r1, #0x19c] + bl MOD13_0223B928 + ldr r1, [r4] + add r1, r1, sb + str r0, [r1, #0x198] + ldr r0, [r4] + add r0, r0, sb + add r0, r0, #0x100 + strh r6, [r0, #0x88] + ldr r0, [r4] + add r0, r0, sb + add r0, r0, #0x100 + strh r5, [r0, #0x94] + ldr r0, [r4] + add r1, r0, sb + ldr r0, [r1, #0x198] + add r1, r1, #0x180 + bl MOD13_0223B868 + ldr r0, [r4] + add r1, r0, sb + ldr r0, [r1, #0x198] + add r1, r1, #0x18c + bl MOD13_0223B878 + add sl, sl, #1 + cmp sl, #2 + add sb, sb, #0x1a0 + blt _0223BD14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0223BDA0: .word 0x022431D4 + + arm_func_start MOD13_0223BDA4 +MOD13_0223BDA4: ; 0x0223BDA4 + cmp r1, #0 + mov r3, #0 + ble _0223BDC8 +_0223BDB0: + ldrb r2, [r0, r3] + cmp r2, #0 + beq _0223BDC8 + add r3, r3, #1 + cmp r3, r1 + blt _0223BDB0 +_0223BDC8: + mov r0, r3 + bx lr + + arm_func_start MOD13_0223BDD0 +MOD13_0223BDD0: ; 0x0223BDD0 + ldr ip, _0223BDDC ; =0x020D4CAC + mov r0, #1 + bx ip + .align 2, 0 +_0223BDDC: .word 0x020D4CAC + + arm_func_start MOD13_0223BDE0 +MOD13_0223BDE0: ; 0x0223BDE0 + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #0 + bl PM_GetLEDPattern + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, [sp] + cmp r0, #0xf + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0xf + bl PMi_SendLEDPatternCommand + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223BE1C +MOD13_0223BE1C: ; 0x0223BE1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223BE98 ; =0x000001F3 + bl GX_SetBankForLCDC + mov r0, #0 + mov r1, #0x6800000 + mov r2, #0x40000 + bl MIi_CpuClearFast + ldr r1, _0223BE9C ; =0x06880000 + mov r0, #0 + mov r2, #0x24000 + bl MIi_CpuClearFast + bl GX_DisableBankForLCDC + mov r0, #0x200 + mov r1, #0x7000000 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0 + mov r1, #0x5000000 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0x200 + ldr r1, _0223BEA0 ; =0x07000400 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0 + ldr r1, _0223BEA4 ; =0x05000400 + mov r2, #0x400 + bl MIi_CpuClearFast + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BE98: .word 0x000001F3 +_0223BE9C: .word 0x06880000 +_0223BEA0: .word 0x07000400 +_0223BEA4: .word 0x05000400 + + arm_func_start MOD13_0223BEA8 +MOD13_0223BEA8: ; 0x0223BEA8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl disableBankForX_ + bl GX_DisableBankForOBJExtPltt_2 + bl GX_DisableBankForSubBGExtPltt + bl GX_DisableBankForSubOBJExtPltt_2 + bl MOD13_0223BE1C + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0] + bl GX_SetBankForBG + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #4] + bl GX_SetBankForOBJ + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #8] + bl GX_SetBankForBGExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0xc] + bl GX_SetBankForOBJExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x10] + bl GX_SetBankForTex + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x14] + bl GX_SetBankForTexPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x18] + bl GX_SetBankForClearImage + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x1c] + bl GX_SetBankForSubBG + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x20] + bl GX_SetBankForSubOBJ + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x24] + bl GX_SetBankForSubBGExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x28] + bl GX_SetBankForSubOBJExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x30] + bl GX_SetBankForLCDC + mov r2, #0 + ldr r1, _0223BFBC ; =0x04000050 + ldr r0, _0223BFC0 ; =0x04001050 + strh r2, [r1] + strh r2, [r0] + ldr r1, _0223BFC4 ; =0x04000010 + ldr r0, _0223BFC8 ; =0x04000014 + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFCC ; =0x04000018 + ldr r0, _0223BFD0 ; =0x0400001C + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFD4 ; =0x04001010 + ldr r0, _0223BFD8 ; =0x04001014 + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFDC ; =0x04001018 + ldr r0, _0223BFE0 ; =0x0400101C + str r2, [r1] + str r2, [r0] + mov r0, #1 + bl PM_SetLCDPower + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BFB8: .word 0x022431D8 +_0223BFBC: .word 0x04000050 +_0223BFC0: .word 0x04001050 +_0223BFC4: .word 0x04000010 +_0223BFC8: .word 0x04000014 +_0223BFCC: .word 0x04000018 +_0223BFD0: .word 0x0400001C +_0223BFD4: .word 0x04001010 +_0223BFD8: .word 0x04001014 +_0223BFDC: .word 0x04001018 +_0223BFE0: .word 0x0400101C + + arm_func_start MOD13_0223BFE4 +MOD13_0223BFE4: ; 0x0223BFE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl disableBankForX_ + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1] + bl GX_DisableBankForOBJExtPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #4] + bl GX_DisableBankForBGExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #8] + bl GX_DisableBankForOBJExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0xc] + bl GX_DisableBankForTexPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x10] + bl GX_DisableBankForTexPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x14] + bl GX_DisableBankForClearImage + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x18] + bl GX_DisableBankForSubBGExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x1c] + bl GX_DisableBankForSubOBJExtPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x20] + bl FUN_020C5E04 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x24] + bl GX_DisableBankForSubOBJExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x28] + bl GX_DisableBankForARM7 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x2c] + bl GX_DisableBankForLCDC + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x30] + ldr r0, [r1, #0x2c] + bl GX_SetBankForARM7 + bl MOD13_0223BE1C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223C09C: .word 0x022431D8 + + arm_func_start MOD13_0223C0A0 +MOD13_0223C0A0: ; 0x0223C0A0 + ldr r2, _0223C0B4 ; =0x0224320C + ldr r2, [r2] + add r0, r2, r0, lsl #6 + strb r1, [r0, #0x38] + bx lr + .align 2, 0 +_0223C0B4: .word 0x0224320C + + arm_func_start MOD13_0223C0B8 +MOD13_0223C0B8: ; 0x0223C0B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + ldrb r1, [r4, #0x11] + mov r5, r0 + cmp r1, #0 + beq _0223C0DC + add r0, r4, #0xc + bl MOD13_0223AF90 +_0223C0DC: + mov r0, r4 + bl MOD13_0223B8C4 + ldr r0, _0223C100 ; =0x0224320C + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, r5, lsl #6] + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223C100: .word 0x0224320C + + arm_func_start MOD13_0223C104 +MOD13_0223C104: ; 0x0223C104 + ldr ip, _0223C10C ; =MOD13_0223C0B8 + bx ip + .align 2, 0 +_0223C10C: .word MOD13_0223C0B8 + + arm_func_start MOD13_0223C110 +MOD13_0223C110: ; 0x0223C110 + ldr r2, _0223C128 ; =0x0224320C + ldr ip, _0223C12C ; =MOD13_02239FD0 + ldr r2, [r2] + add r0, r2, r0, lsl #6 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0223C128: .word 0x0224320C +_0223C12C: .word MOD13_02239FD0 + + arm_func_start MOD13_0223C130 +MOD13_0223C130: ; 0x0223C130 + str r1, [r0, #8] + bx lr + + arm_func_start MOD13_0223C138 +MOD13_0223C138: ; 0x0223C138 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, _0223C1C0 ; =0x0224320C + mov r7, r0 + ldr r0, [r4] + mov r8, r1 + ldr r0, [r0, r7, lsl #6] + mov r4, r2 + mov r6, r3 + bl MOD13_02239F78 + mov r5, r0 + str r8, [r5, #8] + str r4, [r5, #0xc] + ldrb r1, [sp, #0x18] + strb r6, [r5, #0x10] + mov r0, #1 + strb r1, [r5, #0x11] + bl OS_DisableIrqMask + ldr r1, _0223C1C0 ; =0x0224320C + mov r4, r0 + ldr r0, [r1] + add r0, r0, r7, lsl #6 + ldr r0, [r0, #0x10] +_0223C190: + ldrb r1, [r0, #0x10] + cmp r6, r1 + bhs _0223C1A8 + mov r1, r5 + bl MOD13_0223B888 + b _0223C1B0 +_0223C1A8: + ldr r0, [r0, #4] + b _0223C190 +_0223C1B0: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223C1C0: .word 0x0224320C + + arm_func_start MOD13_0223C1C4 +MOD13_0223C1C4: ; 0x0223C1C4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, #0 + str ip, [sp] + bl MOD13_0223C138 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223C1E0 +MOD13_0223C1E0: ; 0x0223C1E0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r7, _0223C2A4 ; =0x0224320C + mov r6, r0 + ldr r0, [r7] + mov r4, r6, lsl #6 + add r2, r0, r6, lsl #6 + ldrb r1, [r2, #0x38] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r5, [r2, #0x10] + add r1, r2, #0x20 + cmp r5, r1 + beq _0223C244 +_0223C21C: + ldr r1, [r5, #0xc] + ldr r2, [r5, #8] + mov r0, r5 + blx r2 + ldr r0, [r7] + ldr r5, [r5, #4] + add r1, r0, r4 + add r1, r1, #0x20 + cmp r5, r1 + bne _0223C21C +_0223C244: + add r1, r0, r6, lsl #6 + ldr r1, [r1, #0x34] + mov r4, r6, lsl #6 + cmp r1, #0 + mov r5, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r7, _0223C2A4 ; =0x0224320C +_0223C264: + add r0, r4, r0 + ldr r0, [r0, #4] + bl MOD13_02239F78 + movs r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r6 + bl MOD13_0223C0B8 + ldr r0, [r7] + add r5, r5, #1 + add r1, r4, r0 + ldr r1, [r1, #0x34] + cmp r5, r1 + blt _0223C264 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223C2A4: .word 0x0224320C + + arm_func_start MOD13_0223C2A8 +MOD13_0223C2A8: ; 0x0223C2A8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _0223C2F0 ; =0x0224320C + mov r5, #0 +_0223C2B8: + ldr r0, [r4] + add r0, r0, r5, lsl #6 + ldr r0, [r0, #8] + bl MOD13_0223B904 + ldr r0, [r4] + ldr r0, [r0, r5, lsl #6] + bl MOD13_0223A030 + add r5, r5, #1 + cmp r5, #2 + blt _0223C2B8 + ldr r0, _0223C2F0 ; =0x0224320C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223C2F0: .word 0x0224320C + + arm_func_start MOD13_0223C2F4 +MOD13_0223C2F4: ; 0x0223C2F4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r0, #0x80 + mov r1, #4 + bl MOD13_0223B004 + ldr r4, _0223C418 ; =0x0224320C + mov sl, #0 + ldr sb, _0223C41C ; =0x0223F764 + mov r8, sl + str r0, [r4] + str sl, [sp] + mov r7, #4 + mov fp, #0x14 + mov r6, #0xff + mov r5, #1 +_0223C330: + ldr r0, [r4] + ldrb r2, [sb] + add r1, r0, sl, lsl #6 + mov r0, #0x14 + str r2, [r1, #0x34] + ldrb r2, [sb] + mov r1, r7 + mul r0, r2, r0 + bl MOD13_0223B004 + ldr r1, [r4] + mov r2, fp + add r1, r1, sl, lsl #6 + str r0, [r1, #0x3c] + ldr r1, [r4] + ldrb r0, [sb] + add r1, r1, sl, lsl #6 + ldr r1, [r1, #0x3c] + bl MOD13_0223A054 + ldr r1, [r4] + str r0, [r1, sl, lsl #6] + ldrb r0, [sb] + bl MOD13_0223A094 + ldr r1, [r4] + add r1, r1, sl, lsl #6 + str r0, [r1, #4] + bl MOD13_0223B928 + ldr r1, [r4] + add r1, r1, sl, lsl #6 + str r0, [r1, #8] + ldr r0, [r4] + add r1, r0, sl, lsl #6 + ldr r0, [sp] + strb r0, [r1, #0x1c] + ldr r0, [r4] + add r0, r0, sl, lsl #6 + strb r6, [r0, #0x30] + ldr r1, [r4] + add r0, r1, sl, lsl #6 + add r1, r1, r8 + ldr r0, [r0, #8] + add r1, r1, #0xc + bl MOD13_0223B868 + ldr r1, [r4] + add r0, r1, sl, lsl #6 + add r1, r1, r8 + ldr r0, [r0, #8] + add r1, r1, #0x20 + bl MOD13_0223B878 + ldr r0, [r4] + add sb, sb, #1 + add r0, r0, sl, lsl #6 + add sl, sl, #1 + strb r5, [r0, #0x38] + add r8, r8, #0x40 + cmp sl, #2 + blt _0223C330 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0223C418: .word 0x0224320C +_0223C41C: .word 0x0223F764 + + .section .data + ; 0x0223C420 + .incbin "baserom.nds", 0x2237C0, 0x4620 + + .section .bss + ; 0x02240A40 + .space 0x27E0 diff --git a/arm9/modules/13/asm/module_13_init.s b/arm9/modules/13/asm/module_13_init.s new file mode 100644 index 00000000..03402138 --- /dev/null +++ b/arm9/modules/13/asm/module_13_init.s @@ -0,0 +1,33 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD13_02211E60 +MOD13_02211E60: ; 0x02211E60 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0202E49C + bl OS_InitTick + bl OS_InitAlarm + bl OS_DisableInterrupts + mov r1, #1 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #0x12 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #1 + mov r2, #0 + bl MOD13_02223494 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl OS_RestoreInterrupts + ldr r1, _02211EA0 ; =0x04000208 + ldrh r0, [r1] + mov r0, #1 + strh r0, [r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_02211EA0: .word 0x04000208 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..b180ff6b --- /dev/null +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -0,0 +1,14779 @@ + .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 |