.include "asm/macros.inc" .include "global.inc" .section .text .balign 4, 0 arm_func_start MOD79_0221248C MOD79_0221248C: ; 0x0221248C stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 movs r7, r0 mov r6, r1 mov r5, r2 bne _022124B8 ldr r0, _02212544 ; =0x02216858 ldr r1, _02212548 ; =0x0221686C ldr r3, _0221254C ; =0x000001B7 mov r2, #0 bl __msl_assertion_failed _022124B8: cmp r5, #0 bne _022124D4 ldr r0, _02212550 ; =0x0221687C ldr r1, _02212548 ; =0x0221686C mov r2, #0 mov r3, #0x1b8 bl __msl_assertion_failed _022124D4: ldr r4, [r5] cmp r4, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, pc} ldr r3, [r7, #0x10] ldr r0, [r7, #0xc] sub r0, r0, r3 cmp r0, #0 addle sp, sp, #4 movle r0, #0 ldmleia sp!, {r4, r5, r6, r7, pc} ldr r1, [r7, #4] cmp r4, r0 movge r4, r0 mov r0, r6 mov r2, r4 add r1, r1, r3 bl memcpy mov r0, #0 strb r0, [r6, r4] str r4, [r5] ldr r1, [r7, #0x10] mov r0, #1 add r1, r1, r4 str r1, [r7, #0x10] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 _02212544: .word 0x02216858 _02212548: .word 0x0221686C _0221254C: .word 0x000001B7 _02212550: .word 0x0221687C arm_func_end MOD79_0221248C arm_func_start MOD79_02212554 MOD79_02212554: ; 0x02212554 stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0xc mov r8, r0 add r6, sp, #0 add r5, sp, #4 add r4, r8, #0x60 mov r7, #0 mvn sb, #0 _02212574: ldr r0, [r8, #0x48] mov r1, r7 mov r2, r6 mov r3, r5 bl MOD04_021EFF5C cmp r0, sb beq _0221259C ldr r0, [sp, #4] cmp r0, #0 beq _022125C4 _0221259C: mov r0, #1 str r0, [r8, #0xfc] mov r0, #5 str r0, [r8, #0x38] ldr r0, [r8, #0x48] bl MOD04_021EFB28 str r0, [r8, #0x4c] add sp, sp, #0xc mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} _022125C4: ldr r0, [sp] cmp r0, #0 addeq sp, sp, #0xc moveq r0, #1 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} ldr r3, [r8, #0x60] ldr r1, [r8, #0x54] ldr r2, [r8, #0x5c] mov r0, r8 add r1, r1, r3 sub r2, r2, r3 bl MOD79_02212F68 cmp r0, sb addeq sp, sp, #0xc moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} ldr r1, [r4] add r0, r1, r0 str r0, [r4] ldr r1, [r8, #0x60] ldr r0, [r8, #0x5c] cmp r1, r0 blt _02212574 mov r0, #1 add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} arm_func_end MOD79_02212554 arm_func_start MOD79_0221262C MOD79_0221262C: ; 0x0221262C stmdb sp!, {r4, lr} movs r4, r0 bne _0221264C ldr r0, _02212664 ; =0x02216888 ldr r1, _02212668 ; =0x0221686C mov r2, #0 mov r3, #0x16c bl __msl_assertion_failed _0221264C: mov r1, #0 str r1, [r4, #0xc] str r1, [r4, #0x10] ldr r0, [r4, #4] strb r1, [r0] ldmia sp!, {r4, pc} .align 2, 0 _02212664: .word 0x02216888 _02212668: .word 0x0221686C arm_func_end MOD79_0221262C arm_func_start MOD79_0221266C MOD79_0221266C: ; 0x0221266C stmdb sp!, {r4, lr} sub sp, sp, #0x10 mov r2, r1 mov r4, r0 ldr r1, _022126A0 ; =0x02216890 add r0, sp, #0 bl sprintf add r1, sp, #0 mov r0, r4 mov r2, #0 bl MOD79_02212794 add sp, sp, #0x10 ldmia sp!, {r4, pc} .align 2, 0 _022126A0: .word 0x02216890 arm_func_end MOD79_0221266C arm_func_start MOD79_022126A4 MOD79_022126A4: ; 0x022126A4 stmdb sp!, {r4, lr} sub sp, sp, #8 movs r4, r0 strb r1, [sp] bne _022126CC ldr r0, _022126F4 ; =0x02216888 ldr r1, _022126F8 ; =0x0221686C ldr r3, _022126FC ; =0x00000131 mov r2, #0 bl __msl_assertion_failed _022126CC: cmp r4, #0 addeq sp, sp, #8 moveq r0, #0 ldmeqia sp!, {r4, pc} add r1, sp, #0 mov r0, r4 mov r2, #1 bl MOD79_02212794 add sp, sp, #8 ldmia sp!, {r4, pc} .align 2, 0 _022126F4: .word 0x02216888 _022126F8: .word 0x0221686C _022126FC: .word 0x00000131 arm_func_end MOD79_022126A4 arm_func_start MOD79_02212700 MOD79_02212700: ; 0x02212700 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r4, r2 mov r2, #0 mov r5, r0 bl MOD79_02212794 cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, pc} ldr r1, _0221278C ; =0x02216894 mov r0, r5 mov r2, #2 bl MOD79_02212794 cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, pc} mov r0, r5 mov r1, r4 mov r2, #0 bl MOD79_02212794 cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, pc} ldr r1, _02212790 ; =0x02216898 mov r0, r5 mov r2, #2 bl MOD79_02212794 cmp r0, #0 movne r0, #1 moveq r0, #0 add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _0221278C: .word 0x02216894 _02212790: .word 0x02216898 arm_func_end MOD79_02212700 arm_func_start MOD79_02212794 MOD79_02212794: ; 0x02212794 stmdb sp!, {r0, r1, r2, r3} stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #0xc movs r7, r0 mov r6, r1 ldr r5, [r7] bne _022127C4 ldr r0, _02212A40 ; =0x02216888 ldr r1, _02212A44 ; =0x0221686C mov r2, #0 mov r3, #0xb7 bl __msl_assertion_failed _022127C4: cmp r6, #0 bne _022127E0 ldr r0, _02212A48 ; =0x0221689C ldr r1, _02212A44 ; =0x0221686C mov r2, #0 mov r3, #0xb8 bl __msl_assertion_failed _022127E0: ldr r0, [sp, #0x28] cmp r0, #0 bge _02212800 ldr r0, _02212A4C ; =0x022168A4 ldr r1, _02212A44 ; =0x0221686C mov r2, #0 mov r3, #0xb9 bl __msl_assertion_failed _02212800: cmp r7, #0 addeq sp, sp, #0xc moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, lr} addeq sp, sp, #0x10 bxeq lr cmp r6, #0 addeq sp, sp, #0xc moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, lr} addeq sp, sp, #0x10 bxeq lr ldr r0, [sp, #0x28] cmp r0, #0 addlt sp, sp, #0xc movlt r0, #0 ldmltia sp!, {r4, r5, r6, r7, lr} addlt sp, sp, #0x10 bxlt lr cmp r0, #0 bne _02212860 mov r0, r6 bl strlen str r0, [sp, #0x28] _02212860: ldr r0, [r7, #0x20] cmp r0, #1 bne _02212968 ldr r0, [r5, #0x168] cmp r0, #0 bne _0221288C ldr r0, _02212A50 ; =0x022168B4 ldr r1, _02212A44 ; =0x0221686C mov r2, #0 mov r3, #0xce bl __msl_assertion_failed _0221288C: ldr r2, [r7, #8] ldr r1, [r7, #0xc] add r0, sp, #8 sub r1, r2, r1 str r1, [sp, #8] ldr r2, [r7, #4] ldr r1, [r7, #0xc] add r3, sp, #0x28 add r1, r2, r1 str r1, [sp] str r0, [sp, #4] ldr r4, [r5, #0x17c] mov r0, r5 mov r2, r6 add r1, r5, #0x164 .word 0xE12FFF34 mov r4, r0 cmp r4, #2 bne _0221294C ldr r0, [r7, #0x18] cmp r0, #0 beq _02212910 ldr r0, [r7] mov r1, #1 str r1, [r0, #0xfc] ldr r0, [r7] mov r1, #2 str r1, [r0, #0x38] add sp, sp, #0xc mov r0, #0 ldmia sp!, {r4, r5, r6, r7, lr} add sp, sp, #0x10 bx lr _02212910: ldr r1, [r7, #0x14] mov r0, r7 bl MOD79_02212CF0 cmp r0, #0 beq _0221295C ldr r0, [r7] mov r2, #1 str r2, [r0, #0xfc] ldr r1, [r7] add sp, sp, #0xc str r2, [r1, #0x38] mov r0, #0 ldmia sp!, {r4, r5, r6, r7, lr} add sp, sp, #0x10 bx lr _0221294C: ldr r1, [r7, #0xc] ldr r0, [sp, #8] add r0, r1, r0 str r0, [r7, #0xc] _0221295C: cmp r4, #2 beq _0221288C b _02212A2C _02212968: ldr r2, [r7, #0xc] ldr r1, [sp, #0x28] ldr r0, [r7, #8] add r4, r2, r1 cmp r4, r0 blt _02212A00 _02212980: ldr r0, [r7, #0x18] cmp r0, #0 beq _022129B8 ldr r0, [r7] mov r1, #1 str r1, [r0, #0xfc] ldr r0, [r7] mov r1, #2 str r1, [r0, #0x38] add sp, sp, #0xc mov r0, #0 ldmia sp!, {r4, r5, r6, r7, lr} add sp, sp, #0x10 bx lr _022129B8: ldr r1, [r7, #0x14] mov r0, r7 bl MOD79_02212CF0 cmp r0, #0 bne _022129F4 ldr r0, [r7] mov r2, #1 str r2, [r0, #0xfc] ldr r1, [r7] add sp, sp, #0xc str r2, [r1, #0x38] mov r0, #0 ldmia sp!, {r4, r5, r6, r7, lr} add sp, sp, #0x10 bx lr _022129F4: ldr r0, [r7, #8] cmp r4, r0 bge _02212980 _02212A00: ldr r3, [r7, #4] ldr r0, [r7, #0xc] ldr r2, [sp, #0x28] mov r1, r6 add r0, r3, r0 bl memcpy str r4, [r7, #0xc] ldr r1, [r7, #4] ldr r0, [r7, #0xc] mov r2, #0 strb r2, [r1, r0] _02212A2C: mov r0, #1 add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, lr} add sp, sp, #0x10 bx lr .align 2, 0 _02212A40: .word 0x02216888 _02212A44: .word 0x0221686C _02212A48: .word 0x0221689C _02212A4C: .word 0x022168A4 _02212A50: .word 0x022168B4 arm_func_end MOD79_02212794 arm_func_start MOD79_02212A54 MOD79_02212A54: ; 0x02212A54 stmdb sp!, {r4, lr} movs r4, r0 bne _02212A74 ldr r0, _02212AAC ; =0x02216888 ldr r1, _02212AB0 ; =0x0221686C mov r2, #0 mov r3, #0x9b bl __msl_assertion_failed _02212A74: cmp r4, #0 ldmeqia sp!, {r4, pc} ldr r0, [r4, #4] cmp r0, #0 ldmeqia sp!, {r4, pc} ldr r1, [r4, #0x1c] cmp r1, #0 bne _02212A98 bl MOD04_021DD82C _02212A98: mov r0, r4 mov r1, #0 mov r2, #0x24 bl Call_FillMemWithValue ldmia sp!, {r4, pc} .align 2, 0 _02212AAC: .word 0x02216888 _02212AB0: .word 0x0221686C arm_func_end MOD79_02212A54 arm_func_start MOD79_02212AB4 MOD79_02212AB4: ; 0x02212AB4 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 movs r7, r0 mov r6, r1 mov r5, r2 mov r4, r3 bne _02212AE4 ldr r0, _02212BB0 ; =0x022168F0 ldr r1, _02212BB4 ; =0x0221686C mov r2, #0 mov r3, #0x74 bl __msl_assertion_failed _02212AE4: cmp r6, #0 bne _02212B00 ldr r0, _02212BB8 ; =0x02216888 ldr r1, _02212BB4 ; =0x0221686C mov r2, #0 mov r3, #0x75 bl __msl_assertion_failed _02212B00: cmp r5, #0 bne _02212B1C ldr r0, _02212BBC ; =0x022168FC ldr r1, _02212BB4 ; =0x0221686C mov r2, #0 mov r3, #0x76 bl __msl_assertion_failed _02212B1C: cmp r4, #0 bgt _02212B38 ldr r0, _02212BC0 ; =0x02216908 ldr r1, _02212BB4 ; =0x0221686C mov r2, #0 mov r3, #0x77 bl __msl_assertion_failed _02212B38: cmp r7, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, pc} cmp r6, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, pc} cmp r5, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, pc} cmp r4, #0 addle sp, sp, #4 movle r0, #0 ldmleia sp!, {r4, r5, r6, r7, pc} str r7, [r6] str r5, [r6, #4] str r4, [r6, #8] mov r2, #0 str r2, [r6, #0xc] str r2, [r6, #0x14] mov r0, #1 str r0, [r6, #0x18] str r0, [r6, #0x1c] str r2, [r6, #0x20] ldr r1, [r6, #4] strb r2, [r1] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 _02212BB0: .word 0x022168F0 _02212BB4: .word 0x0221686C _02212BB8: .word 0x02216888 _02212BBC: .word 0x022168FC _02212BC0: .word 0x02216908 arm_func_end MOD79_02212AB4 arm_func_start MOD79_02212BC4 MOD79_02212BC4: ; 0x02212BC4 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 movs r7, r0 mov r6, r1 mov r5, r2 mov r4, r3 bne _02212BF4 ldr r0, _02212CDC ; =0x022168F0 ldr r1, _02212CE0 ; =0x0221686C mov r2, #0 mov r3, #0x43 bl __msl_assertion_failed _02212BF4: cmp r6, #0 bne _02212C10 ldr r0, _02212CE4 ; =0x02216888 ldr r1, _02212CE0 ; =0x0221686C mov r2, #0 mov r3, #0x44 bl __msl_assertion_failed _02212C10: cmp r5, #0 bgt _02212C2C ldr r0, _02212CE8 ; =0x02216914 ldr r1, _02212CE0 ; =0x0221686C mov r2, #0 mov r3, #0x45 bl __msl_assertion_failed _02212C2C: cmp r4, #0 bgt _02212C48 ldr r0, _02212CEC ; =0x02216924 ldr r1, _02212CE0 ; =0x0221686C mov r2, #0 mov r3, #0x46 bl __msl_assertion_failed _02212C48: cmp r7, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, pc} cmp r6, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, pc} cmp r5, #0 addle sp, sp, #4 movle r0, #0 ldmleia sp!, {r4, r5, r6, r7, pc} cmp r4, #0 addle sp, sp, #4 movle r0, #0 ldmleia sp!, {r4, r5, r6, r7, pc} str r7, [r6] mov r2, #0 str r2, [r6, #4] str r2, [r6, #8] str r2, [r6, #0xc] str r2, [r6, #0x10] str r4, [r6, #0x14] str r2, [r6, #0x18] str r2, [r6, #0x1c] mov r0, r6 mov r1, r5 str r2, [r6, #0x20] bl MOD79_02212CF0 cmp r0, #0 moveq r0, #0 ldrne r0, [r6, #4] movne r1, #0 strneb r1, [r0] movne r0, #1 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 _02212CDC: .word 0x022168F0 _02212CE0: .word 0x0221686C _02212CE4: .word 0x02216888 _02212CE8: .word 0x02216914 _02212CEC: .word 0x02216924 arm_func_end MOD79_02212BC4 arm_func_start MOD79_02212CF0 MOD79_02212CF0: ; 0x02212CF0 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 movs r5, r0 mov r4, r1 bne _02212D18 ldr r0, _02212D84 ; =0x02216888 ldr r1, _02212D88 ; =0x0221686C mov r2, #0 mov r3, #0x20 bl __msl_assertion_failed _02212D18: cmp r4, #0 bgt _02212D34 ldr r0, _02212D8C ; =0x02216924 ldr r1, _02212D88 ; =0x0221686C mov r2, #0 mov r3, #0x21 bl __msl_assertion_failed _02212D34: cmp r5, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, pc} cmp r4, #0 addle sp, sp, #4 movle r0, #0 ldmleia sp!, {r4, r5, pc} ldr r1, [r5, #8] ldr r0, [r5, #4] add r4, r1, r4 mov r1, r4 bl MOD04_021DD844 cmp r0, #0 moveq r0, #0 strne r0, [r5, #4] strne r4, [r5, #8] movne r0, #1 add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _02212D84: .word 0x02216888 _02212D88: .word 0x0221686C _02212D8C: .word 0x02216924 arm_func_end MOD79_02212CF0 arm_func_start MOD79_02212D90 MOD79_02212D90: ; 0x02212D90 stmdb sp!, {r4, lr} sub sp, sp, #8 movs r4, r0 bne _02212DB4 ldr r0, _02212DF8 ; =0x02216938 ldr r1, _02212DFC ; =0x02216944 mov r2, #0 mov r3, #0x5e bl __msl_assertion_failed _02212DB4: ldr r0, [r4, #0x150] cmp r0, #0 addeq sp, sp, #8 ldmeqia sp!, {r4, pc} ldr r0, [r4, #0x140] bl MOD04_021EF06C str r0, [sp] ldr r0, [r4, #0x44] str r0, [sp, #4] ldr r0, [r4, #4] ldr r1, [r4, #0x148] ldr r2, [r4, #0x14c] ldr r3, [r4, #0x144] ldr ip, [r4, #0x150] .word 0xE12FFF3C add sp, sp, #8 ldmia sp!, {r4, pc} .align 2, 0 _02212DF8: .word 0x02216938 _02212DFC: .word 0x02216944 arm_func_end MOD79_02212D90 arm_func_start MOD79_02212E00 MOD79_02212E00: ; 0x02212E00 stmdb sp!, {r4, r5, r6, lr} sub sp, sp, #0x10 movs r6, r0 mov r5, r1 mov r4, r2 bne _02212E2C ldr r0, _02212E70 ; =0x02216938 ldr r1, _02212E74 ; =0x02216944 mov r2, #0 mov r3, #0x45 bl __msl_assertion_failed _02212E2C: ldr ip, [r6, #0x3c] cmp ip, #0 addeq sp, sp, #0x10 ldmeqia sp!, {r4, r5, r6, pc} ldr r0, [r6, #0x100] mov r2, r5 str r0, [sp] ldr r0, [r6, #0x104] mov r3, r4 str r0, [sp, #4] ldr r0, [r6, #0x44] str r0, [sp, #8] ldr r0, [r6, #4] ldr r1, [r6, #0x10] .word 0xE12FFF3C add sp, sp, #0x10 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02212E70: .word 0x02216938 _02212E74: .word 0x02216944 arm_func_end MOD79_02212E00 arm_func_start MOD79_02212E78 MOD79_02212E78: ; 0x02212E78 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 movs r5, r0 bne _02212E9C ldr r0, _02212EFC ; =0x02216938 ldr r1, _02212F00 ; =0x02216944 mov r2, #0 mov r3, #0x1b bl __msl_assertion_failed _02212E9C: ldr ip, [r5, #0x40] cmp ip, #0 addeq sp, sp, #4 ldmeqia sp!, {r4, r5, pc} ldr r0, [r5, #0xc] cmp r0, #0 movne r4, #0 movne r3, r4 ldreq r4, [r5, #0xc0] ldreq r3, [r5, #0x100] ldr r0, [r5, #0x44] mov r2, r4 str r0, [sp] ldr r0, [r5, #4] ldr r1, [r5, #0x38] .word 0xE12FFF3C cmp r4, #0 addeq sp, sp, #4 ldmeqia sp!, {r4, r5, pc} cmp r0, #0 moveq r0, #1 streq r0, [r5, #0xd8] add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _02212EFC: .word 0x02216938 _02212F00: .word 0x02216944 arm_func_end MOD79_02212E78 arm_func_start MOD79_02212F04 MOD79_02212F04: ; 0x02212F04 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 ldr r3, [r6, #0x5c] mov r5, r1 mov r4, r2 cmp r3, #0 mov r3, #0 bne _02212F48 bl MOD79_02212F68 mov r3, r0 mvn r0, #0 cmp r3, r0 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, pc} cmp r3, r4 moveq r0, #1 ldmeqia sp!, {r4, r5, r6, pc} _02212F48: add r0, r6, #0x50 add r1, r5, r3 sub r2, r4, r3 bl MOD79_02212794 cmp r0, #0 moveq r0, #0 movne r0, #2 ldmia sp!, {r4, r5, r6, pc} arm_func_end MOD79_02212F04 arm_func_start MOD79_02212F68 MOD79_02212F68: ; 0x02212F68 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, [r4, #0x48] mov r3, #0 bl MOD04_021EFC24 mvn r1, #0 cmp r0, r1 bne _02212FD8 ldr r0, [r4, #0x48] bl MOD04_021EFB28 mvn r1, #5 cmp r0, r1 beq _02212FB4 mvn r1, #0x19 cmp r0, r1 beq _02212FB4 mvn r1, #0x4b cmp r0, r1 bne _02212FBC _02212FB4: mov r0, #0 ldmia sp!, {r4, pc} _02212FBC: mov r1, #1 str r1, [r4, #0xfc] mov r1, #5 str r1, [r4, #0x38] str r0, [r4, #0x4c] mvn r0, #0 ldmia sp!, {r4, pc} _02212FD8: ldr r1, [r4, #0x10] cmp r1, #4 ldreq r1, [r4, #0x148] addeq r1, r1, r0 streq r1, [r4, #0x148] ldmia sp!, {r4, pc} arm_func_end MOD79_02212F68 arm_func_start MOD79_02212FF0 MOD79_02212FF0: ; 0x02212FF0 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 mov r5, r2 ldr r2, [r5] ldr r0, [r7, #0x134] mov r6, r1 cmp r0, #0 sub r4, r2, #1 beq _02213050 bl MOD04_021F025C ldr r1, _02213230 ; =0x02216958 ldr r2, [r7, #0x138] ldr r1, [r1] add r1, r2, r1 cmp r0, r1 addlo sp, sp, #4 movlo r0, #1 ldmloia sp!, {r4, r5, r6, r7, pc} ldr r1, _02213234 ; =0x0221695C str r0, [r7, #0x138] ldr r0, [r1] cmp r4, r0 movge r4, r0 _02213050: ldr r1, [r7, #0x84] ldr r0, [r7, #0x80] cmp r1, r0 bge _02213098 mov r1, r6 mov r2, r5 add r0, r7, #0x74 bl MOD79_0221248C ldr r1, [r7, #0x84] ldr r0, [r7, #0x80] add sp, sp, #4 cmp r1, r0 ldreq r0, [r7, #0xf8] streq r0, [r7, #0x80] ldreq r0, [r7, #0xf8] streq r0, [r7, #0x84] mov r0, #0 ldmia sp!, {r4, r5, r6, r7, pc} _02213098: ldr r0, [r7, #0x48] mov r1, r6 mov r2, r4 mov r3, #0 bl MOD04_021EFC78 mov r2, r0 mvn r0, #0 str r2, [sp] cmp r2, r0 bne _0221311C ldr r0, [r7, #0x48] bl MOD04_021EFB28 mvn r1, #5 cmp r0, r1 beq _022130EC mvn r1, #0x19 cmp r0, r1 beq _022130EC mvn r1, #0x4b cmp r0, r1 bne _022130F8 _022130EC: add sp, sp, #4 mov r0, #1 ldmia sp!, {r4, r5, r6, r7, pc} _022130F8: mov r2, #1 str r2, [r7, #0xfc] mov r1, #5 str r1, [r7, #0x38] str r0, [r7, #0x4c] add sp, sp, #4 str r2, [r7, #0x130] mov r0, #3 ldmia sp!, {r4, r5, r6, r7, pc} _0221311C: cmp r2, #0 moveq r0, #1 streq r0, [r7, #0x130] addeq sp, sp, #4 moveq r0, #2 ldmeqia sp!, {r4, r5, r6, r7, pc} ldr r0, [r7, #0x168] cmp r0, #0 beq _0221320C mov r1, r6 add r0, r7, #0x98 bl MOD79_02212794 cmp r0, #0 addeq sp, sp, #4 moveq r0, #3 ldmeqia sp!, {r4, r5, r6, r7, pc} mov r0, r7 bl MOD79_02213238 cmp r0, #0 bne _02213188 mov r0, #1 str r0, [r7, #0xfc] mov r0, #0x11 str r0, [r7, #0x38] add sp, sp, #4 mov r0, #3 ldmia sp!, {r4, r5, r6, r7, pc} _02213188: ldr r1, [r7, #0x80] ldr r0, [r7, #0x84] sub r0, r1, r0 cmp r0, #0 movle r0, #0 strleb r0, [r6] strle r0, [r5] addle sp, sp, #4 movle r0, #1 ldmleia sp!, {r4, r5, r6, r7, pc} ldr r0, [r5] add r2, sp, #0 sub r3, r0, #1 mov r1, r6 add r0, r7, #0x74 str r3, [sp] bl MOD79_0221248C cmp r0, #0 addeq sp, sp, #4 moveq r0, #3 ldmeqia sp!, {r4, r5, r6, r7, pc} ldr r1, [r7, #0x84] ldr r0, [r7, #0x80] cmp r1, r0 ldreq r0, [r7, #0xf8] streq r0, [r7, #0x80] ldreq r0, [r7, #0xf8] streq r0, [r7, #0x84] ldr r2, [sp] cmp r2, #0 addle sp, sp, #4 movle r0, #1 ldmleia sp!, {r4, r5, r6, r7, pc} _0221320C: mov r0, #0 strb r0, [r6, r2] ldr r1, [sp] str r1, [r5] ldr r1, [sp] cmp r1, #0 movle r0, #1 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 _02213230: .word 0x02216958 _02213234: .word 0x0221695C arm_func_end MOD79_02212FF0 arm_func_start MOD79_02213238 MOD79_02213238: ; 0x02213238 stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0x14 mov r1, #0 mov r4, r0 str r1, [sp, #8] str r1, [sp, #0xc] add r8, sp, #0xc add r6, sp, #8 add r5, r4, #0x74 add r7, r4, #0x164 _02213260: ldr ip, [r4, #0xa8] ldr r0, [r4, #0xa4] ldr r2, [r4, #0x9c] sub r0, r0, ip str r0, [sp, #8] ldr r3, [r4, #0x80] ldr r0, [r4, #0x7c] ldr r1, [r4, #0x78] sub r0, r0, r3 str r0, [sp, #0xc] add r0, r1, r3 str r0, [sp] str r8, [sp, #4] ldr sb, [r4, #0x180] mov r0, r4 mov r1, r7 mov r3, r6 add r2, r2, ip .word 0xE12FFF39 mov sb, r0 cmp sb, #2 bne _022132D4 ldr r1, [r4, #0x88] mov r0, r5 bl MOD79_02212CF0 cmp r0, #0 addeq sp, sp, #0x14 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} _022132D4: cmp sb, #2 bne _022132E8 ldr r0, [sp, #0xc] cmp r0, #0 beq _02213260 _022132E8: ldr r1, [r4, #0xa8] ldr r0, [sp, #8] add r0, r1, r0 str r0, [r4, #0xa8] ldr r1, [r4, #0x80] ldr r0, [sp, #0xc] add r0, r1, r0 str r0, [r4, #0x80] ldr r1, [r4, #0xa8] cmp r1, #0xff ble _02213348 ldr r0, [r4, #0xa4] subs r5, r0, r1 bne _0221332C add r0, r4, #0x98 bl MOD79_0221262C b _02213348 _0221332C: ldr r0, [r4, #0x9c] mov r2, r5 add r1, r0, r1 bl memmove mov r0, #0 str r0, [r4, #0xa8] str r5, [r4, #0xa4] _02213348: cmp sb, #3 addne sp, sp, #0x14 movne r0, #1 ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} mov r0, #1 str r0, [r4, #0xfc] mov r0, #0x11 str r0, [r4, #0x38] mov r0, #0 add sp, sp, #0x14 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} arm_func_end MOD79_02213238 arm_func_start MOD79_02213374 MOD79_02213374: ; 0x02213374 bx lr arm_func_end MOD79_02213374 arm_func_start MOD79_02213378 MOD79_02213378: ; 0x02213378 bx lr arm_func_end MOD79_02213378 arm_func_start MOD79_0221337C MOD79_0221337C: ; 0x0221337C bx lr arm_func_end MOD79_0221337C arm_func_start MOD79_02213380 MOD79_02213380: ; 0x02213380 bx lr arm_func_end MOD79_02213380 arm_func_start MOD79_02213384 MOD79_02213384: ; 0x02213384 stmdb sp!, {r4, r5, r6, lr} ldr r0, _02213400 ; =0x02217138 ldr r0, [r0] cmp r0, #0 ldmeqia sp!, {r4, r5, r6, pc} ldr r0, _02213404 ; =MOD79_02213638 bl MOD79_02213510 ldr r5, _02213408 ; =0x0221712C mov r6, #0 ldr r0, [r5] cmp r0, #0 ble _022133D4 ldr r4, _02213400 ; =0x02217138 _022133B8: ldr r0, [r4] ldr r0, [r0, r6, lsl #2] bl MOD04_021DD82C ldr r0, [r5] add r6, r6, #1 cmp r6, r0 blt _022133B8 _022133D4: ldr r0, _02213400 ; =0x02217138 ldr r0, [r0] bl MOD04_021DD82C ldr r2, _02213400 ; =0x02217138 mov r3, #0 ldr r1, _02213408 ; =0x0221712C ldr r0, _0221340C ; =0x02217130 str r3, [r2] str r3, [r1] str r3, [r0] ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02213400: .word 0x02217138 _02213404: .word MOD79_02213638 _02213408: .word 0x0221712C _0221340C: .word 0x02217130 arm_func_end MOD79_02213384 arm_func_start MOD79_02213410 MOD79_02213410: ; 0x02213410 stmdb sp!, {r4, lr} movs r4, r0 bne _02213430 ldr r0, _022134FC ; =0x02216960 ldr r1, _02213500 ; =0x0221696C ldr r3, _02213504 ; =0x00000132 mov r2, #0 bl __msl_assertion_failed _02213430: ldr r0, [r4, #0x108] cmp r0, #0 bne _02213450 ldr r0, _02213508 ; =0x02216980 ldr r1, _02213500 ; =0x0221696C ldr r3, _0221350C ; =0x00000133 mov r2, #0 bl __msl_assertion_failed _02213450: mov r0, #0 str r0, [r4, #0x10] ldr r0, [r4, #0x14] bl MOD04_021DD82C ldr r1, [r4, #0x108] mov r0, #0 str r1, [r4, #0x14] str r0, [r4, #0x108] ldr r0, [r4, #0x18] bl MOD04_021DD82C mov r0, #0 str r0, [r4, #0x18] str r0, [r4, #0x1c] strh r0, [r4, #0x20] ldr r0, [r4, #0x24] bl MOD04_021DD82C mov r0, #0 str r0, [r4, #0x24] ldr r0, [r4, #0x48] mov r1, #2 bl MOD04_021EFD80 ldr r0, [r4, #0x48] bl MOD04_021EFD9C mvn r1, #0 add r0, r4, #0x50 str r1, [r4, #0x48] bl MOD79_0221262C add r0, r4, #0x74 bl MOD79_0221262C add r0, r4, #0x98 bl MOD79_0221262C mov r0, #0 str r0, [r4, #0xe4] str r0, [r4, #0xe8] str r0, [r4, #0xec] str r0, [r4, #0xf0] str r0, [r4, #0xf4] str r0, [r4, #0xf8] str r0, [r4, #0x130] ldr r0, [r4, #0x10c] add r0, r0, #1 str r0, [r4, #0x10c] ldmia sp!, {r4, pc} .align 2, 0 _022134FC: .word 0x02216960 _02213500: .word 0x0221696C _02213504: .word 0x00000132 _02213508: .word 0x02216980 _0221350C: .word 0x00000133 arm_func_end MOD79_02213410 arm_func_start MOD79_02213510 MOD79_02213510: ; 0x02213510 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 ldr r1, _02213580 ; =0x02217130 mov r5, r0 ldr r0, [r1] cmp r0, #0 addle sp, sp, #4 ldmleia sp!, {r4, r5, r6, r7, pc} bl MOD79_02213378 ldr r7, _02213584 ; =0x0221712C mov r4, #0 ldr r0, [r7] cmp r0, #0 ble _02213574 ldr r6, _02213588 ; =0x02217138 _0221354C: ldr r0, [r6] ldr r0, [r0, r4, lsl #2] ldr r1, [r0] cmp r1, #0 beq _02213564 .word 0xE12FFF35 _02213564: ldr r0, [r7] add r4, r4, #1 cmp r4, r0 blt _0221354C _02213574: bl MOD79_02213374 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 _02213580: .word 0x02217130 _02213584: .word 0x0221712C _02213588: .word 0x02217138 arm_func_end MOD79_02213510 arm_func_start MOD79_0221358C MOD79_0221358C: ; 0x0221358C stmdb sp!, {r4, lr} movs r4, r0 bpl _022135AC ldr r0, _0221361C ; =0x02216998 ldr r1, _02213620 ; =0x0221696C ldr r3, _02213624 ; =0x00000101 mov r2, #0 bl __msl_assertion_failed _022135AC: ldr r0, _02213628 ; =0x0221712C ldr r0, [r0] cmp r4, r0 blt _022135D0 ldr r0, _0221362C ; =0x022169A8 ldr r1, _02213620 ; =0x0221696C ldr r3, _02213630 ; =0x00000102 mov r2, #0 bl __msl_assertion_failed _022135D0: bl MOD79_02213378 cmp r4, #0 blt _022135EC ldr r0, _02213628 ; =0x0221712C ldr r0, [r0] cmp r4, r0 blt _022135F8 _022135EC: bl MOD79_02213374 mov r0, #0 ldmia sp!, {r4, pc} _022135F8: ldr r0, _02213634 ; =0x02217138 ldr r0, [r0] ldr r4, [r0, r4, lsl #2] ldr r0, [r4] cmp r0, #0 moveq r4, #0 bl MOD79_02213374 mov r0, r4 ldmia sp!, {r4, pc} .align 2, 0 _0221361C: .word 0x02216998 _02213620: .word 0x0221696C _02213624: .word 0x00000101 _02213628: .word 0x0221712C _0221362C: .word 0x022169A8 _02213630: .word 0x00000102 _02213634: .word 0x02217138 arm_func_end MOD79_0221358C arm_func_start MOD79_02213638 MOD79_02213638: ; 0x02213638 stmdb sp!, {r4, lr} movs r4, r0 bne _02213658 ldr r0, _02213800 ; =0x02216960 ldr r1, _02213804 ; =0x0221696C mov r2, #0 mov r3, #0xb3 bl __msl_assertion_failed _02213658: ldr r0, [r4, #4] cmp r0, #0 bge _02213678 ldr r0, _02213808 ; =0x022169C4 ldr r1, _02213804 ; =0x0221696C mov r2, #0 mov r3, #0xb4 bl __msl_assertion_failed _02213678: ldr r0, _0221380C ; =0x0221712C ldr r1, [r4, #4] ldr r0, [r0] cmp r1, r0 blt _022136A0 ldr r0, _02213810 ; =0x022169E0 ldr r1, _02213804 ; =0x0221696C mov r2, #0 mov r3, #0xb5 bl __msl_assertion_failed _022136A0: ldr r0, [r4] cmp r0, #0 bne _022136C0 ldr r0, _02213814 ; =0x02216A08 ldr r1, _02213804 ; =0x0221696C mov r2, #0 mov r3, #0xb6 bl __msl_assertion_failed _022136C0: cmp r4, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} ldr r0, [r4] cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} ldr r1, [r4, #4] cmp r1, #0 movlt r0, #0 ldmltia sp!, {r4, pc} ldr r0, _0221380C ; =0x0221712C ldr r0, [r0] cmp r1, r0 movge r0, #0 ldmgeia sp!, {r4, pc} bl MOD79_02213378 ldr r0, [r4, #0x14] bl MOD04_021DD82C ldr r0, [r4, #0x18] bl MOD04_021DD82C ldr r0, [r4, #0x24] bl MOD04_021DD82C ldr r0, [r4, #0x28] bl MOD04_021DD82C ldr r0, [r4, #0x108] bl MOD04_021DD82C ldr r0, [r4, #0x15c] bl MOD04_021DD82C ldr r0, [r4, #0x48] mvn r1, #0 cmp r0, r1 beq _02213754 mov r1, #2 bl MOD04_021EFD80 ldr r0, [r4, #0x48] bl MOD04_021EFD9C _02213754: add r0, r4, #0x50 bl MOD79_02212A54 add r0, r4, #0x74 bl MOD79_02212A54 add r0, r4, #0x98 bl MOD79_02212A54 add r0, r4, #0xbc bl MOD79_02212A54 ldr r0, [r4, #0x140] cmp r0, #0 beq _02213788 mov r0, r4 bl MOD79_022149E4 _02213788: ldr r0, [r4, #0x13c] cmp r0, #0 beq _022137B0 bl MOD79_02215074 cmp r0, #0 beq _022137B0 ldr r0, [r4, #0x13c] bl MOD79_02215058 mov r0, #0 str r0, [r4, #0x13c] _022137B0: ldr r0, [r4, #0x16c] cmp r0, #0 beq _022137DC ldr r2, [r4, #0x178] cmp r2, #0 beq _022137D4 mov r0, r4 add r1, r4, #0x164 .word 0xE12FFF32 _022137D4: mov r0, #0 str r0, [r4, #0x16c] _022137DC: mov r1, #0 ldr r0, _02213818 ; =0x02217130 str r1, [r4] ldr r1, [r0] sub r1, r1, #1 str r1, [r0] bl MOD79_02213374 mov r0, #1 ldmia sp!, {r4, pc} .align 2, 0 _02213800: .word 0x02216960 _02213804: .word 0x0221696C _02213808: .word 0x022169C4 _0221380C: .word 0x0221712C _02213810: .word 0x022169E0 _02213814: .word 0x02216A08 _02213818: .word 0x02217130 arm_func_end MOD79_02213638 arm_func_start MOD79_0221381C MOD79_0221381C: ; 0x0221381C stmdb sp!, {r4, r5, lr} sub sp, sp, #4 bl MOD79_02213378 bl MOD79_022139CC mov r5, r0 mvn r0, #0 cmp r5, r0 bne _0221384C bl MOD79_02213374 add sp, sp, #4 mov r0, #0 ldmia sp!, {r4, r5, pc} _0221384C: ldr r0, _022139C0 ; =0x02217138 mov r1, #0 ldr r0, [r0] mov r2, #0x184 ldr r4, [r0, r5, lsl #2] mov r0, r4 bl Call_FillMemWithValue mov r0, #1 str r0, [r4] ldr r0, _022139C4 ; =0x02217134 str r5, [r4, #4] ldr r2, [r0] mov ip, #0 add r1, r2, #1 str r1, [r0] str r2, [r4, #8] str ip, [r4, #0xc] str ip, [r4, #0x10] str ip, [r4, #0x14] str ip, [r4, #0x18] str ip, [r4, #0x1c] strh ip, [r4, #0x20] str ip, [r4, #0x24] str ip, [r4, #0x28] str ip, [r4, #0x2c] str ip, [r4, #0x30] str ip, [r4, #0x34] str ip, [r4, #0x38] str ip, [r4, #0x3c] str ip, [r4, #0x40] str ip, [r4, #0x44] mvn r0, #0 str r0, [r4, #0x48] str ip, [r4, #0x4c] str ip, [r4, #0xe0] str ip, [r4, #0xe4] str ip, [r4, #0xe8] str ip, [r4, #0xec] str ip, [r4, #0xf0] str ip, [r4, #0xf4] str ip, [r4, #0xf8] str ip, [r4, #0xfc] str ip, [r4, #0x100] str r0, [r4, #0x104] str ip, [r4, #0x108] str ip, [r4, #0x10c] str ip, [r4, #0x110] str ip, [r4, #0x12c] str ip, [r4, #0x134] str ip, [r4, #0x138] str ip, [r4, #0x13c] mov r0, #0x1f4 str r0, [r4, #0x158] add r0, r4, #0x100 mov r1, #0x50 strh r1, [r0, #0x60] str ip, [r4, #0x15c] mov r0, r4 add r1, r4, #0x50 mov r2, #0x800 mov r3, #0x1000 str ip, [r4, #0x164] bl MOD79_02212BC4 cmp r0, #0 beq _02213964 mov r2, #0x800 mov r0, r4 mov r3, r2 add r1, r4, #0x74 bl MOD79_02212BC4 _02213964: cmp r0, #0 beq _02213980 mov r0, r4 add r1, r4, #0x98 mov r2, #0x800 mov r3, #0x400 bl MOD79_02212BC4 _02213980: cmp r0, #0 bne _022139A0 mov r0, r4 bl MOD79_02213638 bl MOD79_02213374 add sp, sp, #4 mov r0, #0 ldmia sp!, {r4, r5, pc} _022139A0: ldr r0, _022139C8 ; =0x02217130 ldr r1, [r0] add r1, r1, #1 str r1, [r0] bl MOD79_02213374 mov r0, r4 add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _022139C0: .word 0x02217138 _022139C4: .word 0x02217134 _022139C8: .word 0x02217130 arm_func_end MOD79_0221381C arm_func_start MOD79_022139CC MOD79_022139CC: ; 0x022139CC stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #4 ldr r1, _02213AF4 ; =0x0221712C mov r0, #0 ldr r2, [r1] cmp r2, #0 ble _02213A10 ldr r1, _02213AF8 ; =0x02217138 ldr r3, [r1] _022139F0: ldr r1, [r3, r0, lsl #2] ldr r1, [r1] cmp r1, #0 addeq sp, sp, #4 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} add r0, r0, #1 cmp r0, r2 blt _022139F0 _02213A10: ldr r0, _02213AFC ; =0x02217130 ldr r0, [r0] cmp r0, r2 beq _02213A34 ldr r0, _02213B00 ; =0x02216A1C ldr r1, _02213B04 ; =0x0221696C mov r2, #0 mov r3, #0x33 bl __msl_assertion_failed _02213A34: ldr r1, _02213AF4 ; =0x0221712C ldr r0, _02213AF8 ; =0x02217138 ldr r7, [r1] ldr r0, [r0] add r6, r7, #4 mov r1, r6, lsl #2 bl MOD04_021DD844 cmp r0, #0 addeq sp, sp, #4 mvneq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} ldr r8, _02213AF8 ; =0x02217138 mov r5, r7 str r0, [r8] cmp r7, r6 bge _02213AE0 mov sb, #0 mov r4, #0x184 _02213A7C: mov r0, r4 bl MOD04_021DD860 ldr r1, [r8] str r0, [r1, r5, lsl #2] ldr r0, [r8] ldr r0, [r0, r5, lsl #2] cmp r0, #0 bne _02213AD0 sub r5, r5, #1 cmp r5, r7 blt _02213AC4 ldr r4, _02213AF8 ; =0x02217138 _02213AAC: ldr r0, [r4] ldr r0, [r0, r5, lsl #2] bl MOD04_021DD82C sub r5, r5, #1 cmp r5, r7 bge _02213AAC _02213AC4: add sp, sp, #4 mvn r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} _02213AD0: add r5, r5, #1 str sb, [r0] cmp r5, r6 blt _02213A7C _02213AE0: ldr r1, _02213AF4 ; =0x0221712C mov r0, r7 str r6, [r1] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _02213AF4: .word 0x0221712C _02213AF8: .word 0x02217138 _02213AFC: .word 0x02217130 _02213B00: .word 0x02216A1C _02213B04: .word 0x0221696C arm_func_end MOD79_022139CC arm_func_start MOD79_02213B08 MOD79_02213B08: ; 0x02213B08 ldr ip, _02213B14 ; =MOD79_02213510 ldr r0, _02213B18 ; =MOD79_02213E84 bx ip .align 2, 0 _02213B14: .word MOD79_02213510 _02213B18: .word MOD79_02213E84 arm_func_end MOD79_02213B08 arm_func_start MOD79_02213B1C MOD79_02213B1C: ; 0x02213B1C stmdb sp!, {r4, r5, r6, r7, r8, lr} movs r8, r0 mov r7, r1 mov r6, r2 mov r5, r3 beq _02213B40 ldrsb r0, [r8] cmp r0, #0 bne _02213B54 _02213B40: ldr r0, _02213D64 ; =0x02216A50 ldr r1, _02213D68 ; =0x02216A44 mov r2, #0 mov r3, #0x128 bl __msl_assertion_failed _02213B54: cmp r5, #0 bge _02213B70 ldr r0, _02213D6C ; =0x02216A60 ldr r1, _02213D68 ; =0x02216A44 ldr r3, _02213D70 ; =0x00000129 mov r2, #0 bl __msl_assertion_failed _02213B70: cmp r6, #0 beq _02213B94 cmp r5, #0 bne _02213B94 ldr r0, _02213D74 ; =0x02216A70 ldr r1, _02213D68 ; =0x02216A44 ldr r3, _02213D78 ; =0x0000012A mov r2, #0 bl __msl_assertion_failed _02213B94: cmp r8, #0 beq _02213BA8 ldrsb r0, [r8] cmp r0, #0 bne _02213BB0 _02213BA8: mvn r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _02213BB0: cmp r5, #0 mvnlt r0, #0 ldmltia sp!, {r4, r5, r6, r7, r8, pc} cmp r6, #0 beq _02213BD0 cmp r5, #0 mvneq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} _02213BD0: ldr r0, _02213D7C ; =0x0221713C ldr r0, [r0] cmp r0, #0 bne _02213BE4 bl MOD79_02213E24 _02213BE4: bl MOD79_0221381C movs r4, r0 mvneq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} mov r1, #0 mov r0, r8 str r1, [r4, #0xc] bl MOD04_021F0208 str r0, [r4, #0x14] ldr r0, [r4, #0x14] cmp r0, #0 bne _02213C24 mov r0, r4 bl MOD79_02213638 mvn r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _02213C24: cmp r7, #0 beq _02213C60 ldrsb r0, [r7] cmp r0, #0 beq _02213C60 mov r0, r7 bl MOD04_021F0208 str r0, [r4, #0x28] ldr r0, [r4, #0x28] cmp r0, #0 bne _02213C60 mov r0, r4 bl MOD79_02213638 mvn r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _02213C60: ldr r1, [sp, #0x18] ldr r0, [sp, #0x20] str r1, [r4, #0x13c] str r0, [r4, #0x30] ldr r1, [sp, #0x24] ldr r0, [sp, #0x28] str r1, [r4, #0x3c] str r0, [r4, #0x40] ldr r1, [sp, #0x2c] ldr r0, [sp, #0x1c] str r1, [r4, #0x44] str r0, [r4, #0x134] cmp r6, #0 movne r0, #1 moveq r0, #0 str r0, [r4, #0xe0] ldr r0, [r4, #0xe0] cmp r0, #0 beq _02213CC4 mov r0, r4 mov r2, r6 mov r3, r5 add r1, r4, #0xbc bl MOD79_02212AB4 b _02213CD8 _02213CC4: mov r2, #0x800 mov r0, r4 mov r3, r2 add r1, r4, #0xbc bl MOD79_02212BC4 _02213CD8: cmp r0, #0 bne _02213CF0 mov r0, r4 bl MOD79_02213638 mvn r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _02213CF0: ldr r0, [sp, #0x18] cmp r0, #0 beq _02213D1C mov r0, r4 bl MOD79_02214A60 cmp r0, #0 bne _02213D1C mov r0, r4 bl MOD79_02213638 mvn r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _02213D1C: ldr r0, [sp, #0x20] cmp r0, #0 beq _02213D5C mov r0, r4 bl MOD79_02213E84 cmp r0, #0 bne _02213D54 mov r5, #0xa _02213D3C: mov r0, r5 bl MOD04_021F0250 mov r0, r4 bl MOD79_02213E84 cmp r0, #0 beq _02213D3C _02213D54: mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, pc} _02213D5C: ldr r0, [r4, #4] ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _02213D64: .word 0x02216A50 _02213D68: .word 0x02216A44 _02213D6C: .word 0x02216A60 _02213D70: .word 0x00000129 _02213D74: .word 0x02216A70 _02213D78: .word 0x0000012A _02213D7C: .word 0x0221713C arm_func_end MOD79_02213B1C arm_func_start MOD79_02213D80 MOD79_02213D80: ; 0x02213D80 stmdb sp!, {lr} sub sp, sp, #0x1c mov ip, #0 str ip, [sp] str ip, [sp, #4] str r1, [sp, #8] str ip, [sp, #0xc] str r2, [sp, #0x10] str r3, [sp, #0x14] mov r1, ip mov r2, ip mov r3, ip bl MOD79_02213B1C add sp, sp, #0x1c ldmia sp!, {pc} arm_func_end MOD79_02213D80 arm_func_start MOD79_02213DBC MOD79_02213DBC: ; 0x02213DBC stmdb sp!, {lr} sub sp, sp, #4 bl MOD79_02213378 ldr r0, _02213E1C ; =0x0221713C ldr r1, [r0] subs r1, r1, #1 str r1, [r0] bne _02213E10 bl MOD79_02213384 ldr r0, _02213E20 ; =0x02217128 ldr r0, [r0] cmp r0, #0 beq _02213E00 bl MOD04_021DD82C ldr r0, _02213E20 ; =0x02217128 mov r1, #0 str r1, [r0] _02213E00: bl MOD79_02213374 bl MOD79_0221337C add sp, sp, #4 ldmia sp!, {pc} _02213E10: bl MOD79_02213374 add sp, sp, #4 ldmia sp!, {pc} .align 2, 0 _02213E1C: .word 0x0221713C _02213E20: .word 0x02217128 arm_func_end MOD79_02213DBC arm_func_start MOD79_02213E24 MOD79_02213E24: ; 0x02213E24 stmdb sp!, {lr} sub sp, sp, #4 bl MOD79_02213378 ldr r0, _02213E78 ; =0x0221713C ldr r1, [r0] add r1, r1, #1 str r1, [r0] cmp r1, #1 bne _02213E6C bl MOD79_02213380 ldr r1, _02213E7C ; =0x0221695C mov r3, #0x7d ldr r0, _02213E80 ; =0x02216958 mov r2, #0xfa str r3, [r1] str r2, [r0] add sp, sp, #4 ldmia sp!, {pc} _02213E6C: bl MOD79_02213374 add sp, sp, #4 ldmia sp!, {pc} .align 2, 0 _02213E78: .word 0x0221713C _02213E7C: .word 0x0221695C _02213E80: .word 0x02216958 arm_func_end MOD79_02213E24 arm_func_start MOD79_02213E84 MOD79_02213E84: ; 0x02213E84 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 movs r4, r0 bne _02213EA8 ldr r0, _02213FE8 ; =0x02216A88 ldr r1, _02213FEC ; =0x02216A44 mov r2, #0 mov r3, #0x5b bl __msl_assertion_failed _02213EA8: ldr r0, [r4, #4] bl MOD79_0221358C cmp r0, r4 beq _02213ECC ldr r0, _02213FF0 ; =0x02216A94 ldr r1, _02213FEC ; =0x02216A44 mov r2, #0 mov r3, #0x5c bl __msl_assertion_failed _02213ECC: ldr r0, [r4, #0x12c] cmp r0, #0 addne sp, sp, #4 movne r0, #0 ldmneia sp!, {r4, r5, pc} mov r0, #1 str r0, [r4, #0x12c] ldr r0, [r4, #0x10] cmp r0, #0 bne _02213EFC mov r0, r4 bl MOD79_02216478 _02213EFC: ldr r0, [r4, #0x10] cmp r0, #1 bne _02213F10 mov r0, r4 bl MOD79_0221621C _02213F10: ldr r0, [r4, #0x10] cmp r0, #2 bne _02213F24 mov r0, r4 bl MOD79_022160C0 _02213F24: ldr r0, [r4, #0x10] cmp r0, #3 bne _02213F38 mov r0, r4 bl MOD79_02215E40 _02213F38: ldr r0, [r4, #0x10] cmp r0, #4 bne _02213F4C mov r0, r4 bl MOD79_02215DA8 _02213F4C: ldr r0, [r4, #0x10] cmp r0, #5 bne _02213F60 mov r0, r4 bl MOD79_02215D28 _02213F60: ldr r0, [r4, #0x10] cmp r0, #6 bne _02213F74 mov r0, r4 bl MOD79_02215AA8 _02213F74: ldr r0, [r4, #0x10] cmp r0, #7 bne _02213F88 mov r0, r4 bl MOD79_02215174 _02213F88: ldr r0, [r4, #0x10] cmp r0, #8 bne _02213F9C mov r0, r4 bl MOD79_0221507C _02213F9C: ldr r0, [r4, #0x108] cmp r0, #0 beq _02213FB0 mov r0, r4 bl MOD79_02213410 _02213FB0: ldr r5, [r4, #0xfc] cmp r5, #0 moveq r0, #0 streq r0, [r4, #0x12c] beq _02213FDC mov r0, r4 bl MOD79_02213FF4 mov r0, r4 bl MOD79_02212E78 mov r0, r4 bl MOD79_02213638 _02213FDC: mov r0, r5 add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _02213FE8: .word 0x02216A88 _02213FEC: .word 0x02216A44 _02213FF0: .word 0x02216A94 arm_func_end MOD79_02213E84 arm_func_start MOD79_02213FF4 MOD79_02213FF4: ; 0x02213FF4 stmdb sp!, {lr} sub sp, sp, #4 ldr lr, [r0, #0xec] ldr r3, _022140CC ; =0x51EB851F mov r1, lr, lsr #0x1f smull r2, ip, r3, lr mov ip, ip, asr #5 add ip, r1, ip cmp ip, #5 addls pc, pc, ip, lsl #2 b _022140C4 _02214020: ; jump table b _022140C4 ; case 0 b _02214038 ; case 1 b _02214038 ; case 2 b _02214038 ; case 3 b _02214040 ; case 4 b _022140BC ; case 5 _02214038: add sp, sp, #4 ldmia sp!, {pc} _02214040: ldr r1, _022140D0 ; =0x00000191 sub r1, lr, r1 cmp r1, #9 addls pc, pc, r1, lsl #2 b _022140AC _02214054: ; jump table b _0221407C ; case 0 b _022140AC ; case 1 b _0221408C ; case 2 b _0221409C ; case 3 b _022140AC ; case 4 b _022140AC ; case 5 b _022140AC ; case 6 b _022140AC ; case 7 b _022140AC ; case 8 b _0221409C ; case 9 _0221407C: mov r1, #9 str r1, [r0, #0x38] add sp, sp, #4 ldmia sp!, {pc} _0221408C: mov r1, #0xa str r1, [r0, #0x38] add sp, sp, #4 ldmia sp!, {pc} _0221409C: mov r1, #0xb str r1, [r0, #0x38] add sp, sp, #4 ldmia sp!, {pc} _022140AC: mov r1, #8 str r1, [r0, #0x38] add sp, sp, #4 ldmia sp!, {pc} _022140BC: mov r1, #0xc str r1, [r0, #0x38] _022140C4: add sp, sp, #4 ldmia sp!, {pc} .align 2, 0 _022140CC: .word 0x51EB851F _022140D0: .word 0x00000191 arm_func_end MOD79_02213FF4 arm_func_start MOD79_022140D4 MOD79_022140D4: ; 0x022140D4 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #4 movs sl, r0 bne _022140F8 ldr r0, _02214330 ; =0x02216AD0 ldr r1, _02214334 ; =0x02216ADC ldr r3, _02214338 ; =0x00000404 mov r2, #0 bl __msl_assertion_failed _022140F8: ldr r0, [sl, #0x13c] cmp r0, #0 bne _02214118 ldr r0, _0221433C ; =0x02216AE8 ldr r1, _02214334 ; =0x02216ADC ldr r3, _02214340 ; =0x00000405 mov r2, #0 bl __msl_assertion_failed _02214118: ldr r0, [sl, #0x140] cmp r0, #0 bne _02214138 ldr r0, _02214344 ; =0x02216AFC ldr r1, _02214334 ; =0x02216ADC ldr r3, _02214348 ; =0x00000406 mov r2, #0 bl __msl_assertion_failed _02214138: ldr r0, [sl, #0x13c] ldr r0, [r0] bl MOD04_021EF06C mov r4, r0 ldr r0, [sl, #0x140] bl MOD04_021EF06C cmp r4, r0 beq _0221416C ldr r0, _0221434C ; =0x02216B1C ldr r1, _02214334 ; =0x02216ADC ldr r3, _02214350 ; =0x00000407 mov r2, #0 bl __msl_assertion_failed _0221416C: ldr r0, [sl, #0x144] cmp r0, #0 bge _0221418C ldr r0, _02214354 ; =0x02216B70 ldr r1, _02214334 ; =0x02216ADC ldr r3, _02214358 ; =0x00000408 mov r2, #0 bl __msl_assertion_failed _0221418C: ldr r0, [sl, #0x140] bl MOD04_021EF06C ldr r1, [sl, #0x144] cmp r1, r0 ble _022141B4 ldr r0, _0221435C ; =0x02216B94 ldr r1, _02214334 ; =0x02216ADC ldr r3, _02214360 ; =0x00000409 mov r2, #0 bl __msl_assertion_failed _022141B4: ldr r0, [sl, #0x140] add sb, sl, #0x140 bl MOD04_021EF06C ldr r1, [sl, #0x5c] mov r7, r0 cmp r1, #0 beq _0221421C mov r0, sl bl MOD79_02212554 cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r1, [sl, #0x60] ldr r0, [sl, #0x5c] cmp r1, r0 addlt sp, sp, #4 movlt r0, #2 ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} add r0, sl, #0x50 bl MOD79_0221262C ldr r0, [sl, #0x144] cmp r0, r7 addeq sp, sp, #4 moveq r0, #1 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _0221421C: ldr r1, [sb, #4] cmp r1, r7 bge _022142E0 ldr r6, _02214364 ; =0x02216BE4 ldr fp, _02214334 ; =0x02216ADC mov r5, #0 mov r4, #1 _02214238: ldr r0, [sb] bl MOD04_021EEFFC movs r8, r0 bne _0221425C ldr r3, _02214368 ; =0x0000042F mov r0, r6 mov r1, fp mov r2, r5 bl __msl_assertion_failed _0221425C: ldr r0, [sb, #4] mov r1, sl cmp r0, #0 moveq r2, r4 movne r2, r5 mov r0, r8 bl MOD79_02214378 cmp r0, #0 bne _022142B8 ldr r0, [sl, #0xfc] cmp r0, #0 beq _02214298 ldr r0, [sl, #0x38] cmp r0, #0 bne _022142AC _02214298: ldr r0, _0221436C ; =0x02216BF0 ldr r1, _02214334 ; =0x02216ADC ldr r3, _02214370 ; =0x0000043B mov r2, #0 bl __msl_assertion_failed _022142AC: add sp, sp, #4 mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _022142B8: cmp r0, #2 addeq sp, sp, #4 moveq r0, #2 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r0, [sb, #4] add r0, r0, #1 str r0, [sb, #4] ldr r1, [sb, #4] cmp r1, r7 blt _02214238 _022142E0: ldr r0, [sl, #0x13c] ldr r0, [r0, #0xc] cmp r0, #0 beq _02214318 ldr r0, _02214374 ; =0x02216C1C bl strlen mov r2, r0 ldr r1, _02214374 ; =0x02216C1C mov r0, sl bl MOD79_02212F04 cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _02214318: ldr r0, [sl, #0x5c] cmp r0, #0 movne r0, #2 moveq r0, #1 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02214330: .word 0x02216AD0 _02214334: .word 0x02216ADC _02214338: .word 0x00000404 _0221433C: .word 0x02216AE8 _02214340: .word 0x00000405 _02214344: .word 0x02216AFC _02214348: .word 0x00000406 _0221434C: .word 0x02216B1C _02214350: .word 0x00000407 _02214354: .word 0x02216B70 _02214358: .word 0x00000408 _0221435C: .word 0x02216B94 _02214360: .word 0x00000409 _02214364: .word 0x02216BE4 _02214368: .word 0x0000042F _0221436C: .word 0x02216BF0 _02214370: .word 0x0000043B _02214374: .word 0x02216C1C arm_func_end MOD79_022140D4 arm_func_start MOD79_02214378 MOD79_02214378: ; 0x02214378 stmdb sp!, {r4, r5, r6, lr} ldr ip, _02214554 ; =0x00000808 sub sp, sp, ip mov r6, r0 ldr r3, [r6, #4] mvn r0, #0 mov r5, r1 mov r4, r2 cmp r3, r0 bne _022144D8 mov r2, #0 str r2, [r6, #4] ldr r0, [r5, #0x13c] ldr r0, [r0, #0xc] cmp r0, #0 bne _02214410 ldr r0, [r6] ldr r0, [r0] cmp r0, #0 beq _022143D8 ldr r0, _02214558 ; =0x02216C48 ldr r1, _0221455C ; =0x02216ADC ldr r3, _02214560 ; =0x000003A9 bl __msl_assertion_failed _022143D8: cmp r4, #0 beq _022143F8 ldr r1, [r6] add r0, sp, #8 ldr r2, [r1, #4] ldr r1, _02214564 ; =0x02216C68 bl sprintf b _02214498 _022143F8: ldr r1, [r6] add r0, sp, #8 ldr r2, [r1, #4] ldr r1, _02214568 ; =0x02216C6C bl sprintf b _02214498 _02214410: ldr r3, [r6] ldr r1, [r3] cmp r1, #0 bne _02214440 cmp r4, #0 ldrne r2, _0221456C ; =0x02216C74 ldr r3, [r3, #4] ldreq r2, _02214570 ; =0x02216C9C ldr r1, _02214574 ; =0x02216CC8 add r0, sp, #8 bl sprintf b _02214498 _02214440: sub r0, r1, #1 cmp r0, #1 bhi _02214488 cmp r1, #1 ldreq r1, [r3, #0xc] ldreq r0, [r3, #0x10] ldrne r1, [r3, #0x10] ldrne r0, [r3, #0x14] cmp r4, #0 str r1, [sp] str r0, [sp, #4] ldrne r2, _0221456C ; =0x02216C74 ldr r3, [r3, #4] ldreq r2, _02214570 ; =0x02216C9C ldr r1, _02214578 ; =0x02216CF8 add r0, sp, #8 bl sprintf b _02214498 _02214488: ldr r0, _0221457C ; =0x02216D4C ldr r1, _0221455C ; =0x02216ADC mov r3, #0x3dc bl __msl_assertion_failed _02214498: add r0, sp, #8 bl strlen mov r2, r0 add r1, sp, #8 mov r0, r5 bl MOD79_02212F04 cmp r0, #0 ldreq ip, _02214554 ; =0x00000808 moveq r0, #0 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, pc} cmp r0, #2 ldreq ip, _02214554 ; =0x00000808 moveq r0, #2 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, pc} _022144D8: ldr r0, [r6] ldr r0, [r0] cmp r0, #0 bne _02214500 mov r0, r6 mov r1, r5 bl MOD79_022147E8 ldr ip, _02214554 ; =0x00000808 add sp, sp, ip ldmia sp!, {r4, r5, r6, pc} _02214500: cmp r0, #1 bne _02214520 mov r0, r6 mov r1, r5 bl MOD79_0221467C ldr ip, _02214554 ; =0x00000808 add sp, sp, ip ldmia sp!, {r4, r5, r6, pc} _02214520: cmp r0, #2 beq _0221453C ldr r0, _02214580 ; =0x02216D50 ldr r1, _0221455C ; =0x02216ADC ldr r3, _02214584 ; =0x000003F5 mov r2, #0 bl __msl_assertion_failed _0221453C: mov r0, r6 mov r1, r5 bl MOD79_02214588 ldr ip, _02214554 ; =0x00000808 add sp, sp, ip ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02214554: .word 0x00000808 _02214558: .word 0x02216C48 _0221455C: .word 0x02216ADC _02214560: .word 0x000003A9 _02214564: .word 0x02216C68 _02214568: .word 0x02216C6C _0221456C: .word 0x02216C74 _02214570: .word 0x02216C9C _02214574: .word 0x02216CC8 _02214578: .word 0x02216CF8 _0221457C: .word 0x02216D4C _02214580: .word 0x02216D50 _02214584: .word 0x000003F5 arm_func_end MOD79_02214378 arm_func_start MOD79_02214588 MOD79_02214588: ; 0x02214588 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 ldr r0, [r5, #4] mov r4, r1 cmp r0, #0 bge _022145B8 ldr r0, _02214668 ; =0x02216D74 ldr r1, _0221466C ; =0x02216ADC ldr r3, _02214670 ; =0x0000036E mov r2, #0 bl __msl_assertion_failed _022145B8: ldr r0, [r5] ldr r1, [r0, #0xc] cmp r1, #0 addeq sp, sp, #4 moveq r0, #1 ldmeqia sp!, {r4, r5, pc} ldr r0, [r5, #4] cmp r0, r1 blt _022145F0 ldr r0, _02214674 ; =0x02216D84 ldr r1, _0221466C ; =0x02216ADC ldr r3, _02214678 ; =0x00000375 mov r2, #0 bl __msl_assertion_failed _022145F0: ldr r1, [r5] ldr r3, [r5, #4] ldr r0, [r1, #0xc] ldr r1, [r1, #8] sub r2, r0, r3 cmp r2, #0x8000 movge r2, #0x8000 mov r0, r4 add r1, r1, r3 bl MOD79_02212F68 mvn r1, #0 cmp r0, r1 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, pc} ldr r1, [r5, #4] add r1, r1, r0 str r1, [r5, #4] ldr r2, [r5] ldr r1, [r5, #4] ldr r2, [r2, #0xc] cmp r2, r1 addeq sp, sp, #4 moveq r0, #1 ldmeqia sp!, {r4, r5, pc} cmp r0, #0 bne _022145F0 mov r0, #2 add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _02214668: .word 0x02216D74 _0221466C: .word 0x02216ADC _02214670: .word 0x0000036E _02214674: .word 0x02216D84 _02214678: .word 0x00000375 arm_func_end MOD79_02214588 arm_func_start MOD79_0221467C MOD79_0221467C: ; 0x0221467C stmdb sp!, {r4, r5, lr} ldr ip, _022147CC ; =0x00001004 sub sp, sp, ip mov r5, r0 ldr r0, [r5, #4] mov r4, r1 cmp r0, #0 bge _022146B0 ldr r0, _022147D0 ; =0x02216D74 ldr r1, _022147D4 ; =0x02216ADC ldr r3, _022147D8 ; =0x00000336 mov r2, #0 bl __msl_assertion_failed _022146B0: ldr r1, [r5, #4] ldr r0, [r5, #0xc] cmp r1, r0 blt _022146D4 ldr r0, _022147DC ; =0x02216DB4 ldr r1, _022147D4 ; =0x02216ADC ldr r3, _022147E0 ; =0x00000337 mov r2, #0 bl __msl_assertion_failed _022146D4: ldr r0, [r5, #8] bl ftell ldr r1, [r5, #4] cmp r1, r0 beq _022146FC ldr r0, _022147E4 ; =0x02216DDC ldr r1, _022147D4 ; =0x02216ADC mov r2, #0 mov r3, #0x338 bl __msl_assertion_failed _022146FC: ldr r3, [r5, #8] add r0, sp, #0 mov r1, #1 mov r2, #0x1000 bl fread mov r2, r0 cmp r2, #0 bgt _0221473C ldr ip, _022147CC ; =0x00001004 mov r0, #1 str r0, [r4, #0xfc] mov r0, #0xe str r0, [r4, #0x38] add sp, sp, ip mov r0, #0 ldmia sp!, {r4, r5, pc} _0221473C: ldr r0, [r5, #4] add r0, r0, r2 str r0, [r5, #4] ldr r1, [r5, #4] ldr r0, [r5, #0xc] cmp r1, r0 ble _02214778 ldr ip, _022147CC ; =0x00001004 mov r0, #1 str r0, [r4, #0xfc] mov r0, #0xe str r0, [r4, #0x38] add sp, sp, ip mov r0, #0 ldmia sp!, {r4, r5, pc} _02214778: add r1, sp, #0 mov r0, r4 bl MOD79_02212F04 cmp r0, #0 ldreq ip, _022147CC ; =0x00001004 moveq r0, #0 addeq sp, sp, ip ldmeqia sp!, {r4, r5, pc} ldr r2, [r5, #4] ldr r1, [r5, #0xc] cmp r2, r1 ldreq ip, _022147CC ; =0x00001004 moveq r0, #1 addeq sp, sp, ip ldmeqia sp!, {r4, r5, pc} cmp r0, #1 beq _022146FC mov r0, #2 ldr ip, _022147CC ; =0x00001004 add sp, sp, ip ldmia sp!, {r4, r5, pc} .align 2, 0 _022147CC: .word 0x00001004 _022147D0: .word 0x02216D74 _022147D4: .word 0x02216ADC _022147D8: .word 0x00000336 _022147DC: .word 0x02216DB4 _022147E0: .word 0x00000337 _022147E4: .word 0x02216DDC arm_func_end MOD79_0221467C arm_func_start MOD79_022147E8 MOD79_022147E8: ; 0x022147E8 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #4 mov r4, r0 ldr r0, [r4, #4] mov sl, r1 cmp r0, #0 bge _02214818 ldr r0, _022149BC ; =0x02216D74 ldr r1, _022149C0 ; =0x02216ADC ldr r3, _022149C4 ; =0x000002E7 mov r2, #0 bl __msl_assertion_failed _02214818: ldr r0, [r4] ldr r1, [r0, #0xc] cmp r1, #0 addeq sp, sp, #4 moveq r0, #1 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r0, [r4, #4] cmp r0, r1 blt _02214850 ldr r0, _022149C8 ; =0x02216E14 ldr r1, _022149C0 ; =0x02216ADC ldr r3, _022149CC ; =0x000002EE mov r2, #0 bl __msl_assertion_failed _02214850: ldr r0, [sl, #0x13c] ldr r0, [r0, #0xc] cmp r0, #0 bne _02214968 ldr r1, [r4] ldr r0, [r1, #0x10] cmp r0, #0 beq _02214968 ldr r0, _022149D0 ; =0x02216738 ldr r7, [r1, #8] ldrb r3, [r0] ldrb r2, [r0, #1] ldrb r1, [r0, #2] ldrb r0, [r0, #3] strb r3, [sp] strb r2, [sp, #1] strb r1, [sp, #2] strb r0, [sp, #3] ldrsb r8, [r7] mov sb, #0 cmp r8, #0 beq _0221495C mov fp, sb mov r4, #3 mov r5, #0x2b _022148B4: ldr r0, _022149D4 ; =0x02216E40 mov r1, r8 bl strchr cmp r0, #0 beq _022148D8 mov r1, r8 add r0, sl, #0x50 bl MOD79_022126A4 b _0221494C _022148D8: cmp r8, #0x20 bne _022148F0 mov r1, r5 add r0, sl, #0x50 bl MOD79_022126A4 b _0221494C _022148F0: mov r0, r8, asr #3 add r0, r8, r0, lsr #28 mov r6, r0, asr #4 cmp r6, #0x10 blt _02214918 ldr r0, _022149D8 ; =0x02216E84 ldr r1, _022149C0 ; =0x02216ADC ldr r3, _022149DC ; =0x0000030D mov r2, fp bl __msl_assertion_failed _02214918: ldr r0, _022149E0 ; =0x02216E94 mov r1, r8, lsr #0x1f ldrsb r2, [r0, r6] rsb r0, r1, r8, lsl #28 add r1, r1, r0, ror #28 ldr r0, _022149E0 ; =0x02216E94 strb r2, [sp, #1] ldrsb r2, [r0, r1] add r1, sp, #0 add r0, sl, #0x50 strb r2, [sp, #2] mov r2, r4 bl MOD79_02212794 _0221494C: add sb, sb, #1 ldrsb r8, [r7, sb] cmp r8, #0 bne _022148B4 _0221495C: add sp, sp, #4 mov r0, #1 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _02214968: ldr r1, [r4] ldr r0, [r4, #4] ldr r2, [r1, #0xc] ldr r1, [r1, #8] sub r5, r2, r0 mov r0, sl mov r2, r5 bl MOD79_02212F68 mvn r1, #0 cmp r0, r1 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r1, [r4, #4] cmp r0, r5 add r0, r1, r0 str r0, [r4, #4] moveq r0, #1 movne r0, #2 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _022149BC: .word 0x02216D74 _022149C0: .word 0x02216ADC _022149C4: .word 0x000002E7 _022149C8: .word 0x02216E14 _022149CC: .word 0x000002EE _022149D0: .word 0x02216738 _022149D4: .word 0x02216E40 _022149D8: .word 0x02216E84 _022149DC: .word 0x0000030D _022149E0: .word 0x02216E94 arm_func_end MOD79_022147E8 arm_func_start MOD79_022149E4 MOD79_022149E4: ; 0x022149E4 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 ldr r0, [r6, #0x140] cmp r0, #0 beq _02214A38 bl MOD04_021EF06C mov r4, r0 cmp r4, #0 mov r5, #0 ble _02214A28 _02214A0C: ldr r0, [r6, #0x140] mov r1, r5 bl MOD04_021EEFFC bl MOD79_02214BF4 add r5, r5, #1 cmp r5, r4 blt _02214A0C _02214A28: ldr r0, [r6, #0x140] bl MOD04_021EF074 mov r0, #0 str r0, [r6, #0x140] _02214A38: ldr r0, [r6, #0x13c] cmp r0, #0 ldmeqia sp!, {r4, r5, r6, pc} ldr r1, [r0, #0x10] cmp r1, #0 ldmeqia sp!, {r4, r5, r6, pc} bl MOD79_02215058 mov r0, #0 str r0, [r6, #0x13c] ldmia sp!, {r4, r5, r6, pc} arm_func_end MOD79_022149E4 arm_func_start MOD79_02214A60 MOD79_02214A60: ; 0x02214A60 stmdb sp!, {r4, r5, r6, r7, r8, lr} sub sp, sp, #0x10 mov r4, r0 ldr r0, [r4, #0x13c] cmp r0, #0 bne _02214A8C ldr r0, _02214BE4 ; =0x02216AE8 ldr r1, _02214BE8 ; =0x02216ADC mov r2, #0 mov r3, #0x278 bl __msl_assertion_failed _02214A8C: ldr r0, [r4, #0x13c] cmp r0, #0 addeq sp, sp, #0x10 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} mov r0, #0 str r0, [r4, #0x144] str r0, [r4, #0x148] str r0, [r4, #0x14c] ldr r0, [r4, #0x13c] ldr r0, [r0, #4] str r0, [r4, #0x150] ldr r0, [r4, #0x13c] ldr r0, [r0, #8] str r0, [r4, #0x154] ldr r0, [r4, #0x13c] ldr r0, [r0] bl MOD04_021EF06C mov r7, r0 mov r1, r7 mov r0, #0x10 mov r2, #0 bl MOD04_021EF0E4 str r0, [r4, #0x140] ldr r0, [r4, #0x140] cmp r0, #0 addeq sp, sp, #0x10 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} cmp r7, #0 mov r8, #0 ble _02214B98 add r6, sp, #0 mov r5, r8 _02214B14: ldr r0, [r4, #0x13c] mov r1, r8 ldr r0, [r0] bl MOD04_021EEFFC str r5, [r6] str r5, [r6, #4] str r5, [r6, #8] str r5, [r6, #0xc] str r0, [sp] mov r0, r6 bl MOD79_02214C5C cmp r0, #0 bne _02214B80 subs r8, r8, #1 bmi _02214B68 _02214B50: ldr r0, [r4, #0x140] mov r1, r8 bl MOD04_021EEFFC bl MOD79_02214BF4 subs r8, r8, #1 bpl _02214B50 _02214B68: ldr r0, [r4, #0x140] bl MOD04_021EF074 mov r0, #0 add sp, sp, #0x10 str r0, [r4, #0x140] ldmia sp!, {r4, r5, r6, r7, r8, pc} _02214B80: ldr r0, [r4, #0x140] mov r1, r6 bl MOD04_021EEFA8 add r8, r8, #1 cmp r8, r7 blt _02214B14 _02214B98: ldr r0, [r4, #0x13c] ldr r0, [r0] bl MOD04_021EF06C mov r5, r0 ldr r0, [r4, #0x140] bl MOD04_021EF06C cmp r5, r0 beq _02214BCC ldr r0, _02214BEC ; =0x02216B1C ldr r1, _02214BE8 ; =0x02216ADC ldr r3, _02214BF0 ; =0x000002B1 mov r2, #0 bl __msl_assertion_failed _02214BCC: mov r0, r4 bl MOD79_02214D0C str r0, [r4, #0x14c] mov r0, #1 add sp, sp, #0x10 ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _02214BE4: .word 0x02216AE8 _02214BE8: .word 0x02216ADC _02214BEC: .word 0x02216B1C _02214BF0: .word 0x000002B1 arm_func_end MOD79_02214A60 arm_func_start MOD79_02214BF4 MOD79_02214BF4: ; 0x02214BF4 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, [r4] ldr r0, [r0] cmp r0, #0 ldmeqia sp!, {r4, pc} cmp r0, #1 bne _02214C30 ldr r0, [r4, #8] cmp r0, #0 beq _02214C24 bl fclose _02214C24: mov r0, #0 str r0, [r4, #8] ldmia sp!, {r4, pc} _02214C30: cmp r0, #2 ldmeqia sp!, {r4, pc} ldr r0, _02214C50 ; =0x02216D4C ldr r1, _02214C54 ; =0x02216ADC ldr r3, _02214C58 ; =0x00000269 mov r2, #0 bl __msl_assertion_failed ldmia sp!, {r4, pc} .align 2, 0 _02214C50: .word 0x02216D4C _02214C54: .word 0x02216ADC _02214C58: .word 0x00000269 arm_func_end MOD79_02214BF4 arm_func_start MOD79_02214C5C MOD79_02214C5C: ; 0x02214C5C stmdb sp!, {r4, lr} mov r4, r0 ldr r1, [r4] mvn r0, #0 ldr r1, [r1] str r0, [r4, #4] cmp r1, #0 beq _02214CFC cmp r1, #1 bne _02214CD8 ldr r0, [r4, #8] cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} mov r1, #0 mov r2, #2 bl fseek cmp r0, #0 movne r0, #0 ldmneia sp!, {r4, pc} ldr r0, [r4, #8] bl ftell str r0, [r4, #0xc] ldr r1, [r4, #0xc] mvn r0, #0 cmp r1, r0 moveq r0, #0 ldmeqia sp!, {r4, pc} ldr r0, [r4, #8] bl rewind b _02214CFC _02214CD8: cmp r1, #2 beq _02214CFC ldr r0, _02214D04 ; =0x02216D4C ldr r1, _02214D08 ; =0x02216ADC mov r2, #0 mov r3, #0x244 bl __msl_assertion_failed mov r0, #0 ldmia sp!, {r4, pc} _02214CFC: mov r0, #1 ldmia sp!, {r4, pc} .align 2, 0 _02214D04: .word 0x02216D4C _02214D08: .word 0x02216ADC arm_func_end MOD79_02214C5C arm_func_start MOD79_02214D0C MOD79_02214D0C: ; 0x02214D0C stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 ldr r4, [r5, #0x13c] cmp r4, #0 bne _02214D38 ldr r0, _02214D74 ; =0x02216EA8 ldr r1, _02214D78 ; =0x02216ADC mov r2, #0 mov r3, #0x20c bl __msl_assertion_failed _02214D38: cmp r4, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, pc} ldr r0, [r4, #0xc] cmp r0, #0 beq _02214D64 mov r0, r5 bl MOD79_02214D7C add sp, sp, #4 ldmia sp!, {r4, r5, pc} _02214D64: mov r0, r5 bl MOD79_02214F48 add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _02214D74: .word 0x02216EA8 _02214D78: .word 0x02216ADC arm_func_end MOD79_02214D0C arm_func_start MOD79_02214D7C MOD79_02214D7C: ; 0x02214D7C stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #4 ldr r1, _02214F24 ; =0x0221714C mov r8, r0 ldr r0, [r1] ldr r7, [r8, #0x13c] cmp r0, #0 mov r4, #0 bne _02214DD4 ldr r0, _02214F28 ; =0x02216EB0 bl strlen ldr r5, _02214F24 ; =0x0221714C ldr r3, _02214F2C ; =0x02217148 add sl, r0, #0x2f ldr r2, _02214F30 ; =0x02217144 add sb, r0, #0x4c ldr r1, _02214F34 ; =0x02217140 add r6, r0, #4 str r0, [r5] str sl, [r3] str sb, [r2] str r6, [r1] _02214DD4: ldr r0, [r7] bl MOD04_021EF06C mov r5, r0 cmp r5, #0 mov r6, #0 ble _02214F10 mov fp, r6 mov sb, #0x1ec _02214DF4: ldr r0, [r7] mov r1, r6 bl MOD04_021EEFFC mov sl, r0 ldr r0, [sl] cmp r0, #0 bne _02214E34 ldr r0, _02214F2C ; =0x02217148 ldr r1, [r0] ldr r0, [sl, #4] add r4, r4, r1 bl strlen add r1, r4, r0 ldr r0, [sl, #0xc] add r4, r1, r0 b _02214F04 _02214E34: cmp r0, #1 bne _02214EA0 ldr r0, _02214F30 ; =0x02217144 ldr r1, [r0] ldr r0, [sl, #4] add r4, r4, r1 bl strlen add r4, r4, r0 ldr r0, [sl, #0xc] bl strlen add r4, r4, r0 ldr r0, [sl, #0x10] bl strlen add r4, r4, r0 ldr r0, [r8, #0x140] mov r1, r6 bl MOD04_021EEFFC movs sl, r0 bne _02214E94 ldr r0, _02214F38 ; =0x02216ED8 ldr r1, _02214F3C ; =0x02216ADC mov r2, fp mov r3, sb bl __msl_assertion_failed _02214E94: ldr r0, [sl, #0xc] add r4, r4, r0 b _02214F04 _02214EA0: cmp r0, #2 bne _02214EE4 ldr r0, _02214F30 ; =0x02217144 ldr r1, [r0] ldr r0, [sl, #4] add r4, r4, r1 bl strlen add r4, r4, r0 ldr r0, [sl, #0x10] bl strlen add r4, r4, r0 ldr r0, [sl, #0x14] bl strlen add r1, r4, r0 ldr r0, [sl, #0xc] add r4, r1, r0 b _02214F04 _02214EE4: ldr r0, _02214F40 ; =0x02216D4C ldr r1, _02214F3C ; =0x02216ADC ldr r3, _02214F44 ; =0x000001F9 mov r2, #0 bl __msl_assertion_failed add sp, sp, #4 mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _02214F04: add r6, r6, #1 cmp r6, r5 blt _02214DF4 _02214F10: ldr r0, _02214F34 ; =0x02217140 ldr r0, [r0] add r0, r4, r0 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02214F24: .word 0x0221714C _02214F28: .word 0x02216EB0 _02214F2C: .word 0x02217148 _02214F30: .word 0x02217144 _02214F34: .word 0x02217140 _02214F38: .word 0x02216ED8 _02214F3C: .word 0x02216ADC _02214F40: .word 0x02216D4C _02214F44: .word 0x000001F9 arm_func_end MOD79_02214D7C arm_func_start MOD79_02214F48 MOD79_02214F48: ; 0x02214F48 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #4 ldr sl, [r0, #0x13c] mov r6, #0 ldr r0, [sl] bl MOD04_021EF06C movs r7, r0 addeq sp, sp, #4 moveq r0, r6 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} cmp r7, #0 mov r8, r6 ble _02214FE4 ldr fp, _02214FF4 ; =0x02216EE0 mov r5, r8 mov r4, #0x1b0 _02214F88: ldr r0, [sl] mov r1, r8 bl MOD04_021EEFFC mov sb, r0 ldr r0, [sb] cmp r0, #0 beq _02214FB8 ldr r1, _02214FF8 ; =0x02216ADC mov r0, fp mov r2, r5 mov r3, r4 bl __msl_assertion_failed _02214FB8: ldr r0, [sb, #4] bl strlen add r8, r8, #1 ldr r1, [sb, #0xc] add r2, r6, r0 ldr r0, [sb, #0x14] add r1, r2, r1 add r0, r1, r0, lsl #1 cmp r8, r7 add r6, r0, #1 blt _02214F88 _02214FE4: sub r0, r7, #1 add r0, r6, r0 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02214FF4: .word 0x02216EE0 _02214FF8: .word 0x02216ADC arm_func_end MOD79_02214F48 arm_func_start MOD79_02214FFC MOD79_02214FFC: ; 0x02214FFC stmdb sp!, {r4, lr} ldr r4, [r0, #0x13c] cmp r4, #0 bne _02215020 ldr r0, _02215040 ; =0x02216EA8 ldr r1, _02215044 ; =0x02216ADC ldr r3, _02215048 ; =0x00000192 mov r2, #0 bl __msl_assertion_failed _02215020: cmp r4, #0 ldreq r0, _0221504C ; =0x02216EF8 ldmeqia sp!, {r4, pc} ldr r0, [r4, #0xc] cmp r0, #0 ldrne r0, _02215050 ; =0x02216EFC ldreq r0, _02215054 ; =0x02216F40 ldmia sp!, {r4, pc} .align 2, 0 _02215040: .word 0x02216EA8 _02215044: .word 0x02216ADC _02215048: .word 0x00000192 _0221504C: .word 0x02216EF8 _02215050: .word 0x02216EFC _02215054: .word 0x02216F40 arm_func_end MOD79_02214FFC arm_func_start MOD79_02215058 MOD79_02215058: ; 0x02215058 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, [r4] bl MOD04_021EF074 mov r0, r4 bl MOD04_021DD82C ldmia sp!, {r4, pc} arm_func_end MOD79_02215058 arm_func_start MOD79_02215074 MOD79_02215074: ; 0x02215074 ldr r0, [r0, #0x10] bx lr arm_func_end MOD79_02215074 arm_func_start MOD79_0221507C MOD79_0221507C: ; 0x0221507C stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr ip, _02215170 ; =0x00002008 sub sp, sp, ip mov r5, r0 bl MOD04_021F025C mov r4, r0 mov r1, #0 mov r8, #0x2000 add r7, sp, #4 add r6, sp, #0 b _02215144 _022150A8: mov r0, r5 mov r1, r7 mov r2, r6 str r8, [sp] bl MOD79_02212FF0 cmp r0, #3 ldreq ip, _02215170 ; =0x00002008 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, r7, r8, pc} cmp r0, #1 ldreq ip, _02215170 ; =0x00002008 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, r7, r8, pc} cmp r0, #2 bne _0221511C mov r0, #1 str r0, [r5, #0xfc] ldr r1, [r5, #0x104] cmp r1, #0 ldrle ip, _02215170 ; =0x00002008 addle sp, sp, ip ldmleia sp!, {r4, r5, r6, r7, r8, pc} ldr r0, [r5, #0x100] ldr ip, _02215170 ; =0x00002008 cmp r0, r1 movlt r0, #0xf add sp, sp, ip strlt r0, [r5, #0x38] ldmia sp!, {r4, r5, r6, r7, r8, pc} _0221511C: ldr r2, [sp] mov r0, r5 mov r1, r7 bl MOD79_02215640 cmp r0, #0 ldreq ip, _02215170 ; =0x00002008 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, r7, r8, pc} bl MOD04_021F025C sub r1, r0, r4 _02215144: ldr r0, [r5, #0xfc] cmp r0, #0 ldrne ip, _02215170 ; =0x00002008 addne sp, sp, ip ldmneia sp!, {r4, r5, r6, r7, r8, pc} ldr r0, [r5, #0x158] cmp r1, r0 blo _022150A8 ldr ip, _02215170 ; =0x00002008 add sp, sp, ip ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 _02215170: .word 0x00002008 arm_func_end MOD79_0221507C arm_func_start MOD79_02215174 MOD79_02215174: ; 0x02215174 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} ldr ip, _02215618 ; =0x00001018 sub sp, sp, ip mov r3, #0x1000 add r1, sp, #0x13 add r2, sp, #4 mov r6, r0 str r3, [sp, #4] bl MOD79_02212FF0 mov r4, r0 cmp r4, #3 ldreq ip, _02215618 ; =0x00001018 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} cmp r4, #1 bne _022151CC ldr r1, [r6, #0x84] ldr r0, [r6, #0x80] cmp r1, r0 ldreq ip, _02215618 ; =0x00001018 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _022151CC: cmp r4, #0 bne _022151F4 ldr r2, [sp, #4] add r1, sp, #0x13 add r0, r6, #0x74 bl MOD79_02212794 cmp r0, #0 ldreq ip, _02215618 ; =0x00001018 addeq sp, sp, ip ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _022151F4: ldr r2, [r6, #0x84] ldr r0, [r6, #0x78] ldr r1, _0221561C ; =0x02216F64 add r5, r0, r2 mov r0, r5 str r2, [r6, #0xf4] bl strstr cmp r0, #0 bne _02215224 ldr r1, _02215620 ; =0x02216F6C mov r0, r5 bl strstr _02215224: cmp r0, #0 beq _022155E0 mov r1, #0 strb r1, [r0, #2] ldr r7, [r6, #0x78] add r3, r0, #2 ldr r1, [r6, #0x80] sub r2, r3, r7 str r2, [r6, #0x80] ldr r2, [r6, #0x78] add r4, r0, #4 sub r0, r3, r2 str r0, [r6, #0xf8] ldr r0, [r6, #0xf8] sub r8, r4, r7 str r0, [r6, #0x84] ldr r2, [r6, #0xec] ldr r3, _02215624 ; =0x51EB851F mov r0, r2, lsr #0x1f smull r2, r7, r3, r2 mov r7, r7, asr #5 add r7, r0, r7 cmp r7, #1 sub sl, r1, r8 bne _022152DC cmp sl, #0 beq _022152B0 ldr r0, [r6, #0x78] mov r1, r4 add r2, sl, #1 bl memmove str sl, [r6, #0x80] mov r0, #0 str r0, [r6, #0x84] b _022152B8 _022152B0: add r0, r6, #0x74 bl MOD79_0221262C _022152B8: mov r1, #0 mov r3, #6 mov r0, r6 mov r2, r1 str r3, [r6, #0x10] bl MOD79_02212E00 ldr ip, _02215618 ; =0x00001018 add sp, sp, ip ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _022152DC: cmp r7, #3 bne _02215448 ldr r0, [r6, #0x10c] cmp r0, #0xa ldrgt ip, _02215618 ; =0x00001018 movgt r0, #1 strgt r0, [r6, #0xfc] movgt r0, #0xb addgt sp, sp, ip strgt r0, [r6, #0x38] ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} ldr r1, _02215628 ; =0x02216F70 mov r0, r5 bl strstr cmp r0, #0 beq _02215448 add r4, r0, #9 ldr r1, _0221562C ; =0x0210430C mov r2, #0 b _02215330 _0221532C: add r4, r4, #1 _02215330: ldrsb r0, [r4] cmp r0, #0 blt _02215344 cmp r0, #0x80 blt _0221534C _02215344: mov r0, r2 b _02215358 _0221534C: mov r0, r0, lsl #1 ldrh r0, [r1, r0] and r0, r0, #0x100 _02215358: cmp r0, #0 bne _0221532C mov r3, r4 ldr r1, _0221562C ; =0x0210430C mov r2, #0 b _02215374 _02215370: add r3, r3, #1 _02215374: ldrsb r0, [r3] cmp r0, #0 beq _022153AC cmp r0, #0 blt _02215390 cmp r0, #0x80 blt _02215398 _02215390: mov r0, r2 b _022153A4 _02215398: mov r0, r0, lsl #1 ldrh r0, [r1, r0] and r0, r0, #0x100 _022153A4: cmp r0, #0 beq _02215370 _022153AC: mov r0, #0 strb r0, [r3] ldrsb r0, [r4] cmp r0, #0x2f bne _0221541C ldr r0, [r6, #0x18] bl strlen mov r5, r0 mov r0, r4 bl strlen add r1, r5, #0xe add r0, r1, r0 bl MOD04_021DD860 str r0, [r6, #0x108] ldr r0, [r6, #0x108] ldr r1, _02215630 ; =0x02216F7C cmp r0, #0 moveq r0, #1 streq r0, [r6, #0xfc] streq r0, [r6, #0x38] str r4, [sp] ldrh r3, [r6, #0x20] ldr r0, [r6, #0x108] ldr r2, [r6, #0x18] bl sprintf ldr ip, _02215618 ; =0x00001018 add sp, sp, ip ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _0221541C: mov r0, r4 bl MOD04_021F0208 str r0, [r6, #0x108] ldr r0, [r6, #0x108] ldr ip, _02215618 ; =0x00001018 cmp r0, #0 moveq r0, #1 streq r0, [r6, #0xfc] add sp, sp, ip streq r0, [r6, #0x38] ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _02215448: ldr r1, _02215634 ; =0x02216F8C mov r0, r5 bl strstr movs sb, r0 beq _02215530 ldr r7, _02215638 ; =0x0221673C add r3, sp, #8 mov r2, #5 _02215468: ldrb r1, [r7], #1 ldrb r0, [r7], #1 subs r2, r2, #1 strb r1, [r3], #1 strb r0, [r3], #1 bne _02215468 ldrb r1, [r7] add r8, sb, #0x10 add r0, sp, #8 mov r7, r8 strb r1, [r3] bl strlen b _022154A0 _0221549C: add r7, r7, #1 _022154A0: cmp r7, #0 beq _022154CC ldrsb r1, [r7] cmp r1, #0 beq _022154CC cmp r1, #0xa beq _022154CC cmp r1, #0xd beq _022154CC cmp r1, #0x20 bne _0221549C _022154CC: sub r2, r7, r8 cmp r2, r0 ldrgt ip, _02215618 ; =0x00001018 movgt r0, #1 strgt r0, [r6, #0xfc] movgt r0, #0x10 addgt sp, sp, ip strgt r0, [r6, #0x38] ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} cmp r0, r2 bne _02215524 add r1, sp, #8 mov r0, r8 bl strncmp cmp r0, #0 ldrge ip, _02215618 ; =0x00001018 movge r0, #1 strge r0, [r6, #0xfc] movge r0, #0x10 addge sp, sp, ip strge r0, [r6, #0x38] ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _02215524: mov r0, r8 bl atol str r0, [r6, #0x104] _02215530: ldr r1, _0221563C ; =0x02216F9C mov r0, r5 bl strstr cmp r0, #0 movne r0, #1 moveq r0, #0 str r0, [r6, #0x110] ldr r0, [r6, #0x110] cmp r0, #0 movne r0, #0 strneb r0, [r6, #0x114] strne r0, [r6, #0x120] strne r0, [r6, #0x124] strne r0, [r6, #0x128] ldr r0, [r6, #0xc] sub r0, r0, #3 cmp r0, #1 ldrls ip, _02215618 ; =0x00001018 movls r0, #1 addls sp, sp, ip strls r0, [r6, #0xfc] ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} mov r0, #8 str r0, [r6, #0x10] cmp sb, #0 beq _022155B4 ldr r0, [r6, #0x104] cmp r0, #0 ldreq ip, _02215618 ; =0x00001018 moveq r0, #1 addeq sp, sp, ip streq r0, [r6, #0xfc] ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _022155B4: cmp sl, #0 ldrle ip, _02215618 ; =0x00001018 addle sp, sp, ip ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} mov r0, r6 mov r1, r4 mov r2, sl bl MOD79_02215640 ldr ip, _02215618 ; =0x00001018 add sp, sp, ip ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} _022155E0: cmp r4, #2 ldrne ip, _02215618 ; =0x00001018 addne sp, sp, ip ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} mov r0, #1 str r0, [r6, #0xfc] mov r0, #7 str r0, [r6, #0x38] ldr r0, [r6, #0x48] bl MOD04_021EFB28 str r0, [r6, #0x4c] ldr ip, _02215618 ; =0x00001018 add sp, sp, ip ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} .align 2, 0 _02215618: .word 0x00001018 _0221561C: .word 0x02216F64 _02215620: .word 0x02216F6C _02215624: .word 0x51EB851F _02215628: .word 0x02216F70 _0221562C: .word 0x0210430C _02215630: .word 0x02216F7C _02215634: .word 0x02216F8C _02215638: .word 0x0221673C _0221563C: .word 0x02216F9C arm_func_end MOD79_02215174 arm_func_start MOD79_02215640 MOD79_02215640: ; 0x02215640 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xc movs r6, r0 mov r5, r1 mov r4, r2 bne _0221566C ldr r0, _02215884 ; =0x02216FB8 ldr r1, _02215888 ; =0x02216FC4 ldr r3, _0221588C ; =0x0000035D mov r2, #0 bl __msl_assertion_failed _0221566C: cmp r5, #0 bne _02215688 ldr r0, _02215890 ; =0x02216FD4 ldr r1, _02215888 ; =0x02216FC4 ldr r3, _02215894 ; =0x0000035E mov r2, #0 bl __msl_assertion_failed _02215688: cmp r4, #0 bgt _022156A4 ldr r0, _02215898 ; =0x02216FDC ldr r1, _02215888 ; =0x02216FC4 ldr r3, _0221589C ; =0x0000035F mov r2, #0 bl __msl_assertion_failed _022156A4: ldr r0, [r6, #0x110] cmp r0, #0 beq _0221586C cmp r4, #0 ble _02215860 mov r0, #2 str r0, [sp, #4] mov r0, #1 add r8, r6, #0x124 mov sl, #0xa mov r7, #0 str r0, [sp] mov fp, #3 _022156D8: ldr r0, [r6, #0x128] cmp r0, #0 bne _02215780 mov r0, r5 mov r1, sl bl strchr movs sb, r0 beq _02215764 mov r0, r6 mov r1, r5 sub r2, sb, r5 bl MOD79_022158A8 add r1, sb, #1 sub r2, r1, r5 mov r0, r6 mov r5, r1 sub r4, r4, r2 bl MOD79_02215984 str r0, [r6, #0x124] ldr r1, [r6, #0x124] mvn r0, #0 cmp r1, r0 bne _02215750 mov r0, #1 str r0, [r6, #0xfc] mov r0, #7 str r0, [r6, #0x38] add sp, sp, #0xc mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _02215750: cmp r1, #0 ldrne r0, [sp] streq fp, [r6, #0x128] strne r0, [r6, #0x128] b _02215858 _02215764: mov r0, r6 mov r1, r5 mov r2, r4 bl MOD79_022158A8 add sp, sp, #0xc mov r0, #1 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _02215780: cmp r0, #1 bne _022157DC ldr sb, [r6, #0x124] mov r0, r6 cmp sb, r4 movge sb, r4 mov r1, r5 mov r2, sb bl MOD79_022159E4 cmp r0, #0 addeq sp, sp, #0xc moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r0, [r8] add r5, r5, sb sub r0, r0, sb str r0, [r8] ldr r0, [r6, #0x124] sub r4, r4, sb cmp r0, #0 ldreq r0, [sp, #4] streq r0, [r6, #0x128] b _02215858 _022157DC: cmp r0, #2 bne _02215824 mov r0, r5 mov r1, sl bl strchr cmp r0, #0 addeq sp, sp, #0xc moveq r0, #1 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} strb r7, [r6, #0x114] str r7, [r6, #0x120] add r0, r0, #1 sub r1, r0, r5 str r7, [r6, #0x124] mov r5, r0 str r7, [r6, #0x128] sub r4, r4, r1 b _02215858 _02215824: cmp r0, #3 moveq r0, #1 addeq sp, sp, #0xc streq r0, [r6, #0xfc] ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r0, _022158A0 ; =0x02216FE4 ldr r1, _02215888 ; =0x02216FC4 ldr r3, _022158A4 ; =0x000003E3 mov r2, #0 bl __msl_assertion_failed add sp, sp, #0xc mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _02215858: cmp r4, #0 bgt _022156D8 _02215860: add sp, sp, #0xc mov r0, #1 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} _0221586C: mov r0, r6 mov r1, r5 mov r2, r4 bl MOD79_022159E4 add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 _02215884: .word 0x02216FB8 _02215888: .word 0x02216FC4 _0221588C: .word 0x0000035D _02215890: .word 0x02216FD4 _02215894: .word 0x0000035E _02215898: .word 0x02216FDC _0221589C: .word 0x0000035F _022158A0: .word 0x02216FE4 _022158A4: .word 0x000003E3 arm_func_end MOD79_02215640 arm_func_start MOD79_022158A8 MOD79_022158A8: ; 0x022158A8 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 movs r4, r0 mov r7, r1 mov r6, r2 bne _022158D4 ldr r0, _0221596C ; =0x02216FB8 ldr r1, _02215970 ; =0x02216FC4 ldr r3, _02215974 ; =0x00000333 mov r2, #0 bl __msl_assertion_failed _022158D4: cmp r7, #0 bne _022158F0 ldr r0, _02215978 ; =0x02216FD4 ldr r1, _02215970 ; =0x02216FC4 mov r2, #0 mov r3, #0x334 bl __msl_assertion_failed _022158F0: cmp r6, #0 bge _0221590C ldr r0, _0221597C ; =0x02216FE8 ldr r1, _02215970 ; =0x02216FC4 ldr r3, _02215980 ; =0x00000335 mov r2, #0 bl __msl_assertion_failed _0221590C: cmp r6, #0 addeq sp, sp, #4 ldmeqia sp!, {r4, r5, r6, r7, pc} ldr r3, [r4, #0x120] cmp r3, #0xa addge sp, sp, #4 ldmgeia sp!, {r4, r5, r6, r7, pc} rsb r5, r3, #0xa cmp r5, r6 movge r5, r6 add r0, r4, #0x114 mov r1, r7 mov r2, r5 add r0, r0, r3 bl memcpy ldr r0, [r4, #0x120] mov r1, #0 add r0, r0, r5 str r0, [r4, #0x120] ldr r0, [r4, #0x120] add r0, r4, r0 strb r1, [r0, #0x114] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 _0221596C: .word 0x02216FB8 _02215970: .word 0x02216FC4 _02215974: .word 0x00000333 _02215978: .word 0x02216FD4 _0221597C: .word 0x02216FE8 _02215980: .word 0x00000335 arm_func_end MOD79_022158A8 arm_func_start MOD79_02215984 MOD79_02215984: ; 0x02215984 stmdb sp!, {r4, lr} sub sp, sp, #8 ldr r1, [r0, #0x120] add r4, r0, #0x114 cmp r1, #0 bne _022159B0 ldr r0, _022159D4 ; =0x02216FF4 ldr r1, _022159D8 ; =0x02216FC4 ldr r3, _022159DC ; =0x00000321 mov r2, #0 bl __msl_assertion_failed _022159B0: ldr r1, _022159E0 ; =0x02216FF8 add r2, sp, #0 mov r0, r4 bl sscanf cmp r0, #1 mvnne r0, #0 ldreq r0, [sp] add sp, sp, #8 ldmia sp!, {r4, pc} .align 2, 0 _022159D4: .word 0x02216FF4 _022159D8: .word 0x02216FC4 _022159DC: .word 0x00000321 _022159E0: .word 0x02216FF8 arm_func_end MOD79_02215984 arm_func_start MOD79_022159E4 MOD79_022159E4: ; 0x022159E4 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, [r4, #0x100] mov lr, #0 add r0, r0, r2 str r0, [r4, #0x100] ldr r3, [r4, #0x100] ldr r0, [r4, #0x104] mov ip, lr cmp r3, r0 beq _02215A1C ldr r0, [r4, #0x130] cmp r0, #0 beq _02215A24 _02215A1C: mov r0, #1 str r0, [r4, #0xfc] _02215A24: ldr r0, [r4, #0xc] cmp r0, #0 bne _02215A50 add r0, r4, #0xbc bl MOD79_02212794 cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} ldr lr, [r4, #0xc0] ldr ip, [r4, #0xc8] b _02215A90 _02215A50: cmp r0, #1 bne _02215A84 cmp r2, #0 beq _02215A78 mov r0, #1 str r0, [r4, #0xfc] mov r0, #0xd str r0, [r4, #0x38] mov r0, #0 ldmia sp!, {r4, pc} _02215A78: mov lr, r1 mov ip, r2 b _02215A90 _02215A84: cmp r0, #2 moveq lr, r1 moveq ip, r2 _02215A90: mov r0, r4 mov r1, lr mov r2, ip bl MOD79_02212E00 mov r0, #1 ldmia sp!, {r4, pc} arm_func_end MOD79_022159E4 arm_func_start MOD79_02215AA8 MOD79_02215AA8: ; 0x02215AA8 stmdb sp!, {r4, r5, lr} ldr ip, _02215BD0 ; =0x00000404 sub sp, sp, ip mov r3, #0x400 add r1, sp, #4 add r2, sp, #0 mov r4, r0 str r3, [sp] bl MOD79_02212FF0 mov r5, r0 cmp r5, #3 ldreq ip, _02215BD0 ; =0x00000404 addeq sp, sp, ip ldmeqia sp!, {r4, r5, pc} cmp r5, #1 bne _02215B00 ldr r1, [r4, #0x84] ldr r0, [r4, #0x80] cmp r1, r0 ldreq ip, _02215BD0 ; =0x00000404 addeq sp, sp, ip ldmeqia sp!, {r4, r5, pc} _02215B00: cmp r5, #0 bne _02215B28 ldr r2, [sp] add r1, sp, #4 add r0, r4, #0x74 bl MOD79_02212794 cmp r0, #0 ldreq ip, _02215BD0 ; =0x00000404 addeq sp, sp, ip ldmeqia sp!, {r4, r5, pc} _02215B28: ldr r0, [r4, #0x78] ldr r1, _02215BD4 ; =0x02216FFC bl strstr cmp r0, #0 beq _02215B98 mov r1, #0 strb r1, [r0] ldr r1, [r4, #0x78] sub r5, r0, r1 add r1, r5, #1 mov r0, r4 str r1, [r4, #0xf8] bl MOD79_02215BD8 cmp r0, #0 ldreq ip, _02215BD0 ; =0x00000404 addeq sp, sp, ip ldmeqia sp!, {r4, r5, pc} add r3, r5, #2 mov r1, #0 str r3, [r4, #0x84] mov r3, #7 mov r0, r4 mov r2, r1 str r3, [r4, #0x10] bl MOD79_02212E00 ldr ip, _02215BD0 ; =0x00000404 add sp, sp, ip ldmia sp!, {r4, r5, pc} _02215B98: cmp r5, #2 ldrne ip, _02215BD0 ; =0x00000404 addne sp, sp, ip ldmneia sp!, {r4, r5, pc} mov r0, #1 str r0, [r4, #0xfc] mov r0, #7 str r0, [r4, #0x38] ldr r0, [r4, #0x48] bl MOD04_021EFB28 str r0, [r4, #0x4c] ldr ip, _02215BD0 ; =0x00000404 add sp, sp, ip ldmia sp!, {r4, r5, pc} .align 2, 0 _02215BD0: .word 0x00000404 _02215BD4: .word 0x02216FFC arm_func_end MOD79_02215AA8 arm_func_start MOD79_02215BD8 MOD79_02215BD8: ; 0x02215BD8 stmdb sp!, {r4, lr} sub sp, sp, #0x18 movs r4, r0 bne _02215BFC ldr r0, _02215D0C ; =0x02216FB8 ldr r1, _02215D10 ; =0x02216FC4 ldr r3, _02215D14 ; =0x0000024E mov r2, #0 bl __msl_assertion_failed _02215BFC: ldr r0, [r4, #0x80] cmp r0, #0 bgt _02215C1C ldr r0, _02215D18 ; =0x02217000 ldr r1, _02215D10 ; =0x02216FC4 ldr r3, _02215D1C ; =0x0000024F mov r2, #0 bl __msl_assertion_failed _02215C1C: add r1, sp, #0x10 str r1, [sp] add r0, sp, #0x14 str r0, [sp, #4] ldr r0, [r4, #0x78] ldr r1, _02215D20 ; =0x02217020 add r2, sp, #8 add r3, sp, #0xc bl sscanf mov r3, #0 mov ip, #1 ldr r2, _02215D24 ; =0x0210430C b _02215C5C _02215C50: ldr r1, [sp, #0x14] add r1, r1, #1 str r1, [sp, #0x14] _02215C5C: ldr lr, [r4, #0x78] ldr r1, [sp, #0x14] ldrsb lr, [lr, r1] cmp lr, #0 beq _02215CA0 mov r1, ip cmp lr, #0 blt _02215C84 cmp lr, #0x80 movlt r1, r3 _02215C84: cmp r1, #0 movne r1, r3 moveq r1, lr, lsl #1 ldreqh r1, [r2, r1] andeq r1, r1, #0x100 cmp r1, #0 bne _02215C50 _02215CA0: cmp r0, #3 bne _02215CC8 ldr r1, [sp, #8] cmp r1, #1 blt _02215CC8 ldr r0, [sp, #0x10] cmp r0, #0x64 blt _02215CC8 cmp r0, #0x258 blt _02215CE4 _02215CC8: mov r0, #1 str r0, [r4, #0xfc] mov r0, #7 str r0, [r4, #0x38] add sp, sp, #0x18 mov r0, #0 ldmia sp!, {r4, pc} _02215CE4: str r1, [r4, #0xe4] ldr r1, [sp, #0xc] mov r0, #1 str r1, [r4, #0xe8] ldr r1, [sp, #0x10] str r1, [r4, #0xec] ldr r1, [sp, #0x14] str r1, [r4, #0xf0] add sp, sp, #0x18 ldmia sp!, {r4, pc} .align 2, 0 _02215D0C: .word 0x02216FB8 _02215D10: .word 0x02216FC4 _02215D14: .word 0x0000024E _02215D18: .word 0x02217000 _02215D1C: .word 0x0000024F _02215D20: .word 0x02217020 _02215D24: .word 0x0210430C arm_func_end MOD79_02215BD8 arm_func_start MOD79_02215D28 MOD79_02215D28: ; 0x02215D28 stmdb sp!, {r4, lr} sub sp, sp, #8 mov r4, r0 mov r2, #0 ldr r0, [r4, #0x48] add r1, sp, #0 mov r3, r2 bl MOD04_021EFF5C mvn r1, #0 cmp r0, r1 bne _02215D78 mov r0, #1 str r0, [r4, #0xfc] mov r0, #5 str r0, [r4, #0x38] ldr r0, [r4, #0x48] bl MOD04_021EFB28 add sp, sp, #8 str r0, [r4, #0x4c] ldmia sp!, {r4, pc} _02215D78: ldr r0, [sp] cmp r0, #0 addeq sp, sp, #8 ldmeqia sp!, {r4, pc} mov r1, #0 mov r3, #6 mov r0, r4 mov r2, r1 str r3, [r4, #0x10] bl MOD79_02212E00 add sp, sp, #8 ldmia sp!, {r4, pc} arm_func_end MOD79_02215D28 arm_func_start MOD79_02215DA8 MOD79_02215DA8: ; 0x02215DA8 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 ldr r4, [r6, #0x148] bl MOD79_022140D4 movs r5, r0 bne _02215DF8 ldr r0, [r6, #0xfc] cmp r0, #0 beq _02215DD8 ldr r0, [r6, #0x38] cmp r0, #0 bne _02215DEC _02215DD8: ldr r0, _02215E38 ; =0x02217030 ldr r1, _02215E3C ; =0x02216FC4 mov r2, #0 mov r3, #0x200 bl __msl_assertion_failed _02215DEC: mov r0, r6 bl MOD79_022149E4 ldmia sp!, {r4, r5, r6, pc} _02215DF8: ldr r0, [r6, #0x148] cmp r4, r0 beq _02215E0C mov r0, r6 bl MOD79_02212D90 _02215E0C: cmp r5, #1 ldmneia sp!, {r4, r5, r6, pc} mov r0, r6 bl MOD79_022149E4 mov r1, #0 mov r3, #5 mov r0, r6 mov r2, r1 str r3, [r6, #0x10] bl MOD79_02212E00 ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _02215E38: .word 0x02217030 _02215E3C: .word 0x02216FC4 arm_func_end MOD79_02215DA8 arm_func_start MOD79_02215E40 MOD79_02215E40: ; 0x02215E40 stmdb sp!, {r4, r5, lr} sub sp, sp, #0x14 mov r5, r0 ldr r0, [r5, #0x5c] cmp r0, #0 bne _02216020 ldr r0, [r5, #0x13c] add r4, r5, #0x50 cmp r0, #0 ldrne r1, _02216080 ; =0x0221705C bne _02215E7C ldr r0, [r5, #0xc] cmp r0, #3 ldreq r1, _02216084 ; =0x02217064 ldrne r1, _02216088 ; =0x0221706C _02215E7C: mov r0, r4 mov r2, #0 bl MOD79_02212794 ldr r0, [r5, #0x15c] cmp r0, #0 bne _02215EA4 ldr r0, _0221608C ; =0x02217128 ldr r0, [r0] cmp r0, #0 beq _02215EB8 _02215EA4: ldr r1, [r5, #0x14] mov r0, r4 mov r2, #0 bl MOD79_02212794 b _02215EC8 _02215EB8: ldr r1, [r5, #0x24] mov r0, r4 mov r2, #0 bl MOD79_02212794 _02215EC8: ldr r1, _02216090 ; =0x02217074 mov r0, r4 mov r2, #0 bl MOD79_02212794 ldrh r0, [r5, #0x20] cmp r0, #0x50 bne _02215EF8 ldr r2, [r5, #0x18] ldr r1, _02216094 ; =0x02217080 mov r0, r4 bl MOD79_02212700 b _02215F40 _02215EF8: ldr r1, _02216098 ; =0x02217088 mov r0, r4 mov r2, #0 bl MOD79_02212794 ldr r1, [r5, #0x18] mov r0, r4 mov r2, #0 bl MOD79_02212794 mov r0, r4 mov r1, #0x3a bl MOD79_022126A4 ldrh r1, [r5, #0x20] mov r0, r4 bl MOD79_0221266C mov r0, r4 ldr r1, _0221609C ; =0x02216FFC mov r2, #2 bl MOD79_02212794 _02215F40: ldr r0, [r5, #0x28] cmp r0, #0 beq _02215F5C ldr r1, _022160A0 ; =0x02217090 bl strstr cmp r0, #0 bne _02215F6C _02215F5C: ldr r1, _022160A0 ; =0x02217090 ldr r2, _022160A4 ; =0x0221709C mov r0, r4 bl MOD79_02212700 _02215F6C: ldr r0, [r5, #0x34] cmp r0, #0 beq _02215F8C ldr r1, _022160A8 ; =0x022170AC ldr r2, _022160AC ; =0x022170B8 mov r0, r4 bl MOD79_02212700 b _02215F9C _02215F8C: ldr r1, _022160A8 ; =0x022170AC ldr r2, _022160B0 ; =0x022170C4 mov r0, r4 bl MOD79_02212700 _02215F9C: ldr r0, [r5, #0x13c] cmp r0, #0 beq _02215FE0 ldr r2, [r5, #0x14c] ldr r1, _022160B4 ; =0x022170CC add r0, sp, #0 bl sprintf ldr r1, _022160B8 ; =0x022170D0 add r2, sp, #0 mov r0, r4 bl MOD79_02212700 mov r0, r5 bl MOD79_02214FFC mov r2, r0 ldr r1, _022160BC ; =0x022170E0 mov r0, r4 bl MOD79_02212700 _02215FE0: ldr r1, [r5, #0x28] cmp r1, #0 beq _02215FF8 mov r0, r4 mov r2, #0 bl MOD79_02212794 _02215FF8: ldr r1, _0221609C ; =0x02216FFC mov r0, r4 mov r2, #2 bl MOD79_02212794 add r0, r5, #0x50 cmp r4, r0 beq _02216020 ldr r1, [r4, #4] ldr r2, [r4, #0xc] bl MOD79_02212794 _02216020: mov r0, r5 bl MOD79_02212554 cmp r0, #0 addeq sp, sp, #0x14 ldmeqia sp!, {r4, r5, pc} ldr r1, [r5, #0x60] ldr r0, [r5, #0x5c] cmp r1, r0 addlt sp, sp, #0x14 ldmltia sp!, {r4, r5, pc} add r0, r5, #0x50 bl MOD79_0221262C ldr r0, [r5, #0x13c] mov r1, #0 cmp r0, #0 movne r0, #4 strne r0, [r5, #0x10] moveq r0, #5 streq r0, [r5, #0x10] mov r0, r5 mov r2, r1 bl MOD79_02212E00 add sp, sp, #0x14 ldmia sp!, {r4, r5, pc} .align 2, 0 _02216080: .word 0x0221705C _02216084: .word 0x02217064 _02216088: .word 0x0221706C _0221608C: .word 0x02217128 _02216090: .word 0x02217074 _02216094: .word 0x02217080 _02216098: .word 0x02217088 _0221609C: .word 0x02216FFC _022160A0: .word 0x02217090 _022160A4: .word 0x0221709C _022160A8: .word 0x022170AC _022160AC: .word 0x022170B8 _022160B0: .word 0x022170C4 _022160B4: .word 0x022170CC _022160B8: .word 0x022170D0 _022160BC: .word 0x022170E0 arm_func_end MOD79_02215E40 arm_func_start MOD79_022160C0 MOD79_022160C0: ; 0x022160C0 stmdb sp!, {r4, lr} ldr ip, _02216208 ; =0x00000408 sub sp, sp, ip mov r4, r0 ldr r1, [r4, #0x168] cmp r1, #0 bne _02216130 ldr r0, [r4, #0x14] ldr r1, _0221620C ; =0x022170F0 mov r2, #8 bl strncmp cmp r0, #0 ldreq ip, _02216208 ; =0x00000408 moveq r0, #1 streq r0, [r4, #0xfc] moveq r0, #0x11 addeq sp, sp, ip streq r0, [r4, #0x38] ldmeqia sp!, {r4, pc} mov r1, #0 mov r3, #3 mov r0, r4 mov r2, r1 str r3, [r4, #0x10] bl MOD79_02212E00 ldr ip, _02216208 ; =0x00000408 add sp, sp, ip ldmia sp!, {r4, pc} _02216130: ldr r1, [r4, #0x170] cmp r1, #0 beq _0221615C mov r1, #0 mov r3, #3 mov r2, r1 str r3, [r4, #0x10] bl MOD79_02212E00 ldr ip, _02216208 ; =0x00000408 add sp, sp, ip ldmia sp!, {r4, pc} _0221615C: ldr r1, [r4, #0x16c] cmp r1, #0 bne _0221619C ldr r2, [r4, #0x174] add r1, r4, #0x164 .word 0xE12FFF32 cmp r0, #3 bne _0221619C ldr r0, _02216210 ; =0x02216FE4 ldr r1, _02216214 ; =0x02216FC4 ldr r3, _02216218 ; =0x00000146 mov r2, #0 bl __msl_assertion_failed ldr ip, _02216208 ; =0x00000408 add sp, sp, ip ldmia sp!, {r4, pc} _0221619C: ldr r1, [r4, #0x60] ldr r0, [r4, #0x5c] cmp r1, r0 bge _022161E4 mov r0, r4 bl MOD79_02212554 cmp r0, #0 ldreq ip, _02216208 ; =0x00000408 addeq sp, sp, ip ldmeqia sp!, {r4, pc} ldr r1, [r4, #0x60] ldr r0, [r4, #0x5c] cmp r1, r0 ldrlt ip, _02216208 ; =0x00000408 addlt sp, sp, ip ldmltia sp!, {r4, pc} add r0, r4, #0x50 bl MOD79_0221262C _022161E4: mov r3, #0x400 add r1, sp, #4 add r2, sp, #0 mov r0, r4 str r3, [sp] bl MOD79_02212FF0 ldr ip, _02216208 ; =0x00000408 add sp, sp, ip ldmia sp!, {r4, pc} .align 2, 0 _02216208: .word 0x00000408 _0221620C: .word 0x022170F0 _02216210: .word 0x02216FE4 _02216214: .word 0x02216FC4 _02216218: .word 0x00000146 arm_func_end MOD79_022160C0 arm_func_start MOD79_0221621C MOD79_0221621C: ; 0x0221621C stmdb sp!, {r4, lr} sub sp, sp, #0x10 mov r4, r0 ldr r1, [r4, #0x48] mvn r0, #0 cmp r1, r0 bne _022163D4 mov r0, #2 mov r1, #1 mov r2, #0 bl MOD04_021EFDB8 str r0, [r4, #0x48] ldr r0, [r4, #0x48] mvn r1, #0 cmp r0, r1 bne _02216280 mov r0, #1 str r0, [r4, #0xfc] mov r0, #5 str r0, [r4, #0x38] ldr r0, [r4, #0x48] bl MOD04_021EFB28 add sp, sp, #0x10 str r0, [r4, #0x4c] ldmia sp!, {r4, pc} _02216280: mov r1, #0 bl MOD04_021F017C cmp r0, #0 bne _022162B4 mov r0, #1 str r0, [r4, #0xfc] mov r0, #5 str r0, [r4, #0x38] ldr r0, [r4, #0x48] bl MOD04_021EFB28 add sp, sp, #0x10 str r0, [r4, #0x4c] ldmia sp!, {r4, pc} _022162B4: ldr r0, [r4, #0x134] cmp r0, #0 beq _022162D0 ldr r1, _0221646C ; =0x0221695C ldr r0, [r4, #0x48] ldr r1, [r1] bl MOD04_021F0130 _022162D0: add r1, sp, #0 mov r0, #0 str r0, [r1] str r0, [r1, #4] mov r0, #2 strb r0, [sp, #1] ldr r0, [r4, #0x15c] cmp r0, #0 beq _02216318 add r0, r4, #0x100 ldrh r0, [r0, #0x60] mov r1, r0, asr #8 mov r0, r0, lsl #8 and r1, r1, #0xff and r0, r0, #0xff00 orr r0, r1, r0 strh r0, [sp, #2] b _02216368 _02216318: ldr r0, _02216470 ; =0x02217128 ldr r0, [r0] cmp r0, #0 beq _0221634C ldr r0, _02216474 ; =0x02217124 ldrh r0, [r0] mov r1, r0, asr #8 mov r0, r0, lsl #8 and r1, r1, #0xff and r0, r0, #0xff00 orr r0, r1, r0 strh r0, [sp, #2] b _02216368 _0221634C: ldrh r0, [r4, #0x20] mov r1, r0, asr #8 mov r0, r0, lsl #8 and r1, r1, #0xff and r0, r0, #0xff00 orr r0, r1, r0 strh r0, [sp, #2] _02216368: ldr r0, [r4, #0x1c] add r1, sp, #0 str r0, [sp, #4] ldr r0, [r4, #0x48] mov r2, #8 bl MOD04_021EFCE4 mvn r1, #0 cmp r0, r1 bne _022163D4 ldr r0, [r4, #0x48] bl MOD04_021EFB28 mvn r1, #5 cmp r0, r1 beq _022163D4 mvn r1, #0x19 cmp r0, r1 beq _022163D4 mvn r1, #0x4b cmp r0, r1 beq _022163D4 mov r1, #1 str r1, [r4, #0xfc] mov r1, #6 str r1, [r4, #0x38] add sp, sp, #0x10 str r0, [r4, #0x4c] ldmia sp!, {r4, pc} _022163D4: ldr r0, [r4, #0x48] add r2, sp, #8 add r3, sp, #0xc mov r1, #0 bl MOD04_021EFF5C cmp r0, #0 movgt r1, #1 movle r1, #0 mvn r0, #0 cmp r1, r0 beq _0221640C ldr r0, [sp, #0xc] cmp r0, #0 beq _0221643C _0221640C: mov r0, #1 str r0, [r4, #0xfc] mov r0, #6 cmp r1, #0 addne sp, sp, #0x10 str r0, [r4, #0x38] ldmneia sp!, {r4, pc} ldr r0, [r4, #0x48] bl MOD04_021EFB28 add sp, sp, #0x10 str r0, [r4, #0x4c] ldmia sp!, {r4, pc} _0221643C: ldr r0, [sp, #8] cmp r0, #0 addeq sp, sp, #0x10 ldmeqia sp!, {r4, pc} mov r1, #0 mov r3, #2 mov r0, r4 mov r2, r1 str r3, [r4, #0x10] bl MOD79_02212E00 add sp, sp, #0x10 ldmia sp!, {r4, pc} .align 2, 0 _0221646C: .word 0x0221695C _02216470: .word 0x02217128 _02216474: .word 0x02217124 arm_func_end MOD79_0221621C arm_func_start MOD79_02216478 MOD79_02216478: ; 0x02216478 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r1, #0 mov r4, r0 mov r2, r1 bl MOD79_02212E00 bl MOD04_021F024C mov r0, r4 bl MOD79_02216548 cmp r0, #0 moveq r0, #1 streq r0, [r4, #0xfc] moveq r0, #3 addeq sp, sp, #4 streq r0, [r4, #0x38] ldmeqia sp!, {r4, r5, pc} ldr r5, [r4, #0x15c] cmp r5, #0 bne _022164D4 ldr r0, _02216544 ; =0x02217128 ldr r5, [r0] cmp r5, #0 ldreq r5, [r4, #0x18] _022164D4: mov r0, r5 bl MOD04_021EFB38 str r0, [r4, #0x1c] ldr r1, [r4, #0x1c] mvn r0, #0 cmp r1, r0 bne _02216524 mov r0, r5 bl FUN_0209A6EC cmp r0, #0 moveq r0, #1 streq r0, [r4, #0xfc] moveq r0, #4 addeq sp, sp, #4 streq r0, [r4, #0x38] ldmeqia sp!, {r4, r5, pc} ldr r0, [r0, #0xc] ldr r0, [r0] ldr r0, [r0] str r0, [r4, #0x1c] _02216524: mov r1, #0 mov r3, #1 mov r0, r4 mov r2, r1 str r3, [r4, #0x10] bl MOD79_02212E00 add sp, sp, #4 ldmia sp!, {r4, r5, pc} .align 2, 0 _02216544: .word 0x02217128 arm_func_end MOD79_02216478 arm_func_start MOD79_02216548 MOD79_02216548: ; 0x02216548 stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #4 movs r7, r0 bne _0221656C ldr r0, _02216704 ; =0x02216FB8 ldr r1, _02216708 ; =0x02216FC4 mov r2, #0 mov r3, #0x25 bl __msl_assertion_failed _0221656C: cmp r7, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} ldr r0, [r7, #0x14] cmp r0, #0 bne _0221659C ldr r0, _0221670C ; =0x022170FC ldr r1, _02216708 ; =0x02216FC4 mov r2, #0 mov r3, #0x2b bl __msl_assertion_failed _0221659C: ldr r6, [r7, #0x14] cmp r6, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} ldr r1, _02216710 ; =0x0221710C mov r0, r6 mov r2, #7 bl strncmp cmp r0, #0 addeq r6, r6, #7 moveq r4, #0 beq _022165FC ldr r1, _02216714 ; =0x022170F0 mov r0, r6 mov r2, #8 bl strncmp cmp r0, #0 addeq r6, r6, #8 moveq r4, #1 beq _022165FC add sp, sp, #4 mov r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} _022165FC: ldr r1, _02216718 ; =0x02217114 mov r0, r6 bl strspn mov r8, r0 ldrsb r5, [r6, r8] mov r1, #0 mov r0, r6 strb r1, [r6, r8] add sb, r6, r8 bl MOD04_021F0208 str r0, [r7, #0x18] ldr r0, [r7, #0x18] cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} strb r5, [sb] ldrsb r0, [r6, r8]! cmp r0, #0x3a bne _02216688 add r6, r6, #1 mov r0, r6 bl atol strh r0, [r7, #0x20] ldrh r0, [r7, #0x20] cmp r0, #0 addeq sp, sp, #4 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} _02216670: ldrsb r0, [r6, #1]! cmp r0, #0 beq _0221669C cmp r0, #0x2f bne _02216670 b _0221669C _02216688: cmp r4, #0 ldrne r0, _0221671C ; =0x000001BB strneh r0, [r7, #0x20] moveq r0, #0x50 streqh r0, [r7, #0x20] _0221669C: ldrsb r0, [r6] cmp r0, #0 ldreq r6, _02216720 ; =0x02217118 mov r0, r6 bl MOD04_021F0208 str r0, [r7, #0x24] ldr r6, [r7, #0x24] mov r1, #0x20 mov r0, r6 bl strchr cmp r0, #0 beq _022166F0 mov r5, #0x2b mov r4, #0x20 _022166D4: strb r5, [r0] ldr r6, [r7, #0x24] mov r1, r4 mov r0, r6 bl strchr cmp r0, #0 bne _022166D4 _022166F0: cmp r6, #0 movne r0, #1 moveq r0, #0 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _02216704: .word 0x02216FB8 _02216708: .word 0x02216FC4 _0221670C: .word 0x022170FC _02216710: .word 0x0221710C _02216714: .word 0x022170F0 _02216718: .word 0x02217114 _0221671C: .word 0x000001BB _02216720: .word 0x02217118 arm_func_end MOD79_02216548 ; 0x02216724 .section .rodata ; 0x02216738 .incbin "baserom.nds", 0x2DE6D8, 0x10 .section .data ; 0x0221686C .incbin "baserom.nds", 0x2DE80C, 0x8B4