.include "asm/macros.inc" .include "global.inc" .extern UNK_020FBC7E .extern UNK_020FBC6C .extern UNK_020FBC76 .extern UNK_020FBC80 .extern UNK_020FBC18 .extern UNK_020FBC70 .extern UNK_020FBC6A .extern UNK_020FBC74 .extern UNK_020FBC68 .extern UNK_020FBC78 .extern UNK_020FBC6E .extern UNK_020FBC72 .extern UNK_020FBC08 .extern UNK_020FBC7C .extern UNK_020FBC7A .text thumb_func_start FUN_020828BC FUN_020828BC: ; 0x020828BC ldr r2, _020828E0 ; =0x00000171 ldrb r1, [r0, r2] cmp r1, #0x0 beq _020828D6 cmp r1, #0x1 bne _020828DA add r1, r2, #0x0 sub r1, #0x55 sub r2, #0x4e ldrb r1, [r0, r1] ldrb r0, [r0, r2] cmp r1, r0 bne _020828DA _020828D6: mov r0, #0x1 bx lr _020828DA: mov r0, #0x0 bx lr nop _020828E0: .word 0x00000171 thumb_func_start FUN_020828E4 FUN_020828E4: ; 0x020828E4 push {r3-r7, lr} sub sp, #0x58 str r0, [sp, #0x4] ldr r0, [sp, #0x70] mov r6, #0x0 str r0, [sp, #0x70] ldr r0, [sp, #0x74] add r5, r1, #0x0 add r4, r3, #0x0 str r2, [sp, #0x8] str r6, [sp, #0x20] str r6, [sp, #0x18] str r6, [sp, #0x1c] cmp r0, #0x8 bhi _0208292A add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0208290E: ; jump table (using 16-bit offset) .short _0208292A - _0208290E - 2; case 0 .short _0208292A - _0208290E - 2; case 1 .short _0208292A - _0208290E - 2; case 2 .short _02082920 - _0208290E - 2; case 3 .short _02082926 - _0208290E - 2; case 4 .short _02082920 - _0208290E - 2; case 5 .short _02082926 - _0208290E - 2; case 6 .short _02082920 - _0208290E - 2; case 7 .short _02082926 - _0208290E - 2; case 8 _02082920: mov r0, #0x1 str r0, [sp, #0x18] b _0208292A _02082926: mov r0, #0x1 str r0, [sp, #0x1c] _0208292A: mov r0, #0x1 mov r1, #0x0 str r0, [sp, #0x0] mov r0, #0x5a add r2, r1, #0x0 add r3, r5, #0x0 bl FUN_02006C98 str r0, [sp, #0x14] mov r0, #0x5a mov r1, #0x0 bl LoadFromNARC_7 mov r1, #0x30 bl _u32_div_f str r0, [sp, #0x24] ldr r1, [sp, #0x24] add r0, r5, #0x0 add r1, r1, #0x1 bl FUN_020169D8 add r5, r0, #0x0 ldr r0, [sp, #0x78] cmp r0, #0x1 bne _02082968 ldr r0, [sp, #0x7c] cmp r0, #0x1 bne _02082968 mov r0, #0x1 str r0, [sp, #0x20] _02082968: ldr r0, [sp, #0x24] mov r2, #0x0 cmp r0, #0x0 ble _02082A1A ldr r3, [sp, #0x14] _02082972: ldrh r7, [r3, #0x20] lsl r0, r7, #0x1d lsr r1, r0, #0x1d ldr r0, [sp, #0x70] cmp r0, r1 bne _02082A10 ldr r0, [sp, #0x20] cmp r0, #0x1 bne _0208298E lsl r0, r7, #0x14 lsr r0, r0, #0x1e cmp r0, #0x1 beq _02082A10 b _0208299A _0208298E: lsl r0, r7, #0x14 lsr r0, r0, #0x1e cmp r0, #0x2 beq _02082A10 cmp r0, #0x3 beq _02082A10 _0208299A: ldr r0, [sp, #0x18] cmp r0, #0x1 bne _020829AA ldrh r0, [r3, #0x20] lsl r0, r0, #0x16 lsr r0, r0, #0x1f beq _02082A10 b _020829CA _020829AA: ldr r0, [sp, #0x1c] cmp r0, #0x1 ldrh r0, [r3, #0x20] bne _020829BA lsl r0, r0, #0x17 lsr r0, r0, #0x1f beq _02082A10 b _020829CA _020829BA: lsl r1, r0, #0x16 lsr r1, r1, #0x1f cmp r1, #0x1 beq _02082A10 lsl r0, r0, #0x17 lsr r0, r0, #0x1f cmp r0, #0x1 beq _02082A10 _020829CA: cmp r4, #0x0 bne _020829D6 ldrh r0, [r3, #0x20] lsl r0, r0, #0x1c lsr r0, r0, #0x1f bne _02082A06 _020829D6: cmp r4, #0x1 bne _020829E2 ldrh r0, [r3, #0x20] lsl r0, r0, #0x1b lsr r0, r0, #0x1f bne _02082A06 _020829E2: cmp r4, #0x2 bne _020829EE ldrh r0, [r3, #0x20] lsl r0, r0, #0x1a lsr r0, r0, #0x1f bne _02082A06 _020829EE: cmp r4, #0x3 bne _020829FA ldrh r0, [r3, #0x20] lsl r0, r0, #0x19 lsr r0, r0, #0x1f bne _02082A06 _020829FA: cmp r4, #0x4 bne _02082A10 ldrh r0, [r3, #0x20] lsl r0, r0, #0x18 lsr r0, r0, #0x1f beq _02082A10 _02082A06: add r1, r6, #0x1 add r0, r6, #0x0 lsl r1, r1, #0x18 lsr r6, r1, #0x18 strb r2, [r5, r0] _02082A10: ldr r0, [sp, #0x24] add r2, r2, #0x1 add r3, #0x30 cmp r2, r0 blt _02082972 _02082A1A: mov r0, #0xff strb r0, [r5, r6] ldr r0, [sp, #0x1c] cmp r0, #0x0 beq _02082A26 b _02082B4E _02082A26: ldr r0, [sp, #0x8] cmp r6, r0 bge _02082A30 bl ErrorHandling _02082A30: mov r0, #0x0 str r0, [sp, #0x10] cmp r6, #0x0 ble _02082A5A mov r2, #0x30 _02082A3A: ldrb r1, [r5, r0] add r3, r1, #0x0 ldr r1, [sp, #0x14] mul r3, r2 add r1, r1, r3 ldrh r1, [r1, #0x20] lsl r1, r1, #0x14 lsr r1, r1, #0x1e cmp r1, #0x3 bne _02082A54 ldr r1, [sp, #0x10] add r1, r1, #0x1 str r1, [sp, #0x10] _02082A54: add r0, r0, #0x1 cmp r0, r6 blt _02082A3A _02082A5A: ldr r0, [sp, #0x10] cmp r0, #0x0 ble _02082AA2 ldr r0, [sp, #0x4] bl FUN_02082878 ldr r1, [sp, #0x10] bl _s32_div_f mov r3, #0x0 cmp r6, #0x0 ble _02082AA2 mov r0, #0x30 _02082A74: ldrb r4, [r5, r3] add r2, r4, #0x0 ldr r4, [sp, #0x14] mul r2, r0 add r2, r4, r2 ldrh r4, [r2, #0x20] lsl r4, r4, #0x14 lsr r4, r4, #0x1e cmp r4, #0x3 bne _02082A9C cmp r1, #0x0 bne _02082A9A add r4, sp, #0x28 mov r3, #0x6 _02082A90: ldmia r2!, {r0-r1} stmia r4!, {r0-r1} sub r3, r3, #0x1 bne _02082A90 b _02082AA2 _02082A9A: sub r1, r1, #0x1 _02082A9C: add r3, r3, #0x1 cmp r3, r6 blt _02082A74 _02082AA2: ldr r0, [sp, #0x8] mov r1, #0x4 sub r4, r1, r0 add r0, r4, #0x0 str r4, [sp, #0xc] cmp r0, #0x4 bge _02082B16 _02082AB0: ldr r0, [sp, #0x4] bl FUN_02082878 add r1, r6, #0x0 bl _s32_div_f lsl r0, r1, #0x10 lsr r2, r0, #0x10 ldrb r3, [r5, r2] mov r0, #0x30 add r1, r3, #0x0 ldr r3, [sp, #0x14] mul r1, r0 add r7, r3, r1 ldrh r1, [r7, #0x20] lsl r1, r1, #0x14 lsr r1, r1, #0x1e cmp r1, #0x3 bne _02082ADA sub r4, r4, #0x1 b _02082B10 _02082ADA: add r1, r4, #0x0 mul r1, r0 ldr r0, [sp, #0x4] add r3, r0, r1 mov r0, #0x6 add r3, #0x10 mov r12, r0 _02082AE8: ldmia r7!, {r0-r1} stmia r3!, {r0-r1} mov r0, r12 sub r0, r0, #0x1 mov r12, r0 bne _02082AE8 ldrb r1, [r5, r2] add r0, r5, r2 cmp r1, #0xff beq _02082B0A _02082AFC: ldrb r1, [r0, #0x1] add r2, r2, #0x1 strb r1, [r0, #0x0] ldrb r1, [r5, r2] add r0, r5, r2 cmp r1, #0xff bne _02082AFC _02082B0A: sub r0, r6, #0x1 lsl r0, r0, #0x18 lsr r6, r0, #0x18 _02082B10: add r4, r4, #0x1 cmp r4, #0x4 blt _02082AB0 _02082B16: ldr r0, [sp, #0x10] cmp r0, #0x0 ble _02082B7E ldr r0, [sp, #0xc] lsl r0, r0, #0x10 lsr r4, r0, #0x10 ldr r0, [sp, #0x4] bl FUN_02082878 ldr r1, [sp, #0x8] bl _s32_div_f add r0, r4, r1 lsl r0, r0, #0x10 lsr r2, r0, #0x10 add r1, r2, #0x0 mov r0, #0x30 mul r1, r0 ldr r0, [sp, #0x4] add r4, sp, #0x28 add r3, r0, r1 add r3, #0x10 mov r2, #0x6 _02082B44: ldmia r4!, {r0-r1} stmia r3!, {r0-r1} sub r2, r2, #0x1 bne _02082B44 b _02082B7E _02082B4E: cmp r6, #0x4 bhs _02082B56 bl ErrorHandling _02082B56: mov r6, #0x0 mov r7, #0x30 _02082B5A: ldrb r0, [r5, r6] ldr r3, [sp, #0x4] mov r2, #0x6 add r1, r0, #0x0 ldr r0, [sp, #0x14] mul r1, r7 add r4, r0, r1 add r3, #0x10 _02082B6A: ldmia r4!, {r0-r1} stmia r3!, {r0-r1} sub r2, r2, #0x1 bne _02082B6A ldr r0, [sp, #0x4] add r6, r6, #0x1 add r0, #0x30 str r0, [sp, #0x4] cmp r6, #0x4 blt _02082B5A _02082B7E: add r0, r5, #0x0 bl FUN_02016A18 ldr r0, [sp, #0x14] bl FUN_02016A18 add sp, #0x58 pop {r3-r7, pc} .balign 4 thumb_func_start FUN_02082B90 FUN_02082B90: ; 0x02082B90 push {r3-r7, lr} sub sp, #0x18 str r0, [sp, #0x8] mov r0, #0x1 add r3, r1, #0x0 str r0, [sp, #0x0] mov r0, #0x5a mov r1, #0x2 mov r2, #0x0 bl FUN_02006C98 str r0, [sp, #0x14] ldr r1, _02082D10 ; =0x00000121 ldr r0, [sp, #0x8] ldrb r0, [r0, r1] cmp r0, #0x4 beq _02082BBA cmp r0, #0x6 beq _02082BBA cmp r0, #0x8 bne _02082BC0 _02082BBA: mov r0, #0x0 str r0, [sp, #0xc] b _02082BC8 _02082BC0: ldr r0, [sp, #0x8] add r1, r1, #0x6 ldrb r0, [r0, r1] str r0, [sp, #0xc] _02082BC8: ldr r0, [sp, #0xc] cmp r0, #0x4 blt _02082BD0 b _02082D06 _02082BD0: mov r1, #0x30 mul r1, r0 ldr r0, [sp, #0x8] add r7, r0, r1 ldr r0, [sp, #0xc] lsl r1, r0, #0x2 ldr r0, [sp, #0x8] add r6, r0, r1 _02082BE0: ldr r1, _02082D14 ; =0x00000122 ldr r0, [sp, #0x8] ldrb r0, [r0, r1] cmp r0, #0xb bhi _02082C6E add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02082BF6: ; jump table (using 16-bit offset) .short _02082C0E - _02082BF6 - 2; case 0 .short _02082C16 - _02082BF6 - 2; case 1 .short _02082C1E - _02082BF6 - 2; case 2 .short _02082C26 - _02082BF6 - 2; case 3 .short _02082C2E - _02082BF6 - 2; case 4 .short _02082C36 - _02082BF6 - 2; case 5 .short _02082C3E - _02082BF6 - 2; case 6 .short _02082C46 - _02082BF6 - 2; case 7 .short _02082C4E - _02082BF6 - 2; case 8 .short _02082C56 - _02082BF6 - 2; case 9 .short _02082C5E - _02082BF6 - 2; case 10 .short _02082C66 - _02082BF6 - 2; case 11 _02082C0E: add r0, r7, #0x0 add r0, #0x32 ldrb r2, [r0, #0x0] b _02082C74 _02082C16: add r0, r7, #0x0 add r0, #0x33 ldrb r2, [r0, #0x0] b _02082C74 _02082C1E: add r0, r7, #0x0 add r0, #0x34 ldrb r2, [r0, #0x0] b _02082C74 _02082C26: add r0, r7, #0x0 add r0, #0x35 ldrb r2, [r0, #0x0] b _02082C74 _02082C2E: add r0, r7, #0x0 add r0, #0x36 ldrb r2, [r0, #0x0] b _02082C74 _02082C36: add r0, r7, #0x0 add r0, #0x37 ldrb r2, [r0, #0x0] b _02082C74 _02082C3E: add r0, r7, #0x0 add r0, #0x38 ldrb r2, [r0, #0x0] b _02082C74 _02082C46: add r0, r7, #0x0 add r0, #0x39 ldrb r2, [r0, #0x0] b _02082C74 _02082C4E: add r0, r7, #0x0 add r0, #0x3a ldrb r2, [r0, #0x0] b _02082C74 _02082C56: add r0, r7, #0x0 add r0, #0x3b ldrb r2, [r0, #0x0] b _02082C74 _02082C5E: add r0, r7, #0x0 add r0, #0x3c ldrb r2, [r0, #0x0] b _02082C74 _02082C66: add r0, r7, #0x0 add r0, #0x3d ldrb r2, [r0, #0x0] b _02082C74 _02082C6E: bl ErrorHandling mov r2, #0x0 _02082C74: mov r0, #0x54 add r1, r2, #0x0 mul r1, r0 ldr r0, [sp, #0x14] add r0, r0, r1 str r0, [sp, #0x10] add r0, r6, #0x0 add r0, #0xf8 ldr r0, [r0, #0x0] bl FUN_02027740 add r0, r6, #0x0 add r0, #0xf8 ldr r2, [sp, #0x10] mov r3, #0x51 ldrsb r2, [r2, r3] ldr r0, [r0, #0x0] ldr r1, [r6, #0x0] bl FUN_02027914 ldr r0, [sp, #0x10] mov r5, #0x0 add r0, #0x50 ldrb r0, [r0, #0x0] cmp r0, #0x0 ble _02082CD2 ldr r4, [sp, #0x10] _02082CAA: ldrb r0, [r4, #0x2] add r1, r5, #0x0 str r0, [sp, #0x0] mov r0, #0x3 ldrsb r0, [r4, r0] str r0, [sp, #0x4] add r0, r6, #0x0 add r0, #0xf8 ldrb r2, [r4, #0x0] ldrb r3, [r4, #0x1] ldr r0, [r0, #0x0] bl FUN_02027964 ldr r0, [sp, #0x10] add r5, r5, #0x1 add r0, #0x50 ldrb r0, [r0, #0x0] add r4, r4, #0x4 cmp r5, r0 blt _02082CAA _02082CD2: ldr r1, [sp, #0x10] add r0, r6, #0x0 add r1, #0x52 add r0, #0xf8 str r1, [sp, #0x10] ldrb r1, [r1, #0x0] ldr r0, [r0, #0x0] bl FUN_0202787C mov r2, #0x12 add r0, r6, #0x0 add r0, #0xf8 ldr r1, [sp, #0x8] lsl r2, r2, #0x4 ldrb r1, [r1, r2] ldr r0, [r0, #0x0] bl FUN_020278AC ldr r0, [sp, #0xc] add r7, #0x30 add r0, r0, #0x1 add r6, r6, #0x4 str r0, [sp, #0xc] cmp r0, #0x4 bge _02082D06 b _02082BE0 _02082D06: ldr r0, [sp, #0x14] bl FUN_02016A18 add sp, #0x18 pop {r3-r7, pc} .balign 4 _02082D10: .word 0x00000121 _02082D14: .word 0x00000122 thumb_func_start FUN_02082D18 FUN_02082D18: ; 0x02082D18 push {r3-r7, lr} add r6, r0, #0x0 mov r7, #0x12 mov r4, #0x0 add r5, r6, #0x0 lsl r7, r7, #0x4 _02082D24: add r0, r5, #0x0 add r0, #0xf8 ldr r0, [r0, #0x0] bl FUN_02027740 add r0, r5, #0x0 add r0, #0xf8 mov r2, #0x0 ldr r0, [r0, #0x0] ldr r1, [r5, #0x0] mvn r2, r2 bl FUN_02027914 add r0, r5, #0x0 add r0, #0xf8 ldr r0, [r0, #0x0] mov r1, #0x0 bl FUN_0202787C add r0, r5, #0x0 add r0, #0xf8 ldrb r1, [r6, r7] ldr r0, [r0, #0x0] bl FUN_020278AC add r4, r4, #0x1 add r5, r5, #0x4 cmp r4, #0x4 blt _02082D24 pop {r3-r7, pc} thumb_func_start FUN_02082D60 FUN_02082D60: ; 0x02082D60 push {r3-r7, lr} sub sp, #0x20 add r7, r0, #0x0 add r6, r1, #0x0 ldrh r1, [r7, #0x20] str r2, [sp, #0x10] ldrh r0, [r7, #0x14] lsl r1, r1, #0x12 lsr r1, r1, #0x1e lsl r1, r1, #0x18 lsr r1, r1, #0x18 mov r2, #0x0 bl FUN_02066E74 mov r1, #0x1 str r1, [sp, #0x0] str r0, [sp, #0x4] mov r0, #0x2 str r0, [sp, #0x8] ldr r0, _02082E60 ; =0x0F0F0F0F mov r2, #0xa str r0, [sp, #0xc] ldrh r1, [r7, #0x14] add r0, r6, #0x0 mov r3, #0x20 bl FUN_02066ACC mov r4, #0x0 add r5, r7, #0x0 _02082D9A: ldrh r1, [r5, #0xc] add r0, sp, #0x18 add r2, sp, #0x1c strh r1, [r0, #0x6] add r1, r4, #0x0 add r0, r6, #0x0 add r1, #0x36 add r2, #0x2 bl FUN_02067830 add r4, r4, #0x1 add r5, r5, #0x2 cmp r4, #0x4 blt _02082D9A ldr r3, [sp, #0x10] mov r0, #0x1 mov r1, #0x1a mov r2, #0xc0 bl FUN_0200A86C ldrh r1, [r7, #0x16] add r4, r0, #0x0 bl FUN_0200A914 add r5, r0, #0x0 ldrh r1, [r7, #0x18] add r0, r4, #0x0 bl FUN_0200A914 str r0, [sp, #0x14] add r0, r6, #0x0 mov r1, #0x76 add r2, r5, #0x0 bl FUN_02067830 ldr r2, [sp, #0x14] add r0, r6, #0x0 mov r1, #0x90 bl FUN_02067830 add r0, r5, #0x0 bl FUN_02021A20 ldr r0, [sp, #0x14] bl FUN_02021A20 add r0, r4, #0x0 bl FUN_0200A8B8 add r2, sp, #0x1c ldrb r1, [r7, #0x1a] add r0, sp, #0x18 add r2, #0x1 strb r1, [r0, #0x5] ldrb r1, [r7, #0x1b] strb r1, [r0, #0x4] ldrb r1, [r7, #0x1c] strb r1, [r0, #0x3] ldrb r1, [r7, #0x1d] strb r1, [r0, #0x2] ldrb r1, [r7, #0x1e] strb r1, [r0, #0x1] ldrb r1, [r7, #0x1f] strb r1, [r0, #0x0] add r0, r6, #0x0 mov r1, #0x13 bl FUN_02067830 add r0, r6, #0x0 mov r1, #0x14 add r2, sp, #0x1c bl FUN_02067830 add r2, sp, #0x18 add r0, r6, #0x0 mov r1, #0x15 add r2, #0x3 bl FUN_02067830 add r2, sp, #0x18 add r0, r6, #0x0 mov r1, #0x16 add r2, #0x2 bl FUN_02067830 add r2, sp, #0x18 add r0, r6, #0x0 mov r1, #0x17 add r2, #0x1 bl FUN_02067830 add r0, r6, #0x0 mov r1, #0x18 add r2, sp, #0x18 bl FUN_02067830 add sp, #0x20 pop {r3-r7, pc} nop _02082E60: .word 0x0F0F0F0F thumb_func_start FUN_02082E64 FUN_02082E64: ; 0x02082E64 push {r4-r7, lr} sub sp, #0x24 add r6, r3, #0x0 add r5, r2, #0x0 lsl r2, r6, #0x18 str r0, [sp, #0x10] add r7, r1, #0x0 add r0, sp, #0x14 add r1, r5, #0x0 lsr r2, r2, #0x18 ldr r4, [sp, #0x38] bl FUN_02068B68 lsl r1, r6, #0x18 add r0, r5, #0x0 lsr r1, r1, #0x18 bl FUN_02068E14 add r5, r0, #0x0 cmp r4, #0x0 beq _02082EB0 ldr r0, [r4, #0x0] cmp r0, #0x0 bne _02082E98 bl ErrorHandling _02082E98: add r1, sp, #0x14 ldrh r0, [r1, #0x0] ldrh r1, [r1, #0x2] ldr r2, [sp, #0x3c] ldr r3, [r4, #0x0] bl FUN_02012420 add r0, sp, #0x14 ldrh r1, [r0, #0x4] str r1, [r4, #0x8] ldrh r0, [r0, #0x0] str r0, [r4, #0x4] _02082EB0: ldr r0, [sp, #0x48] ldr r3, [sp, #0x44] str r0, [sp, #0x0] str r7, [sp, #0x4] mov r0, #0x0 str r0, [sp, #0x8] str r0, [sp, #0xc] ldr r0, [sp, #0x10] ldr r2, [sp, #0x40] add r1, sp, #0x14 add r3, r3, r5 bl FUN_020073A0 add sp, #0x24 pop {r4-r7, pc} .balign 4 thumb_func_start FUN_02082ED0 FUN_02082ED0: ; 0x02082ED0 push {r4-r7, lr} sub sp, #0x24 str r0, [sp, #0x4] str r1, [sp, #0x8] ldr r0, [sp, #0x38] add r7, r3, #0x0 mov r5, #0x0 str r2, [sp, #0xc] str r0, [sp, #0x38] mov r1, #0x1 ldr r3, [sp, #0x8] mov r0, #0x5a add r2, r5, #0x0 add r4, r5, #0x0 str r1, [sp, #0x0] bl FUN_02006C98 str r0, [sp, #0x14] mov r0, #0x5a mov r1, #0x1 bl LoadFromNARC_7 lsr r0, r0, #0x3 str r0, [sp, #0x18] ldr r1, [sp, #0x18] ldr r0, [sp, #0x8] add r1, r1, #0x1 bl FUN_020169D8 ldr r1, [sp, #0x18] add r6, r0, #0x0 ldr r0, [sp, #0x8] add r1, r1, #0x1 bl FUN_020169D8 str r0, [sp, #0x10] ldr r0, [sp, #0x18] add r2, r5, #0x0 cmp r0, #0x0 ble _0208300A ldr r3, [sp, #0x14] _02082F22: ldrh r0, [r3, #0x4] mov r12, r0 lsl r0, r0, #0x14 lsr r1, r0, #0x1e ldr r0, [sp, #0x38] cmp r0, r1 bne _02083000 cmp r7, #0x0 bne _02082F5A mov r0, r12 lsl r0, r0, #0x1e lsr r0, r0, #0x1e beq _02082F5A cmp r0, #0x1 bls _02082F4E add r0, r4, #0x1 lsl r0, r0, #0x18 add r1, r4, #0x0 lsr r4, r0, #0x18 ldr r0, [sp, #0x10] strb r2, [r0, r1] b _02083000 _02082F4E: add r1, r5, #0x1 add r0, r5, #0x0 lsl r1, r1, #0x18 lsr r5, r1, #0x18 strb r2, [r6, r0] b _02083000 _02082F5A: cmp r7, #0x1 bne _02082F84 ldrh r0, [r3, #0x4] lsl r0, r0, #0x1c lsr r0, r0, #0x1e beq _02082F84 cmp r0, #0x1 bls _02082F78 add r0, r4, #0x1 lsl r0, r0, #0x18 add r1, r4, #0x0 lsr r4, r0, #0x18 ldr r0, [sp, #0x10] strb r2, [r0, r1] b _02083000 _02082F78: add r1, r5, #0x1 add r0, r5, #0x0 lsl r1, r1, #0x18 lsr r5, r1, #0x18 strb r2, [r6, r0] b _02083000 _02082F84: cmp r7, #0x2 bne _02082FAE ldrh r0, [r3, #0x4] lsl r0, r0, #0x1a lsr r0, r0, #0x1e beq _02082FAE cmp r0, #0x1 bls _02082FA2 add r0, r4, #0x1 lsl r0, r0, #0x18 add r1, r4, #0x0 lsr r4, r0, #0x18 ldr r0, [sp, #0x10] strb r2, [r0, r1] b _02083000 _02082FA2: add r1, r5, #0x1 add r0, r5, #0x0 lsl r1, r1, #0x18 lsr r5, r1, #0x18 strb r2, [r6, r0] b _02083000 _02082FAE: cmp r7, #0x3 bne _02082FD8 ldrh r0, [r3, #0x4] lsl r0, r0, #0x18 lsr r0, r0, #0x1e beq _02082FD8 cmp r0, #0x1 bls _02082FCC add r0, r4, #0x1 lsl r0, r0, #0x18 add r1, r4, #0x0 lsr r4, r0, #0x18 ldr r0, [sp, #0x10] strb r2, [r0, r1] b _02083000 _02082FCC: add r1, r5, #0x1 add r0, r5, #0x0 lsl r1, r1, #0x18 lsr r5, r1, #0x18 strb r2, [r6, r0] b _02083000 _02082FD8: cmp r7, #0x4 bne _02083000 ldrh r0, [r3, #0x4] lsl r0, r0, #0x16 lsr r0, r0, #0x1e beq _02083000 cmp r0, #0x1 bls _02082FF6 add r0, r4, #0x1 lsl r0, r0, #0x18 add r1, r4, #0x0 lsr r4, r0, #0x18 ldr r0, [sp, #0x10] strb r2, [r0, r1] b _02083000 _02082FF6: add r1, r5, #0x1 add r0, r5, #0x0 lsl r1, r1, #0x18 lsr r5, r1, #0x18 strb r2, [r6, r0] _02083000: ldr r0, [sp, #0x18] add r2, r2, #0x1 add r3, #0x8 cmp r2, r0 blt _02082F22 _0208300A: mov r1, #0xff ldr r0, [sp, #0x10] strb r1, [r6, r5] strb r1, [r0, r4] cmp r5, #0x2 bhs _0208301A bl ErrorHandling _0208301A: ldr r2, [sp, #0x4] mov r3, #0x0 _0208301E: ldrb r0, [r6, r3] ldr r5, [sp, #0x14] add r3, r3, #0x1 lsl r1, r0, #0x3 ldr r0, [sp, #0x14] ldrh r5, [r5, r1] add r0, r0, r1 add r1, r2, #0x0 add r1, #0xd0 strh r5, [r1, #0x0] add r1, r2, #0x0 ldrh r5, [r0, #0x2] add r1, #0xd2 strh r5, [r1, #0x0] add r1, r2, #0x0 ldrh r5, [r0, #0x4] add r1, #0xd4 strh r5, [r1, #0x0] ldrh r1, [r0, #0x6] add r0, r2, #0x0 add r0, #0xd6 add r2, #0x8 strh r1, [r0, #0x0] cmp r3, #0x2 blt _0208301E cmp r4, #0x1 bhs _02083058 bl ErrorHandling _02083058: ldr r0, [sp, #0x4] bl FUN_02082878 add r1, r4, #0x0 bl _s32_div_f lsl r0, r1, #0x10 lsr r1, r0, #0x10 ldr r0, [sp, #0x10] ldrb r0, [r0, r1] ldr r1, [sp, #0x14] lsl r2, r0, #0x3 ldr r0, [sp, #0x14] add r0, r0, r2 ldrh r2, [r1, r2] ldr r1, [sp, #0x4] add r1, #0xe0 strh r2, [r1, #0x0] ldr r1, [sp, #0x4] ldrh r2, [r0, #0x2] add r1, #0xe2 strh r2, [r1, #0x0] ldr r1, [sp, #0x4] ldrh r2, [r0, #0x4] add r1, #0xe4 strh r2, [r1, #0x0] ldrh r1, [r0, #0x6] ldr r0, [sp, #0x4] ldr r2, _02083110 ; =0x0000011E add r0, #0xe6 strh r1, [r0, #0x0] ldr r1, [sp, #0xc] ldr r0, [sp, #0x4] strb r1, [r0, r2] add r2, r0, #0x0 add r0, r1, #0x0 lsl r1, r0, #0x3 add r2, #0xd0 ldrh r4, [r2, r1] add r0, sp, #0x1c add r3, r2, r1 strh r4, [r0, #0x0] ldrh r4, [r3, #0x2] strh r4, [r0, #0x2] ldrh r4, [r3, #0x4] strh r4, [r0, #0x4] ldrh r4, [r3, #0x6] strh r4, [r0, #0x6] ldr r4, [sp, #0x4] add r4, #0xe0 ldrh r4, [r4, #0x0] strh r4, [r2, r1] ldr r1, [sp, #0x4] add r1, #0xe2 ldrh r1, [r1, #0x0] strh r1, [r3, #0x2] ldr r1, [sp, #0x4] add r1, #0xe4 ldrh r1, [r1, #0x0] strh r1, [r3, #0x4] ldr r1, [sp, #0x4] add r1, #0xe6 ldrh r1, [r1, #0x0] strh r1, [r3, #0x6] ldr r1, [sp, #0x4] ldrh r2, [r0, #0x0] add r1, #0xe0 strh r2, [r1, #0x0] ldr r1, [sp, #0x4] ldrh r2, [r0, #0x2] add r1, #0xe2 strh r2, [r1, #0x0] ldr r1, [sp, #0x4] ldrh r2, [r0, #0x4] add r1, #0xe4 strh r2, [r1, #0x0] ldrh r1, [r0, #0x6] ldr r0, [sp, #0x4] add r0, #0xe6 str r0, [sp, #0x4] strh r1, [r0, #0x0] ldr r0, [sp, #0x10] bl FUN_02016A18 add r0, r6, #0x0 bl FUN_02016A18 ldr r0, [sp, #0x14] bl FUN_02016A18 add sp, #0x24 pop {r4-r7, pc} .balign 4 _02083110: .word 0x0000011E thumb_func_start FUN_02083114 FUN_02083114: ; 0x02083114 push {r4, lr} add r4, r0, #0x0 cmp r4, #0x18 blo _02083120 bl ErrorHandling _02083120: mov r0, #0x1a add r1, r4, #0x0 mul r1, r0 ldr r0, _0208312C ; =UNK_020FBC6C ldrsb r0, [r0, r1] pop {r4, pc} .balign 4 _0208312C: .word UNK_020FBC6C thumb_func_start FUN_02083130 FUN_02083130: ; 0x02083130 push {r4-r6, lr} add r5, r0, #0x0 add r4, r1, #0x0 add r6, r2, #0x0 cmp r5, #0x18 blo _02083140 bl ErrorHandling _02083140: mov r0, #0x1a add r1, r5, #0x0 mul r1, r0 ldr r0, _02083154 ; =UNK_020FBC68 ldrh r0, [r0, r1] str r0, [r4, #0x0] ldr r0, _02083158 ; =UNK_020FBC6A ldrh r0, [r0, r1] str r0, [r6, #0x0] pop {r4-r6, pc} .balign 4 _02083154: .word UNK_020FBC68 _02083158: .word UNK_020FBC6A thumb_func_start FUN_0208315C FUN_0208315C: ; 0x0208315C push {r4, lr} add r4, r0, #0x0 cmp r4, #0x18 blo _02083168 bl ErrorHandling _02083168: add r4, #0x2d add r0, r4, #0x0 pop {r4, pc} .balign 4 thumb_func_start FUN_02083170 FUN_02083170: ; 0x02083170 push {r3-r7, lr} add r4, r0, #0x0 add r7, r1, #0x0 add r5, r2, #0x0 add r6, r3, #0x0 cmp r4, #0x18 blo _02083182 bl ErrorHandling _02083182: cmp r7, #0x4 bhi _0208319C add r0, r7, r7 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02083192: ; jump table (using 16-bit offset) .short _0208319C - _02083192 - 2; case 0 .short _020831B0 - _02083192 - 2; case 1 .short _020831C4 - _02083192 - 2; case 2 .short _020831D8 - _02083192 - 2; case 3 .short _020831EC - _02083192 - 2; case 4 _0208319C: mov r0, #0x1a add r1, r4, #0x0 mul r1, r0 ldr r0, _02083200 ; =UNK_020FBC6E ldrh r0, [r0, r1] str r0, [r5, #0x0] ldr r0, _02083204 ; =UNK_020FBC70 ldrb r0, [r0, r1] str r0, [r6, #0x0] pop {r3-r7, pc} _020831B0: mov r0, #0x1a add r1, r4, #0x0 mul r1, r0 ldr r0, _02083208 ; =UNK_020FBC72 ldrh r0, [r0, r1] str r0, [r5, #0x0] ldr r0, _0208320C ; =UNK_020FBC74 ldrb r0, [r0, r1] str r0, [r6, #0x0] pop {r3-r7, pc} _020831C4: mov r0, #0x1a add r1, r4, #0x0 mul r1, r0 ldr r0, _02083210 ; =UNK_020FBC76 ldrh r0, [r0, r1] str r0, [r5, #0x0] ldr r0, _02083214 ; =UNK_020FBC78 ldrb r0, [r0, r1] str r0, [r6, #0x0] pop {r3-r7, pc} _020831D8: mov r0, #0x1a add r1, r4, #0x0 mul r1, r0 ldr r0, _02083218 ; =UNK_020FBC7A ldrh r0, [r0, r1] str r0, [r5, #0x0] ldr r0, _0208321C ; =UNK_020FBC7C ldrb r0, [r0, r1] str r0, [r6, #0x0] pop {r3-r7, pc} _020831EC: mov r0, #0x1a add r1, r4, #0x0 mul r1, r0 ldr r0, _02083220 ; =UNK_020FBC7E ldrh r0, [r0, r1] str r0, [r5, #0x0] ldr r0, _02083224 ; =UNK_020FBC80 ldrb r0, [r0, r1] str r0, [r6, #0x0] pop {r3-r7, pc} .balign 4 _02083200: .word UNK_020FBC6E _02083204: .word UNK_020FBC70 _02083208: .word UNK_020FBC72 _0208320C: .word UNK_020FBC74 _02083210: .word UNK_020FBC76 _02083214: .word UNK_020FBC78 _02083218: .word UNK_020FBC7A _0208321C: .word UNK_020FBC7C _02083220: .word UNK_020FBC7E _02083224: .word UNK_020FBC80 thumb_func_start FUN_02083228 FUN_02083228: ; 0x02083228 cmp r2, #0x1 bne _02083230 mov r0, #0x33 bx lr _02083230: cmp r1, #0x3 beq _0208323C cmp r1, #0x5 beq _0208323C cmp r1, #0x7 bne _02083240 _0208323C: mov r0, #0x32 bx lr _02083240: cmp r0, #0x3 bhi _02083264 add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02083250: ; jump table (using 16-bit offset) .short _02083258 - _02083250 - 2; case 0 .short _0208325C - _02083250 - 2; case 1 .short _02083260 - _02083250 - 2; case 2 .short _02083264 - _02083250 - 2; case 3 _02083258: mov r0, #0x2e bx lr _0208325C: mov r0, #0x2f bx lr _02083260: mov r0, #0x30 bx lr _02083264: mov r0, #0x31 bx lr thumb_func_start FUN_02083268 FUN_02083268: ; 0x02083268 cmp r0, #0x4 bhi _02083292 add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02083278: ; jump table (using 16-bit offset) .short _02083282 - _02083278 - 2; case 0 .short _02083286 - _02083278 - 2; case 1 .short _0208328A - _02083278 - 2; case 2 .short _0208328E - _02083278 - 2; case 3 .short _02083292 - _02083278 - 2; case 4 _02083282: mov r0, #0x2e bx lr _02083286: mov r0, #0x2f bx lr _0208328A: mov r0, #0x30 bx lr _0208328E: mov r0, #0x31 bx lr _02083292: mov r0, #0x33 bx lr .balign 4 thumb_func_start FUN_02083298 FUN_02083298: ; 0x02083298 ldr r3, _020832A0 ; =FUN_020832A4 mov r1, #0x2 bx r3 nop _020832A0: .word FUN_020832A4 thumb_func_start FUN_020832A4 FUN_020832A4: ; 0x020832A4 cmp r1, #0x5 bne _020832AC mov r0, #0x34 bx lr _020832AC: cmp r0, #0x4 bhi _020832D6 add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _020832BC: ; jump table (using 16-bit offset) .short _020832C6 - _020832BC - 2; case 0 .short _020832CA - _020832BC - 2; case 1 .short _020832CE - _020832BC - 2; case 2 .short _020832D2 - _020832BC - 2; case 3 .short _020832D6 - _020832BC - 2; case 4 _020832C6: mov r0, #0x29 bx lr _020832CA: mov r0, #0x2a bx lr _020832CE: mov r0, #0x2b bx lr _020832D2: mov r0, #0x2c bx lr _020832D6: mov r0, #0x2d bx lr .balign 4 thumb_func_start FUN_020832DC FUN_020832DC: ; 0x020832DC mov r1, #0x3 sub r0, r1, r0 bx lr .balign 4 thumb_func_start FUN_020832E4 FUN_020832E4: ; 0x020832E4 mov r1, #0x3 sub r0, r1, r0 bx lr .balign 4 thumb_func_start FUN_020832EC FUN_020832EC: ; 0x020832EC ldr r1, _02083304 ; =0x00000121 ldrb r0, [r0, r1] cmp r0, #0x3 beq _020832FC cmp r0, #0x5 beq _020832FC cmp r0, #0x7 bne _02083300 _020832FC: mov r0, #0x1 bx lr _02083300: mov r0, #0x0 bx lr .balign 4 _02083304: .word 0x00000121 thumb_func_start FUN_02083308 FUN_02083308: ; 0x02083308 push {r4-r5} sub sp, #0x50 ldr r5, _02083368 ; =UNK_020FBC18 add r4, sp, #0x0 mov r3, #0x28 _02083312: ldrh r2, [r5, #0x0] add r5, r5, #0x2 strh r2, [r4, #0x0] add r4, r4, #0x2 sub r3, r3, #0x1 bne _02083312 mov r3, #0xc mul r3, r1 add r1, r0, r3 mov r3, #0x4a lsl r3, r3, #0x2 add r4, r3, #0x0 add r4, #0x49 ldrb r4, [r0, r4] mov r2, #0x0 ldrsh r1, [r1, r3] cmp r4, #0x1 bne _0208333A add r4, sp, #0x40 b _02083344 _0208333A: sub r3, #0x8 ldrb r0, [r0, r3] add r4, sp, #0x0 lsl r0, r0, #0x4 add r4, r4, r0 _02083344: mov r3, #0x0 _02083346: ldrh r0, [r4, #0x0] cmp r1, r0 bge _02083354 add sp, #0x50 add r0, r2, #0x0 pop {r4-r5} bx lr _02083354: add r3, r3, #0x1 add r2, r2, #0x1 add r4, r4, #0x2 cmp r3, #0x8 blt _02083346 add r0, r2, #0x0 add sp, #0x50 pop {r4-r5} bx lr nop _02083368: .word UNK_020FBC18 thumb_func_start FUN_0208336C FUN_0208336C: ; 0x0208336C push {r4-r5} sub sp, #0x10 ldr r5, _020833CC ; =UNK_020FBC08 add r4, sp, #0x0 mov r3, #0xf _02083376: ldrb r2, [r5, #0x0] add r5, r5, #0x1 strb r2, [r4, #0x0] add r4, r4, #0x1 sub r3, r3, #0x1 bne _02083376 mov r2, #0xc mul r2, r1 ldr r3, _020833D0 ; =0x0000012A add r1, r0, r2 ldrsh r1, [r1, r3] cmp r1, #0x0 bne _02083398 add sp, #0x10 mov r0, #0x0 pop {r4-r5} bx lr _02083398: add r2, r3, #0x0 add r2, #0x47 ldrb r2, [r0, r2] cmp r2, #0x1 bne _020833A6 add r4, sp, #0xc b _020833B2 _020833A6: sub r3, #0xa ldrb r2, [r0, r3] add r4, sp, #0x0 lsl r0, r2, #0x1 add r0, r2, r0 add r4, r4, r0 _020833B2: mov r0, #0x1 mov r3, #0x0 _020833B6: ldrb r2, [r4, r3] cmp r1, r2 ble _020833C4 add r3, r3, #0x1 add r0, r0, #0x1 cmp r3, #0x3 blt _020833B6 _020833C4: add sp, #0x10 pop {r4-r5} bx lr nop _020833CC: .word UNK_020FBC08 _020833D0: .word 0x0000012A thumb_func_start FUN_020833D4 FUN_020833D4: ; 0x020833D4 push {r3, lr} cmp r0, #0x0 bne _020833EE mov r0, #0x1 bl FUN_02002B60 mov r0, #0x3 bl FUN_02002B7C mov r0, #0x1 bl FUN_02002BB8 pop {r3, pc} _020833EE: mov r0, #0x1 bl FUN_02002B7C mov r0, #0x0 bl FUN_02002B60 mov r0, #0x0 bl FUN_02002BB8 pop {r3, pc} .balign 4 thumb_func_start FUN_02083404 FUN_02083404: ; 0x02083404 push {r3, lr} mov r0, #0x0 bl FUN_02002B60 mov r0, #0x0 bl FUN_02002B7C mov r0, #0x0 bl FUN_02002BB8 pop {r3, pc} .balign 4 thumb_func_start FUN_0208341C FUN_0208341C: ; 0x0208341C push {r3, lr} cmp r1, #0x4 bhi _0208344C add r1, r1, r1 add r1, pc ldrh r1, [r1, #0x6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0208342E: ; jump table (using 16-bit offset) .short _02083438 - _0208342E - 2; case 0 .short _0208343C - _0208342E - 2; case 1 .short _02083440 - _0208342E - 2; case 2 .short _02083444 - _0208342E - 2; case 3 .short _02083448 - _0208342E - 2; case 4 _02083438: add r0, #0x7a pop {r3, pc} _0208343C: add r0, #0x7e pop {r3, pc} _02083440: add r0, #0x82 pop {r3, pc} _02083444: add r0, #0x86 pop {r3, pc} _02083448: add r0, #0x8a pop {r3, pc} _0208344C: bl ErrorHandling mov r0, #0x7a pop {r3, pc} thumb_func_start FUN_02083454 FUN_02083454: ; 0x02083454 push {r4-r5, lr} sub sp, #0xc add r5, r0, #0x0 mov r4, #0x0 cmp r5, #0x3 beq _02083464 cmp r1, #0x1 bne _02083474 _02083464: bl rand_LC mov r1, #0xc bl _s32_div_f add sp, #0xc add r0, r1, #0x0 pop {r4-r5, pc} _02083474: add r0, sp, #0x0 add r1, r4, #0x0 mov r2, #0xc bl MI_CpuFill8 mov r1, #0x2 add r0, sp, #0x0 strb r1, [r0, #0x0] mov r1, #0x3 strb r1, [r0, #0x1] mov r1, #0x4 add r4, r4, #0x3 strb r1, [r0, #0x2] cmp r5, #0x1 blt _020834A6 mov r0, #0x0 add r2, sp, #0x0 strb r0, [r2, r4] mov r1, #0x1 add r0, r4, #0x1 strb r1, [r2, r0] add r1, r4, #0x2 mov r0, #0x5 add r4, r4, #0x3 strb r0, [r2, r1] _020834A6: cmp r5, #0x2 blt _020834BE mov r0, #0x6 add r2, sp, #0x0 strb r0, [r2, r4] mov r1, #0x7 add r0, r4, #0x1 strb r1, [r2, r0] add r1, r4, #0x2 mov r0, #0x8 add r4, r4, #0x3 strb r0, [r2, r1] _020834BE: bl rand_LC add r1, r4, #0x0 bl _s32_div_f add r0, sp, #0x0 ldrb r0, [r0, r1] add sp, #0xc pop {r4-r5, pc}