.include "asm/macros.inc" .include "global.inc" .extern UNK_020ECD4C .extern UNK_02105AE8 .extern UNK_020ECBD0 .extern UNK_020FFA38 .text thumb_func_start FUN_02006D98 FUN_02006D98: ; 0x02006D98 push {r3-r7, lr} sub sp, #0x10 mov r1, #0xba lsl r1, r1, #0x2 add r5, r0, #0x0 bl FUN_02016998 add r4, r0, #0x0 mov r0, #0xa6 lsl r0, r0, #0x2 add r1, r0, #0x0 add r3, r0, #0x0 str r5, [r4, r0] mov r2, #0x0 add r1, #0x48 strb r2, [r4, r1] add r1, r0, #0x4 str r2, [r4, r1] mov r1, #0x2 lsl r1, r1, #0xe add r3, #0x8 str r1, [r4, r3] add r3, r0, #0x0 add r3, #0xc str r2, [r4, r3] mov r2, #0x80 add r0, #0x10 str r2, [r4, r0] add r0, r5, #0x0 bl FUN_02016998 mov r1, #0xab lsl r1, r1, #0x2 str r0, [r4, r1] add r0, r5, #0x0 mov r1, #0xc0 bl FUN_02016998 mov r1, #0x2b lsl r1, r1, #0x4 str r0, [r4, r1] ldr r1, [r4, r1] mov r0, #0x0 mov r2, #0x4 bl MIi_CpuClearFast add r0, r5, #0x0 mov r1, #0xc0 bl FUN_02016998 mov r1, #0xad lsl r1, r1, #0x2 str r0, [r4, r1] ldr r1, [r4, r1] mov r0, #0x0 mov r2, #0x4 bl MIi_CpuClearFast mov r6, #0x0 add r5, r4, #0x0 add r7, r6, #0x0 _02006E12: add r0, r7, #0x0 add r1, r5, #0x0 mov r2, #0x98 bl MIi_CpuClearFast add r6, r6, #0x1 add r5, #0x98 cmp r6, #0x4 blt _02006E12 bl FUN_020B02C8 ldr r2, _02006EC8 ; =0x000002E3 mov r0, #0x0 strb r0, [r4, r2] sub r2, #0x4b ldr r2, [r4, r2] mov r0, #0x75 mov r1, #0xd3 bl LoadFromNarc_2 add r1, sp, #0xc str r0, [sp, #0x4] bl FUN_020B0088 ldr r0, [sp, #0xc] mov r1, #0xaf ldr r0, [r0, #0x4] lsl r1, r1, #0x2 str r0, [r4, r1] ldr r0, [sp, #0xc] ldr r2, [r0, #0x8] add r0, r1, #0x4 str r2, [r4, r0] ldr r0, [sp, #0xc] add r1, #0x8 ldr r0, [r0, #0xc] str r0, [r4, r1] ldr r0, [sp, #0xc] ldr r0, [r0, #0x14] str r0, [sp, #0x8] bl FUN_02008A74 ldr r1, [sp, #0x8] mov r0, #0xab lsl r0, r0, #0x2 mov r2, #0x2 ldrb r1, [r1, #0x0] ldr r0, [r4, r0] lsl r2, r2, #0xe bl MI_CpuFill8 mov r0, #0x0 mov r7, #0xab ldr r6, _02006ECC ; =0x00005050 mov r12, r0 str r0, [sp, #0x0] add r3, r0, #0x0 lsl r7, r7, #0x2 _02006E86: ldr r2, [sp, #0x8] ldr r0, [sp, #0x0] mov r1, #0x0 add r2, r2, r0 _02006E8E: ldr r5, [r4, r7] ldrb r0, [r2, #0x0] add r5, r3, r5 add r5, r1, r5 add r1, r1, #0x1 add r2, r2, #0x1 strb r0, [r5, r6] cmp r1, #0x28 blt _02006E8E ldr r0, [sp, #0x0] add r3, #0x80 add r0, #0x50 str r0, [sp, #0x0] mov r0, r12 add r0, r0, #0x1 mov r12, r0 cmp r0, #0x50 blt _02006E86 ldr r0, [sp, #0x4] bl FUN_02016A18 ldr r0, _02006ED0 ; =0x000002E1 mov r1, #0x1 strb r1, [r4, r0] add r0, r0, #0x1 strb r1, [r4, r0] add r0, r4, #0x0 add sp, #0x10 pop {r3-r7, pc} .balign 4 _02006EC8: .word 0x000002E3 _02006ECC: .word 0x00005050 _02006ED0: .word 0x000002E1 thumb_func_start FUN_02006ED4 FUN_02006ED4: ; 0x02006ED4 push {r3-r7, lr} sub sp, #0x20 add r5, r0, #0x0 bl FUN_020082A8 add r0, r5, #0x0 bl FUN_020086F4 bl FUN_020BB394 mov r6, #0x9f mov r0, #0x0 ldr r4, _02007250 ; =0x04000444 lsl r6, r6, #0x2 str r0, [r4, #0x0] str r0, [sp, #0x18] add r0, r6, #0x0 sub r0, #0xc ldr r1, [r5, r0] add r3, r6, #0x0 ldr r2, [r5, r6] add r0, r6, #0x0 sub r3, #0x8 add r6, #0x20 ldr r3, [r5, r3] ldr r6, [r5, r6] sub r0, #0x10 ldr r0, [r5, r0] lsr r6, r6, #0x3 lsl r3, r3, #0x1a orr r6, r3 mov r3, #0x1 lsl r3, r3, #0x1e lsl r0, r0, #0x14 orr r3, r6 lsl r1, r1, #0x17 orr r0, r3 lsl r2, r2, #0x1d orr r0, r1 orr r0, r2 str r0, [r4, #0x64] ldr r0, [sp, #0x18] add r4, r5, #0x0 str r0, [sp, #0x14] ldr r0, _02007254 ; =UNK_020ECD4C str r0, [sp, #0x1c] _02006F30: ldr r0, [r4, #0x0] lsl r0, r0, #0x1f lsr r0, r0, #0x1f beq _02006F46 ldr r0, [r4, #0x54] lsl r1, r0, #0x1f lsr r1, r1, #0x1f bne _02006F46 lsl r0, r0, #0x14 lsr r0, r0, #0x1f beq _02006F48 _02006F46: b _020072BC _02006F48: ldr r2, [r4, #0x68] cmp r2, #0x0 beq _02006F56 add r1, r4, #0x0 add r0, r4, #0x0 add r1, #0x24 blx r2 _02006F56: bl FUN_020BB394 ldr r0, _02007258 ; =0x000002E3 ldrb r0, [r5, r0] cmp r0, #0x1 beq _02006F68 ldr r0, _0200725C ; =0x04000454 mov r1, #0x0 str r1, [r0, #0x0] _02006F68: add r0, r4, #0x0 bl FUN_02007F48 mov r0, #0x9d lsl r0, r0, #0x2 ldr r0, [r5, r0] cmp r0, #0x2 bne _02006F7C mov r0, #0x1 b _02006F7E _02006F7C: mov r0, #0x0 _02006F7E: mov r1, #0xa9 lsl r1, r1, #0x2 ldr r2, [r5, r1] ldr r1, [sp, #0x14] add r2, r2, r1 mov r1, #0x4 sub r0, r1, r0 add r1, r2, #0x0 lsr r1, r0 ldr r0, _02007260 ; =0x040004AC str r1, [r0, #0x0] ldr r0, [r4, #0x28] lsl r1, r0, #0xc mov r0, #0x26 ldrsh r2, [r4, r0] mov r0, #0x42 ldrsh r0, [r4, r0] add r0, r2, r0 mov r2, #0x24 ldrsh r3, [r4, r2] mov r2, #0x40 ldrsh r2, [r4, r2] lsl r0, r0, #0xc add r2, r3, r2 lsl r3, r2, #0xc ldr r2, _02007264 ; =0x04000470 str r3, [r2, #0x0] str r0, [r2, #0x0] add r0, r2, #0x0 str r1, [r0, #0x0] ldrh r0, [r4, #0x38] asr r0, r0, #0x4 lsl r1, r0, #0x2 ldr r0, _02007268 ; =UNK_020FFA38 add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 ldrsh r1, [r2, r1] bl G3_RotX ldrh r0, [r4, #0x3a] asr r0, r0, #0x4 lsl r1, r0, #0x2 ldr r0, _02007268 ; =UNK_020FFA38 add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 ldrsh r1, [r2, r1] bl G3_RotY ldrh r0, [r4, #0x3c] asr r0, r0, #0x4 lsl r1, r0, #0x2 ldr r0, _02007268 ; =UNK_020FFA38 add r2, r0, r1 ldrsh r0, [r0, r1] mov r1, #0x2 ldrsh r1, [r2, r1] bl G3_RotZ ldr r0, [r4, #0x28] lsl r0, r0, #0xc neg r1, r0 mov r0, #0x26 ldrsh r2, [r4, r0] mov r0, #0x42 ldrsh r0, [r4, r0] add r0, r2, r0 mov r2, #0x24 ldrsh r3, [r4, r2] mov r2, #0x40 ldrsh r2, [r4, r2] lsl r0, r0, #0xc neg r0, r0 add r2, r3, r2 lsl r2, r2, #0xc neg r3, r2 ldr r2, _02007264 ; =0x04000470 str r3, [r2, #0x0] str r0, [r2, #0x0] add r0, r2, #0x0 str r1, [r0, #0x0] ldr r3, [r4, #0x50] lsl r0, r3, #0x11 lsr r0, r0, #0x1b lsl r2, r3, #0x16 lsl r1, r0, #0xa lsl r0, r3, #0x1b lsr r2, r2, #0x1b lsr r0, r0, #0x1b lsl r2, r2, #0x5 orr r0, r2 orr r0, r1 lsl r0, r0, #0x10 lsr r2, r0, #0x10 lsl r0, r3, #0x2 lsr r0, r0, #0x1b lsl r1, r0, #0xa lsl r0, r3, #0xc lsl r3, r3, #0x7 lsr r3, r3, #0x1b lsr r0, r0, #0x1b lsl r3, r3, #0x5 orr r0, r3 orr r0, r1 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x10 add r1, r2, #0x0 orr r1, r0 mov r0, #0x2 lsl r0, r0, #0xe orr r1, r0 ldr r0, _0200726C ; =0x040004C0 str r1, [r0, #0x0] ldr r1, _02007270 ; =0x00004210 add r0, r0, #0x4 str r1, [r0, #0x0] ldr r1, [r4, #0x0] ldr r0, [r4, #0x54] lsl r1, r1, #0x19 lsl r0, r0, #0x19 lsr r1, r1, #0x1a lsr r0, r0, #0x1b lsl r2, r1, #0x18 mov r1, #0xc0 lsl r0, r0, #0x10 orr r1, r2 orr r1, r0 ldr r0, _02007274 ; =0x040004A4 str r1, [r0, #0x0] ldr r0, [r4, #0x54] lsl r0, r0, #0x1e lsr r0, r0, #0x1f beq _02007104 add r0, r4, #0x0 add r0, #0x5b ldrb r0, [r0, #0x0] add r2, r4, #0x0 add r2, #0x44 lsl r1, r0, #0x4 ldr r0, [sp, #0x1c] ldrb r3, [r2, #0x0] add r0, r0, r1 ldr r2, [sp, #0x1c] ldr r0, [r0, #0x4] ldr r1, [r2, r1] add r6, r3, r1 add r1, r4, #0x0 add r1, #0x46 ldrb r1, [r1, #0x0] mov r12, r1 add r1, r4, #0x0 add r1, #0x45 ldrb r2, [r1, #0x0] add r1, r2, r0 add r0, r4, #0x0 add r0, #0x47 ldrb r7, [r0, #0x0] mov r0, r12 add r0, r0, r6 str r7, [sp, #0x0] str r6, [sp, #0x4] str r1, [sp, #0x8] str r0, [sp, #0xc] add r0, r7, r1 str r0, [sp, #0x10] mov r1, #0x24 ldrsh r1, [r4, r1] mov r0, #0x2c ldrsh r0, [r4, r0] sub r1, #0x28 add r1, r1, r3 add r0, r0, r1 mov r3, #0x26 ldrsh r3, [r4, r3] mov r1, #0x2e lsl r0, r0, #0x10 sub r3, #0x28 add r2, r3, r2 ldrsh r1, [r4, r1] ldr r3, [r4, #0x28] asr r0, r0, #0x10 add r2, r1, r2 mov r1, #0x6e ldrsb r1, [r4, r1] sub r1, r2, r1 ldr r2, [r4, #0x30] lsl r1, r1, #0x10 add r2, r3, r2 asr r1, r1, #0x10 mov r3, r12 bl FUN_020B0250 b _02007174 _02007104: mov r0, #0x34 ldrsh r1, [r4, r0] mov r0, #0x50 ldr r2, [sp, #0x1c] mul r0, r1 asr r3, r0, #0x8 mov r0, #0x36 ldrsh r1, [r4, r0] mov r0, #0x50 ldr r6, [sp, #0x1c] mul r0, r1 asr r1, r0, #0x8 add r0, r4, #0x0 add r0, #0x5b ldrb r0, [r0, #0x0] lsl r0, r0, #0x4 str r1, [sp, #0x0] add r2, r2, r0 ldr r0, [r6, r0] lsr r6, r1, #0x1f str r0, [sp, #0x4] ldr r0, [r2, #0x4] add r6, r1, r6 str r0, [sp, #0x8] ldr r0, [r2, #0x8] asr r1, r6, #0x1 str r0, [sp, #0xc] ldr r0, [r2, #0xc] str r0, [sp, #0x10] mov r0, #0x24 ldrsh r2, [r4, r0] lsr r0, r3, #0x1f add r0, r3, r0 asr r0, r0, #0x1 sub r2, r2, r0 mov r0, #0x2c ldrsh r0, [r4, r0] ldr r6, [r4, #0x28] add r0, r2, r0 mov r2, #0x26 ldrsh r2, [r4, r2] lsl r0, r0, #0x10 asr r0, r0, #0x10 sub r2, r2, r1 mov r1, #0x2e ldrsh r1, [r4, r1] add r2, r2, r1 mov r1, #0x6e ldrsb r1, [r4, r1] sub r1, r2, r1 ldr r2, [r4, #0x30] lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r6, r2 bl FUN_020B0250 _02007174: add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] lsl r1, r0, #0x1e lsr r1, r1, #0x1e beq _0200719A lsl r0, r0, #0x19 lsr r0, r0, #0x1e beq _0200719A ldr r0, [r4, #0x54] lsl r0, r0, #0x1e lsr r0, r0, #0x1f bne _0200719A mov r0, #0xb9 lsl r0, r0, #0x2 ldr r1, [r5, r0] mov r0, #0x1 tst r0, r1 beq _0200719C _0200719A: b _020072BC _0200719C: ldr r0, _02007258 ; =0x000002E3 ldrb r0, [r5, r0] cmp r0, #0x1 beq _020071AA ldr r0, _0200725C ; =0x04000454 mov r1, #0x0 str r1, [r0, #0x0] _020071AA: mov r0, #0x9d lsl r0, r0, #0x2 ldr r0, [r5, r0] cmp r0, #0x2 bne _020071B8 mov r1, #0x1 b _020071BA _020071B8: mov r1, #0x0 _020071BA: add r2, r4, #0x0 add r2, #0x6c ldrh r2, [r2, #0x0] mov r0, #0xa9 lsl r0, r0, #0x2 lsl r2, r2, #0x1e lsr r2, r2, #0x1e add r2, r2, #0x3 ldr r0, [r5, r0] lsl r2, r2, #0x5 add r2, r0, r2 mov r0, #0x4 sub r0, r0, r1 add r1, r2, #0x0 lsr r1, r0 ldr r0, _02007260 ; =0x040004AC str r1, [r0, #0x0] add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0x1f beq _020071FA mov r0, #0x34 ldrsh r0, [r4, r0] lsl r0, r0, #0x6 asr r3, r0, #0x8 mov r0, #0x36 ldrsh r0, [r4, r0] lsl r0, r0, #0x4 asr r1, r0, #0x8 b _020071FE _020071FA: mov r3, #0x40 mov r1, #0x10 _020071FE: add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1d lsr r0, r0, #0x1f beq _02007220 mov r0, #0x74 ldrsh r2, [r4, r0] mov r0, #0x24 mov r6, #0x2c ldrsh r0, [r4, r0] ldrsh r6, [r4, r6] add r0, r0, r6 add r2, r2, r0 add r0, r4, #0x0 add r0, #0x70 strh r2, [r0, #0x0] _02007220: add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1c lsr r0, r0, #0x1f beq _02007242 mov r0, #0x76 ldrsh r2, [r4, r0] mov r0, #0x26 mov r6, #0x2e ldrsh r0, [r4, r0] ldrsh r6, [r4, r6] add r0, r0, r6 add r2, r2, r0 add r0, r4, #0x0 add r0, #0x72 strh r2, [r0, #0x0] _02007242: add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] ldr r2, _02007278 ; =UNK_020ECBD0 ldr r6, _02007278 ; =UNK_020ECBD0 b _0200727C nop _02007250: .word 0x04000444 _02007254: .word UNK_020ECD4C _02007258: .word 0x000002E3 _0200725C: .word 0x04000454 _02007260: .word 0x040004AC _02007264: .word 0x04000470 _02007268: .word UNK_020FFA38 _0200726C: .word 0x040004C0 _02007270: .word 0x00004210 _02007274: .word 0x040004A4 _02007278: .word UNK_020ECBD0 _0200727C: lsl r0, r0, #0x19 lsr r0, r0, #0x1e lsl r0, r0, #0x4 str r1, [sp, #0x0] add r2, r2, r0 ldr r0, [r6, r0] lsr r6, r1, #0x1f str r0, [sp, #0x4] ldr r0, [r2, #0x4] add r6, r1, r6 str r0, [sp, #0x8] ldr r0, [r2, #0x8] asr r1, r6, #0x1 str r0, [sp, #0xc] ldr r0, [r2, #0xc] str r0, [sp, #0x10] mov r0, #0x70 ldrsh r2, [r4, r0] lsr r0, r3, #0x1f add r0, r3, r0 asr r0, r0, #0x1 sub r0, r2, r0 mov r2, #0x72 ldrsh r2, [r4, r2] lsl r0, r0, #0x10 asr r0, r0, #0x10 sub r1, r2, r1 lsl r1, r1, #0x10 ldr r2, _020072E0 ; =0xFFFFFC18 asr r1, r1, #0x10 bl FUN_020B0250 _020072BC: ldr r0, [sp, #0x14] add r4, #0x98 add r0, #0x20 str r0, [sp, #0x14] ldr r0, [sp, #0x1c] add r0, #0x20 str r0, [sp, #0x1c] ldr r0, [sp, #0x18] add r0, r0, #0x1 str r0, [sp, #0x18] cmp r0, #0x4 bge _020072D6 b _02006F30 _020072D6: ldr r0, _020072E4 ; =0x04000448 mov r1, #0x1 str r1, [r0, #0x0] add sp, #0x20 pop {r3-r7, pc} .balign 4 _020072E0: .word 0xFFFFFC18 _020072E4: .word 0x04000448 thumb_func_start FUN_020072E8 FUN_020072E8: ; 0x020072E8 push {r4, lr} add r4, r0, #0x0 mov r0, #0xab lsl r0, r0, #0x2 ldr r0, [r4, r0] bl FUN_02016A18 mov r0, #0x2b lsl r0, r0, #0x4 ldr r0, [r4, r0] bl FUN_02016A18 mov r0, #0xad lsl r0, r0, #0x2 ldr r0, [r4, r0] bl FUN_02016A18 add r0, r4, #0x0 bl FUN_02016A18 pop {r4, pc} .balign 4 thumb_func_start FUN_02007314 FUN_02007314: ; 0x02007314 push {r3-r4} add r1, r0, #0x0 mov r3, #0x0 add r1, #0x59 strb r3, [r1, #0x0] add r1, r3, #0x0 _02007320: add r2, r0, r3 add r2, #0x5c add r3, r3, #0x1 strb r1, [r2, #0x0] cmp r3, #0xa blt _02007320 add r2, r0, #0x0 add r2, #0x59 ldrb r2, [r2, #0x0] lsl r2, r2, #0x1 add r3, r0, r2 mov r2, #0x84 ldrsb r4, [r3, r2] add r3, r2, #0x0 sub r3, #0x85 cmp r4, r3 bne _0200734A add r0, #0x5b strb r1, [r0, #0x0] pop {r3-r4} bx lr _0200734A: add r1, r0, #0x0 mov r3, #0x1 add r1, #0x58 strb r3, [r1, #0x0] add r1, r0, #0x0 add r1, #0x59 ldrb r1, [r1, #0x0] lsl r1, r1, #0x1 add r1, r0, r1 ldrsb r2, [r1, r2] add r1, r0, #0x0 add r1, #0x5b strb r2, [r1, #0x0] add r1, r0, #0x0 add r1, #0x59 ldrb r1, [r1, #0x0] lsl r1, r1, #0x1 add r1, r0, r1 add r1, #0x85 ldrb r1, [r1, #0x0] add r0, #0x5a strb r1, [r0, #0x0] pop {r3-r4} bx lr .balign 4 thumb_func_start FUN_0200737C FUN_0200737C: ; 0x0200737C add r2, r0, #0x0 ldr r3, _0200738C ; =MI_CpuCopy8 add r2, #0x84 add r0, r1, #0x0 add r1, r2, #0x0 mov r2, #0x14 bx r3 nop _0200738C: .word MI_CpuCopy8 thumb_func_start FUN_02007390 FUN_02007390: ; 0x02007390 add r0, #0x58 ldrb r0, [r0, #0x0] cmp r0, #0x0 beq _0200739C mov r0, #0x1 bx lr _0200739C: mov r0, #0x0 bx lr thumb_func_start FUN_020073A0 FUN_020073A0: ; 0x020073A0 push {r3-r7, lr} sub sp, #0x18 add r5, r0, #0x0 add r6, r1, #0x0 add r7, r2, #0x0 str r3, [sp, #0x14] mov r4, #0x0 _020073AE: ldr r1, [r0, #0x0] lsl r1, r1, #0x1f lsr r1, r1, #0x1f beq _020073BE add r4, r4, #0x1 add r0, #0x98 cmp r4, #0x4 blt _020073AE _020073BE: cmp r4, #0x4 bne _020073C6 bl ErrorHandling _020073C6: ldr r0, [sp, #0x30] ldr r3, [sp, #0x14] str r0, [sp, #0x0] ldr r0, [sp, #0x34] add r1, r6, #0x0 str r0, [sp, #0x4] ldr r0, [sp, #0x38] str r4, [sp, #0x8] str r0, [sp, #0xc] ldr r0, [sp, #0x3c] add r2, r7, #0x0 str r0, [sp, #0x10] add r0, r5, #0x0 bl FUN_020073E8 add sp, #0x18 pop {r3-r7, pc} thumb_func_start FUN_020073E8 FUN_020073E8: ; 0x020073E8 push {r4-r7, lr} sub sp, #0xc str r1, [sp, #0x8] ldr r1, [sp, #0x28] add r4, r0, #0x0 mov r0, #0x98 add r6, r1, #0x0 mul r6, r0 ldr r0, [r4, r6] str r2, [sp, #0x0] lsl r0, r0, #0x1f str r3, [sp, #0x4] lsr r0, r0, #0x1f beq _02007408 bl ErrorHandling _02007408: add r5, r4, r6 mov r0, #0x0 add r1, r5, #0x0 mov r2, #0x98 bl MIi_CpuClearFast ldr r1, [r4, r6] mov r0, #0x1 bic r1, r0 mov r0, #0x1 orr r0, r1 str r0, [r4, r6] ldr r1, [r4, r6] mov r0, #0x80 orr r0, r1 str r0, [r4, r6] mov r0, #0x80 ldr r1, [r4, r6] add r0, #0x80 orr r0, r1 str r0, [r4, r6] add r2, r5, #0x0 ldr r0, [r4, r6] mov r1, #0x7e bic r0, r1 ldr r1, [sp, #0x24] add r7, r2, #0x4 lsl r1, r1, #0x1a lsr r1, r1, #0x19 orr r0, r1 str r0, [r4, r6] ldr r0, [sp, #0x8] mov r12, r0 mov r3, r12 ldmia r3!, {r0-r1} stmia r7!, {r0-r1} ldmia r3!, {r0-r1} stmia r7!, {r0-r1} add r7, r2, #0x0 ldr r3, [sp, #0x8] add r7, #0x14 ldmia r3!, {r0-r1} stmia r7!, {r0-r1} str r3, [sp, #0x8] ldmia r3!, {r0-r1} stmia r7!, {r0-r1} ldr r0, [sp, #0x0] ldr r1, [sp, #0x4] lsl r0, r0, #0x10 asr r0, r0, #0x10 lsl r1, r1, #0x10 asr r7, r1, #0x10 strh r0, [r2, #0x24] str r3, [sp, #0x8] ldr r1, [sp, #0x20] strh r7, [r2, #0x26] str r1, [r2, #0x28] mov r1, #0x80 add r1, #0x80 strh r1, [r2, #0x34] strh r1, [r2, #0x36] ldr r1, [r5, #0x54] mov r3, #0x7c bic r1, r3 mov r3, #0x7c orr r1, r3 str r1, [r5, #0x54] ldr r1, [r5, #0x50] mov r3, #0x1f bic r1, r3 mov r3, #0x1f orr r3, r1 ldr r1, _02007520 ; =0xFFFFFC1F and r1, r3 mov r3, #0x1f lsl r3, r3, #0x5 orr r3, r1 ldr r1, _02007524 ; =0xFFFF83FF and r1, r3 mov r3, #0x1f lsl r3, r3, #0xa orr r3, r1 ldr r1, _02007528 ; =0xFFF07FFF and r1, r3 mov r3, #0x80 lsl r3, r3, #0xc orr r3, r1 ldr r1, _0200752C ; =0xFE0FFFFF and r1, r3 mov r3, #0x80 lsl r3, r3, #0x11 orr r3, r1 ldr r1, _02007530 ; =0xC1FFFFFF and r1, r3 mov r3, #0x80 lsl r3, r3, #0x16 orr r1, r3 str r1, [r5, #0x50] ldr r1, [sp, #0x30] str r1, [r2, #0x68] add r1, r2, #0x0 add r1, #0x70 strh r0, [r1, #0x0] add r2, #0x72 add r0, r5, #0x0 strh r7, [r2, #0x0] add r0, #0x6c ldrh r1, [r0, #0x0] mov r0, #0x4 orr r1, r0 add r0, r5, #0x0 add r0, #0x6c strh r1, [r0, #0x0] add r0, r5, #0x0 add r0, #0x6c ldrh r1, [r0, #0x0] mov r0, #0x8 orr r1, r0 add r0, r5, #0x0 add r0, #0x6c strh r1, [r0, #0x0] add r0, r5, #0x0 add r0, #0x6c ldrh r1, [r0, #0x0] mov r0, #0x10 add r5, #0x6c orr r0, r1 strh r0, [r5, #0x0] ldr r0, [sp, #0x2c] cmp r0, #0x0 beq _02007518 add r1, r4, r6 add r1, #0x84 mov r2, #0x14 bl MI_CpuCopy8 _02007518: add r0, r4, r6 add sp, #0xc pop {r4-r7, pc} nop _02007520: .word 0xFFFFFC1F _02007524: .word 0xFFFF83FF _02007528: .word 0xFFF07FFF _0200752C: .word 0xFE0FFFFF _02007530: .word 0xC1FFFFFF thumb_func_start FUN_02007534 FUN_02007534: ; 0x02007534 ldr r2, [r0, #0x0] mov r1, #0x1 bic r2, r1 str r2, [r0, #0x0] bx lr .balign 4 thumb_func_start FUN_02007540 FUN_02007540: ; 0x02007540 push {r3-r5, lr} add r5, r0, #0x0 mov r4, #0x0 _02007546: add r0, r5, #0x0 bl FUN_02007534 add r4, r4, #0x1 add r5, #0x98 cmp r4, #0x4 blt _02007546 pop {r3-r5, pc} .balign 4 thumb_func_start FUN_02007558 FUN_02007558: ; 0x02007558 cmp r1, #0x2e bls _0200755E b _02007800 _0200755E: add r1, r1, r1 add r1, pc ldrh r1, [r1, #0x6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0200756A: ; jump table (using 16-bit offset) .short _020075C8 - _0200756A - 2; case 0 .short _020075CC - _0200756A - 2; case 1 .short _020075D0 - _0200756A - 2; case 2 .short _020075D4 - _0200756A - 2; case 3 .short _020075D8 - _0200756A - 2; case 4 .short _020075DC - _0200756A - 2; case 5 .short _020075E0 - _0200756A - 2; case 6 .short _020075F0 - _0200756A - 2; case 7 .short _020075F4 - _0200756A - 2; case 8 .short _020075F8 - _0200756A - 2; case 9 .short _020075FC - _0200756A - 2; case 10 .short _02007602 - _0200756A - 2; case 11 .short _02007608 - _0200756A - 2; case 12 .short _0200760C - _0200756A - 2; case 13 .short _02007610 - _0200756A - 2; case 14 .short _02007620 - _0200756A - 2; case 15 .short _02007626 - _0200756A - 2; case 16 .short _0200762C - _0200756A - 2; case 17 .short _02007632 - _0200756A - 2; case 18 .short _02007638 - _0200756A - 2; case 19 .short _0200763E - _0200756A - 2; case 20 .short _02007644 - _0200756A - 2; case 21 .short _0200764A - _0200756A - 2; case 22 .short _02007650 - _0200756A - 2; case 23 .short _02007660 - _0200756A - 2; case 24 .short _02007670 - _0200756A - 2; case 25 .short _02007680 - _0200756A - 2; case 26 .short _02007690 - _0200756A - 2; case 27 .short _020076A0 - _0200756A - 2; case 28 .short _020076B0 - _0200756A - 2; case 29 .short _020076C0 - _0200756A - 2; case 30 .short _020076DA - _0200756A - 2; case 31 .short _020076E8 - _0200756A - 2; case 32 .short _020076FA - _0200756A - 2; case 33 .short _0200770C - _0200756A - 2; case 34 .short _02007712 - _0200756A - 2; case 35 .short _0200772A - _0200756A - 2; case 36 .short _02007742 - _0200756A - 2; case 37 .short _02007752 - _0200756A - 2; case 38 .short _02007800 - _0200756A - 2; case 39 .short _02007758 - _0200756A - 2; case 40 .short _02007770 - _0200756A - 2; case 41 .short _02007776 - _0200756A - 2; case 42 .short _0200779A - _0200756A - 2; case 43 .short _020077B4 - _0200756A - 2; case 44 .short _020077CE - _0200756A - 2; case 45 .short _020077E8 - _0200756A - 2; case 46 _020075C8: strh r2, [r0, #0x24] bx lr _020075CC: strh r2, [r0, #0x26] bx lr _020075D0: str r2, [r0, #0x28] bx lr _020075D4: strh r2, [r0, #0x2c] bx lr _020075D8: strh r2, [r0, #0x2e] bx lr _020075DC: str r2, [r0, #0x30] bx lr _020075E0: ldr r3, [r0, #0x54] mov r1, #0x1 bic r3, r1 mov r1, #0x1 and r1, r2 orr r1, r3 str r1, [r0, #0x54] bx lr _020075F0: strh r2, [r0, #0x38] bx lr _020075F4: strh r2, [r0, #0x3a] bx lr _020075F8: strh r2, [r0, #0x3c] bx lr _020075FC: add r0, #0x40 strh r2, [r0, #0x0] bx lr _02007602: add r0, #0x42 strh r2, [r0, #0x0] bx lr _02007608: strh r2, [r0, #0x34] bx lr _0200760C: strh r2, [r0, #0x36] bx lr _02007610: ldr r3, [r0, #0x54] mov r1, #0x2 bic r3, r1 lsl r1, r2, #0x1f lsr r1, r1, #0x1e orr r1, r3 str r1, [r0, #0x54] bx lr _02007620: add r0, #0x44 strb r2, [r0, #0x0] bx lr _02007626: add r0, #0x45 strb r2, [r0, #0x0] bx lr _0200762C: add r0, #0x46 strb r2, [r0, #0x0] bx lr _02007632: add r0, #0x47 strb r2, [r0, #0x0] bx lr _02007638: add r0, #0x70 strh r2, [r0, #0x0] bx lr _0200763E: add r0, #0x72 strh r2, [r0, #0x0] bx lr _02007644: add r0, #0x74 strh r2, [r0, #0x0] bx lr _0200764A: add r0, #0x76 strh r2, [r0, #0x0] bx lr _02007650: ldr r3, [r0, #0x54] mov r1, #0x7c bic r3, r1 lsl r1, r2, #0x1b lsr r1, r1, #0x19 orr r1, r3 str r1, [r0, #0x54] bx lr _02007660: ldr r3, [r0, #0x50] mov r1, #0x1f bic r3, r1 mov r1, #0x1f and r1, r2 orr r1, r3 str r1, [r0, #0x50] bx lr _02007670: ldr r3, [r0, #0x50] ldr r1, _02007804 ; =0xFFFFFC1F and r3, r1 lsl r1, r2, #0x1b lsr r1, r1, #0x16 orr r1, r3 str r1, [r0, #0x50] bx lr _02007680: ldr r3, [r0, #0x50] ldr r1, _02007808 ; =0xFFFF83FF and r3, r1 lsl r1, r2, #0x1b lsr r1, r1, #0x11 orr r1, r3 str r1, [r0, #0x50] bx lr _02007690: ldr r3, [r0, #0x50] ldr r1, _0200780C ; =0xFFF07FFF and r3, r1 lsl r1, r2, #0x1b lsr r1, r1, #0xc orr r1, r3 str r1, [r0, #0x50] bx lr _020076A0: ldr r3, [r0, #0x50] ldr r1, _02007810 ; =0xFE0FFFFF and r3, r1 lsl r1, r2, #0x1b lsr r1, r1, #0x7 orr r1, r3 str r1, [r0, #0x50] bx lr _020076B0: ldr r3, [r0, #0x50] ldr r1, _02007814 ; =0xC1FFFFFF and r3, r1 lsl r1, r2, #0x1b lsr r1, r1, #0x2 orr r1, r3 str r1, [r0, #0x50] bx lr _020076C0: ldr r3, [r0, #0x54] ldr r1, _02007818 ; =0xFFFFEFFF and r3, r1 lsl r1, r2, #0x1f lsr r1, r1, #0x13 orr r1, r3 str r1, [r0, #0x54] mov r1, #0x1 ldr r2, [r0, #0x0] lsl r1, r1, #0x8 orr r1, r2 str r1, [r0, #0x0] bx lr _020076DA: str r2, [r0, #0x4c] mov r1, #0x1 ldr r2, [r0, #0x0] lsl r1, r1, #0x8 orr r1, r2 str r1, [r0, #0x0] bx lr _020076E8: add r1, r0, #0x0 add r1, #0x48 strb r2, [r1, #0x0] mov r1, #0x1 ldr r2, [r0, #0x0] lsl r1, r1, #0x8 orr r1, r2 str r1, [r0, #0x0] bx lr _020076FA: add r1, r0, #0x0 add r1, #0x49 strb r2, [r1, #0x0] mov r1, #0x1 ldr r2, [r0, #0x0] lsl r1, r1, #0x8 orr r1, r2 str r1, [r0, #0x0] bx lr _0200770C: add r0, #0x4a strb r2, [r0, #0x0] bx lr _02007712: ldr r3, [r0, #0x54] ldr r1, _0200781C ; =0xFFFFFDFF and r3, r1 lsl r1, r2, #0x1f lsr r1, r1, #0x16 orr r1, r3 str r1, [r0, #0x54] ldr r2, [r0, #0x0] mov r1, #0x80 orr r1, r2 str r1, [r0, #0x0] bx lr _0200772A: ldr r3, [r0, #0x54] ldr r1, _02007820 ; =0xFFFFFBFF and r3, r1 lsl r1, r2, #0x1f lsr r1, r1, #0x15 orr r1, r3 str r1, [r0, #0x54] ldr r2, [r0, #0x0] mov r1, #0x80 orr r1, r2 str r1, [r0, #0x0] bx lr _02007742: ldr r3, [r0, #0x54] ldr r1, _02007824 ; =0xFFFFF7FF and r3, r1 lsl r1, r2, #0x1f lsr r1, r1, #0x14 orr r1, r3 str r1, [r0, #0x54] bx lr _02007752: add r0, #0x5b strb r2, [r0, #0x0] bx lr _02007758: ldr r3, [r0, #0x54] ldr r1, _02007828 ; =0xFFFE1FFF and r3, r1 lsl r1, r2, #0x1c lsr r1, r1, #0xf orr r1, r3 str r1, [r0, #0x54] ldr r2, [r0, #0x0] mov r1, #0x80 orr r1, r2 str r1, [r0, #0x0] bx lr _02007770: add r0, #0x6e strb r2, [r0, #0x0] bx lr _02007776: add r1, r0, #0x0 add r1, #0x6c ldrh r3, [r1, #0x0] mov r1, #0x3 bic r3, r1 lsl r1, r2, #0x10 lsr r1, r1, #0x10 mov r2, #0x3 and r1, r2 orr r3, r1 add r1, r0, #0x0 add r1, #0x6c strh r3, [r1, #0x0] ldr r1, [r0, #0x0] add r2, #0xfd orr r1, r2 str r1, [r0, #0x0] bx lr _0200779A: add r1, r0, #0x0 add r1, #0x6c ldrh r3, [r1, #0x0] mov r1, #0x4 add r0, #0x6c bic r3, r1 lsl r1, r2, #0x10 lsr r1, r1, #0x10 lsl r1, r1, #0x1f lsr r1, r1, #0x1d orr r1, r3 strh r1, [r0, #0x0] bx lr _020077B4: add r1, r0, #0x0 add r1, #0x6c ldrh r3, [r1, #0x0] mov r1, #0x8 add r0, #0x6c bic r3, r1 lsl r1, r2, #0x10 lsr r1, r1, #0x10 lsl r1, r1, #0x1f lsr r1, r1, #0x1c orr r1, r3 strh r1, [r0, #0x0] bx lr _020077CE: add r1, r0, #0x0 add r1, #0x6c ldrh r3, [r1, #0x0] mov r1, #0x10 add r0, #0x6c bic r3, r1 lsl r1, r2, #0x10 lsr r1, r1, #0x10 lsl r1, r1, #0x1f lsr r1, r1, #0x1b orr r1, r3 strh r1, [r0, #0x0] bx lr _020077E8: add r1, r0, #0x0 add r1, #0x6c ldrh r3, [r1, #0x0] mov r1, #0x60 add r0, #0x6c bic r3, r1 lsl r1, r2, #0x10 lsr r1, r1, #0x10 lsl r1, r1, #0x1e lsr r1, r1, #0x19 orr r1, r3 strh r1, [r0, #0x0] _02007800: bx lr nop _02007804: .word 0xFFFFFC1F _02007808: .word 0xFFFF83FF _0200780C: .word 0xFFF07FFF _02007810: .word 0xFE0FFFFF _02007814: .word 0xC1FFFFFF _02007818: .word 0xFFFFEFFF _0200781C: .word 0xFFFFFDFF _02007820: .word 0xFFFFFBFF _02007824: .word 0xFFFFF7FF _02007828: .word 0xFFFE1FFF thumb_func_start FUN_0200782C FUN_0200782C: ; 0x0200782C push {r3, lr} cmp r1, #0x2e bls _02007834 b _020079D6 _02007834: add r1, r1, r1 add r1, pc ldrh r1, [r1, #0x6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02007840: ; jump table (using 16-bit offset) .short _0200789E - _02007840 - 2; case 0 .short _020078A4 - _02007840 - 2; case 1 .short _020078AA - _02007840 - 2; case 2 .short _020078AE - _02007840 - 2; case 3 .short _020078B4 - _02007840 - 2; case 4 .short _020078BA - _02007840 - 2; case 5 .short _020078BE - _02007840 - 2; case 6 .short _020078C6 - _02007840 - 2; case 7 .short _020078CA - _02007840 - 2; case 8 .short _020078CE - _02007840 - 2; case 9 .short _020078D2 - _02007840 - 2; case 10 .short _020078D8 - _02007840 - 2; case 11 .short _020078DE - _02007840 - 2; case 12 .short _020078E4 - _02007840 - 2; case 13 .short _020078EA - _02007840 - 2; case 14 .short _020078F2 - _02007840 - 2; case 15 .short _020078F8 - _02007840 - 2; case 16 .short _020078FE - _02007840 - 2; case 17 .short _02007904 - _02007840 - 2; case 18 .short _0200790A - _02007840 - 2; case 19 .short _02007910 - _02007840 - 2; case 20 .short _02007916 - _02007840 - 2; case 21 .short _0200791C - _02007840 - 2; case 22 .short _02007922 - _02007840 - 2; case 23 .short _0200792A - _02007840 - 2; case 24 .short _02007932 - _02007840 - 2; case 25 .short _0200793A - _02007840 - 2; case 26 .short _02007942 - _02007840 - 2; case 27 .short _0200794A - _02007840 - 2; case 28 .short _02007952 - _02007840 - 2; case 29 .short _0200795A - _02007840 - 2; case 30 .short _02007962 - _02007840 - 2; case 31 .short _02007966 - _02007840 - 2; case 32 .short _0200796C - _02007840 - 2; case 33 .short _02007972 - _02007840 - 2; case 34 .short _02007978 - _02007840 - 2; case 35 .short _02007980 - _02007840 - 2; case 36 .short _02007988 - _02007840 - 2; case 37 .short _02007990 - _02007840 - 2; case 38 .short _020079D6 - _02007840 - 2; case 39 .short _02007996 - _02007840 - 2; case 40 .short _0200799E - _02007840 - 2; case 41 .short _020079A4 - _02007840 - 2; case 42 .short _020079AE - _02007840 - 2; case 43 .short _020079B8 - _02007840 - 2; case 44 .short _020079C2 - _02007840 - 2; case 45 .short _020079CC - _02007840 - 2; case 46 _0200789E: mov r1, #0x24 ldrsh r0, [r0, r1] pop {r3, pc} _020078A4: mov r1, #0x26 ldrsh r0, [r0, r1] pop {r3, pc} _020078AA: ldr r0, [r0, #0x28] pop {r3, pc} _020078AE: mov r1, #0x2c ldrsh r0, [r0, r1] pop {r3, pc} _020078B4: mov r1, #0x2e ldrsh r0, [r0, r1] pop {r3, pc} _020078BA: ldr r0, [r0, #0x30] pop {r3, pc} _020078BE: ldr r0, [r0, #0x54] lsl r0, r0, #0x1f lsr r0, r0, #0x1f pop {r3, pc} _020078C6: ldrh r0, [r0, #0x38] pop {r3, pc} _020078CA: ldrh r0, [r0, #0x3a] pop {r3, pc} _020078CE: ldrh r0, [r0, #0x3c] pop {r3, pc} _020078D2: mov r1, #0x40 ldrsh r0, [r0, r1] pop {r3, pc} _020078D8: mov r1, #0x42 ldrsh r0, [r0, r1] pop {r3, pc} _020078DE: mov r1, #0x34 ldrsh r0, [r0, r1] pop {r3, pc} _020078E4: mov r1, #0x36 ldrsh r0, [r0, r1] pop {r3, pc} _020078EA: ldr r0, [r0, #0x54] lsl r0, r0, #0x1e lsr r0, r0, #0x1f pop {r3, pc} _020078F2: add r0, #0x44 ldrb r0, [r0, #0x0] pop {r3, pc} _020078F8: add r0, #0x45 ldrb r0, [r0, #0x0] pop {r3, pc} _020078FE: add r0, #0x46 ldrb r0, [r0, #0x0] pop {r3, pc} _02007904: add r0, #0x47 ldrb r0, [r0, #0x0] pop {r3, pc} _0200790A: mov r1, #0x70 ldrsh r0, [r0, r1] pop {r3, pc} _02007910: mov r1, #0x72 ldrsh r0, [r0, r1] pop {r3, pc} _02007916: mov r1, #0x74 ldrsh r0, [r0, r1] pop {r3, pc} _0200791C: mov r1, #0x76 ldrsh r0, [r0, r1] pop {r3, pc} _02007922: ldr r0, [r0, #0x54] lsl r0, r0, #0x19 lsr r0, r0, #0x1b pop {r3, pc} _0200792A: ldr r0, [r0, #0x50] lsl r0, r0, #0x1b lsr r0, r0, #0x1b pop {r3, pc} _02007932: ldr r0, [r0, #0x50] lsl r0, r0, #0x16 lsr r0, r0, #0x1b pop {r3, pc} _0200793A: ldr r0, [r0, #0x50] lsl r0, r0, #0x11 lsr r0, r0, #0x1b pop {r3, pc} _02007942: ldr r0, [r0, #0x50] lsl r0, r0, #0xc lsr r0, r0, #0x1b pop {r3, pc} _0200794A: ldr r0, [r0, #0x50] lsl r0, r0, #0x7 lsr r0, r0, #0x1b pop {r3, pc} _02007952: ldr r0, [r0, #0x50] lsl r0, r0, #0x2 lsr r0, r0, #0x1b pop {r3, pc} _0200795A: ldr r0, [r0, #0x54] lsl r0, r0, #0x13 lsr r0, r0, #0x1f pop {r3, pc} _02007962: ldr r0, [r0, #0x4c] pop {r3, pc} _02007966: add r0, #0x48 ldrb r0, [r0, #0x0] pop {r3, pc} _0200796C: add r0, #0x49 ldrb r0, [r0, #0x0] pop {r3, pc} _02007972: add r0, #0x4a ldrb r0, [r0, #0x0] pop {r3, pc} _02007978: ldr r0, [r0, #0x54] lsl r0, r0, #0x16 lsr r0, r0, #0x1f pop {r3, pc} _02007980: ldr r0, [r0, #0x54] lsl r0, r0, #0x15 lsr r0, r0, #0x1f pop {r3, pc} _02007988: ldr r0, [r0, #0x54] lsl r0, r0, #0x14 lsr r0, r0, #0x1f pop {r3, pc} _02007990: add r0, #0x5b ldrb r0, [r0, #0x0] pop {r3, pc} _02007996: ldr r0, [r0, #0x54] lsl r0, r0, #0xf lsr r0, r0, #0x1c pop {r3, pc} _0200799E: mov r1, #0x6e ldrsb r0, [r0, r1] pop {r3, pc} _020079A4: add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1e lsr r0, r0, #0x1e pop {r3, pc} _020079AE: add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1d lsr r0, r0, #0x1f pop {r3, pc} _020079B8: add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1c lsr r0, r0, #0x1f pop {r3, pc} _020079C2: add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0x1f pop {r3, pc} _020079CC: add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x19 lsr r0, r0, #0x1e pop {r3, pc} _020079D6: bl ErrorHandling mov r0, #0x0 pop {r3, pc} .balign 4 thumb_func_start FUN_020079E0 FUN_020079E0: ; 0x020079E0 push {r3-r4} add r3, r0, #0x0 add r0, r2, #0x0 cmp r1, #0x2e bls _020079EC b _02007E12 _020079EC: add r1, r1, r1 add r1, pc ldrh r1, [r1, #0x6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _020079F8: ; jump table (using 16-bit offset) .short _02007A56 - _020079F8 - 2; case 0 .short _02007A62 - _020079F8 - 2; case 1 .short _02007A6E - _020079F8 - 2; case 2 .short _02007A78 - _020079F8 - 2; case 3 .short _02007A84 - _020079F8 - 2; case 4 .short _02007A90 - _020079F8 - 2; case 5 .short _02007A9A - _020079F8 - 2; case 6 .short _02007AB4 - _020079F8 - 2; case 7 .short _02007ABE - _020079F8 - 2; case 8 .short _02007AC8 - _020079F8 - 2; case 9 .short _02007AD2 - _020079F8 - 2; case 10 .short _02007AE0 - _020079F8 - 2; case 11 .short _02007AEE - _020079F8 - 2; case 12 .short _02007AFA - _020079F8 - 2; case 13 .short _02007B06 - _020079F8 - 2; case 14 .short _02007B20 - _020079F8 - 2; case 15 .short _02007B30 - _020079F8 - 2; case 16 .short _02007B40 - _020079F8 - 2; case 17 .short _02007B50 - _020079F8 - 2; case 18 .short _02007B60 - _020079F8 - 2; case 19 .short _02007B6E - _020079F8 - 2; case 20 .short _02007B7C - _020079F8 - 2; case 21 .short _02007B8A - _020079F8 - 2; case 22 .short _02007B98 - _020079F8 - 2; case 23 .short _02007BB2 - _020079F8 - 2; case 24 .short _02007BCC - _020079F8 - 2; case 25 .short _02007BE4 - _020079F8 - 2; case 26 .short _02007BFC - _020079F8 - 2; case 27 .short _02007C14 - _020079F8 - 2; case 28 .short _02007C2C - _020079F8 - 2; case 29 .short _02007C44 - _020079F8 - 2; case 30 .short _02007C66 - _020079F8 - 2; case 31 .short _02007C7A - _020079F8 - 2; case 32 .short _02007C96 - _020079F8 - 2; case 33 .short _02007CB2 - _020079F8 - 2; case 34 .short _02007CC2 - _020079F8 - 2; case 35 .short _02007CE2 - _020079F8 - 2; case 36 .short _02007D02 - _020079F8 - 2; case 37 .short _02007D1A - _020079F8 - 2; case 38 .short _02007E12 - _020079F8 - 2; case 39 .short _02007D2A - _020079F8 - 2; case 40 .short _02007D4A - _020079F8 - 2; case 41 .short _02007D58 - _020079F8 - 2; case 42 .short _02007D86 - _020079F8 - 2; case 43 .short _02007DAA - _020079F8 - 2; case 44 .short _02007DCE - _020079F8 - 2; case 45 .short _02007DF2 - _020079F8 - 2; case 46 _02007A56: mov r1, #0x24 ldrsh r1, [r3, r1] add r0, r1, r0 strh r0, [r3, #0x24] pop {r3-r4} bx lr _02007A62: mov r1, #0x26 ldrsh r1, [r3, r1] add r0, r1, r0 strh r0, [r3, #0x26] pop {r3-r4} bx lr _02007A6E: ldr r1, [r3, #0x28] add r0, r1, r0 str r0, [r3, #0x28] pop {r3-r4} bx lr _02007A78: mov r1, #0x2c ldrsh r1, [r3, r1] add r0, r1, r0 strh r0, [r3, #0x2c] pop {r3-r4} bx lr _02007A84: mov r1, #0x2e ldrsh r1, [r3, r1] add r0, r1, r0 strh r0, [r3, #0x2e] pop {r3-r4} bx lr _02007A90: ldr r1, [r3, #0x30] add r0, r1, r0 str r0, [r3, #0x30] pop {r3-r4} bx lr _02007A9A: ldr r4, [r3, #0x54] mov r2, #0x1 add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x1f lsr r2, r2, #0x1f add r2, r2, r0 mov r0, #0x1 and r0, r2 orr r0, r1 str r0, [r3, #0x54] pop {r3-r4} bx lr _02007AB4: ldrh r1, [r3, #0x38] add r0, r1, r0 strh r0, [r3, #0x38] pop {r3-r4} bx lr _02007ABE: ldrh r1, [r3, #0x3a] add r0, r1, r0 strh r0, [r3, #0x3a] pop {r3-r4} bx lr _02007AC8: ldrh r1, [r3, #0x3c] add r0, r1, r0 strh r0, [r3, #0x3c] pop {r3-r4} bx lr _02007AD2: mov r1, #0x40 ldrsh r1, [r3, r1] add r3, #0x40 add r0, r1, r0 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007AE0: mov r1, #0x42 ldrsh r1, [r3, r1] add r3, #0x42 add r0, r1, r0 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007AEE: mov r1, #0x34 ldrsh r1, [r3, r1] add r0, r1, r0 strh r0, [r3, #0x34] pop {r3-r4} bx lr _02007AFA: mov r1, #0x36 ldrsh r1, [r3, r1] add r0, r1, r0 strh r0, [r3, #0x36] pop {r3-r4} bx lr _02007B06: ldr r4, [r3, #0x54] mov r2, #0x2 add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x1e lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x1f lsr r0, r0, #0x1e orr r0, r1 str r0, [r3, #0x54] pop {r3-r4} bx lr _02007B20: add r1, r3, #0x0 add r1, #0x44 ldrb r1, [r1, #0x0] add r3, #0x44 add r0, r1, r0 strb r0, [r3, #0x0] pop {r3-r4} bx lr _02007B30: add r1, r3, #0x0 add r1, #0x45 ldrb r1, [r1, #0x0] add r3, #0x45 add r0, r1, r0 strb r0, [r3, #0x0] pop {r3-r4} bx lr _02007B40: add r1, r3, #0x0 add r1, #0x46 ldrb r1, [r1, #0x0] add r3, #0x46 add r0, r1, r0 strb r0, [r3, #0x0] pop {r3-r4} bx lr _02007B50: add r1, r3, #0x0 add r1, #0x47 ldrb r1, [r1, #0x0] add r3, #0x47 add r0, r1, r0 strb r0, [r3, #0x0] pop {r3-r4} bx lr _02007B60: mov r1, #0x70 ldrsh r1, [r3, r1] add r3, #0x70 add r0, r1, r0 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007B6E: mov r1, #0x72 ldrsh r1, [r3, r1] add r3, #0x72 add r0, r1, r0 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007B7C: mov r1, #0x74 ldrsh r1, [r3, r1] add r3, #0x74 add r0, r1, r0 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007B8A: mov r1, #0x76 ldrsh r1, [r3, r1] add r3, #0x76 add r0, r1, r0 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007B98: ldr r4, [r3, #0x54] mov r2, #0x7c add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x19 lsr r2, r2, #0x1b add r0, r2, r0 lsl r0, r0, #0x1b lsr r0, r0, #0x19 orr r0, r1 str r0, [r3, #0x54] pop {r3-r4} bx lr _02007BB2: ldr r4, [r3, #0x50] mov r2, #0x1f add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x1b lsr r2, r2, #0x1b add r2, r2, r0 mov r0, #0x1f and r0, r2 orr r0, r1 str r0, [r3, #0x50] pop {r3-r4} bx lr _02007BCC: ldr r2, [r3, #0x50] ldr r1, _02007E18 ; =0xFFFFFC1F and r1, r2 lsl r2, r2, #0x16 lsr r2, r2, #0x1b add r0, r2, r0 lsl r0, r0, #0x1b lsr r0, r0, #0x16 orr r0, r1 str r0, [r3, #0x50] pop {r3-r4} bx lr _02007BE4: ldr r2, [r3, #0x50] ldr r1, _02007E1C ; =0xFFFF83FF and r1, r2 lsl r2, r2, #0x11 lsr r2, r2, #0x1b add r0, r2, r0 lsl r0, r0, #0x1b lsr r0, r0, #0x11 orr r0, r1 str r0, [r3, #0x50] pop {r3-r4} bx lr _02007BFC: ldr r2, [r3, #0x50] ldr r1, _02007E20 ; =0xFFF07FFF and r1, r2 lsl r2, r2, #0xc lsr r2, r2, #0x1b add r0, r2, r0 lsl r0, r0, #0x1b lsr r0, r0, #0xc orr r0, r1 str r0, [r3, #0x50] pop {r3-r4} bx lr _02007C14: ldr r2, [r3, #0x50] ldr r1, _02007E24 ; =0xFE0FFFFF and r1, r2 lsl r2, r2, #0x7 lsr r2, r2, #0x1b add r0, r2, r0 lsl r0, r0, #0x1b lsr r0, r0, #0x7 orr r0, r1 str r0, [r3, #0x50] pop {r3-r4} bx lr _02007C2C: ldr r2, [r3, #0x50] ldr r1, _02007E28 ; =0xC1FFFFFF and r1, r2 lsl r2, r2, #0x2 lsr r2, r2, #0x1b add r0, r2, r0 lsl r0, r0, #0x1b lsr r0, r0, #0x2 orr r0, r1 str r0, [r3, #0x50] pop {r3-r4} bx lr _02007C44: ldr r2, [r3, #0x54] ldr r1, _02007E2C ; =0xFFFFEFFF and r1, r2 lsl r2, r2, #0x13 lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x1f lsr r0, r0, #0x13 orr r0, r1 str r0, [r3, #0x54] mov r0, #0x1 ldr r1, [r3, #0x0] lsl r0, r0, #0x8 orr r0, r1 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007C66: ldr r1, [r3, #0x4c] add r0, r1, r0 str r0, [r3, #0x4c] mov r0, #0x1 ldr r1, [r3, #0x0] lsl r0, r0, #0x8 orr r0, r1 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007C7A: add r1, r3, #0x0 add r1, #0x48 ldrb r1, [r1, #0x0] add r1, r1, r0 add r0, r3, #0x0 add r0, #0x48 strb r1, [r0, #0x0] mov r0, #0x1 ldr r1, [r3, #0x0] lsl r0, r0, #0x8 orr r0, r1 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007C96: add r1, r3, #0x0 add r1, #0x49 ldrb r1, [r1, #0x0] add r1, r1, r0 add r0, r3, #0x0 add r0, #0x49 strb r1, [r0, #0x0] mov r0, #0x1 ldr r1, [r3, #0x0] lsl r0, r0, #0x8 orr r0, r1 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007CB2: add r1, r3, #0x0 add r1, #0x4a ldrb r1, [r1, #0x0] add r3, #0x4a add r0, r1, r0 strb r0, [r3, #0x0] pop {r3-r4} bx lr _02007CC2: ldr r2, [r3, #0x54] ldr r1, _02007E30 ; =0xFFFFFDFF and r1, r2 lsl r2, r2, #0x16 lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x1f lsr r0, r0, #0x16 orr r0, r1 str r0, [r3, #0x54] ldr r1, [r3, #0x0] mov r0, #0x80 orr r0, r1 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007CE2: ldr r2, [r3, #0x54] ldr r1, _02007E34 ; =0xFFFFFBFF and r1, r2 lsl r2, r2, #0x15 lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x1f lsr r0, r0, #0x15 orr r0, r1 str r0, [r3, #0x54] ldr r1, [r3, #0x0] mov r0, #0x80 orr r0, r1 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007D02: ldr r2, [r3, #0x54] ldr r1, _02007E38 ; =0xFFFFF7FF and r1, r2 lsl r2, r2, #0x14 lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x1f lsr r0, r0, #0x14 orr r0, r1 str r0, [r3, #0x54] pop {r3-r4} bx lr _02007D1A: add r1, r3, #0x0 add r1, #0x5b ldrb r1, [r1, #0x0] add r3, #0x5b add r0, r1, r0 strb r0, [r3, #0x0] pop {r3-r4} bx lr _02007D2A: ldr r2, [r3, #0x54] ldr r1, _02007E3C ; =0xFFFE1FFF and r1, r2 lsl r2, r2, #0xf lsr r2, r2, #0x1c add r0, r2, r0 lsl r0, r0, #0x1c lsr r0, r0, #0xf orr r0, r1 str r0, [r3, #0x54] ldr r1, [r3, #0x0] mov r0, #0x80 orr r0, r1 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007D4A: mov r1, #0x6e ldrsb r1, [r3, r1] add r3, #0x6e add r0, r1, r0 strb r0, [r3, #0x0] pop {r3-r4} bx lr _02007D58: add r1, r3, #0x0 add r1, #0x6c ldrh r4, [r1, #0x0] mov r2, #0x3 add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x1e lsr r2, r2, #0x1e add r0, r2, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r2, #0x3 and r0, r2 orr r1, r0 add r0, r3, #0x0 add r0, #0x6c strh r1, [r0, #0x0] ldr r0, [r3, #0x0] add r2, #0xfd orr r0, r2 str r0, [r3, #0x0] pop {r3-r4} bx lr _02007D86: add r1, r3, #0x0 add r1, #0x6c ldrh r4, [r1, #0x0] mov r2, #0x4 add r3, #0x6c add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x1d lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1f lsr r0, r0, #0x1d orr r0, r1 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007DAA: add r1, r3, #0x0 add r1, #0x6c ldrh r4, [r1, #0x0] mov r2, #0x8 add r3, #0x6c add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x1c lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1f lsr r0, r0, #0x1c orr r0, r1 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007DCE: add r1, r3, #0x0 add r1, #0x6c ldrh r4, [r1, #0x0] mov r2, #0x10 add r3, #0x6c add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x1b lsr r2, r2, #0x1f add r0, r2, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1f lsr r0, r0, #0x1b orr r0, r1 strh r0, [r3, #0x0] pop {r3-r4} bx lr _02007DF2: add r1, r3, #0x0 add r1, #0x6c ldrh r4, [r1, #0x0] mov r2, #0x60 add r3, #0x6c add r1, r4, #0x0 bic r1, r2 lsl r2, r4, #0x19 lsr r2, r2, #0x1e add r0, r2, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1e lsr r0, r0, #0x19 orr r0, r1 strh r0, [r3, #0x0] _02007E12: pop {r3-r4} bx lr nop _02007E18: .word 0xFFFFFC1F _02007E1C: .word 0xFFFF83FF _02007E20: .word 0xFFF07FFF _02007E24: .word 0xFE0FFFFF _02007E28: .word 0xC1FFFFFF _02007E2C: .word 0xFFFFEFFF _02007E30: .word 0xFFFFFDFF _02007E34: .word 0xFFFFFBFF _02007E38: .word 0xFFFFF7FF _02007E3C: .word 0xFFFE1FFF thumb_func_start FUN_02007E40 FUN_02007E40: ; 0x02007E40 push {r4-r5} ldr r5, [r0, #0x54] mov r4, #0x2 orr r4, r5 str r4, [r0, #0x54] add r4, r0, #0x0 add r4, #0x44 strb r1, [r4, #0x0] add r1, r0, #0x0 add r1, #0x45 strb r2, [r1, #0x0] add r1, r0, #0x0 add r1, #0x46 strb r3, [r1, #0x0] ldr r1, [sp, #0x8] add r0, #0x47 strb r1, [r0, #0x0] pop {r4-r5} bx lr .balign 4 thumb_func_start FUN_02007E68 FUN_02007E68: ; 0x02007E68 push {r4-r5} mov r4, #0x1 ldr r5, [r0, #0x54] lsl r4, r4, #0xc orr r4, r5 str r4, [r0, #0x54] add r4, r0, #0x0 add r4, #0x48 strb r1, [r4, #0x0] add r1, r0, #0x0 add r1, #0x49 strb r2, [r1, #0x0] add r1, r0, #0x0 mov r2, #0x0 add r1, #0x4a strb r2, [r1, #0x0] add r1, r0, #0x0 add r1, #0x4b strb r3, [r1, #0x0] ldr r1, [sp, #0x8] str r1, [r0, #0x4c] pop {r4-r5} bx lr .balign 4 thumb_func_start FUN_02007E98 FUN_02007E98: ; 0x02007E98 push {r4-r7} add r4, r0, #0x0 add r0, r1, #0x0 add r5, r2, #0x0 lsl r0, r0, #0x18 lsr r6, r0, #0x18 lsl r0, r5, #0x18 lsr r5, r0, #0x18 lsl r0, r3, #0x18 ldr r2, [sp, #0x10] mov r1, #0x0 lsr r0, r0, #0x18 _02007EB0: ldr r3, [r4, #0x0] lsl r3, r3, #0x1f lsr r3, r3, #0x1f beq _02007EDE mov r3, #0x1 ldr r7, [r4, #0x54] lsl r3, r3, #0xc orr r3, r7 str r3, [r4, #0x54] add r3, r4, #0x0 add r3, #0x48 strb r6, [r3, #0x0] add r3, r4, #0x0 add r3, #0x49 add r7, r4, #0x0 strb r5, [r3, #0x0] add r7, #0x4a mov r3, #0x0 strb r3, [r7, #0x0] add r3, r4, #0x0 add r3, #0x4b strb r0, [r3, #0x0] str r2, [r4, #0x4c] _02007EDE: add r1, r1, #0x1 add r4, #0x98 cmp r1, #0x4 blt _02007EB0 pop {r4-r7} bx lr .balign 4 thumb_func_start FUN_02007EEC FUN_02007EEC: ; 0x02007EEC ldr r2, [r0, #0x54] ldr r1, _02007F1C ; =0xFFFFEFFF and r1, r2 str r1, [r0, #0x54] add r1, r0, #0x0 mov r2, #0x0 add r1, #0x48 strb r2, [r1, #0x0] add r1, r0, #0x0 add r1, #0x49 strb r2, [r1, #0x0] add r1, r0, #0x0 add r1, #0x4a strb r2, [r1, #0x0] add r1, r0, #0x0 add r1, #0x4b strb r2, [r1, #0x0] str r2, [r0, #0x4c] mov r1, #0x1 ldr r2, [r0, #0x0] lsl r1, r1, #0x8 orr r1, r2 str r1, [r0, #0x0] bx lr .balign 4 _02007F1C: .word 0xFFFFEFFF thumb_func_start FUN_02007F20 FUN_02007F20: ; 0x02007F20 ldr r0, [r0, #0x54] lsl r0, r0, #0x13 lsr r0, r0, #0x1f cmp r0, #0x1 bne _02007F2E mov r0, #0x1 bx lr _02007F2E: mov r0, #0x0 bx lr .balign 4 thumb_func_start FUN_02007F34 FUN_02007F34: ; 0x02007F34 mov r2, #0x28 sub r2, r2, r1 mov r1, #0x36 ldrsh r1, [r0, r1] mul r1, r2 asr r1, r1, #0x8 sub r1, r2, r1 strh r1, [r0, #0x2e] bx lr .balign 4 thumb_func_start FUN_02007F48 FUN_02007F48: ; 0x02007F48 push {r4-r7} add r1, r0, #0x0 add r1, #0x58 ldrb r1, [r1, #0x0] add r6, r0, #0x0 add r6, #0x59 cmp r1, #0x0 beq _0200800A add r1, r0, #0x0 add r1, #0x5a ldrb r1, [r1, #0x0] cmp r1, #0x0 bne _02007FFE ldrb r1, [r6, #0x0] add r1, r1, #0x1 strb r1, [r6, #0x0] ldrb r3, [r6, #0x0] mov r1, #0x84 lsl r4, r3, #0x1 add r2, r0, r4 ldrsb r2, [r2, r1] sub r1, #0x85 cmp r2, r1 bge _02007FC6 mov r2, #0x0 sub r1, r2, #0x2 _02007F7C: add r4, r0, r3 add r4, #0x5c ldrb r4, [r4, #0x0] add r3, r0, r3 add r3, #0x5c add r4, r4, #0x1 strb r4, [r3, #0x0] ldrb r5, [r6, #0x0] lsl r3, r5, #0x1 add r4, r0, r3 add r3, r4, #0x0 add r7, r0, r5 add r3, #0x85 add r7, #0x5c ldrb r3, [r3, #0x0] ldrb r7, [r7, #0x0] cmp r3, r7 beq _02007FA4 cmp r3, #0x0 bne _02007FAE _02007FA4: add r3, r0, r5 add r3, #0x5c strb r2, [r3, #0x0] add r6, r6, #0x1 b _02007FB6 _02007FAE: mov r3, #0x84 ldrsb r3, [r4, r3] sub r3, r1, r3 strb r3, [r6, #0x0] _02007FB6: ldrb r3, [r6, #0x0] mov r5, #0x84 lsl r4, r3, #0x1 add r7, r0, r4 ldrsb r7, [r7, r5] sub r5, #0x85 cmp r7, r5 blt _02007F7C _02007FC6: add r2, r0, r4 mov r1, #0x84 ldrsb r2, [r2, r1] sub r1, #0x85 cmp r2, r1 beq _02007FD6 cmp r3, #0xa blo _02007FE6 _02007FD6: add r1, r0, #0x0 mov r2, #0x0 add r1, #0x5b strb r2, [r1, #0x0] add r0, #0x58 strb r2, [r0, #0x0] pop {r4-r7} bx lr _02007FE6: add r1, r0, #0x0 add r1, #0x5b strb r2, [r1, #0x0] ldrb r1, [r6, #0x0] lsl r1, r1, #0x1 add r1, r0, r1 add r1, #0x85 ldrb r1, [r1, #0x0] add r0, #0x5a strb r1, [r0, #0x0] pop {r4-r7} bx lr _02007FFE: add r1, r0, #0x0 add r1, #0x5a ldrb r1, [r1, #0x0] add r0, #0x5a sub r1, r1, #0x1 strb r1, [r0, #0x0] _0200800A: pop {r4-r7} bx lr .balign 4 thumb_func_start FUN_02008010 FUN_02008010: ; 0x02008010 mov r2, #0x1 strb r2, [r0, #0x0] mov r3, #0x0 strb r3, [r0, #0x2] ldrsb r2, [r1, r3] strb r2, [r0, #0x1] ldrb r2, [r1, #0x1] strb r2, [r0, #0x3] str r1, [r0, #0x10] add r2, r3, #0x0 _02008024: add r1, r0, r3 add r3, r3, #0x1 strb r2, [r1, #0x4] cmp r3, #0xa blt _02008024 bx lr thumb_func_start FUN_02008030 FUN_02008030: ; 0x02008030 push {r4-r7} ldrb r1, [r0, #0x0] cmp r1, #0x0 beq _020080C6 add r3, r0, #0x2 ldr r4, [r0, #0x10] cmp r1, #0x0 beq _020080C0 ldrb r1, [r0, #0x3] cmp r1, #0x0 bne _020080BC ldrb r1, [r3, #0x0] add r1, r1, #0x1 strb r1, [r3, #0x0] ldrb r2, [r3, #0x0] mov r1, #0x0 mvn r1, r1 lsl r5, r2, #0x1 ldrsb r6, [r4, r5] cmp r6, r1 bge _02008098 mov r1, #0x0 _0200805C: add r5, r0, r2 ldrb r2, [r5, #0x4] add r2, r2, #0x1 strb r2, [r5, #0x4] ldrb r2, [r3, #0x0] add r5, r0, r2 lsl r2, r2, #0x1 add r2, r4, r2 ldrb r7, [r2, #0x1] ldrb r6, [r5, #0x4] cmp r7, r6 beq _02008078 cmp r7, #0x0 bne _0200807E _02008078: strb r1, [r5, #0x4] add r3, r3, #0x1 b _0200808A _0200807E: mov r5, #0x0 ldrsb r5, [r2, r5] mov r2, #0x1 mvn r2, r2 sub r2, r2, r5 strb r2, [r3, #0x0] _0200808A: ldrb r2, [r3, #0x0] mov r6, #0x0 mvn r6, r6 lsl r5, r2, #0x1 ldrsb r7, [r4, r5] cmp r7, r6 blt _0200805C _02008098: ldrsb r5, [r4, r5] mov r1, #0x0 mvn r1, r1 cmp r5, r1 beq _020080A6 cmp r2, #0xa blo _020080AE _020080A6: mov r1, #0x0 strb r1, [r0, #0x1] strb r1, [r0, #0x0] b _020080C0 _020080AE: strb r5, [r0, #0x1] ldrb r1, [r3, #0x0] lsl r1, r1, #0x1 add r1, r4, r1 ldrb r1, [r1, #0x1] strb r1, [r0, #0x3] b _020080C0 _020080BC: sub r1, r1, #0x1 strb r1, [r0, #0x3] _020080C0: ldrb r0, [r0, #0x1] pop {r4-r7} bx lr _020080C6: mov r0, #0x0 mvn r0, r0 pop {r4-r7} bx lr .balign 4 thumb_func_start FUN_020080D0 FUN_020080D0: ; 0x020080D0 ldr r2, [r0, #0x0] mov r1, #0x80 orr r2, r1 add r1, #0x80 orr r1, r2 str r1, [r0, #0x0] bx lr .balign 4 thumb_func_start FUN_020080E0 FUN_020080E0: ; 0x020080E0 push {r3-r4} add r2, r0, #0x0 add r3, r2, #0x0 add r4, r2, #0x4 add r3, #0x14 ldmia r4!, {r0-r1} stmia r3!, {r0-r1} ldmia r4!, {r0-r1} stmia r3!, {r0-r1} add r0, r2, #0x0 add r0, #0x6c ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x78 strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x6e ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x7a strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x70 ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x7c strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x72 ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x7e strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x74 ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x80 strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x76 ldrh r0, [r0, #0x0] add r2, #0x82 strh r0, [r2, #0x0] pop {r3-r4} bx lr thumb_func_start FUN_0200813C FUN_0200813C: ; 0x0200813C push {r3-r4} add r2, r0, #0x0 add r4, r2, #0x0 add r4, #0x14 add r3, r2, #0x4 ldmia r4!, {r0-r1} stmia r3!, {r0-r1} ldmia r4!, {r0-r1} stmia r3!, {r0-r1} add r0, r2, #0x0 add r0, #0x78 ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x6c strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x7a ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x6e strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x7c ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x70 strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x7e ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x72 strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x80 ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x74 strh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x82 ldrh r1, [r0, #0x0] add r0, r2, #0x0 add r0, #0x76 strh r1, [r0, #0x0] ldr r1, [r2, #0x0] mov r0, #0x80 orr r1, r0 add r0, #0x80 orr r0, r1 str r0, [r2, #0x0] pop {r3-r4} bx lr .balign 4 thumb_func_start FUN_020081A8 FUN_020081A8: ; 0x020081A8 mov r3, #0xa7 lsl r3, r3, #0x2 str r1, [r0, r3] add r1, r3, #0x4 str r2, [r0, r1] bx lr thumb_func_start FUN_020081B4 FUN_020081B4: ; 0x020081B4 mov r3, #0xa9 lsl r3, r3, #0x2 str r1, [r0, r3] add r1, r3, #0x4 str r2, [r0, r1] bx lr thumb_func_start FUN_020081C0 FUN_020081C0: ; 0x020081C0 add r0, r0, #0x4 bx lr thumb_func_start FUN_020081C4 FUN_020081C4: ; 0x020081C4 push {r4, lr} add r4, r0, #0x0 ldr r0, _02008254 ; =0x000002E1 ldrb r1, [r4, r0] cmp r1, #0x0 beq _02008212 mov r1, #0x0 strb r1, [r4, r0] sub r0, #0x81 add r0, r4, r0 bl FUN_020B1A24 mov r3, #0xae lsl r3, r3, #0x2 mov r1, #0x20 strh r1, [r4, r3] add r0, r3, #0x2 strh r1, [r4, r0] add r0, r3, #0x0 sub r0, #0x18 ldr r1, [r4, r0] add r0, r3, #0x0 add r0, #0x10 str r1, [r4, r0] add r0, r3, #0x0 sub r0, #0xc ldr r1, [r4, r0] add r0, r3, #0x0 add r0, #0x14 str r1, [r4, r0] add r1, r3, #0x0 sub r1, #0x1c add r0, r4, r3 sub r3, #0x58 ldr r1, [r4, r1] mov r2, #0x0 add r3, r4, r3 bl FUN_020B1528 _02008212: ldr r0, _02008258 ; =0x000002E2 ldrb r1, [r4, r0] cmp r1, #0x0 beq _02008252 mov r1, #0x0 strb r1, [r4, r0] sub r0, #0x5e add r0, r4, r0 bl FUN_020B19DC mov r3, #0xaa lsl r3, r3, #0x2 add r0, r3, #0x0 ldr r1, [r4, r3] add r0, #0x30 str r1, [r4, r0] add r0, r3, #0x0 add r0, #0x8 ldr r1, [r4, r0] add r0, r3, #0x0 add r0, #0x34 str r1, [r4, r0] add r0, r3, #0x0 sub r1, r3, #0x4 add r0, #0x28 sub r3, #0x24 ldr r1, [r4, r1] add r0, r4, r0 mov r2, #0x0 add r3, r4, r3 bl FUN_020B1240 _02008252: pop {r4, pc} .balign 4 _02008254: .word 0x000002E1 _02008258: .word 0x000002E2 thumb_func_start FUN_0200825C FUN_0200825C: ; 0x0200825C ldr r2, _02008264 ; =0x000002E3 strb r1, [r0, r2] bx lr nop _02008264: .word 0x000002E3 thumb_func_start FUN_02008268 FUN_02008268: ; 0x02008268 push {r4, lr} add r4, r0, #0x0 bne _02008272 bl ErrorHandling _02008272: ldr r0, [r4, #0x0] lsl r0, r0, #0x1f lsr r0, r0, #0x1f beq _0200827E mov r0, #0x1 pop {r4, pc} _0200827E: mov r0, #0x0 pop {r4, pc} .balign 4 thumb_func_start FUN_02008284 FUN_02008284: ; 0x02008284 mov r2, #0xb9 lsl r2, r2, #0x2 ldr r3, [r0, r2] orr r1, r3 str r1, [r0, r2] bx lr thumb_func_start FUN_02008290 FUN_02008290: ; 0x02008290 push {r3-r4} mov r3, #0xb9 lsl r3, r3, #0x2 mov r2, #0x0 mvn r2, r2 ldr r4, [r0, r3] eor r1, r2 and r1, r4 str r1, [r0, r3] pop {r3-r4} bx lr .balign 4 thumb_func_start FUN_020082A8 FUN_020082A8: ; 0x020082A8 push {r4-r7, lr} sub sp, #0x5c add r6, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x48] str r0, [sp, #0x54] ldr r0, [sp, #0x48] str r6, [sp, #0x44] str r0, [sp, #0x38] _020082BA: ldr r0, [sp, #0x44] ldr r1, [r0, #0x0] lsl r0, r1, #0x1f lsr r0, r0, #0x1f beq _020082CA lsl r0, r1, #0x18 lsr r0, r0, #0x1f bne _020082CC _020082CA: b _020086C2 _020082CC: mov r0, #0x80 bic r1, r0 ldr r0, [sp, #0x44] mov r2, #0xa6 str r1, [r0, #0x0] mov r0, #0x1 str r0, [sp, #0x48] ldr r0, [sp, #0x44] ldr r1, [sp, #0x44] lsl r2, r2, #0x2 ldrh r0, [r0, #0x4] ldrh r1, [r1, #0x6] ldr r2, [r6, r2] bl LoadFromNarc_2 add r1, sp, #0x58 str r0, [sp, #0x4c] bl FUN_020B0088 ldr r0, [sp, #0x58] mov r1, #0xaf ldr r0, [r0, #0x4] lsl r1, r1, #0x2 str r0, [r6, r1] ldr r0, [sp, #0x58] ldr r2, [r0, #0x8] add r0, r1, #0x4 str r2, [r6, r0] ldr r0, [sp, #0x58] add r1, #0x8 ldr r0, [r0, #0xc] str r0, [r6, r1] ldr r0, [sp, #0x58] ldr r0, [r0, #0x14] str r0, [sp, #0x50] bl FUN_02008A74 ldr r0, [sp, #0x44] ldr r1, [sp, #0x50] bl FUN_020088EC ldr r0, [sp, #0x54] cmp r0, #0x3 beq _02008326 b _02008554 _02008326: mov r5, #0x0 add r0, r5, #0x0 str r5, [sp, #0x14] str r0, [sp, #0x24] _0200832E: ldr r0, [sp, #0x14] mov r1, #0x4f sub r2, r1, r0 mov r0, #0x50 add r1, r2, #0x0 mul r1, r0 ldr r0, [sp, #0x50] mov r4, #0x0 add r0, r0, r1 str r0, [sp, #0x20] ldr r1, [sp, #0x50] ldr r0, [sp, #0x24] add r7, r1, r0 ldr r0, [sp, #0x20] str r7, [sp, #0x18] str r0, [sp, #0x1c] ldr r0, [sp, #0x14] sub r0, r0, #0x1 lsl r0, r0, #0x7 str r0, [sp, #0x10] _02008356: cmp r4, #0x28 bge _02008442 ldr r0, [sp, #0x44] ldr r1, [r0, #0x54] lsl r0, r1, #0x16 lsr r0, r0, #0x1f beq _02008386 lsl r1, r1, #0x15 lsr r1, r1, #0x1f beq _02008386 mov r0, #0x27 sub r1, r0, r4 ldr r0, [sp, #0x1c] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 add r1, r4, r1 add r1, #0x50 strb r0, [r1, #0x0] b _0200852E _02008386: cmp r0, #0x0 beq _020083A6 mov r0, #0x27 sub r1, r0, r4 ldr r0, [sp, #0x18] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 add r1, r4, r1 add r1, #0x50 strb r0, [r1, #0x0] b _0200852E _020083A6: ldr r0, [sp, #0x44] ldr r0, [r0, #0x54] lsl r1, r0, #0x15 lsr r1, r1, #0x1f beq _020083C4 mov r1, #0xab lsl r1, r1, #0x2 ldr r0, [sp, #0x20] ldr r1, [r6, r1] ldrb r0, [r0, #0x0] add r1, r5, r1 add r1, r4, r1 add r1, #0x50 strb r0, [r1, #0x0] b _0200852E _020083C4: lsl r0, r0, #0xf lsr r0, r0, #0x1c str r0, [sp, #0xc] beq _02008430 ldr r1, [sp, #0xc] ldr r0, [sp, #0x14] lsl r1, r1, #0x1 bl _u32_div_f cmp r1, #0x0 beq _020083F4 mov r0, #0xab lsl r0, r0, #0x2 ldr r1, [r6, r0] ldr r0, [sp, #0x10] add r0, r0, r1 add r0, r4, r0 add r0, #0x50 add r1, r5, r1 add r1, r4, r1 ldrb r0, [r0, #0x0] add r1, #0x50 strb r0, [r1, #0x0] b _0200852E _020083F4: ldr r1, [sp, #0xc] add r0, r4, #0x0 bl _u32_div_f cmp r1, #0x0 beq _02008416 mov r0, #0xab lsl r0, r0, #0x2 ldr r0, [r6, r0] add r2, r5, r0 add r0, r2, r4 add r0, #0x4f ldrb r1, [r0, #0x0] add r0, r2, r4 add r0, #0x50 strb r1, [r0, #0x0] b _0200852E _02008416: ldrb r1, [r7, #0x0] mov r0, #0xf and r1, r0 lsl r0, r1, #0x4 orr r0, r1 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 add r1, r4, r1 add r1, #0x50 strb r0, [r1, #0x0] b _0200852E _02008430: mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] ldrb r0, [r7, #0x0] add r1, r5, r1 add r1, r4, r1 add r1, #0x50 strb r0, [r1, #0x0] b _0200852E _02008442: ldr r0, [sp, #0x44] ldr r1, [r0, #0x54] lsl r0, r1, #0x16 lsr r0, r0, #0x1f beq _02008472 lsl r1, r1, #0x15 lsr r1, r1, #0x1f beq _02008472 add r1, r4, #0x0 sub r1, #0x28 mov r0, #0x4f sub r1, r0, r1 ldr r0, [sp, #0x1c] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 add r2, r4, r1 ldr r1, _020086E8 ; =0x00002828 strb r0, [r2, r1] b _0200852E _02008472: cmp r0, #0x0 beq _02008496 add r1, r4, #0x0 sub r1, #0x28 mov r0, #0x4f sub r1, r0, r1 ldr r0, [sp, #0x18] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 add r2, r4, r1 ldr r1, _020086E8 ; =0x00002828 strb r0, [r2, r1] b _0200852E _02008496: ldr r0, [sp, #0x44] ldr r0, [r0, #0x54] lsl r1, r0, #0x15 lsr r1, r1, #0x1f beq _020084B4 mov r1, #0xab lsl r1, r1, #0x2 ldr r0, [sp, #0x20] ldr r1, [r6, r1] ldrb r0, [r0, #0x0] add r1, r5, r1 add r2, r4, r1 ldr r1, _020086E8 ; =0x00002828 strb r0, [r2, r1] b _0200852E _020084B4: lsl r0, r0, #0xf lsr r0, r0, #0x1c str r0, [sp, #0x8] beq _0200851E ldr r1, [sp, #0x8] ldr r0, [sp, #0x14] lsl r1, r1, #0x1 bl _u32_div_f cmp r1, #0x0 beq _020084E4 mov r0, #0xab lsl r0, r0, #0x2 ldr r1, [r6, r0] ldr r0, [sp, #0x10] add r0, r0, r1 add r2, r4, r0 ldr r0, _020086E8 ; =0x00002828 add r1, r5, r1 ldrb r0, [r2, r0] add r2, r4, r1 ldr r1, _020086E8 ; =0x00002828 strb r0, [r2, r1] b _0200852E _020084E4: ldr r1, [sp, #0x8] add r0, r4, #0x0 bl _u32_div_f cmp r1, #0x0 beq _02008504 mov r0, #0xab lsl r0, r0, #0x2 ldr r0, [r6, r0] ldr r1, _020086EC ; =0x00002827 add r0, r5, r0 add r0, r0, r4 ldrb r2, [r0, r1] add r1, r1, #0x1 strb r2, [r0, r1] b _0200852E _02008504: ldrb r1, [r7, #0x0] mov r0, #0xf and r1, r0 lsl r0, r1, #0x4 orr r0, r1 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 add r2, r4, r1 ldr r1, _020086E8 ; =0x00002828 strb r0, [r2, r1] b _0200852E _0200851E: mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] ldrb r0, [r7, #0x0] add r1, r5, r1 add r2, r4, r1 ldr r1, _020086E8 ; =0x00002828 strb r0, [r2, r1] _0200852E: ldr r0, [sp, #0x20] add r4, r4, #0x1 add r0, r0, #0x1 add r7, r7, #0x1 str r0, [sp, #0x20] cmp r4, #0x50 bge _0200853E b _02008356 _0200853E: ldr r0, [sp, #0x24] add r5, #0x80 add r0, #0x50 str r0, [sp, #0x24] ldr r0, [sp, #0x14] add r0, r0, #0x1 str r0, [sp, #0x14] cmp r0, #0x50 bge _02008552 b _0200832E _02008552: b _020086BC _02008554: mov r0, #0x0 str r0, [sp, #0x0] str r0, [sp, #0x40] str r0, [sp, #0x3c] _0200855C: ldr r0, [sp, #0x0] mov r1, #0x4f sub r2, r1, r0 mov r0, #0x50 add r1, r2, #0x0 mul r1, r0 ldr r0, [sp, #0x50] mov r4, #0x0 add r0, r0, r1 str r0, [sp, #0x34] ldr r1, [sp, #0x50] ldr r0, [sp, #0x3c] add r7, r1, r0 ldr r0, [sp, #0x34] ldr r1, [sp, #0x38] str r0, [sp, #0x30] ldr r0, [sp, #0x40] str r7, [sp, #0x2c] add r5, r1, r0 ldr r0, [sp, #0x0] sub r0, r0, #0x1 lsl r1, r0, #0x7 ldr r0, [sp, #0x38] add r0, r0, r1 str r0, [sp, #0x28] _0200858E: ldr r0, [sp, #0x44] ldr r1, [r0, #0x54] lsl r0, r1, #0x16 lsr r0, r0, #0x1f beq _020085D6 lsl r1, r1, #0x15 lsr r1, r1, #0x1f beq _020085D6 cmp r4, #0x28 bge _020085BA mov r0, #0x27 sub r1, r0, r4 ldr r0, [sp, #0x30] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 strb r0, [r4, r1] b _02008694 _020085BA: add r1, r4, #0x0 sub r1, #0x28 mov r0, #0x4f sub r1, r0, r1 ldr r0, [sp, #0x30] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 strb r0, [r4, r1] b _02008694 _020085D6: cmp r0, #0x0 beq _02008612 cmp r4, #0x28 bge _020085F6 mov r0, #0x27 sub r1, r0, r4 ldr r0, [sp, #0x2c] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 strb r0, [r4, r1] b _02008694 _020085F6: add r1, r4, #0x0 sub r1, #0x28 mov r0, #0x4f sub r1, r0, r1 ldr r0, [sp, #0x2c] ldrb r0, [r0, r1] bl FUN_020088D8 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 strb r0, [r4, r1] b _02008694 _02008612: ldr r0, [sp, #0x44] ldr r0, [r0, #0x54] lsl r1, r0, #0x15 lsr r1, r1, #0x1f beq _0200862C ldr r0, [sp, #0x34] mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] ldrb r0, [r0, #0x0] add r1, r5, r1 strb r0, [r4, r1] b _02008694 _0200862C: lsl r0, r0, #0xf lsr r0, r0, #0x1c str r0, [sp, #0x4] beq _02008688 ldr r1, [sp, #0x4] ldr r0, [sp, #0x0] lsl r1, r1, #0x1 bl _u32_div_f cmp r1, #0x0 beq _02008654 mov r0, #0xab lsl r0, r0, #0x2 ldr r0, [r6, r0] ldr r1, [sp, #0x28] add r1, r1, r0 ldrb r1, [r4, r1] add r0, r5, r0 strb r1, [r4, r0] b _02008694 _02008654: ldr r1, [sp, #0x4] add r0, r4, #0x0 bl _u32_div_f cmp r1, #0x0 beq _02008672 mov r0, #0xab lsl r0, r0, #0x2 ldr r0, [r6, r0] add r1, r5, r0 add r0, r1, r4 sub r0, r0, #0x1 ldrb r0, [r0, #0x0] strb r0, [r1, r4] b _02008694 _02008672: ldrb r1, [r7, #0x0] mov r0, #0xf and r1, r0 lsl r0, r1, #0x4 orr r0, r1 mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] add r1, r5, r1 strb r0, [r4, r1] b _02008694 _02008688: mov r1, #0xab lsl r1, r1, #0x2 ldr r1, [r6, r1] ldrb r0, [r7, #0x0] add r1, r5, r1 strb r0, [r4, r1] _02008694: ldr r0, [sp, #0x34] add r4, r4, #0x1 add r0, r0, #0x1 add r7, r7, #0x1 str r0, [sp, #0x34] cmp r4, #0x50 bge _020086A4 b _0200858E _020086A4: ldr r0, [sp, #0x40] add r0, #0x80 str r0, [sp, #0x40] ldr r0, [sp, #0x3c] add r0, #0x50 str r0, [sp, #0x3c] ldr r0, [sp, #0x0] add r0, r0, #0x1 str r0, [sp, #0x0] cmp r0, #0x50 bge _020086BC b _0200855C _020086BC: ldr r0, [sp, #0x4c] bl FUN_02016A18 _020086C2: ldr r0, [sp, #0x44] mov r1, #0xa add r0, #0x98 str r0, [sp, #0x44] ldr r0, [sp, #0x38] lsl r1, r1, #0xa add r0, r0, r1 str r0, [sp, #0x38] ldr r0, [sp, #0x54] add r0, r0, #0x1 str r0, [sp, #0x54] cmp r0, #0x4 bge _020086DE b _020082BA _020086DE: ldr r1, _020086F0 ; =0x000002E1 ldr r0, [sp, #0x48] strb r0, [r6, r1] add sp, #0x5c pop {r4-r7, pc} .balign 4 _020086E8: .word 0x00002828 _020086EC: .word 0x00002827 _020086F0: .word 0x000002E1 thumb_func_start FUN_020086F4 FUN_020086F4: ; 0x020086F4 push {r4-r7, lr} sub sp, #0x1c add r5, r0, #0x0 mov r0, #0x0 str r0, [sp, #0xc] str r0, [sp, #0x14] ldr r0, [sp, #0xc] add r4, r5, #0x0 str r0, [sp, #0x8] _02008706: ldr r1, [r4, #0x0] lsl r0, r1, #0x1f lsr r0, r0, #0x1f beq _020087E0 lsl r0, r1, #0x17 lsr r0, r0, #0x1f beq _020087E0 ldr r0, _020088CC ; =0xFFFFFEFF mov r2, #0xa6 and r0, r1 str r0, [r4, #0x0] mov r0, #0x1 str r0, [sp, #0xc] lsl r2, r2, #0x2 ldrh r0, [r4, #0x4] ldrh r1, [r4, #0x8] ldr r2, [r5, r2] bl LoadFromNarc_2 add r1, sp, #0x18 str r0, [sp, #0x10] bl FUN_020B0138 ldr r0, [sp, #0x18] mov r7, #0x0 ldr r1, [r0, #0x0] mov r0, #0x2d lsl r0, r0, #0x4 str r1, [r5, r0] ldr r0, [sp, #0x18] add r2, r7, #0x0 ldr r1, [r0, #0xc] ldr r0, [sp, #0x8] lsl r3, r0, #0x1 _0200874A: mov r6, #0x2b lsl r6, r6, #0x4 ldr r6, [r5, r6] ldrh r0, [r1, #0x0] add r6, r3, r6 add r7, r7, #0x1 strh r0, [r2, r6] mov r6, #0xad lsl r6, r6, #0x2 ldrh r0, [r1, #0x0] ldr r6, [r5, r6] add r1, r1, #0x2 add r6, r3, r6 strh r0, [r2, r6] add r2, r2, #0x2 cmp r7, #0x10 blt _0200874A ldr r0, [sp, #0x10] bl FUN_02016A18 add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1e lsr r0, r0, #0x1e beq _020087E0 mov r2, #0xa6 lsl r2, r2, #0x2 ldr r2, [r5, r2] mov r0, #0x75 mov r1, #0xd4 bl LoadFromNarc_2 add r1, sp, #0x18 str r0, [sp, #0x4] bl FUN_020B0138 ldr r0, [sp, #0x18] mov r7, #0xad ldr r0, [r0, #0xc] mov r1, #0x0 lsl r7, r7, #0x2 _0200879E: add r6, r4, #0x0 add r6, #0x6c ldrh r6, [r6, #0x0] mov r2, #0x2b lsl r2, r2, #0x4 lsl r6, r6, #0x1e lsr r6, r6, #0x1e add r6, r6, #0x3 lsl r6, r6, #0x4 add r6, r1, r6 ldrh r3, [r0, #0x0] ldr r2, [r5, r2] lsl r6, r6, #0x1 strh r3, [r2, r6] add r6, r4, #0x0 add r6, #0x6c ldrh r6, [r6, #0x0] ldrh r3, [r0, #0x0] ldr r2, [r5, r7] lsl r6, r6, #0x1e lsr r6, r6, #0x1e add r6, r6, #0x3 lsl r6, r6, #0x4 add r6, r1, r6 lsl r6, r6, #0x1 add r1, r1, #0x1 add r0, r0, #0x2 strh r3, [r2, r6] cmp r1, #0x10 blt _0200879E ldr r0, [sp, #0x4] bl FUN_02016A18 _020087E0: ldr r0, [r4, #0x0] lsl r0, r0, #0x1f lsr r0, r0, #0x1f beq _020088AE ldr r0, [r4, #0x54] lsl r0, r0, #0x13 lsr r0, r0, #0x1f beq _020088AE add r0, r4, #0x0 add r0, #0x4a ldrb r0, [r0, #0x0] cmp r0, #0x0 bne _020088A0 mov r0, #0x1 str r0, [sp, #0xc] add r0, r4, #0x0 add r0, #0x4b ldrb r1, [r0, #0x0] add r0, r4, #0x0 add r0, #0x4a strb r1, [r0, #0x0] ldr r0, [sp, #0x8] mov r2, #0xad lsl r1, r0, #0x1 ldr r0, [r4, #0x4c] add r3, r4, #0x0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r2, r2, #0x2 str r0, [sp, #0x0] ldr r0, [r5, r2] sub r2, r2, #0x4 add r3, #0x48 ldr r2, [r5, r2] add r0, r0, r1 add r1, r2, r1 ldrb r3, [r3, #0x0] mov r2, #0x10 bl FUN_02003974 add r0, r4, #0x0 add r0, #0x6c ldrh r0, [r0, #0x0] lsl r0, r0, #0x1e lsr r0, r0, #0x1e beq _02008862 add r0, r0, #0x3 lsl r1, r0, #0x5 ldr r0, [r4, #0x4c] mov r2, #0xad lsl r0, r0, #0x10 lsr r0, r0, #0x10 add r3, r4, #0x0 lsl r2, r2, #0x2 str r0, [sp, #0x0] ldr r0, [r5, r2] sub r2, r2, #0x4 add r3, #0x48 ldr r2, [r5, r2] add r0, r0, r1 add r1, r2, r1 ldrb r3, [r3, #0x0] mov r2, #0x10 bl FUN_02003974 _02008862: add r0, r4, #0x0 add r0, #0x49 ldrb r1, [r0, #0x0] add r0, r4, #0x0 add r0, #0x48 ldrb r0, [r0, #0x0] cmp r0, r1 bne _0200887C ldr r1, [r4, #0x54] ldr r0, _020088D0 ; =0xFFFFEFFF and r0, r1 str r0, [r4, #0x54] b _020088AE _0200887C: cmp r0, r1 bls _02008890 add r0, r4, #0x0 add r0, #0x48 ldrb r0, [r0, #0x0] sub r1, r0, #0x1 add r0, r4, #0x0 add r0, #0x48 strb r1, [r0, #0x0] b _020088AE _02008890: add r0, r4, #0x0 add r0, #0x48 ldrb r0, [r0, #0x0] add r1, r0, #0x1 add r0, r4, #0x0 add r0, #0x48 strb r1, [r0, #0x0] b _020088AE _020088A0: add r0, r4, #0x0 add r0, #0x4a ldrb r0, [r0, #0x0] sub r1, r0, #0x1 add r0, r4, #0x0 add r0, #0x4a strb r1, [r0, #0x0] _020088AE: ldr r0, [sp, #0x8] add r4, #0x98 add r0, #0x10 str r0, [sp, #0x8] ldr r0, [sp, #0x14] add r0, r0, #0x1 str r0, [sp, #0x14] cmp r0, #0x4 bge _020088C2 b _02008706 _020088C2: ldr r1, _020088D4 ; =0x000002E2 ldr r0, [sp, #0xc] strb r0, [r5, r1] add sp, #0x1c pop {r4-r7, pc} .balign 4 _020088CC: .word 0xFFFFFEFF _020088D0: .word 0xFFFFEFFF _020088D4: .word 0x000002E2 thumb_func_start FUN_020088D8 FUN_020088D8: ; 0x020088D8 mov r1, #0xf0 and r1, r0 lsl r1, r1, #0x14 lsl r0, r0, #0x1c lsr r1, r1, #0x18 lsr r0, r0, #0x18 orr r0, r1 lsl r0, r0, #0x18 lsr r0, r0, #0x18 bx lr thumb_func_start FUN_020088EC FUN_020088EC: ; 0x020088EC push {r3, lr} add r2, r0, #0x0 ldrh r0, [r2, #0xa] cmp r0, #0x0 beq _02008900 add r0, r1, #0x0 ldr r1, [r2, #0x10] mov r2, #0x1 bl FUN_02008904 _02008900: pop {r3, pc} .balign 4 thumb_func_start FUN_02008904 FUN_02008904: ; 0x02008904 push {r4-r7, lr} sub sp, #0x1c add r3, r0, #0x0 add r0, r1, #0x0 mov lr, r0 mov r0, #0x0 mov r12, r0 ldr r0, _02008A50 ; =UNK_02105AE8 str r1, [sp, #0x0] str r2, [sp, #0x4] str r0, [sp, #0x10] _0200891A: ldr r0, [sp, #0x10] mov r1, #0x0 ldr r6, [r0, #0x0] ldrb r0, [r6, #0x0] cmp r0, #0xff beq _02008992 ldr r0, [sp, #0x0] mov r2, #0xf and r0, r2 str r0, [sp, #0xc] sub r0, #0x8 str r0, [sp, #0xc] ldr r0, [sp, #0x0] mov r2, #0xf0 and r0, r2 lsr r7, r0, #0x4 sub r7, #0x8 _0200893C: lsl r0, r1, #0x1 add r2, r6, r0 ldrb r4, [r6, r0] ldrb r2, [r2, #0x1] ldr r0, [sp, #0xc] add r0, r0, r4 add r2, r7, r2 lsl r0, r0, #0x18 lsl r2, r2, #0x18 lsr r0, r0, #0x18 lsr r4, r2, #0x18 mov r2, #0x50 mul r2, r4 lsr r5, r0, #0x1 add r2, r5, r2 mov r4, #0x1 tst r0, r4 ldrb r4, [r3, r2] beq _02008974 mov r0, #0xf0 and r0, r4 cmp r0, #0x10 blt _02008984 cmp r0, #0x30 bgt _02008984 add r4, #0x50 strb r4, [r3, r2] b _02008984 _02008974: mov r0, #0xf and r0, r4 cmp r0, #0x1 blt _02008984 cmp r0, #0x3 bgt _02008984 add r0, r4, #0x5 strb r0, [r3, r2] _02008984: add r0, r1, #0x1 lsl r0, r0, #0x18 lsr r1, r0, #0x18 lsl r0, r1, #0x1 ldrb r0, [r6, r0] cmp r0, #0xff bne _0200893C _02008992: ldr r0, [sp, #0x0] lsr r0, r0, #0x8 str r0, [sp, #0x0] ldr r0, [sp, #0x10] add r0, r0, #0x4 str r0, [sp, #0x10] mov r0, r12 add r0, r0, #0x1 mov r12, r0 cmp r0, #0x4 blt _0200891A mov r0, lr str r0, [sp, #0x0] ldr r0, [sp, #0x4] cmp r0, #0x0 beq _02008A4A mov r0, #0x0 str r0, [sp, #0x8] ldr r0, _02008A50 ; =UNK_02105AE8 str r0, [sp, #0x18] _020089BA: ldr r0, [sp, #0x18] mov r4, #0x0 ldr r2, [r0, #0x0] ldrb r0, [r2, #0x0] cmp r0, #0xff beq _02008A34 ldr r0, [sp, #0x0] mov r1, #0xf and r0, r1 str r0, [sp, #0x14] add r0, #0x48 str r0, [sp, #0x14] ldr r0, [sp, #0x0] mov r1, #0xf0 and r0, r1 lsr r7, r0, #0x4 sub r7, #0x8 _020089DC: lsl r0, r4, #0x1 add r5, r2, r0 ldrb r1, [r2, r0] ldrb r5, [r5, #0x1] ldr r0, [sp, #0x14] sub r1, #0xe add r0, r0, r1 add r5, r7, r5 lsl r0, r0, #0x18 lsl r5, r5, #0x18 lsr r1, r0, #0x18 lsr r6, r5, #0x18 mov r5, #0x50 lsr r0, r1, #0x1 mul r5, r6 add r0, r0, r5 mov r5, #0x1 tst r1, r5 ldrb r5, [r3, r0] beq _02008A16 mov r1, #0xf0 and r1, r5 cmp r1, #0x10 blt _02008A26 cmp r1, #0x30 bgt _02008A26 add r5, #0x50 strb r5, [r3, r0] b _02008A26 _02008A16: mov r1, #0xf and r1, r5 cmp r1, #0x1 blt _02008A26 cmp r1, #0x3 bgt _02008A26 add r1, r5, #0x5 strb r1, [r3, r0] _02008A26: add r0, r4, #0x1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 lsl r0, r4, #0x1 ldrb r0, [r2, r0] cmp r0, #0xff bne _020089DC _02008A34: ldr r0, [sp, #0x0] lsr r0, r0, #0x8 str r0, [sp, #0x0] ldr r0, [sp, #0x18] add r0, r0, #0x4 str r0, [sp, #0x18] ldr r0, [sp, #0x8] add r0, r0, #0x1 str r0, [sp, #0x8] cmp r0, #0x4 blt _020089BA _02008A4A: add sp, #0x1c pop {r4-r7, pc} nop _02008A50: .word UNK_02105AE8 thumb_func_start FUN_02008A54 FUN_02008A54: ; 0x02008A54 ldr r2, [r0, #0x0] ldr r1, _02008A6C ; =0x41C64E6D add r3, r2, #0x0 mul r3, r1 ldr r1, _02008A70 ; =0x00006073 add r1, r3, r1 str r1, [r0, #0x0] lsr r0, r1, #0x10 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bx lr nop _02008A6C: .word 0x41C64E6D _02008A70: .word 0x00006073 thumb_func_start FUN_02008A74 FUN_02008A74: ; 0x02008A74 push {r3-r7, lr} ldr r1, _02008AA0 ; =0x000018FE mov r6, #0x0 ldrh r2, [r0, r1] lsr r4, r1, #0x1 add r5, r0, r1 str r2, [sp, #0x0] add r7, sp, #0x0 mvn r6, r6 _02008A86: ldrh r1, [r5, #0x0] ldr r0, [sp, #0x0] eor r0, r1 strh r0, [r5, #0x0] add r0, r7, #0x0 bl FUN_02008A54 sub r4, r4, #0x1 sub r5, r5, #0x2 cmp r4, r6 bgt _02008A86 pop {r3-r7, pc} nop _02008AA0: .word 0x000018FE