.include "asm/macros.inc" .include "asm/include/wram.inc" .text arm_func_start sub_037F8000 sub_037F8000: ; 0x037F8000 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x210 bl sub_037FC9EC bl sub_037FBF64 add r2, sp, #4 mov r0, #0x20 mov r1, #2 bl sub_027F55B8 ldr r0, [sp, #4] add r2, sp, #0x10 mov r0, r0, lsl #3 str r0, [sp, #4] mov r1, #0x100 bl sub_027F55B8 ldr r0, [sp, #4] add r2, sp, #0x110 add r0, r0, #0x100 mov r1, #0x100 bl sub_027F55B8 mov r0, #0x1d mov r1, #1 add r2, sp, #0 mov r6, #0 bl sub_027F55B8 ldrb r0, [sp] cmp r0, #0xff moveq r0, r6 beq _037F807C tst r0, #0x50 movne r0, #1 moveq r0, r6 _037F807C: cmp r0, #0 beq _037F8150 bl sub_037F8484 mov r8, r0 mov fp, #1 and r7, r8, #0x40 mov sl, #0 add r5, sp, #0x10 mov r4, fp b _037F8144 _037F80A4: ldr r0, _037F8454 ; =0x0000FFFF add sb, r5, sl, lsl #8 mov r1, sb mov r2, #0x70 bl sub_037F846C mov r2, sb ldrh r1, [r2, #0x72] cmp r0, r1 bne _037F8138 ldrh r0, [r2, #0x70] cmp r0, #0x80 bhs _037F8138 ldr r0, _037F8454 ; =0x0000FFFF mov r2, #0x8a add r1, sb, #0x74 bl sub_037F846C mov r2, sb ldrh r1, [r2, #0xfe] cmp r0, r1 bne _037F8138 ldrh r1, [r2, #0x76] ldrb r0, [r2, #0x75] tst r1, r4, lsl r0 beq _037F8138 tst r8, r1 ldrneh r1, [sb, #0x64] andne r0, r0, #7 bicne r1, r1, #7 orrne r0, r1, r0 strneh r0, [sb, #0x64] add r0, r5, sl, lsl #8 ldrh r0, [r0, #0x76] mvn r0, r0 tst r7, r0 movne r6, #3 bne _037F81F0 orr r6, r6, fp, lsl sl _037F8138: add r0, sl, #1 mov r0, r0, lsl #0x10 mov sl, r0, lsr #0x10 _037F8144: cmp sl, #2 blo _037F80A4 b _037F81B4 _037F8150: bl sub_037F8484 tst r0, #0x40 movne r6, #3 bne _037F81F0 ldr r8, _037F8454 ; =0x0000FFFF mov sb, #0 add r7, sp, #0x10 mov r4, #1 mov r5, #0x70 _037F8174: mov r0, r8 mov r2, r5 add r1, r7, sb, lsl #8 bl sub_037F846C add r2, r7, sb, lsl #8 ldrh r1, [r2, #0x72] cmp r0, r1 bne _037F81A0 ldrh r0, [r2, #0x70] cmp r0, #0x80 orrlo r6, r6, r4, lsl sb _037F81A0: add r0, sb, #1 mov r0, r0, lsl #0x10 mov sb, r0, lsr #0x10 cmp sb, #2 blo _037F8174 _037F81B4: cmp r6, #1 cmpne r6, #2 beq _037F81F0 cmp r6, #3 bne _037F81EC ldrh r1, [sp, #0x80] add r0, sp, #0x100 add r1, r1, #1 ldrh r0, [r0, #0x80] and r1, r1, #0x7f cmp r1, r0 moveq r6, #2 movne r6, #1 b _037F81F0 _037F81EC: mov r6, #0 _037F81F0: cmp r6, #3 blt _037F820C ldr r1, _037F8458 ; =0x027FFC80 mvn r0, #0 mov r2, #0x74 bl sub_037FDFD0 b _037F82C8 _037F820C: cmp r6, #0 beq _037F82B8 ldr r0, _037F845C ; =0xFFFFFF2A mov r1, r6, lsl #8 add r0, sp, r0 ldrb r0, [r0, r6, lsl #8] cmp r0, #0xa bhs _037F8258 add r0, sp, #0x10 mov r3, #0xa mov r2, #0 add r1, r0, r1 b _037F824C _037F8240: add r0, r1, r3, lsl #1 strh r2, [r0, #-0xfc] sub r3, r3, #1 _037F824C: ldrb r0, [r1, #-0xe6] cmp r3, r0 bgt _037F8240 _037F8258: ldr r0, _037F8460 ; =0xFFFFFF60 mov r1, r6, lsl #8 add r0, sp, r0 ldrb r0, [r0, r6, lsl #8] cmp r0, #0x1a bhs _037F829C add r0, sp, #0x10 mov r3, #0x1a mov r2, #0 add r1, r0, r1 b _037F8290 _037F8284: add r0, r1, r3, lsl #1 strh r2, [r0, #-0xe6] sub r3, r3, #1 _037F8290: ldrb r0, [r1, #-0xb0] cmp r3, r0 bgt _037F8284 _037F829C: ldr r1, _037F8458 ; =0x027FFC80 add r2, sp, #0x10 sub r0, r6, #1 add r0, r2, r0, lsl #8 mov r2, #0x74 bl sub_037FDFEC b _037F82C8 _037F82B8: ldr r1, _037F8458 ; =0x027FFC80 mov r0, #0 mov r2, #0x74 bl sub_037FDFD0 _037F82C8: add r2, sp, #8 mov r0, #0x36 mov r1, #6 bl sub_027F55B8 ldr r4, _037F8458 ; =0x027FFC80 add r0, sp, #8 add r1, r4, #0x74 mov r2, #6 bl sub_037FE12C add r2, sp, #2 mov r0, #0x3c mov r1, #2 bl sub_027F55B8 ldrh r0, [sp, #2] mov r0, r0, lsl #0xf mov r0, r0, lsr #0x10 bl sub_038073D4 strh r0, [r4, #0x7a] bl sub_037FE2B4 mov r0, #8 bl sub_037FCA94 mov r4, r0 mov r0, #8 bl sub_037FCAA8 mov r1, r0 mov r2, r4 mov r0, #8 mov r3, #1 bl sub_037FCE24 mov r4, r0 mov r0, #8 bl sub_037FCA94 sub r2, r0, r4 mov r0, r4 mov r1, #0 bl sub_037FE070 mov r1, r4 mov r0, #8 bl sub_037FCB90 mov r0, #8 bl sub_037FCA94 mov r4, r0 mov r0, #8 bl sub_037FCAA8 mov r1, r0 mov r2, r4 mov r0, #8 bl sub_037FCECC movs r4, r0 bpl _037F8394 bl sub_037FDE70 _037F8394: mov r1, r4 mov r0, #8 bl sub_037FCDF0 mov r1, r4 mov r0, #8 bl sub_037FCF6C cmp r0, #0x2100 bhs _037F83B8 bl sub_037FDE70 _037F83B8: mov r0, #6 bl sub_037FEEF8 bl sub_037FE5C0 ldr r1, _037F8464 ; =sub_037F84BC mov r0, #1 bl sub_037FB7BC mov r0, #1 bl sub_037FB8F0 ldr r3, _037F8468 ; =0x04000004 mov r0, #1 ldrh r1, [r3] ldrh r1, [r3] add r2, r3, #0x204 orr r1, r1, #8 strh r1, [r3] ldrh r1, [r2] strh r0, [r2] bl sub_037FDCEC mvn r0, #0 bl sub_03802618 mov r0, #0xf bl sub_038026E0 mov r0, #0xc bl sub_027F5CC4 mov r0, r4 bl sub_03805248 mov r0, #2 bl sub_03803874 mov r4, #0 _037F842C: bl sub_037F8478 bl sub_037FDDB4 cmp r0, #0 beq _037F8448 mov r0, r4 bl sub_03806610 bl sub_037FDDF8 _037F8448: bl sub_03806848 bl sub_038036BC b _037F842C .align 2, 0 _037F8454: .word 0x0000FFFF _037F8458: .word 0x027FFC80 _037F845C: .word 0xFFFFFF2A _037F8460: .word 0xFFFFFF60 _037F8464: .word sub_037F84BC _037F8468: .word 0x04000004 arm_func_end sub_037F8000 arm_func_start sub_037F846C sub_037F846C: ; 0x037F846C ldr ip, _037F8474 ; =sub_03803804 bx ip .align 2, 0 _037F8474: .word sub_03803804 + 1 arm_func_end sub_037F846C arm_func_start sub_037F8478 sub_037F8478: ; 0x037F8478 ldr ip, _037F8480 ; =sub_038037D2 bx ip .align 2, 0 _037F8480: .word sub_038037D2 + 1 arm_func_end sub_037F8478 arm_func_start sub_037F8484 sub_037F8484: ; 0x037F8484 ldr r1, _037F84B8 ; =0x027FFE1D mov r0, #0 ldrb r1, [r1] cmp r1, #0x80 orreq r0, r0, #0x40 moveq r0, r0, lsl #0x10 moveq r0, r0, lsr #0x10 bxeq lr cmp r1, #0x40 orreq r0, r0, #0x80 moveq r0, r0, lsl #0x10 moveq r0, r0, lsr #0x10 bx lr .align 2, 0 _037F84B8: .word 0x027FFE1D arm_func_end sub_037F8484 arm_func_start sub_037F84BC sub_037F84BC: ; 0x037F84BC stmdb sp!, {r3, lr} ldr r0, _037F84DC ; =_03809E50 ldr r0, [r0] cmp r0, #0 beq _037F84D4 bl sub_038050FC _037F84D4: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037F84DC: .word _03809E50 arm_func_end sub_037F84BC arm_func_start sub_037F84E0 sub_037F84E0: ; 0x037F84E0 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r7, _037F858C ; =0x0380FFF4 mov r0, #0 ldr r8, [r7] ldr r4, _037F8590 ; =0x01000010 strh r0, [r8, #0x10] ldr sb, _037F8594 ; =0x0000FFFF strh r0, [r8, #0x14] add r6, sp, #0 mov r5, r0 _037F8508: ldr r0, [r7] mov r1, r6 ldr r0, [r0, #0x308] mov r2, r5 bl sub_037FC760 cmp r0, #0 beq _037F852C mov r0, r6 bl sub_037F8704 _037F852C: mov r0, r4 bl sub_037FB928 ldrh r1, [r8, #0x10] strh r1, [r8, #0x12] mov r1, r1, lsl #1 ldrh r1, [r8, r1] cmp r1, sb bne _037F8560 ldrh r1, [r8, #0x10] add r1, r1, #1 strh r1, [r8, #0x10] bl sub_037FB8F0 b _037F8508 _037F8560: bl sub_037FB8F0 ldrh r0, [r8, #0x12] bl sub_037F8650 strh r0, [r8, #0x14] ldrh r0, [r8, #0x14] add r0, r8, r0, lsl #3 ldr r0, [r0, #0xc0] mov lr, pc bx r0 _037F8584: ; 0x037F8584 strh sb, [r8, #0x14] b _037F8508 .align 2, 0 _037F858C: .word 0x0380FFF4 _037F8590: .word 0x01000010 _037F8594: .word 0x0000FFFF arm_func_end sub_037F84E0 arm_func_start sub_037F8598 sub_037F8598: ; 0x037F8598 stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r2, _037F8648 ; =0x0380FFF4 mov r7, r0 ldr r4, [r2] ldr r0, _037F864C ; =0x01000010 mov r6, r1 add r5, r4, #0xbc bl sub_037FB928 add r2, r5, r6, lsl #3 ldrh r1, [r2, #2] mov ip, r6, lsl #3 cmp r1, #0 bne _037F8610 mov r3, #1 strh r3, [r2, #2] rsb r1, r3, #0x10000 strh r1, [r5, ip] add r1, r4, r7, lsl #1 ldrh r2, [r1, #8] rsb r1, r3, #0x10000 cmp r2, r1 mov r1, r7, lsl #1 streqh r6, [r4, r1] addne r1, r4, r2, lsl #3 strneh r6, [r1, #0xbc] add r1, r4, r7, lsl #1 strh r6, [r1, #8] ldrh r1, [r4, #0x10] cmp r7, r1 strlth r7, [r4, #0x10] _037F8610: bl sub_037FB8F0 cmp r7, #3 beq _037F8640 ldrh r0, [r4, #0x12] cmp r0, #3 bne _037F8640 ldr r0, _037F8648 ; =0x0380FFF4 mov r1, #0 ldr r0, [r0] mov r2, r1 ldr r0, [r0, #0x308] bl sub_037FC6D4 _037F8640: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037F8648: .word 0x0380FFF4 _037F864C: .word 0x01000010 arm_func_end sub_037F8598 arm_func_start sub_037F8650 sub_037F8650: ; 0x037F8650 stmdb sp!, {r3, r4, r5, lr} ldr r1, _037F86BC ; =0x0380FFF4 mov r5, r0 ldr r0, _037F86C0 ; =0x01000010 ldr r4, [r1] bl sub_037FB928 mov lr, r5, lsl #1 ldrh r5, [r4, lr] ldr r2, _037F86C4 ; =0x0000FFFF cmp r5, r2 beq _037F86AC add ip, r4, #0xbc add r1, ip, r5, lsl #3 mov r3, #0 strh r3, [r1, #2] mov r3, r5, lsl #3 ldrh r1, [ip, r3] cmp r1, r2 streqh r2, [r4, lr] addeq r1, r4, lr streqh r2, [r1, #8] strneh r1, [r4, lr] strneh r2, [ip, r3] _037F86AC: bl sub_037FB8F0 mov r0, r5 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F86BC: .word 0x0380FFF4 _037F86C0: .word 0x01000010 _037F86C4: .word 0x0000FFFF arm_func_end sub_037F8650 arm_func_start sub_037F86C8 sub_037F86C8: ; 0x037F86C8 stmdb sp!, {r3, lr} ldr r0, _037F8700 ; =0x0380FFF4 add r1, sp, #0 ldr r0, [r0] mov r2, #1 ldr r0, [r0, #0x308] bl sub_037FC760 add r0, sp, #0 bl sub_037F8704 mov r0, #3 mov r1, #0xc bl sub_037F8598 ldmia sp!, {r3, lr} bx lr .align 2, 0 _037F8700: .word 0x0380FFF4 arm_func_end sub_037F86C8 arm_func_start sub_037F8704 sub_037F8704: ; 0x037F8704 stmdb sp!, {r3, lr} ldr r1, [r0] cmp r1, #0 beq _037F8730 ldr r0, _037F8738 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x200 bl sub_037F873C mov r0, #2 mov r1, #0xb bl sub_037F8598 _037F8730: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037F8738: .word 0x0380FFF4 arm_func_end sub_037F8704 arm_func_start sub_037F873C sub_037F873C: ; 0x037F873C stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r0, #0x1000000 mov r4, r1 bl sub_037FB928 ldrh r1, [r5, #8] cmp r1, #0 mvneq r1, #0 streq r1, [r4] streq r4, [r5] ldrne r1, [r5, #4] strne r1, [r4] strne r4, [r1, #4] mvn r1, #0 str r1, [r4, #4] ldrh r2, [r5, #0xa] ldr r1, _037F87A8 ; =0x0000BF1D strh r2, [r4, #8] strh r1, [r4, #0xa] str r4, [r5, #4] ldrh r1, [r5, #8] add r1, r1, #1 strh r1, [r5, #8] bl sub_037FB8F0 mov r0, #0 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F87A8: .word 0x0000BF1D arm_func_end sub_037F873C arm_func_start sub_037F87AC sub_037F87AC: ; 0x037F87AC stmdb sp!, {r3, r4, r5, lr} mov r4, r1 ldrh r2, [r4, #0xa] ldr r1, _037F8868 ; =0x0000BF1D mov r5, r0 cmp r2, r1 movne r0, #1 bne _037F8860 ldrh r1, [r4, #8] ldrh r0, [r5, #0xa] cmp r1, r0 movne r0, #2 bne _037F8860 mov r0, #0x1000000 bl sub_037FB928 ldrh r1, [r5, #8] sub r1, r1, #1 strh r1, [r5, #8] ldrh r1, [r5, #8] cmp r1, #0 mvneq r1, #0 streq r1, [r5] streq r1, [r5, #4] beq _037F8850 ldr r1, [r5] cmp r4, r1 ldreq r2, [r4, #4] mvneq r1, #0 streq r2, [r5] streq r1, [r2] beq _037F8850 ldr r1, [r5, #4] ldr r2, [r4] cmp r4, r1 streq r2, [r5, #4] mvneq r1, #0 streq r1, [r2, #4] ldrne r1, [r4, #4] strne r2, [r1] ldmneia r4, {r1, r2} strne r2, [r1, #4] _037F8850: mov r1, #0 strh r1, [r4, #8] bl sub_037FB8F0 mov r0, #0 _037F8860: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F8868: .word 0x0000BF1D arm_func_end sub_037F87AC arm_func_start sub_037F886C sub_037F886C: ; 0x037F886C stmdb sp!, {r3, r4, r5, lr} ldr r2, _037F8900 ; =0x0380FFF4 movs r3, r1 ldr r1, [r2] mov r5, r0 moveq r0, #0 beq _037F88F8 ldr r0, [r1, #0x17c] cmp r0, #0 beq _037F88A0 cmp r0, #1 beq _037F88B8 b _037F88CC _037F88A0: ldr r0, [r1, #0x180] ldr r1, [r1, #0x184] add r2, r3, #0xc bl sub_037FCC74 mov r4, r0 b _037F88CC _037F88B8: ldr r1, [r1, #0x180] add r0, r3, #0xc mov lr, pc bx r1 _037F88C8: mov r4, r0 _037F88CC: cmp r4, #0 moveq r0, #0 beq _037F88F8 ldr r1, _037F8904 ; =0x0000BF1D mov r0, r5 strh r1, [r4, #0xa] mov r2, #0 mov r1, r4 strh r2, [r4, #8] bl sub_037F89F4 mov r0, r4 _037F88F8: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F8900: .word 0x0380FFF4 _037F8904: .word 0x0000BF1D arm_func_end sub_037F886C arm_func_start sub_037F8908 sub_037F8908: ; 0x037F8908 stmdb sp!, {r4, r5, r6, lr} mov r4, r1 ldr r5, _037F8980 ; =0x0380FFF4 ldrh r3, [r4, #0xa] ldr r2, _037F8984 ; =0x0000BF1D ldr r5, [r5] cmp r3, r2 movne r0, #1 bne _037F8978 bl sub_037F87AC movs r6, r0 bne _037F8974 ldr r0, [r5, #0x17c] cmp r0, #0 beq _037F8950 cmp r0, #1 beq _037F8964 b _037F8974 _037F8950: ldr r0, [r5, #0x180] ldr r1, [r5, #0x184] mov r2, r4 bl sub_037FCD84 b _037F8974 _037F8964: ldr r1, [r5, #0x184] mov r0, r4 mov lr, pc bx r1 _037F8974: mov r0, r6 _037F8978: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037F8980: .word 0x0380FFF4 _037F8984: .word 0x0000BF1D arm_func_end sub_037F8908 arm_func_start sub_037F8988 sub_037F8988: ; 0x037F8988 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r6, r2 ldrh r3, [r6, #0xa] ldr r2, _037F89F0 ; =0x0000BF1D mov r4, r0 cmp r3, r2 mov r7, r1 movne r0, #1 bne _037F89E8 mov r0, #0x1000000 bl sub_037FB928 mov r5, r0 mov r0, r4 mov r1, r6 bl sub_037F87AC movs r4, r0 bne _037F89DC mov r0, r7 mov r1, r6 bl sub_037F89F4 mov r4, r0 _037F89DC: mov r0, r5 bl sub_037FB8F0 mov r0, r4 _037F89E8: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037F89F0: .word 0x0000BF1D arm_func_end sub_037F8988 arm_func_start sub_037F89F4 sub_037F89F4: ; 0x037F89F4 stmdb sp!, {r3, r4, r5, lr} mov r4, r1 ldrh r2, [r4, #0xa] ldr r1, _037F8A7C ; =0x0000BF1D mov r5, r0 cmp r2, r1 movne r0, #1 bne _037F8A74 ldrh r0, [r4, #8] cmp r0, #0 movne r0, #2 bne _037F8A74 mov r0, #0x1000000 bl sub_037FB928 ldrh r1, [r5, #8] cmp r1, #0 mvneq r1, #0 streq r1, [r4] streq r4, [r5] ldrne r1, [r5, #4] strne r1, [r4] strne r4, [r1, #4] mvn r1, #0 str r1, [r4, #4] ldrh r1, [r5, #0xa] strh r1, [r4, #8] str r4, [r5, #4] ldrh r1, [r5, #8] add r1, r1, #1 strh r1, [r5, #8] bl sub_037FB8F0 mov r0, #0 _037F8A74: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F8A7C: .word 0x0000BF1D arm_func_end sub_037F89F4 arm_func_start sub_037F8A80 sub_037F8A80: ; 0x037F8A80 ldr r0, [r0, #4] bx lr arm_func_end sub_037F8A80 arm_func_start sub_037F8A88 sub_037F8A88: ; 0x037F8A88 stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r4, _037F8D38 ; =0x0380FFF4 mov r3, #0 ldr r2, [r4] mov r6, r3 add r0, r2, #0x24 add r5, r0, #0x400 ldrh r0, [r5, #4] cmp r0, #0 bne _037F8D30 ldr r0, [r2, #0x200] sub r2, r3, #1 str r0, [r5] cmp r0, r2 beq _037F8D30 ldr r2, [r4] ldrh r4, [r0, #0xe] add ip, r2, #0x300 ldrh r2, [ip, #0x3e] add r4, r0, r4, lsl #1 cmp r2, #0 movne r0, #1 strneh r0, [r4, #0x12] movne r0, #6 strneh r0, [r4, #0x14] bne _037F8CE8 ldrh r7, [r0, #0xc] ldrh r2, [r4, #0x10] cmp r7, r2 movne r0, #0xd strneh r0, [r4, #0x14] bne _037F8CE8 and r2, r7, #0xff00 cmp r2, #0x100 bgt _037F8B24 bge _037F8B70 cmp r2, #0 beq _037F8B40 b _037F8C50 _037F8B24: cmp r2, #0x200 bgt _037F8B34 beq _037F8B90 b _037F8C50 _037F8B34: cmp r2, #0x300 beq _037F8C3C b _037F8C50 _037F8B40: ldrh r6, [r5, #4] ldr r1, _037F8D3C ; =_027F7648 tst r6, #1 and r2, r7, #0xff mov r6, #1 mov lr, #0xb movne r3, #2 bne _037F8C58 ldrh r7, [ip, #0x4c] cmp r7, #0x20 movlo r3, r6 b _037F8C58 _037F8B70: ldrh r6, [ip, #0x4c] ldr r1, _037F8D40 ; =_027F75C0 cmp r6, #0x40 and r2, r7, #0xff mov r6, #2 mov lr, #5 movne r3, #1 b _037F8C58 _037F8B90: and r2, r7, #0xff cmp r2, #0x40 bhs _037F8BB8 ldrh r1, [ip, #0x4c] mov r6, #4 cmp r1, #0x10 ldr r1, _037F8D44 ; =_027F77B0 movlo r3, #1 mov lr, #0x17 b _037F8C58 _037F8BB8: cmp r2, #0x80 bhs _037F8BE8 ldrh r1, [ip, #0x4c] mov r6, #8 cmp r1, #0x40 sub r1, r2, #0x40 mov r2, r1, lsl #0x10 ldr r1, _037F8D48 ; =_027F7618 movne r3, #1 mov r2, r2, lsr #0x10 mov lr, #6 b _037F8C58 _037F8BE8: ldrh r1, [ip, #0x4c] cmp r2, #0xc0 bhs _037F8C18 cmp r1, #0x10 sub r1, r2, #0x80 mov r2, r1, lsl #0x10 ldr r1, _037F8D4C ; =_027F76F8 movlo r3, #1 mov r2, r2, lsr #0x10 mov r6, #0x10 mov lr, #0x17 b _037F8C58 _037F8C18: cmp r1, #0x10 sub r1, r2, #0xc0 mov r2, r1, lsl #0x10 ldr r1, _037F8D50 ; =_027F75E8 movlo r3, #1 mov r2, r2, lsr #0x10 mov r6, #0x20 mov lr, #6 b _037F8C58 _037F8C3C: ldr r1, _037F8D54 ; =_027F76A0 and r2, r7, #0xff mov r6, #0x40 mov lr, #0xb b _037F8C58 _037F8C50: mov r2, #1 mov lr, #0 _037F8C58: cmp r2, lr movhi r3, #3 bhi _037F8C88 mov lr, r2, lsl #3 ldrh r7, [r0, #0xe] ldrh ip, [r1, lr] cmp r7, ip addhs ip, r1, lr ldrhsh lr, [r4, #0x12] ldrhsh ip, [ip, #2] cmphs lr, ip movlo r3, #4 _037F8C88: cmp r3, #0 movne r0, #1 strneh r0, [r4, #0x12] strneh r3, [r4, #0x14] bne _037F8CE8 ldrh r3, [r5, #4] add r1, r1, r2, lsl #3 orr r2, r3, r6 strh r2, [r5, #4] ldr r2, [r1, #4] add r1, r4, #0x10 mov lr, pc bx r2 _037F8CBC: strh r0, [r4, #0x14] ldrh r0, [r4, #0x14] cmp r0, #0x80 beq _037F8D30 cmp r0, #0x81 bne _037F8CE8 ldrh r1, [r5, #4] mvn r0, r6 and r0, r1, r0 strh r0, [r5, #4] b _037F8D0C _037F8CE8: ldrh r1, [r5, #4] mvn r0, r6 and r0, r1, r0 strh r0, [r5, #4] ldr r0, _037F8D38 ; =0x0380FFF4 ldr r1, [r5] ldr r0, [r0] add r0, r0, #0x200 bl sub_037F8D58 _037F8D0C: ldr r0, _037F8D38 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x200 ldrh r0, [r0, #8] cmp r0, #0 beq _037F8D30 mov r0, #2 mov r1, #0xb bl sub_037F8598 _037F8D30: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037F8D38: .word 0x0380FFF4 _037F8D3C: .word _027F7648 _037F8D40: .word _027F75C0 _037F8D44: .word _027F77B0 _037F8D48: .word _027F7618 _037F8D4C: .word _027F76F8 _037F8D50: .word _027F75E8 _037F8D54: .word _027F76A0 arm_func_end sub_037F8A88 arm_func_start sub_037F8D58 sub_037F8D58: ; 0x037F8D58 stmdb sp!, {r3, r4, r5, lr} ldr r2, _037F8DDC ; =0x0380FFF4 mov r5, r0 ldr r3, [r2] mov r4, r1 add r2, r3, #0x100 ldrh r2, [r2, #0xfc] cmp r2, #0 beq _037F8D98 mov r2, r4 add r1, r3, #0x1f4 bl sub_037F8988 mov r0, #2 mov r1, #0x13 bl sub_037F8598 b _037F8DD4 _037F8D98: ldr r0, [r3, #0x304] mov r2, #0 bl sub_037FC6D4 cmp r0, #0 beq _037F8DBC mov r0, r5 mov r1, r4 bl sub_037F87AC b _037F8DD4 _037F8DBC: ldr r1, _037F8DDC ; =0x0380FFF4 mov r0, r5 ldr r1, [r1] mov r2, r4 add r1, r1, #0x1f4 bl sub_037F8988 _037F8DD4: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F8DDC: .word 0x0380FFF4 arm_func_end sub_037F8D58 arm_func_start sub_037F8DE0 sub_037F8DE0: ; 0x037F8DE0 stmdb sp!, {r3, r4, r5, r6, r7, lr} sub sp, sp, #8 ldr r0, _037F914C ; =0x0380FFF4 ldr r0, [r0] add r6, r0, #0x344 add r4, r0, #0x31c bl sub_037F9198 ldr r1, _037F9150 ; =0x04808044 ldrh r2, [r1] ldrh r0, [r1] ldrh r1, [r1] add r0, r2, r0, lsl #8 bl sub_027EAD6C mov r0, #1 strh r0, [r6, #0x7c] ldrh r0, [r4, #0x1e] ldr r2, _037F9154 ; =0x04808032 mov r0, r0, lsl #0x1d mov r0, r0, lsr #0x1f cmp r0, #1 ldreqh r0, [r6, #0x7c] ldr r1, _037F9158 ; =0x04808134 orreq r0, r0, #0x20 streqh r0, [r6, #0x7c] ldrh r0, [r4, #0x18] mov r4, #0 cmp r0, #0 ldrneh r0, [r6, #0x7c] mov r3, #0x8000 orrne r0, r0, #0x10 strneh r0, [r6, #0x7c] strh r4, [r6, #0x12] ldr r0, _037F915C ; =0x0000FFFF strh r3, [r2] strh r0, [r1] strh r4, [r2, #-8] sub r0, r1, #0x10c strh r4, [r0] mov r0, #0xf strh r0, [r1, #-0xfc] bl sub_027EC510 bl sub_027F4CC0 bl sub_037FAEC0 bl sub_037FB1E0 ldr r2, _037F9160 ; =0x04808030 mov r1, #0x8000 strh r1, [r2] ldr r0, _037F915C ; =0x0000FFFF ldr r1, _037F9164 ; =0x048081AE strh r0, [r2, #-0x20] sub r2, r0, #0xe000 ldr r0, _037F914C ; =0x0380FFF4 strh r2, [r1] ldr r0, [r0] add r0, r0, #0x600 ldrh r0, [r0, #0x90] tst r0, #8 movne r0, #0x400 strneh r0, [r1, #-4] moveq r0, r4 streqh r0, [r1, #-4] ldr r2, _037F9168 ; =0x04808008 mov r3, #0 strh r3, [r2] strh r3, [r2, #2] ldrh r0, [r6, #0xc] cmp r0, #4 addls pc, pc, r0, lsl #2 b _037F9110 _037F8EF4: ; jump table b _037F8F08 ; case 0 b _037F8F38 ; case 1 b _037F901C ; case 2 b _037F909C ; case 3 b _037F90F4 ; case 4 _037F8F08: ldr r0, _037F915C ; =0x0000FFFF mov r1, #0x3f strh r1, [r2, #0xa] strh r0, [r2, #0xc8] mov r0, #8 strh r0, [r2, #0xd8] strh r3, [r2] strh r3, [r2, #2] strh r3, [r2, #0xe0] mov r0, #1 strh r0, [r2, #-4] b _037F9110 _037F8F38: ldr r3, _037F916C ; =0x0000703F ldr r0, _037F9170 ; =0x00001FFF ldr r1, _037F9164 ; =0x048081AE strh r3, [r2, #0xa] strh r0, [r1] rsb r0, r0, #0x2300 strh r0, [r1, #-0xde] mov r0, #0xd strh r0, [r1, #-0xce] mov r0, #0xe000 strh r0, [r2] mov r0, #1 strh r0, [r2, #-4] ldrh r0, [r1, #-0xb6] add r7, sp, #0 strh r0, [r7] ldrh r0, [r1, #-0xb4] mov r4, #0 strh r0, [r7, #2] ldrh r2, [r1, #-0xb2] ldr r0, [sp] strh r2, [r7, #4] ldrh r1, [r1, #-0xb0] mov r3, r4 strh r1, [r7, #6] ldrh r2, [r6, #0x6e] ldr r1, [sp, #4] mov r5, r2, lsl #0xa mov r2, r5 bl sub_03806B80 adds r3, r0, #1 umull r2, r0, r3, r5 mla r0, r3, r4, r0 adc r1, r1, #0 mla r0, r1, r5, r0 str r0, [sp, #4] ldrh r0, [r7, #6] ldr r3, _037F9174 ; =0x048080F6 str r2, [sp] strh r0, [r3] ldrh r0, [r7, #4] mov r1, #1 strh r0, [r3, #-2] ldrh r2, [r7, #2] mov r0, #0x40 strh r2, [r3, #-4] ldrh r2, [r7] orr r2, r2, #1 strh r2, [r3, #-6] strh r1, [r3, #-0xe] strh r1, [r3, #-0xc] bl sub_037F9238 bl sub_027F119C ldr r0, _037F9178 ; =0x048080AE mov r1, #2 strh r1, [r0] b _037F9110 _037F901C: ldr r1, _037F917C ; =0x0000E0BF ldr r0, _037F914C ; =0x0380FFF4 strh r1, [r2, #0xa] ldr r0, [r0] add r0, r0, #0x600 ldrh r0, [r0, #0x90] tst r0, #0x20 beq _037F9058 ldrh r0, [r2, #0xa] ldr r1, _037F9180 ; =0x048081AA orr r0, r0, #0x40 strh r0, [r2, #0xa] ldrh r0, [r1] orr r0, r0, #0x68 strh r0, [r1] _037F9058: ldrh r0, [r6, #0x64] tst r0, #1 ldr r0, _037F9184 ; =0x048080D0 ldrne r1, _037F9188 ; =0x00000581 strneh r1, [r0] ldreq r1, _037F918C ; =0x00000181 streqh r1, [r0] ldr r2, _037F9190 ; =0x048080E0 mov r0, #0xb strh r0, [r2] mov r1, #1 strh r1, [r2, #-0xdc] strh r1, [r2, #8] mov r0, #0x20 strh r1, [r2, #0xa] bl sub_037F9238 b _037F9110 _037F909C: ldr r1, _037F915C ; =0x0000FFFF strh r1, [r2, #8] sub r0, r1, #0x3fc0 strh r0, [r2, #0xa] ldrh r0, [r6, #0x64] tst r0, #1 rsbne r0, r1, #0x10400 strneh r0, [r2, #0xc8] moveq r0, #1 streqh r0, [r2, #0xc8] ldr r2, _037F9190 ; =0x048080E0 mov r0, #0xb strh r0, [r2] mov r0, #1 strh r0, [r2, #-0xdc] strh r0, [r2, #8] strh r0, [r2, #0xa] mov r1, #0 mov r0, #0x20 strh r1, [r2, #-0x98] bl sub_037F9238 b _037F9110 _037F90F4: ldr r0, _037F9164 ; =0x048081AE strh r3, [r2, #0xa] strh r3, [r0] mov r1, #1 mov r0, #0x20 strh r1, [r2, #-4] bl sub_037F9238 _037F9110: ldr r0, _037F9194 ; =0x04808048 mov r1, #0 strh r1, [r0] bl sub_027E9E94 ldr r1, _037F9178 ; =0x048080AE mov r0, #2 strh r0, [r1] ldrh r1, [r6, #0xe] cmp r1, #1 bne _037F913C bl sub_027E9CB4 _037F913C: bl sub_037FB300 add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037F914C: .word 0x0380FFF4 _037F9150: .word 0x04808044 _037F9154: .word 0x04808032 _037F9158: .word 0x04808134 _037F915C: .word 0x0000FFFF _037F9160: .word 0x04808030 _037F9164: .word 0x048081AE _037F9168: .word 0x04808008 _037F916C: .word 0x0000703F _037F9170: .word 0x00001FFF _037F9174: .word 0x048080F6 _037F9178: .word 0x048080AE _037F917C: .word 0x0000E0BF _037F9180: .word 0x048081AA _037F9184: .word 0x048080D0 _037F9188: .word 0x00000581 _037F918C: .word 0x00000181 _037F9190: .word 0x048080E0 _037F9194: .word 0x04808048 arm_func_end sub_037F8DE0 arm_func_start sub_037F9198 sub_037F9198: ; 0x037F9198 stmdb sp!, {r4, lr} ldr r0, _037F9228 ; =0x0380FFF4 ldr r1, [r0] add r0, r1, #0x208 add r0, r0, #0x400 add r4, r1, #0x344 bl sub_037FD5C0 ldr r0, _037F9228 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x234 add r0, r0, #0x400 bl sub_037FD5C0 mov r0, #0x20 bl sub_037F9238 mov r1, #0 strh r1, [r4, #0xa4] ldr r0, _037F922C ; =0x04808012 strh r1, [r4, #0x12] strh r1, [r0] strh r1, [r0, #-0xe] strh r1, [r0, #0xd8] strh r1, [r0, #0xd6] strh r1, [r0, #-0xa] strh r1, [r0, #-8] ldrh r0, [r4, #0xc] cmp r0, #1 bne _037F9208 bl sub_027F11DC _037F9208: ldr r1, _037F9230 ; =0x0000FFFF ldr r0, _037F9234 ; =0x048080AC strh r1, [r0] strh r1, [r0, #8] bl sub_027F0F08 bl sub_027E8D44 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037F9228: .word 0x0380FFF4 _037F922C: .word 0x04808012 _037F9230: .word 0x0000FFFF _037F9234: .word 0x048080AC arm_func_end sub_037F9198 arm_func_start sub_037F9238 sub_037F9238: ; 0x037F9238 stmdb sp!, {r3, r4, r5, lr} ldr r1, _037F92D0 ; =0x0380FFF4 mov r5, r0 ldr r1, [r1] add r4, r1, #0x344 ldrh r0, [r4, #8] cmp r0, r5 beq _037F92C8 cmp r0, #0x40 bne _037F926C add r0, r1, #0x234 add r0, r0, #0x400 bl sub_037FD5C0 _037F926C: cmp r5, #0 beq _037F9288 cmp r5, #0x10 beq _037F9290 cmp r5, #0x40 beq _037F92A8 b _037F92C4 _037F9288: bl sub_027E9CF4 b _037F92C4 _037F9290: ldr r0, _037F92D4 ; =0x04808040 mov r1, #0 strh r1, [r0] bl sub_037F9198 bl sub_027E9D7C b _037F92C4 _037F92A8: ldrh r0, [r4, #0xc] cmp r0, #2 bne _037F92B8 bl sub_027E9EE0 _037F92B8: ldr r1, _037F92D8 ; =sub_027EAA6C mov r0, #0x64 bl sub_027EA9BC _037F92C4: strh r5, [r4, #8] _037F92C8: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F92D0: .word 0x0380FFF4 _037F92D4: .word 0x04808040 _037F92D8: .word sub_027EAA6C arm_func_end sub_037F9238 arm_func_start sub_037F92DC sub_037F92DC: ; 0x037F92DC stmdb sp!, {r4, r5, r6, lr} ldr r5, _037F93A8 ; =0x04808010 mov r4, #1 _037F92E8: ldrh r1, [r5] ldrh r0, [r5, #2] ands r6, r1, r0 beq _037F9390 tst r6, #0x80 beq _037F9304 bl sub_037FA21C _037F9304: tst r6, #0x40 beq _037F9310 bl sub_037FA328 _037F9310: tst r6, #0x8000 beq _037F931C bl sub_037F93B0 _037F931C: tst r6, #0x4000 beq _037F9328 bl sub_037F943C _037F9328: tst r6, #0x2000 beq _037F9334 bl sub_037F96E0 _037F9334: tst r6, #0x800 beq _037F9340 bl sub_027EB830 _037F9340: tst r6, #8 beq _037F934C bl sub_037F977C _037F934C: tst r6, #4 beq _037F9358 bl sub_037F988C _037F9358: tst r6, #1 beq _037F9364 bl sub_037F9C70 _037F9364: tst r6, #0x30 beq _037F9370 bl sub_037F974C _037F9370: tst r6, #2 beq _037F937C bl sub_037F9A08 _037F937C: tst r6, #0x1000 beq _037F92E8 mov r0, r4 bl sub_037FA12C b _037F92E8 _037F9390: ldr r1, _037F93AC ; =0x0380FFF8 ldr r0, [r1] orr r0, r0, #0x1000000 str r0, [r1] ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037F93A8: .word 0x04808010 _037F93AC: .word 0x0380FFF8 arm_func_end sub_037F92DC arm_func_start sub_037F93B0 sub_037F93B0: ; 0x037F93B0 stmdb sp!, {r4, lr} ldr r1, _037F9434 ; =0x0380FFF4 ldr r0, _037F9438 ; =0x04808010 ldr r2, [r1] mov r1, #0x8000 strh r1, [r0] add r4, r2, #0x344 ldrh r0, [r4, #8] cmp r0, #0x40 bne _037F9424 ldrh r0, [r4, #0x7e] cmp r0, #0 beq _037F9424 ldrh r1, [r4, #0x72] ldrh r0, [r4, #0x70] cmp r1, r0 bne _037F9424 ldrh r0, [r4, #0x80] add r0, r0, #1 strh r0, [r4, #0x80] ldrh r1, [r4, #0x80] ldrh r0, [r4, #0x7e] cmp r1, r0 bls _037F9424 mov r2, #0 mov r0, #1 mov r1, #0xd strh r2, [r4, #0x80] bl sub_037F8598 _037F9424: mov r0, #1 strh r0, [r4, #0x10] ldmia sp!, {r4, lr} bx lr .align 2, 0 _037F9434: .word 0x0380FFF4 _037F9438: .word 0x04808010 arm_func_end sub_037F93B0 arm_func_start sub_037F943C sub_037F943C: ; 0x037F943C stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} ldr r6, _037F96C0 ; =0x0380FFF4 ldr r2, _037F96C4 ; =0x04808010 ldr r3, [r6] mov r0, #0x4000 strh r0, [r2] add r4, r3, #0x344 ldrh r1, [r4, #0xc] add r0, r3, #0x2c cmp r1, #1 add r5, r3, #0x31c add r7, r0, #0x400 beq _037F9484 cmp r1, #2 beq _037F9538 cmp r1, #3 beq _037F957C b _037F96B8 _037F9484: ldr r1, [r7, #0x80] ldrh r6, [r6, #-4] ldrh r0, [r4, #0x96] add r1, r1, #0x24 add r8, r1, r0 add r0, r8, #8 and r1, r6, #0xff bl sub_027EAD24 mov r1, r6, lsr #8 add r0, r8, #9 and r1, r1, #0xff bl sub_027EAD24 ldrh r0, [r4, #0xe] cmp r0, #1 bne _037F94D8 ldr r1, _037F96C8 ; =0x04808134 ldrh r2, [r5, #0x20] ldrh r0, [r1] add r0, r2, r0 add r0, r0, #1 strh r0, [r1] _037F94D8: ldr r0, _037F96C0 ; =0x0380FFF4 ldr r1, _037F96CC ; =0x048080B6 ldr r0, [r0] add r0, r0, #0x500 ldrh r3, [r0, #0x2e] ldrh r2, [r0, #0x32] mvn r3, r3 orr r2, r3, r2 strh r2, [r0, #0x30] ldrh r0, [r1] tst r0, #0x18 bne _037F9514 and r0, r0, #6 cmp r0, #2 bne _037F9528 _037F9514: ldr r0, [r7, #0x8c] bic r0, r0, #2 str r0, [r7, #0x8c] bl sub_037FA598 b _037F96B8 _037F9528: ldr r0, [r7, #0x8c] orr r0, r0, #2 str r0, [r7, #0x8c] b _037F96B8 _037F9538: ldrh r0, [r4, #0x12] cmp r0, #0 ldreq r1, _037F96D0 ; =0x0000FFFF addeq r0, r2, #0x124 streqh r1, [r0] beq _037F9568 add r1, r2, #0x124 ldrh r2, [r5, #0x20] ldrh r0, [r1] add r0, r2, r0 add r0, r0, #1 strh r0, [r1] _037F9568: ldrh r0, [r4, #0x1a] cmp r0, #2 bne _037F957C mov r0, #2 bl sub_027E9CB4 _037F957C: ldrh r0, [r4, #8] cmp r0, #0x40 movne r1, #1 bne _037F95C8 ldrh r0, [r4, #0x72] mov r1, #0 cmp r0, #1 ldrh r0, [r4, #0x14] moveq r1, #1 cmp r0, #0 beq _037F95C8 ldrh r0, [r4, #0x76] cmp r0, #1 beq _037F95C4 cmp r0, #0 ldreqh r0, [r4, #0x74] cmpeq r0, #1 bne _037F95C8 _037F95C4: mov r1, #1 _037F95C8: cmp r1, #0 ldr r1, _037F96D4 ; =0x04808038 ldrneh r0, [r1] orrne r0, r0, #1 strneh r0, [r1] ldreqh r0, [r1] biceq r0, r0, #1 streqh r0, [r1] ldr r1, _037F96D8 ; =0x04808118 mov r8, #0 ldrh r0, [r1] mov r6, #2 cmp r0, #0xa movhi r0, #0 strhih r0, [r1, #-0xd0] ldrh r0, [r4, #0x72] mov r5, r8 sub r0, r0, #1 strh r0, [r4, #0x72] ldrh r0, [r4, #0x72] mov sl, #0x14 cmp r0, #0 ldreqh r0, [r4, #0x70] streqh r0, [r4, #0x72] ldrh r1, [r4, #0x76] sub r0, r1, #1 strh r0, [r4, #0x76] cmp r1, #0 ldreqh r0, [r4, #0x74] subeq r0, r0, #1 streqh r0, [r4, #0x76] mov r4, #0xe _037F9648: mul r1, r8, sl ldrh r0, [r7, r1] add sb, r7, r1 cmp r0, #0 beq _037F96A0 ldr r0, [sb, #0xc] ldrh r1, [r0, #8] cmp r1, #0 bne _037F96A0 bl sub_027F027C cmp r0, #0 beq _037F96A0 mov r0, r8 bl sub_027F0CD4 ldr r1, [sb, #8] mov r0, r5 strh r6, [r1] mov r1, r4 bl sub_037F8598 ldrh r0, [r7, #0xae] add r0, r0, #1 strh r0, [r7, #0xae] _037F96A0: add r8, r8, #1 cmp r8, #2 blo _037F9648 ldr r0, _037F96DC ; =0x048080AE mov r1, #0xd strh r1, [r0] _037F96B8: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} bx lr .align 2, 0 _037F96C0: .word 0x0380FFF4 _037F96C4: .word 0x04808010 _037F96C8: .word 0x04808134 _037F96CC: .word 0x048080B6 _037F96D0: .word 0x0000FFFF _037F96D4: .word 0x04808038 _037F96D8: .word 0x04808118 _037F96DC: .word 0x048080AE arm_func_end sub_037F943C arm_func_start sub_037F96E0 sub_037F96E0: ; 0x037F96E0 ldr r0, _037F9744 ; =0x0380FFF4 ldr r1, _037F9748 ; =0x04808010 ldr r2, [r0] mov r0, #0x2000 strh r0, [r1] mov r0, #0xd add r2, r2, #0x344 strh r0, [r1, #0x9c] ldrh r0, [r2, #0x1a] cmp r0, #1 moveq r0, #2 streqh r0, [r2, #0x1a] bxeq lr cmp r0, #2 moveq r0, #0 streqh r0, [r2, #0x1a] bxeq lr ldrh r0, [r2, #0xc] cmp r0, #2 bxne lr ldrh r0, [r2, #8] cmp r0, #0x40 movne r0, #0 strneh r0, [r1, #0x38] bx lr .align 2, 0 _037F9744: .word 0x0380FFF4 _037F9748: .word 0x04808010 arm_func_end sub_037F96E0 arm_func_start sub_037F974C sub_037F974C: ; 0x037F974C stmdb sp!, {r3, lr} bl sub_027EA1AC ldr r1, _037F9774 ; =0x048081AC ldr r2, _037F9778 ; =0x0000FFFF sub r0, r1, #0x19c strh r2, [r1] mov r1, #0x30 strh r1, [r0] ldmia sp!, {r3, lr} bx lr .align 2, 0 _037F9774: .word 0x048081AC _037F9778: .word 0x0000FFFF arm_func_end sub_037F974C arm_func_start sub_037F977C sub_037F977C: ; 0x037F977C stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r1, _037F9880 ; =0x04808010 mov r2, #8 ldr r0, _037F9884 ; =0x0380FFF4 strh r2, [r1] ldr r0, [r0] add r0, r0, #0x300 ldrh r0, [r0, #0x3a] mov r0, r0, lsl #0x1b movs r0, r0, lsr #0x1f beq _037F97C4 add r0, r1, #0x18c ldrh r0, [r0] tst r0, #1 addeq r1, r1, #0x280 ldreqh r0, [r1] eoreq r0, r0, #1 streqh r0, [r1] _037F97C4: ldr r0, _037F9884 ; =0x0380FFF4 ldr r1, [r0] add r0, r1, #0x600 ldrh r0, [r0, #0x90] tst r0, #8 beq _037F9878 ldr r4, _037F9888 ; =0x04808032 add r0, r1, #0x2c mov r2, #0 add r1, r1, #0x344 add r3, r0, #0x400 mov r5, r2 mov lr, #0x8000 mov ip, #0x14 _037F97FC: mul r6, r2, ip ldrh r0, [r3, r6] add r6, r3, r6 cmp r0, #0 beq _037F986C ldr r0, [r6, #8] ldrh r6, [r0, #0xc] tst r6, #0x4000 beq _037F986C ldrh r6, [r0, #4] tst r6, #0xff beq _037F986C ldrh r6, [r0, #0xa] add r7, r0, #0xc add r6, r7, r6 sub r6, r6, #7 bic r7, r6, #1 ldrh r6, [r7] cmp r6, #0 ldreqh r6, [r7, #2] cmpeq r6, #0 bne _037F986C strh r5, [r0, #4] strh r5, [r4] strh lr, [r4] ldrh r0, [r1, #0xba] add r0, r0, #1 strh r0, [r1, #0xba] _037F986C: add r2, r2, #1 cmp r2, #3 blo _037F97FC _037F9878: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037F9880: .word 0x04808010 _037F9884: .word 0x0380FFF4 _037F9888: .word 0x04808032 arm_func_end sub_037F977C arm_func_start sub_037F988C sub_037F988C: ; 0x037F988C stmdb sp!, {r3, lr} ldr r1, _037F99EC ; =0x0380FFF4 ldr ip, _037F99F0 ; =0x04808010 ldr r2, [r1] mov r0, #4 strh r0, [ip] ldr r0, [r1] add r1, ip, #0x198 add r0, r0, #0x600 ldrh r3, [r0, #0x90] add r0, r2, #0xdc add r2, r2, #0x2c ldrh r1, [r1] tst r3, #8 add r0, r0, #0x400 add r3, r2, #0x400 beq _037F997C tst r1, #0x400 beq _037F997C ldrh ip, [ip, #0xa0] tst ip, #1 ldrneh r2, [r3] cmpne r2, #0 bne _037F9938 tst ip, #4 ldrneh r2, [r3, #0x14] cmpne r2, #0 bne _037F9938 tst ip, #8 ldrneh r2, [r3, #0x28] cmpne r2, #0 bne _037F9938 ldr r2, _037F99F4 ; =0x0480819C ldrh r2, [r2] tst r2, #1 bne _037F9938 ldr r3, _037F99F8 ; =0x04808032 mov ip, #0 strh ip, [r3] mov r2, #0x8000 strh r2, [r3] strh ip, [r0, #2] b _037F997C _037F9938: ldrh r3, [r0, #2] add r2, r3, #1 strh r2, [r0, #2] cmp r3, #0xc bls _037F997C ldr r3, _037F99F8 ; =0x04808032 mov r2, #0 strh r2, [r0, #2] strh r2, [r3] mov r2, #0x8000 ldr r0, _037F99EC ; =0x0380FFF4 strh r2, [r3] ldr r0, [r0] add r0, r0, #0x300 ldrh r2, [r0, #0xfe] add r2, r2, #1 strh r2, [r0, #0xfe] _037F997C: ldr r0, _037F99EC ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x600 ldrh r0, [r0, #0x90] tst r0, #1 beq _037F99E4 tst r1, #0x60 beq _037F99E4 ldr r2, _037F99FC ; =0x04808054 ldrh r1, [r2] ldrh r0, [r2, #-2] sub r0, r0, #0x4000 add r0, r0, r0, lsr #31 cmp r1, r0, asr #1 bge _037F99CC ldrh r0, [r2, #-4] sub r0, r0, #0x4000 add r0, r0, r0, lsr #31 cmp r1, r0, asr #1 bge _037F99E0 _037F99CC: ldr r2, _037F9A00 ; =0x0480805A ldr r0, _037F9A04 ; =0x00008001 ldrh r1, [r2] strh r1, [r2, #-4] strh r0, [r2, #-0x2a] _037F99E0: bl sub_027EAF70 _037F99E4: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037F99EC: .word 0x0380FFF4 _037F99F0: .word 0x04808010 _037F99F4: .word 0x0480819C _037F99F8: .word 0x04808032 _037F99FC: .word 0x04808054 _037F9A00: .word 0x0480805A _037F9A04: .word 0x00008001 arm_func_end sub_037F988C arm_func_start sub_037F9A08 sub_037F9A08: ; 0x037F9A08 stmdb sp!, {r3, r4, r5, lr} ldr r3, _037F9C50 ; =0x0380FFF4 ldr r0, _037F9C54 ; =0x04808010 ldr r2, [r3] mov r1, #2 strh r1, [r0] ldr r3, [r3] add r2, r2, #0x2c add r3, r3, #0x300 ldrh r3, [r3, #0x4c] add r4, r2, #0x400 cmp r3, #0x12 bne _037F9A44 bl sub_027EF4C0 b _037F9C48 _037F9A44: ldrh r2, [r0, #0xa8] and r5, r2, #0xf00 cmp r5, #0x300 beq _037F9A68 cmp r5, #0x800 beq _037F9A9C cmp r5, #0xb00 beq _037F9AD8 b _037F9BD4 _037F9A68: ldr r0, [r4, #0x8c] tst r0, #2 beq _037F9A78 bl sub_037FA598 _037F9A78: ldr r1, _037F9C50 ; =0x0380FFF4 mov r0, #0 ldr r3, [r1] mov r1, #8 ldr r2, [r3, #0x558] add r2, r2, #1 str r2, [r3, #0x558] bl sub_037F8598 b _037F9BD4 _037F9A9C: ldr r2, [r4, #0x44] ldrh r3, [r4, #0x9e] ldrh r2, [r2, #4] and r2, r2, #0xff mov r2, r2, lsl #0x10 cmp r3, r2, lsr #16 strlsh r1, [r0, #0x9c] ldrlsh r0, [r4, #0xa8] addls r0, r0, #1 strlsh r0, [r4, #0xa8] ldr r1, [r4, #0x90] ldrh r0, [r1, #0x18] add r0, r0, #1 strh r0, [r1, #0x18] b _037F9BD4 _037F9AD8: ldr r3, _037F9C58 ; =0x0000FFFF ldr r2, _037F9C5C ; =0x04805F70 ldr r1, _037F9C60 ; =0x0480824E strh r3, [r2] strh r3, [r2, #2] add r0, r0, #0x23c strh r3, [r0] strh r3, [r1] ldrh r0, [r4, #0x3c] cmp r0, #0 beq _037F9B30 ldr r1, [r4, #0x44] ldrh r0, [r1, #0x22] cmp r0, r3 bne _037F9B30 ldrh r0, [r1, #4] cmp r0, #0 movne r0, #0 strneh r0, [r1, #4] ldrneh r1, [r4, #0x98] ldrne r0, [r4, #0x44] strneh r1, [r0, #2] _037F9B30: ldr r0, [r4, #0x44] ldr r2, [r4, #0x90] ldrh r1, [r0, #2] ldrh r0, [r4, #0x98] cmp r1, #1 add r2, r2, #0x1a bls _037F9B80 ldr r3, _037F9C50 ; =0x0380FFF4 ldr r3, [r3] add r3, r3, #0x300 ldrh r3, [r3, #0x3a] mov r3, r3, lsl #0x1b movs r3, r3, lsr #0x1f beq _037F9B80 ldr ip, _037F9C64 ; =0x0480819C ldrh r3, [ip] tst r3, #1 ldreqh r3, [ip, #0xf4] eoreq r3, r3, #1 streqh r3, [ip, #0xf4] _037F9B80: ldr r3, _037F9C50 ; =0x0380FFF4 ldr r3, [r3] add r3, r3, #0x600 ldrh r3, [r3, #0x90] tst r3, #0x40 beq _037F9BD4 b _037F9BCC _037F9B9C: mov r1, r1, lsl #0xf mov r1, r1, lsr #0x10 tst r1, #1 ldrneh r3, [r2, #6] mov r0, r0, lsl #0xf addne r3, r3, #1 mov r0, r0, lsr #0x10 strneh r3, [r2, #6] tst r0, #1 ldrne r3, [r4, #0x90] ldrneh r3, [r3, #0x16] addne r2, r2, r3 _037F9BCC: cmp r1, #1 bhi _037F9B9C _037F9BD4: cmp r5, #0x800 beq _037F9C3C ldr r2, _037F9C68 ; =0x048080B0 ldrh r0, [r2] tst r0, #2 bne _037F9C3C ldrh r0, [r4, #0x3c] cmp r0, #0 beq _037F9C30 mov r0, #2 strh r0, [r2, #4] mov r1, #0 strh r1, [r2, #-0x68] ldrh r1, [r2, #-0xa0] tst r1, #0x1000 ldrneh r0, [r4, #0xac] addne r0, r0, #1 strneh r0, [r4, #0xac] bne _037F9C24 bl sub_037FA12C _037F9C24: ldrh r0, [r4, #0xaa] add r0, r0, #1 strh r0, [r4, #0xaa] _037F9C30: ldr r0, _037F9C6C ; =0x048080AE mov r1, #2 strh r1, [r0] _037F9C3C: mov r0, #0 mov r1, #0xe bl sub_037F8598 _037F9C48: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037F9C50: .word 0x0380FFF4 _037F9C54: .word 0x04808010 _037F9C58: .word 0x0000FFFF _037F9C5C: .word 0x04805F70 _037F9C60: .word 0x0480824E _037F9C64: .word 0x0480819C _037F9C68: .word 0x048080B0 _037F9C6C: .word 0x048080AE arm_func_end sub_037F9A08 arm_func_start sub_037F9C70 sub_037F9C70: ; 0x037F9C70 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x38 ldr r0, _037FA100 ; =0x0380FFF4 ldr r2, _037FA104 ; =0x04808010 ldr r3, [r0] mov r1, #1 add r0, r3, #0x600 ldrh r4, [r0, #0x90] add r6, r3, #0x344 strh r1, [r2] ldrh r1, [r6, #0xc] add r0, r3, #0xdc cmp r1, #0 add r7, r0, #0x400 ldreqh r0, [r2, #0x44] and r4, r4, #1 streqh r0, [r2, #0x4a] ldr r0, _037FA108 ; =0x04808098 sub fp, r0, #0x70 add r0, r0, #0x1b4 str r0, [sp, #0x24] ldr r0, _037FA10C ; =0x0480824E sub r0, r0, #0x154 str r0, [sp, #0x14] ldr r0, _037FA108 ; =0x04808098 sub r0, r0, #0x44 str r0, [sp, #0x10] ldr r0, _037FA110 ; =0x000008EF sub r0, r0, #0x29 str r0, [sp, #0x28] ldr r0, _037FA110 ; =0x000008EF add r0, r0, #0x3d str r0, [sp, #0x2c] ldr r0, _037FA114 ; =0x04805F7E sub r0, r0, #0x24 str r0, [sp, #0x30] ldr r0, _037FA110 ; =0x000008EF add r0, r0, #0x710 str r0, [sp, #0x34] _037F9D0C: ldr r0, [sp, #0x10] ldrh sb, [r7, #4] ldrh sl, [r0] cmp sb, sl beq _037FA080 ldr r0, _037FA108 ; =0x04808098 ldr r1, [sp, #0x14] ldrh r0, [r0, #0x60] ldrh r3, [r1] ldr r1, _037FA108 ; =0x04808098 ldrh r2, [r1, #0x60] ldr r1, [sp, #0x14] cmp r0, r2 ldrh r1, [r1] movhi r0, r1, lsl #0xc orrhi r0, r0, r2, lsr #4 strhi r0, [sp, #4] movls r1, r3, lsl #0xc orrls r0, r1, r0, lsr #4 strls r0, [sp, #4] ldr r0, [sp, #0x28] cmp sb, r0 blo _037F9D78 ldr r0, _037FA110 ; =0x000008EF cmp sb, r0 bhi _037F9D78 bl sub_027EA1AC _037F9D78: mov r0, sb, lsl #1 str r0, [sp, #0x18] add r0, r0, #0x4000 add r8, r0, #0x4800000 add r0, r8, #2 bl sub_037FA6C8 mov r5, r0 add r0, r5, #2 bl sub_037FA6C8 str r0, [sp, #0x1c] add r0, r0, #4 bl sub_037FA6C8 str r0, [sp, #0x20] add r0, r8, #0xe bl sub_037FA6C8 str r0, [sp, #0xc] ldr r0, [sp, #0x18] ldrh r1, [r5] add r0, r0, #0x4800000 add r0, r0, #0x4000 mov r1, r1, lsl #1 ldrh r2, [r0] and r1, r1, #0x400 orr r1, r2, r1 strh r1, [r0] ldr r1, [sp, #4] ldr r0, [sp, #0x1c] strh r1, [r0] ldr r0, [sp, #0x20] ldrh r1, [r0] add r0, r1, sb, lsl #1 add r0, r0, #0xf mov r0, r0, lsr #2 mov sb, r0, lsl #1 cmp sb, #0xfb0 ldrhsh r0, [r6, #0x9a] subhs sb, sb, r0, lsr #1 ldr r0, [sp, #0x2c] cmp r1, r0 bls _037F9E34 ldr r0, _037FA118 ; =0x0000FFFF mov sb, sl strh r0, [r8] ldrh r0, [r6, #0xb4] add r0, r0, #1 strh r0, [r6, #0xb4] b _037F9EBC _037F9E34: cmp r4, #0 cmpne sb, sl beq _037F9EBC ldr r3, [sp, #0x30] mov r2, sb, lsl #1 add r0, r2, #0x4000 add r0, r0, #0x4800000 cmp r0, r3 ldrloh r0, [r0, #6] add r2, r2, #0x4800000 add r2, r2, #0x4000 ldrhsh r3, [r6, #0x9a] andlo r0, r0, #0xff subhs r0, r0, r3 ldrh r2, [r2] ldrhsh r0, [r0, #6] tst r2, #0x7c00 bne _037F9E94 cmp r0, #0xa cmpne r0, #0x14 bne _037F9E94 ldr r0, [sp, #0x34] cmp r1, r0 bls _037F9EBC _037F9E94: ldrh r0, [r6, #0xb4] ldr r1, _037FA118 ; =0x0000FFFF add r0, r0, #1 strh r0, [r6, #0xb4] mov r0, sl, lsl #0x10 strh r1, [r8] mov r0, r0, lsr #0x10 strh r0, [r7, #4] strh r0, [r5] b _037FA080 _037F9EBC: ldrh r0, [r8] and r0, r0, #0xf cmp r0, #0xc bne _037FA01C add r0, r8, #0xc bl sub_037FA6C8 ldrh r0, [r0] str r0, [sp, #8] add r0, r8, #0x22 bl sub_037FA6C8 ldrh sl, [r0] ldrh r0, [r7] cmp r0, sl bne _037F9F20 ldr r0, [sp, #8] tst r0, #0x800 beq _037F9F20 ldr r0, _037FA100 ; =0x0380FFF4 ldr r1, [r0] ldr r0, [r1, #0x57c] add r0, r0, #1 str r0, [r1, #0x57c] ldr r0, _037FA118 ; =0x0000FFFF strh r0, [r8] b _037F9FF4 _037F9F20: ldr r0, _037FA100 ; =0x0380FFF4 ldr r0, [r0] add r1, r0, #0x300 ldrh r2, [r1, #0x3a] mov r2, r2, lsl #0x18 movs r2, r2, lsr #0x1f ldreqh r1, [r1, #0x4c] cmpeq r1, #0x40 bne _037F9FF4 ldrh r1, [fp] cmp r1, #0 beq _037F9FCC ldr r1, _037FA108 ; =0x04808098 ldrh r1, [r1] tst r1, #0x8000 beq _037F9FCC add r0, r0, #0x660 bl sub_037FD5C0 ldr r0, [sp, #0xc] mov r3, #0 ldrh r1, [r0] ldr r0, _037FA11C ; =0x000082EA mov r2, #0x3e8 umull ip, r8, r1, r0 mov r0, r3 mla r8, r1, r0, r8 mov r0, ip, lsr #6 ldr r1, _037FA11C ; =0x000082EA mov ip, r3 mla r8, ip, r1, r8 mov r1, r8, lsr #6 orr r0, r0, r8, lsl #26 bl sub_03806B80 mov r2, #0 str r2, [sp] mov r2, r1 mov r1, r0 ldr r0, _037FA100 ; =0x0380FFF4 ldr r3, _037FA120 ; =sub_027EA0BC ldr r0, [r0] add r0, r0, #0x660 bl sub_037FD4DC b _037F9FF4 _037F9FCC: ldr r1, _037FA118 ; =0x0000FFFF ldr r0, _037FA114 ; =0x04805F7E mov sl, r1 strh r1, [r0] ldr r0, [sp, #0x24] strh r1, [r0] ldr r0, _037FA10C ; =0x0480824E strh r1, [r0] mov r0, r1 strh r0, [r8] _037F9FF4: strh sl, [r7] bl sub_037FA6F0 tst r0, #1 beq _037FA06C ldr r0, _037FA100 ; =0x0380FFF4 ldr r1, [r0] ldr r0, [r1, #0x5a8] add r0, r0, #1 str r0, [r1, #0x5a8] b _037FA06C _037FA01C: cmp r0, #0xd bne _037FA06C ldr r0, _037FA100 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x300 ldrh r1, [r0, #0x3a] mov r1, r1, lsl #0x18 movs r1, r1, lsr #0x1f ldreqh r0, [r0, #0x4c] cmpeq r0, #0x40 bne _037FA06C ldrh r0, [fp] cmp r0, #0 beq _037FA064 ldr r0, _037FA108 ; =0x04808098 ldrh r0, [r0] tst r0, #0x8000 bne _037FA06C _037FA064: ldr r0, _037FA118 ; =0x0000FFFF strh r0, [r8] _037FA06C: mov r0, sb, lsl #0x10 mov r0, r0, lsr #0x10 strh r0, [r7, #4] strh r0, [r5] b _037F9D0C _037FA080: cmp r4, #0 beq _037FA0D4 ldr r0, _037FA124 ; =0x04808054 ldrh r4, [r0] bl sub_037FA6F0 mov r0, r0, lsl #0x10 movs r1, r0, lsr #0x10 beq _037FA0D4 ldr r0, _037FA124 ; =0x04808054 ldrh r0, [r0] cmp r4, r0 bne _037FA0D4 tst r1, #2 beq _037FA0C4 mov r0, #0x80 bl sub_027EB06C b _037FA0D4 _037FA0C4: tst r1, #1 beq _037FA0D4 mov r0, #0x100 bl sub_027EB06C _037FA0D4: ldr r0, _037FA128 ; =0x0480805A ldrh r1, [r0] ldrh r0, [r0, #-6] cmp r1, r0 beq _037FA0F4 mov r0, #0 mov r1, #0xf bl sub_037F8598 _037FA0F4: add sp, sp, #0x38 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _037FA100: .word 0x0380FFF4 _037FA104: .word 0x04808010 _037FA108: .word 0x04808098 _037FA10C: .word 0x0480824E _037FA110: .word 0x000008EF _037FA114: .word 0x04805F7E _037FA118: .word 0x0000FFFF _037FA11C: .word 0x000082EA _037FA120: .word sub_027EA0BC _037FA124: .word 0x04808054 _037FA128: .word 0x0480805A arm_func_end sub_037F9C70 arm_func_start sub_037FA12C sub_037FA12C: ; 0x037FA12C stmdb sp!, {r3, lr} ldr ip, _037FA210 ; =0x0380FFF4 ldr r2, _037FA214 ; =0x04808010 ldr r1, [ip] mov r3, #0x1000 add r1, r1, #0x2c strh r3, [r2] add r3, r1, #0x400 ldrh r1, [r3, #0x3c] cmp r1, #0 beq _037FA208 ldr r1, [ip] add r1, r1, #0x600 ldrh r1, [r1, #0x90] tst r1, #0x10 cmpne r0, #0 beq _037FA1FC add r0, r2, #0x204 ldrh r1, [r2, #0xa6] ldrh r0, [r0] cmp r0, #3 cmpne r0, #5 bne _037FA1FC cmp r1, #0 bne _037FA1FC ldr r3, [r3, #0x44] mov r2, #0 ldrh r0, [r3, #2] b _037FA1B0 _037FA1A0: and r1, r0, #1 mov r0, r0, lsl #0xf add r2, r2, r1 mov r0, r0, lsr #0x10 _037FA1B0: cmp r0, #0 bne _037FA1A0 ldrh r0, [r3, #0x24] ldrh r1, [r3, #0xa] add r0, r0, #0xa mul r0, r2, r0 add r0, r0, #0xc0 add r0, r0, r1, lsl #2 mov r0, r0, lsl #0x10 ldr r1, _037FA218 ; =sub_037FA660 mov r0, r0, lsr #0x10 bl sub_027EAB5C ldr r0, _037FA210 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x400 ldrh r1, [r0] add r1, r1, #1 strh r1, [r0] b _037FA208 _037FA1FC: mov r0, #0 mov r1, #0x10 bl sub_037F8598 _037FA208: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FA210: .word 0x0380FFF4 _037FA214: .word 0x04808010 _037FA218: .word sub_037FA660 arm_func_end sub_037FA12C arm_func_start sub_037FA21C sub_037FA21C: ; 0x037FA21C stmdb sp!, {r3, lr} ldr r3, _037FA318 ; =0x0380FFF4 ldr r0, _037FA31C ; =0x04808010 ldr r2, [r3] mov r1, #0x80 strh r1, [r0] ldr r1, [r3] add r2, r2, #0x2c add r1, r1, #0x600 ldrh r1, [r1, #0x90] tst r1, #0x20 beq _037FA2B0 add r1, r0, #0x204 ldrh r3, [r1] add r1, r0, #0x258 and r3, r3, #0xff ldrh ip, [r1] cmp r3, #3 blo _037FA2B0 cmp r3, #5 bhi _037FA2B0 ldr r3, [r2, #0x458] ldr r1, _037FA320 ; =0x00000FFF and r3, r1, r3, lsr #1 cmp ip, r3 blo _037FA2B0 ldr r2, [r2, #0x430] and r1, r1, r2, lsr #1 cmp ip, r1 bhi _037FA2B0 add r1, r0, #0x234 ldrh r0, [r1] orr r0, r0, #0x80 strh r0, [r1] ldrh r0, [r1] bic r0, r0, #0x80 strh r0, [r1] _037FA2B0: ldr r1, _037FA324 ; =0x04808000 ldrh r0, [r1] cmp r0, #0x1440 beq _037FA310 add r0, r1, #0x19c ldrh r0, [r0] and r0, r0, #0x42 cmp r0, #0x42 bne _037FA310 add r1, r1, #0x2b8 ldrh r2, [r1] cmp r2, #0 beq _037FA310 mov r3, #0 b _037FA304 _037FA2EC: cmp r3, #0x3e8 add r3, r3, #1 bls _037FA304 mov r0, #0x40 bl sub_027EB06C b _037FA310 _037FA304: ldrh r0, [r1] cmp r2, r0 beq _037FA2EC _037FA310: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FA318: .word 0x0380FFF4 _037FA31C: .word 0x04808010 _037FA320: .word 0x00000FFF _037FA324: .word 0x04808000 arm_func_end sub_037FA21C arm_func_start sub_037FA328 sub_037FA328: ; 0x037FA328 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r2, _037FA57C ; =0x0380FFF4 ldr r0, _037FA580 ; =0x04808010 ldr r3, [r2] mov r1, #0x40 strh r1, [r0] ldr r2, [r2] add r1, r3, #0x2c add r2, r2, #0x600 ldrh r2, [r2, #0x90] add r4, r3, #0x344 tst r2, #0x20 add r5, r1, #0x400 beq _037FA574 ldrh r2, [r5, #0xa4] ldr r1, _037FA584 ; =0x0000FFFF cmp r2, r1 addeq r2, r0, #0x18c ldreqh r2, [r2] andeq r2, r2, #3 cmpeq r2, #3 bne _037FA574 add r2, r0, #0x258 ldrh r3, [r2] ldrh r2, [r0, #0x40] sub r1, r1, #0xf000 and r1, r1, r2, lsr #1 cmp r3, r1 blt _037FA574 ldrh r7, [r0, #0x44] mov r0, r7, lsl #1 add r0, r0, #0x4000 add r0, r0, #0x4800000 add r0, r0, #8 bl sub_037FA6C8 add r0, r0, #4 bl sub_037FA6C8 ldrh r2, [r0] ldr r1, _037FA588 ; =0x0000E7FF and r1, r2, r1 cmp r1, #0x228 bne _037FA574 add r0, r0, #2 bl sub_037FA6C8 ldr r2, _037FA58C ; =0x048080F8 ldrh r1, [r2] sub r6, r1, #0x10000 add r1, r2, #0x170 _037FA3E8: ldrh r3, [r1] sub r3, r3, r7 mov r3, r3, lsl #0x10 mov r8, r3, lsr #0x10 tst r8, #0x8000 ldrneh r3, [r4, #0x9a] addne r3, r8, r3, lsr #1 movne r3, r3, lsl #0x10 movne r8, r3, lsr #0x10 cmp r8, #0xe bhi _037FA430 ldrh r3, [r2] sub r3, r3, r6 mov r3, r3, lsl #0x10 mov r3, r3, lsr #0x10 cmp r3, #0x40 bhi _037FA574 b _037FA3E8 _037FA430: add r0, r0, #8 mov r8, #0 b _037FA458 _037FA43C: bl sub_037FA6C8 add r1, r4, r8, lsl #1 ldrh r2, [r0], #2 ldrh r1, [r1, #0x64] cmp r2, r1 bne _037FA574 add r8, r8, #1 _037FA458: cmp r8, #3 blo _037FA43C add r0, r0, #0xa bl sub_037FA6C8 ldr r3, _037FA58C ; =0x048080F8 add r1, r3, #0x170 _037FA470: ldrh r2, [r1] sub r2, r2, r7 mov r2, r2, lsl #0x10 mov r8, r2, lsr #0x10 tst r8, #0x8000 ldrneh r2, [r4, #0x9a] addne r2, r8, r2, lsr #1 movne r2, r2, lsl #0x10 movne r8, r2, lsr #0x10 cmp r8, #0x14 bhi _037FA4B8 ldrh r2, [r3] sub r2, r2, r6 mov r2, r2, lsl #0x10 mov r2, r2, lsr #0x10 cmp r2, #0x70 bhi _037FA574 b _037FA470 _037FA4B8: ldr r2, _037FA590 ; =0x04808028 ldrh r3, [r0] ldrh r0, [r2] mov r1, #1 tst r3, r1, lsl r0 bne _037FA574 ldrh r1, [r2, #0x70] mov r0, #0x40 strh r1, [r5, #0xa4] strh r0, [r2, #0x8c] ldrh r0, [r4, #0xbe] add r1, r2, #0x174 add r0, r0, #1 strh r0, [r4, #0xbe] _037FA4F0: ldrh r0, [r1] and r0, r0, #3 cmp r0, #3 beq _037FA4F0 ldr r0, _037FA594 ; =0x04808244 mov r2, #8 ldrh r1, [r0] sub r3, r0, #0x1c orr r1, r1, #0x40 strh r1, [r0] ldrh r4, [r0] ldr r1, _037FA57C ; =0x0380FFF4 bic r4, r4, #0x40 strh r4, [r0] strh r2, [r3] mov r2, #0 strh r2, [r3] ldr r1, [r1] ldr r2, _037FA584 ; =0x0000FFFF add r1, r1, #0x2c add r6, r1, #0x400 ldrh r5, [r6, #0xa4] cmp r5, r2 beq _037FA574 sub r4, r0, #0x1b0 ldrh r3, [r4] sub r1, r0, #0x214 strh r5, [r4] ldrh r0, [r1] orr r0, r0, #0x80 strh r0, [r1] strh r3, [r4] strh r2, [r6, #0xa4] _037FA574: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FA57C: .word 0x0380FFF4 _037FA580: .word 0x04808010 _037FA584: .word 0x0000FFFF _037FA588: .word 0x0000E7FF _037FA58C: .word 0x048080F8 _037FA590: .word 0x04808028 _037FA594: .word 0x04808244 arm_func_end sub_037FA328 arm_func_start sub_037FA598 sub_037FA598: ; 0x037FA598 stmdb sp!, {r3, r4, r5, lr} ldr r1, _037FA65C ; =0x0380FFF4 mov r0, #2 ldr r1, [r1] mov r5, #0 add r1, r1, #0x2c add r4, r1, #0x400 bl sub_027F0CD4 mov r0, #1 bl sub_027F0CD4 mov r0, r5 bl sub_027F0CD4 ldrh r0, [r4, #0x28] cmp r0, #0 beq _037FA5EC ldr r0, [r4, #0x30] ldrh r0, [r0] cmp r0, #0 movne r5, #1 moveq r0, r5 streqh r0, [r4, #0x28] _037FA5EC: ldrh r0, [r4, #0x14] cmp r0, #0 beq _037FA610 ldr r0, [r4, #0x1c] ldrh r0, [r0] cmp r0, #0 moveq r0, #0 streqh r0, [r4, #0x14] movne r5, #1 _037FA610: ldrh r0, [r4] cmp r0, #0 beq _037FA634 ldr r0, [r4, #8] ldrh r0, [r0] cmp r0, #0 moveq r0, #0 streqh r0, [r4] movne r5, #1 _037FA634: cmp r5, #0 beq _037FA648 mov r0, #0 mov r1, #0xe bl sub_037F8598 _037FA648: mov r0, #0 mov r1, #0x14 bl sub_037F8598 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FA65C: .word 0x0380FFF4 arm_func_end sub_037FA598 arm_func_start sub_037FA660 sub_037FA660: ; 0x037FA660 stmdb sp!, {r4, lr} mov r0, #0x1000000 bl sub_037FB928 ldr r2, _037FA6C0 ; =0x04808210 mov r1, #0x1000 ldrh r3, [r2] mov r4, r0 strh r1, [r2, #0x34] mov r1, #0x64 b _037FA698 _037FA688: ldrh r0, [r2] cmp r3, r0 bne _037FA6A0 sub r1, r1, #1 _037FA698: cmp r1, #0 bne _037FA688 _037FA6A0: ldr r1, _037FA6C4 ; =0x04808244 mov r0, #0 strh r0, [r1] bl sub_037FA12C mov r0, r4 bl sub_037FB8F0 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FA6C0: .word 0x04808210 _037FA6C4: .word 0x04808244 arm_func_end sub_037FA660 arm_func_start sub_037FA6C8 sub_037FA6C8: ; 0x037FA6C8 ldr r1, _037FA6E8 ; =0x04805F60 cmp r0, r1 ldrhs r1, _037FA6EC ; =0x0380FFF4 ldrhs r1, [r1] addhs r1, r1, #0x300 ldrhsh r1, [r1, #0xde] subhs r0, r0, r1 bx lr .align 2, 0 _037FA6E8: .word 0x04805F60 _037FA6EC: .word 0x0380FFF4 arm_func_end sub_037FA6C8 arm_func_start sub_037FA6F0 sub_037FA6F0: ; 0x037FA6F0 stmdb sp!, {r3, r4, r5, lr} ldr r0, _037FA724 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x2c add r5, r0, #0x400 add r0, r5, #0x50 bl sub_027EB844 mov r4, r0 add r0, r5, #0x64 bl sub_027EB844 orr r0, r4, r0 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FA724: .word 0x0380FFF4 arm_func_end sub_037FA6F0 arm_func_start sub_037FA728 sub_037FA728: ; 0x037FA728 stmdb sp!, {r3, lr} ldr r0, _037FA770 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x300 ldrh r0, [r0, #0xe8] cmp r0, #0 beq _037FA748 bl sub_027F1578 _037FA748: ldr r0, _037FA770 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x300 ldrh r0, [r0, #0x3a] mov r0, r0, lsl #0x19 movs r0, r0, lsr #0x1f beq _037FA768 bl sub_027EDF34 _037FA768: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FA770: .word 0x0380FFF4 arm_func_end sub_037FA728 arm_func_start sub_037FA774 sub_037FA774: ; 0x037FA774 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr r7, _037FA940 ; =0x0380FFF4 mov sl, #2 ldr r1, [r7] mov fp, #0 add r0, r1, #0x2c add r8, r0, #0x400 ldr r0, _037FA944 ; =0x04808032 add r6, r1, #0x344 add r4, r0, #0x6e _037FA79C: mov r0, #0x14 mov r5, sl, lsl #2 mla sb, sl, r0, r8 add r0, r5, #0x4800000 add r0, r0, #0x8000 ldrh r0, [r0, #0xa0] tst r0, #0x8000 bne _037FA930 ldrh r0, [sb] cmp r0, #0 beq _037FA930 ldr r1, [sb, #0xc] cmp r1, #0 beq _037FA910 ldr r0, [sb, #8] ldrh r0, [r0] strh r0, [r1, #8] ldr r1, [sb, #8] ldr r0, [sb, #0xc] ldrh r1, [r1, #0xc] strh r1, [r0, #0x14] ldr r0, [sb, #8] ldrh r1, [r0, #0xc] tst r1, #0x4000 beq _037FA8DC ldr r1, [r7] add r1, r1, #0x600 ldrh r1, [r1, #0x90] tst r1, #8 beq _037FA8C0 ldrh r1, [r0, #0xa] add r2, r0, #0xc add r1, r2, r1 sub r1, r1, #7 bic r2, r1, #1 ldrh r1, [r2] cmp r1, #0 ldreqh r1, [r2, #2] cmpeq r1, #0 bne _037FA8C0 ldr r0, _037FA944 ; =0x04808032 mov r1, #0x8000 strh fp, [r0] strh r1, [r0] ldrh r0, [r6, #0xba] add r0, r0, #1 strh r0, [r6, #0xba] ldr r0, [sb, #0xc] bl sub_027F027C cmp r0, #0 beq _037FA8A4 ldr r2, [sb, #0xc] mov r0, #2 strh r0, [r2, #8] ldrh r0, [sb, #4] mov r1, #1 add r0, r0, #1 strh r0, [sb, #4] ldrh r0, [r8, #0xae] add r0, r0, #1 strh r0, [r8, #0xae] ldr r0, [sb, #0xc] ldr r2, [sb, #0x10] mov lr, pc bx r2 _037FA8A0: b _037FA930 _037FA8A4: ldr r1, [sb, #0xc] mov r0, #0 strh r0, [r1, #0xc] ldrh r0, [r5, r4] orr r0, r0, #0x8000 strh r0, [r5, r4] b _037FA930 _037FA8C0: ldrh r0, [r0, #4] ldr r2, [sb, #0xc] and r0, r0, #0xff ldrh r1, [r2, #0xc] add r0, r1, r0 strh r0, [r2, #0xc] b _037FA8EC _037FA8DC: ldrh r1, [r0, #4] ldr r0, [sb, #0xc] and r1, r1, #0xff strh r1, [r0, #0xc] _037FA8EC: ldrh r0, [sb, #4] mov r1, #2 add r0, r0, #1 strh r0, [sb, #4] ldr r0, [sb, #0xc] ldr r2, [sb, #0x10] mov lr, pc bx r2 _037FA90C: b _037FA930 _037FA910: ldrh r0, [sb, #4] mov r1, #3 add r0, r0, #1 strh r0, [sb, #4] ldr r0, [sb, #8] ldr r2, [sb, #0x10] mov lr, pc bx r2 _037FA930: subs sl, sl, #1 bpl _037FA79C ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _037FA940: .word 0x0380FFF4 _037FA944: .word 0x04808032 arm_func_end sub_037FA774 arm_func_start sub_037FA948 sub_037FA948: ; 0x037FA948 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r0, _037FAC98 ; =0x0380FFF4 ldr r4, [r0] add r0, r4, #0xdc add r5, r0, #0x400 _037FA95C: ldr r1, _037FAC9C ; =0x0480805A ldrh r0, [r5, #4] ldrh r6, [r1] cmp r6, r0 beq _037FAC90 ldr r0, _037FACA0 ; =0x000008C6 cmp r6, r0 blo _037FA980 bl sub_027EA1AC _037FA980: mov r6, r6, lsl #1 add r0, r6, #0x4000 add r7, r0, #0x4800000 add r0, r7, #2 bl sub_037FA6C8 add r1, r6, #0x4800000 add r1, r1, #0x4000 ldrh r2, [r1] ldr r1, _037FACA4 ; =0x0000FFFF ldrh r6, [r0] cmp r2, r1 ldreq r0, _037FAC9C ; =0x0480805A streqh r6, [r0] beq _037FA95C add r0, r7, #8 bl sub_037FA6C8 ldrh r1, [r0] mov r0, r7 bl sub_037FAE50 ldr r1, _037FAC9C ; =0x0480805A movs r8, r0 strh r6, [r1] bne _037FAA04 ldrh r0, [r7] and r0, r0, #0xf cmp r0, #0xc bne _037FA9F8 mov r0, #0x10 bl sub_027EB06C b _037FA95C _037FA9F8: mov r0, #8 bl sub_027EB06C b _037FA95C _037FAA04: ldr r0, _037FAC98 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x600 ldrh r0, [r0, #0x90] tst r0, #8 beq _037FAA2C ldrh r0, [r8, #0x14] tst r0, #0x4000 movne r0, #0 strneh r0, [r5, #2] _037FAA2C: ldrh r0, [r8, #8] mov r6, #1 tst r0, #0x200 beq _037FAA84 ldrh r0, [r8, #0x14] mov r0, r0, lsl #0x15 mov r0, r0, lsr #0x1f cmp r0, #1 beq _037FAA60 ldrh r0, [r8, #0x2a] mov r0, r0, lsl #0x1c movs r0, r0, lsr #0x1c beq _037FAC30 _037FAA60: add r0, r4, #0x188 add r1, r4, #0x1e8 sub r2, r8, #0x10 mov r6, #0 bl sub_037F8988 mov r0, #2 mov r1, #9 bl sub_037F8598 b _037FAC30 _037FAA84: and r0, r0, #0xf cmp r0, #0xf addls pc, pc, r0, lsl #2 b _037FAC30 _037FAA94: ; jump table b _037FAB20 ; case 0 b _037FAB08 ; case 1 b _037FAC30 ; case 2 b _037FAC30 ; case 3 b _037FAC30 ; case 4 b _037FAB50 ; case 5 b _037FAC30 ; case 6 b _037FAC30 ; case 7 b _037FAAD4 ; case 8 b _037FAC30 ; case 9 b _037FAC30 ; case 10 b _037FAC30 ; case 11 b _037FABA8 ; case 12 b _037FABFC ; case 13 b _037FAB88 ; case 14 b _037FAB88 ; case 15 _037FAAD4: ldrh r0, [r8, #0x14] and r0, r0, #0xf cmp r0, #8 bne _037FAC30 add r0, r4, #0x188 add r1, r4, #0x1c4 sub r2, r8, #0x10 mov r6, #0 bl sub_037F8988 mov r0, #2 mov r1, #6 bl sub_037F8598 b _037FAC30 _037FAB08: ldrh r0, [r8, #0x14] cmp r0, #0x80 bne _037FAC30 mov r0, r8 bl sub_027F2840 b _037FAC30 _037FAB20: ldrh r0, [r8, #0x14] tst r0, #0xf bne _037FAC30 add r0, r4, #0x188 add r1, r4, #0x1dc sub r2, r8, #0x10 mov r6, #0 bl sub_037F8988 mov r0, #1 mov r1, #7 bl sub_037F8598 b _037FAC30 _037FAB50: ldrh r1, [r8, #0x14] rsb r0, r6, #0xe800 and r0, r1, r0 cmp r0, #0xa4 bne _037FAC30 add r0, r4, #0x188 add r1, r4, #0x1dc sub r2, r8, #0x10 mov r6, #0 bl sub_037F8988 mov r0, #1 mov r1, #7 bl sub_037F8598 b _037FAC30 _037FAB88: ldrh r1, [r8, #0x14] ldr r0, _037FACA8 ; =0x0000E7BF and r0, r1, r0 cmp r0, #0x118 bne _037FAC30 mov r0, r8 bl sub_027F25C0 b _037FAC30 _037FABA8: ldrh r1, [r8, #0x14] rsb r0, r6, #0xe800 and r0, r1, r0 cmp r0, #0x228 bne _037FAC30 ldr r0, _037FAC98 ; =0x0380FFF4 ldr r1, _037FAC98 ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x300 ldrh r0, [r0, #0x54] cmp r0, #0 ldreq r0, _037FACAC ; =0x0480803C streqh r6, [r0] ldr r2, [r1] mov r0, r8 ldr r1, [r2, #0x5ac] add r1, r1, #1 str r1, [r2, #0x5ac] bl sub_027F2444 mov r6, r0 b _037FAC30 _037FABFC: ldrh r1, [r8, #0x14] rsb r0, r6, #0xe800 and r0, r1, r0 cmp r0, #0x218 bne _037FAC30 ldr r1, _037FAC98 ; =0x0380FFF4 mov r0, r8 ldr r2, [r1] ldr r1, [r2, #0x5b0] add r1, r1, #1 str r1, [r2, #0x5b0] bl sub_027F276C mov r6, r0 _037FAC30: cmp r6, #0 beq _037FAC44 add r0, r4, #0x188 sub r1, r8, #0x10 bl sub_037F8908 _037FAC44: ldr r3, _037FAC98 ; =0x0380FFF4 ldr r0, [r3] add r0, r0, #0x600 ldrh r0, [r0, #0x90] tst r0, #1 beq _037FA95C ldr r2, _037FACA4 ; =0x0000FFFF ldr r1, _037FACB0 ; =0x04805F60 mov r6, #0 _037FAC68: cmp r7, r1 ldrhs r0, [r3] add r6, r6, #1 addhs r0, r0, #0x300 ldrhsh r0, [r0, #0xde] subhs r7, r7, r0 cmp r6, #7 strh r2, [r7], #2 blo _037FAC68 b _037FA95C _037FAC90: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FAC98: .word 0x0380FFF4 _037FAC9C: .word 0x0480805A _037FACA0: .word 0x000008C6 _037FACA4: .word 0x0000FFFF _037FACA8: .word 0x0000E7BF _037FACAC: .word 0x0480803C _037FACB0: .word 0x04805F60 arm_func_end sub_037FA948 arm_func_start sub_037FACB4 sub_037FACB4: ; 0x037FACB4 stmdb sp!, {r4, lr} ldr r0, _037FAD8C ; =0x0380FFF4 ldr r0, [r0] add r0, r0, #0x2c add r4, r0, #0x400 ldrh r0, [r4, #0x3c] cmp r0, #0 beq _037FAD84 ldr r1, [r4, #0x90] ldr r0, [r4, #0x44] ldrh r1, [r1, #0x10] ldrh r0, [r0, #2] cmp r1, r0 beq _037FACF0 bl sub_037FA948 _037FACF0: ldr r0, [r4, #0x44] ldrh r0, [r0, #4] ands r2, r0, #0xff ldr r0, _037FAD8C ; =0x0380FFF4 ldrne r1, [r0] ldrne r0, [r1, #0x5a0] addne r0, r0, r2 ldreq r1, [r0] ldreq r0, [r1, #0x5a0] addeq r0, r0, #1 str r0, [r1, #0x5a0] ldrh r1, [r4, #0x40] ldr r0, _037FAD8C ; =0x0380FFF4 add r1, r1, #1 strh r1, [r4, #0x40] ldr ip, [r4, #0x90] ldr r1, [r4, #0x44] ldrh r3, [ip, #0x10] ldrh r2, [r1, #2] mov r1, #0 eor r2, r3, r2 strh r2, [ip, #0x12] ldr r2, [r4, #0x90] ldrh r2, [r2, #0x10] strh r2, [r4, #0xa0] strh r1, [r4, #0x3c] ldr r0, [r0] add r0, r0, #0x300 ldrh r0, [r0, #0xea] cmp r0, #0 beq _037FAD70 bl sub_027E9E94 _037FAD70: ldr r0, _037FAD8C ; =0x0380FFF4 ldr r1, [r4, #0x90] ldr r0, [r0] add r0, r0, #0x188 bl sub_037F8D58 _037FAD84: ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FAD8C: .word 0x0380FFF4 arm_func_end sub_037FACB4 arm_func_start sub_037FAD90 sub_037FAD90: ; 0x037FAD90 stmdb sp!, {r4, lr} ldr r0, _037FAE44 ; =0x0380FFF4 ldr r2, _037FAE48 ; =0x04808088 ldr r1, [r0] ldrh r0, [r2] add r4, r1, #0x17c cmp r0, #0 bne _037FADD0 ldrh r0, [r4, #0x38] cmp r0, #0 beq _037FADD0 mov r1, #8 mov r0, #2 strh r1, [r2, #0x26] bl sub_027EFEF4 b _037FAE3C _037FADD0: add r0, r1, #0x500 ldrh r1, [r0, #0x32] ldrh r2, [r0, #0x2e] mvn r0, r1 tst r2, r0 bne _037FAE08 ldr r0, _037FAE4C ; =0x048080AE mov r1, #8 strh r1, [r0] ldrh r0, [r4, #0x38] cmp r0, #0 beq _037FAE08 mov r0, #2 bl sub_027EFEF4 _037FAE08: ldr r0, _037FAE4C ; =0x048080AE mov r1, #5 strh r1, [r0] ldrh r0, [r4, #0x2c] cmp r0, #0 beq _037FAE28 mov r0, #1 bl sub_027EFEF4 _037FAE28: ldrh r0, [r4, #0x20] cmp r0, #0 beq _037FAE3C mov r0, #0 bl sub_027EFEF4 _037FAE3C: ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FAE44: .word 0x0380FFF4 _037FAE48: .word 0x04808088 _037FAE4C: .word 0x048080AE arm_func_end sub_037FAD90 arm_func_start sub_037FAE50 sub_037FAE50: ; 0x037FAE50 stmdb sp!, {r4, r5, r6, lr} ldr r2, _037FAEBC ; =0x0380FFF4 mov r5, r1 ldr r1, [r2] mov r6, r0 add r0, r1, #0x188 add r1, r5, #0x22 bl sub_037F886C movs r4, r0 moveq r0, #0 beq _037FAEB4 mov r1, r6 add r0, r4, #0x18 add r2, r5, #0xc bl sub_027EAC00 sub r0, r5, #0x18 strh r0, [r4, #0x16] ldrh r0, [r4, #0x22] ldrh r1, [r4, #0x1e] and r0, r0, #0xff and r1, r1, #0xff mov r0, r0, lsl #0x10 orr r0, r1, r0, lsr #8 strh r0, [r4, #0x1e] add r0, r4, #0x10 _037FAEB4: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037FAEBC: .word 0x0380FFF4 arm_func_end sub_037FAE50 arm_func_start sub_037FAEC0 sub_037FAEC0: ; 0x037FAEC0 stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r1, _037FB190 ; =0x0380FFF4 mov r0, #0 ldr r7, [r1] mov r2, #0xb0 add r1, r7, #0x2c add r4, r1, #0x400 mov r1, r4 add r5, r7, #0x344 add r6, r7, #0x31c bl sub_037FDFD0 add r0, r7, #0x400 mov r1, #0 strh r1, [r0, #0x2c] str r1, [r4, #0xc] strh r1, [r4, #0x14] str r1, [r4, #0x20] strh r1, [r4, #0x28] ldr r0, _037FB194 ; =0x0000FFFF str r1, [r4, #0x34] strh r0, [r4, #0xa2] strh r0, [r4, #0xa4] ldrh r0, [r5, #0xc] cmp r0, #3 addls pc, pc, r0, lsl #2 b _037FB174 _037FAF28: ; jump table b _037FAF38 ; case 0 b _037FAFB4 ; case 1 b _037FB050 ; case 2 b _037FB0FC ; case 3 _037FAF38: ldr r7, _037FB198 ; =0x04804170 ldr r0, _037FB19C ; =0x04804026 str r7, [r4, #8] sub r1, r7, #0x148 str r1, [r4, #0x1c] sub r2, r7, #0x170 ldr r1, _037FB1A0 ; =sub_027F02FC str r2, [r4, #0x30] ldr r2, _037FB1A4 ; =sub_027F0478 str r1, [r4, #0x10] ldr r1, _037FB1A8 ; =sub_027F0944 str r2, [r4, #0x24] ldr r3, _037FB1AC ; =0x0000B6B8 str r1, [r4, #0x38] sub r1, r7, #0x14c ldr r2, _037FB1B0 ; =0x00001D46 strh r3, [r1] strh r2, [r0] strh r3, [r7, #-4] add r0, r0, #0x148 strh r2, [r0] add r1, r7, #0x620 ldr r0, _037FB1B4 ; =0x04804792 strh r3, [r1] strh r2, [r0] mov r1, #8 ldr r0, _037FB1B8 ; =0x048080AE strh r1, [r5, #0x8a] mov r1, #1 strh r1, [r0] b _037FB174 _037FAFB4: ldr r3, _037FB1BC ; =0x04804AA0 ldr r2, _037FB1C0 ; =0x04804334 str r3, [r4, #8] sub r0, r3, #0x148 str r0, [r4, #0x1c] ldr r0, _037FB1A0 ; =sub_027F02FC str r2, [r4, #0x30] ldr r1, _037FB1A4 ; =sub_027F0478 str r0, [r4, #0x10] ldr r0, _037FB1C4 ; =sub_027F09AC str r1, [r4, #0x24] ldr ip, _037FB1C8 ; =0x04804956 str r0, [r4, #0x38] sub r1, r2, #0xfc str r1, [r4, #0x80] sub r7, r2, #0x334 ldr r0, _037FB1AC ; =0x0000B6B8 str r7, [r4, #0x44] sub r7, r2, #0x100 ldr lr, _037FB1B0 ; =0x00001D46 strh r0, [r7] strh lr, [r2, #-0xfe] strh r0, [r2, #-4] strh lr, [r2, #-2] add r2, r2, #0x620 strh r0, [r2] strh lr, [ip] strh r0, [r3, #-4] add r2, ip, #0x148 strh lr, [r2] add r3, r3, #0x620 ldr r2, _037FB1CC ; =0x048050C2 strh r0, [r3] strh lr, [r2] mov r0, #0x208 strh r0, [r5, #0x8a] str r1, [r4, #0x80] bl sub_027F1204 b _037FB174 _037FB050: ldr r1, _037FB1D0 ; =0x048045D8 ldr r3, _037FB1D4 ; =0x04804232 str r1, [r4, #8] sub r0, r1, #0x148 str r0, [r4, #0x1c] sub r2, r1, #0x170 ldr ip, _037FB1D8 ; =0x04804000 ldr r0, _037FB1A0 ; =sub_027F02FC str r2, [r4, #0x30] ldr r2, _037FB1A4 ; =sub_027F0478 str r0, [r4, #0x10] ldr r0, _037FB1A8 ; =sub_027F0944 str r2, [r4, #0x24] str r0, [r4, #0x38] str ip, [r4, #0x58] add r2, ip, #0x234 ldr r0, _037FB1AC ; =0x0000B6B8 str r2, [r4, #0x6c] add r2, ip, #0x230 ldr r4, _037FB1B0 ; =0x00001D46 strh r0, [r2] strh r4, [r3] sub r2, r1, #0x174 strh r0, [r2] add r2, r3, #0x234 strh r4, [r2] sub r2, r1, #0x14c strh r0, [r2] add r2, r3, #0x25c strh r4, [r2] strh r0, [r1, #-4] add r2, r3, #0x3a4 strh r4, [r2] add r2, r1, #0x620 ldr r1, _037FB1DC ; =0x04804BFA strh r0, [r2] strh r4, [r1] mov r1, #0x108 ldr r0, _037FB1B8 ; =0x048080AE strh r1, [r5, #0x8a] mov r1, #0xd strh r1, [r0] b _037FB174 _037FB0FC: ldr ip, _037FB198 ; =0x04804170 ldr r0, _037FB19C ; =0x04804026 str ip, [r4, #8] sub r1, ip, #0x148 str r1, [r4, #0x1c] sub r2, ip, #0x170 ldr r1, _037FB1A0 ; =sub_027F02FC str r2, [r4, #0x30] ldr r2, _037FB1A4 ; =sub_027F0478 str r1, [r4, #0x10] ldr r1, _037FB1A8 ; =sub_027F0944 str r2, [r4, #0x24] ldr r3, _037FB1AC ; =0x0000B6B8 str r1, [r4, #0x38] sub r1, ip, #0x14c ldr r2, _037FB1B0 ; =0x00001D46 strh r3, [r1] strh r2, [r0] strh r3, [ip, #-4] add r0, r0, #0x148 strh r2, [r0] add r1, ip, #0x620 ldr r0, _037FB1B4 ; =0x04804792 strh r3, [r1] strh r2, [r0] mov r1, #0x108 ldr r0, _037FB1B8 ; =0x048080AE strh r1, [r5, #0x8a] mov r1, #0xd strh r1, [r0] _037FB174: ldrh r0, [r6, #0x18] cmp r0, #0 ldrneh r0, [r5, #0x8a] orrne r0, r0, #0x4000 strneh r0, [r5, #0x8a] ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FB190: .word 0x0380FFF4 _037FB194: .word 0x0000FFFF _037FB198: .word 0x04804170 _037FB19C: .word 0x04804026 _037FB1A0: .word sub_027F02FC _037FB1A4: .word sub_027F0478 _037FB1A8: .word sub_027F0944 _037FB1AC: .word 0x0000B6B8 _037FB1B0: .word 0x00001D46 _037FB1B4: .word 0x04804792 _037FB1B8: .word 0x048080AE _037FB1BC: .word 0x04804AA0 _037FB1C0: .word 0x04804334 _037FB1C4: .word sub_027F09AC _037FB1C8: .word 0x04804956 _037FB1CC: .word 0x048050C2 _037FB1D0: .word 0x048045D8 _037FB1D4: .word 0x04804232 _037FB1D8: .word 0x04804000 _037FB1DC: .word 0x04804BFA arm_func_end sub_037FAEC0 arm_func_start sub_037FB1E0 sub_037FB1E0: ; 0x037FB1E0 stmdb sp!, {r4, r5, r6, lr} ldr r1, _037FB2D8 ; =0x0380FFF4 mov r0, #0 ldr r3, [r1] mov r2, #0x50 add r1, r3, #0xdc add r5, r1, #0x400 mov r1, r5 add r4, r3, #0x344 bl sub_037FDFD0 ldr r1, _037FB2DC ; =0x04808030 mov r2, #0x8000 ldr r0, _037FB2D8 ; =0x0380FFF4 strh r2, [r1] ldr r0, [r0] add r0, r0, #0x300 ldrh r0, [r0, #0x50] cmp r0, #3 addls pc, pc, r0, lsl #2 b _037FB25C _037FB230: ; jump table b _037FB240 ; case 0 b _037FB248 ; case 1 b _037FB250 ; case 2 b _037FB258 ; case 3 _037FB240: ldr r6, _037FB2E0 ; =0x00000794 b _037FB25C _037FB248: ldr r6, _037FB2E4 ; =0x000010C4 b _037FB25C _037FB250: ldr r6, _037FB2E8 ; =0x00000BFC b _037FB25C _037FB258: ldr r6, _037FB2E0 ; =0x00000794 _037FB25C: ldr r3, _037FB2EC ; =0x04808050 add r0, r6, #0x4000 ldr r1, _037FB2F0 ; =0x00005F60 add r2, r0, #0x4800000 mov r0, r6, lsl #0xf strh r2, [r3] mov r0, r0, lsr #0x10 strh r0, [r3, #6] strh r1, [r3, #2] strh r0, [r3, #0xa] ldr r2, _037FB2F4 ; =0x0000FFFF strh r0, [r5, #4] sub r0, r1, #0x4000 strh r2, [r5] sub r0, r0, r6 strh r0, [r4, #0x9a] sub r0, r1, #2 strh r0, [r3, #0x12] rsb r0, r2, #0x18000 strh r0, [r3, #-0x20] add r0, r3, #0x1fc ldr r1, _037FB2F8 ; =0x0480824E strh r2, [r0] ldr r0, _037FB2FC ; =0x04805F70 strh r2, [r1] strh r2, [r0] strh r2, [r0, #2] strh r2, [r0, #0xe] strh r2, [r0, #6] ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037FB2D8: .word 0x0380FFF4 _037FB2DC: .word 0x04808030 _037FB2E0: .word 0x00000794 _037FB2E4: .word 0x000010C4 _037FB2E8: .word 0x00000BFC _037FB2EC: .word 0x04808050 _037FB2F0: .word 0x00005F60 _037FB2F4: .word 0x0000FFFF _037FB2F8: .word 0x0480824E _037FB2FC: .word 0x04805F70 arm_func_end sub_037FB1E0 arm_func_start sub_037FB300 sub_037FB300: ; 0x037FB300 ldr r1, _037FB328 ; =0x0480819C mov r2, #0xfa0 b _037FB31C _037FB30C: ldrh r0, [r1] tst r0, #0x80 bxne lr sub r2, r2, #1 _037FB31C: cmp r2, #0 bne _037FB30C bx lr .align 2, 0 _037FB328: .word 0x0480819C arm_func_end sub_037FB300 arm_func_start sub_037FB32C sub_037FB32C: ; 0x037FB32C stmdb sp!, {r3, r4, r5, lr} sub sp, sp, #8 ldr r2, _037FB3AC ; =0x000082EA mov r3, #0 umull lr, ip, r0, r2 mla ip, r0, r3, ip mov r0, r3 mla ip, r0, r2, ip mov r0, lr, lsr #6 mov r4, #1 mov r5, r1 mov r1, ip, lsr #6 orr r0, r0, ip, lsl #26 mov r2, #0x3e8 str r4, [sp, #4] bl sub_03806B80 add r3, sp, #4 str r3, [sp] ldr r2, _037FB3B0 ; =0x0380FFF4 mov r3, r5 ldr r2, [r2] add ip, r2, #0x234 mov r2, r1 mov r1, r0 add r0, ip, #0x400 bl sub_037FD4DC _037FB394: ldr r0, [sp, #4] cmp r0, #0 bne _037FB394 add sp, sp, #8 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FB3AC: .word 0x000082EA _037FB3B0: .word 0x0380FFF4 arm_func_end sub_037FB32C arm_func_start sub_037FB3B4 sub_037FB3B4: ; 0x037FB3B4 stmdb sp!, {r3, r4, r5, lr} ldr r1, _037FB418 ; =0x04808028 ldr lr, _037FB41C ; =0x04000208 mov r5, #1 add r2, r1, #0x1ec add r3, r1, #0x174 mov ip, #0 b _037FB408 _037FB3D4: ldrh r4, [lr] strh ip, [lr] ldrh r0, [r3] and r0, r0, #3 cmp r0, #3 ldrneh r0, [r2] cmpne r0, #5 cmpne r0, #7 cmpne r0, #8 strneh ip, [r1] ldrh r0, [lr] movne r5, ip strh r4, [lr] _037FB408: cmp r5, #0 bne _037FB3D4 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FB418: .word 0x04808028 _037FB41C: .word 0x04000208 arm_func_end sub_037FB3B4 arm_func_start sub_037FB420 sub_037FB420: ; 0x037FB420 ldr r1, _037FB450 ; =0x0480815E mov r2, #0 b _037FB440 _037FB42C: ldrh r0, [r1] tst r0, #1 moveq r0, #0 bxeq lr add r2, r2, #1 _037FB440: cmp r2, #0x2800 blo _037FB42C mov r0, #1 bx lr .align 2, 0 _037FB450: .word 0x0480815E arm_func_end sub_037FB420 arm_func_start sub_037FB454 sub_037FB454: ; 0x037FB454 ldr r1, _037FB484 ; =0x04808180 mov r2, #0 b _037FB474 _037FB460: ldrh r0, [r1] tst r0, #1 moveq r0, #0 bxeq lr add r2, r2, #1 _037FB474: cmp r2, #0x2800 blo _037FB460 mov r0, #1 bx lr .align 2, 0 _037FB484: .word 0x04808180 arm_func_end sub_037FB454 arm_func_start sub_037FB488 sub_037FB488: ; 0x037FB488 stmdb sp!, {lr} mov ip, #0x4000000 add ip, ip, #0x210 ldr r1, [ip, #-8] cmp r1, #0 beq _037FB4A4 b _037FB4A8 _037FB4A4: ldmia sp!, {pc} _037FB4A8: ldmia ip, {r1, r2} ands r1, r1, r2 beq _037FB4B8 b _037FB4BC _037FB4B8: ldmia sp!, {pc} _037FB4BC: mov r3, #1 mov r0, #0 _037FB4C4: ands r2, r1, r3, lsl r0 beq _037FB4D0 b _037FB4D4 _037FB4D0: add r0, r0, #1 _037FB4D4: beq _037FB4C4 str r2, [ip, #4] ldr r1, _037FB4EC ; =_038074F4 ldr r0, [r1, r0, lsl #2] ldr lr, _037FB4F0 ; =sub_037FB4F4 bx r0 .align 2, 0 _037FB4EC: .word _038074F4 _037FB4F0: .word sub_037FB4F4 arm_func_end sub_037FB488 arm_func_start sub_037FB4F4 sub_037FB4F4: ; 0x037FB4F4 ldr ip, _037FB630 ; =_03807608 mov r3, #0 ldr ip, [ip] mov r2, #1 cmp ip, #0 beq _037FB544 _037FB50C: str r2, [ip, #0x48] str r3, [ip, #0x5c] str r3, [ip, #0x60] ldr r0, [ip, #0x64] str r3, [ip, #0x64] mov ip, r0 cmp ip, #0 bne _037FB50C ldr ip, _037FB630 ; =_03807608 str r3, [ip] str r3, [ip, #4] ldr ip, _037FB634 ; =_038076A4 mov r1, #1 strh r1, [ip] _037FB544: ldr ip, _037FB634 ; =_038076A4 ldrh r1, [ip] cmp r1, #0 beq _037FB558 b _037FB55C _037FB558: ldr pc, [sp], #0x4 _037FB55C: mov r1, #0 strh r1, [ip] mov r3, #0xd2 msr cpsr_c, r3 add r2, ip, #8 ldr r1, [r2] _037FB574: cmp r1, #0 bne _037FB580 b _037FB584 _037FB580: ldrh r0, [r1, #0x48] _037FB584: bne _037FB58C b _037FB590 _037FB58C: cmp r0, #1 _037FB590: bne _037FB598 b _037FB59C _037FB598: ldr r1, [r1, #0x4c] _037FB59C: bne _037FB574 cmp r1, #0 bne _037FB5B4 _037FB5A8: mov r3, #0x92 msr cpsr_c, r3 ldr pc, [sp], #0x4 _037FB5B4: ldr r0, [ip, #4] cmp r1, r0 beq _037FB5A8 ldr r3, [ip, #0xc] cmp r3, #0 beq _037FB5DC stmdb sp!, {r0, r1, ip} mov lr, pc bx r3 _037FB5D8: ldmia sp!, {r0, r1, ip} _037FB5DC: str r1, [ip, #4] mrs r2, spsr str r2, [r0, #0]! ldmib sp!, {r2, r3} stmib r0!, {r2, r3} ldmib sp!, {r2, r3, ip, lr} stmib r0!, {r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^ stmib r0!, {lr} mov r3, #0xd3 msr cpsr_c, r3 stmib r0!, {sp} ldr sp, [r1, #0x44] mov r3, #0xd2 msr cpsr_c, r3 ldr r2, [r1, #0]! msr spsr_fc, r2 ldr lr, [r1, #0x40] ldmib r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^ mov r0, r0 stmda sp!, {r0, r1, r2, r3, ip, lr} ldmia sp!, {pc} .align 2, 0 _037FB630: .word _03807608 _037FB634: .word _038076A4 arm_func_end sub_037FB4F4 arm_func_start sub_037FB638 sub_037FB638: ; 0x037FB638 bx lr arm_func_end sub_037FB638 arm_func_start sub_037FB63C sub_037FB63C: ; 0x037FB63C stmdb sp!, {r3, r4, r5, lr} mov r1, #0xc mul r5, r0, r1 ldr r2, _037FB6B4 ; =_03807610 ldr r3, _037FB6B8 ; =_038074E0 mov r4, r0, lsl #1 ldr r1, [r2, r5] mov r0, #0 ldrh r3, [r3, r4] mov r4, #1 str r0, [r2, r5] cmp r1, #0 mov r4, r4, lsl r3 beq _037FB684 ldr r0, _037FB6BC ; =_03807618 ldr r0, [r0, r5] mov lr, pc bx r1 _037FB684: ldr r2, _037FB6C0 ; =0x0380FFF8 ldr r0, _037FB6C4 ; =_03807614 ldr r1, [r2] orr r1, r1, r4 str r1, [r2] ldr r0, [r0, r5] cmp r0, #0 bne _037FB6AC mov r0, r4 bl sub_037FB928 _037FB6AC: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FB6B4: .word _03807610 _037FB6B8: .word _038074E0 _037FB6BC: .word _03807618 _037FB6C0: .word 0x0380FFF8 _037FB6C4: .word _03807614 arm_func_end sub_037FB63C arm_func_start sub_037FB6C8 sub_037FB6C8: ; 0x037FB6C8 ldr ip, _037FB6D4 ; =sub_037FB63C mov r0, #0 bx ip .align 2, 0 _037FB6D4: .word sub_037FB63C arm_func_end sub_037FB6C8 arm_func_start sub_037FB6D8 sub_037FB6D8: ; 0x037FB6D8 ldr ip, _037FB6E4 ; =sub_037FB63C mov r0, #1 bx ip .align 2, 0 _037FB6E4: .word sub_037FB63C arm_func_end sub_037FB6D8 arm_func_start sub_037FB6E8 sub_037FB6E8: ; 0x037FB6E8 ldr ip, _037FB6F4 ; =sub_037FB63C mov r0, #2 bx ip .align 2, 0 _037FB6F4: .word sub_037FB63C arm_func_end sub_037FB6E8 arm_func_start sub_037FB6F8 sub_037FB6F8: ; 0x037FB6F8 ldr ip, _037FB704 ; =sub_037FB63C mov r0, #3 bx ip .align 2, 0 _037FB704: .word sub_037FB63C arm_func_end sub_037FB6F8 arm_func_start sub_037FB708 sub_037FB708: ; 0x037FB708 ldr ip, _037FB714 ; =sub_037FB63C mov r0, #4 bx ip .align 2, 0 _037FB714: .word sub_037FB63C arm_func_end sub_037FB708 arm_func_start sub_037FB718 sub_037FB718: ; 0x037FB718 ldr ip, _037FB724 ; =sub_037FB63C mov r0, #5 bx ip .align 2, 0 _037FB724: .word sub_037FB63C arm_func_end sub_037FB718 arm_func_start sub_037FB728 sub_037FB728: ; 0x037FB728 ldr ip, _037FB734 ; =sub_037FB63C mov r0, #6 bx ip .align 2, 0 _037FB734: .word sub_037FB63C arm_func_end sub_037FB728 arm_func_start sub_037FB738 sub_037FB738: ; 0x037FB738 ldr ip, _037FB744 ; =sub_037FB63C mov r0, #7 bx ip .align 2, 0 _037FB744: .word sub_037FB63C arm_func_end sub_037FB738 arm_func_start sub_037FB748 sub_037FB748: ; 0x037FB748 stmdb sp!, {r3, lr} ldr r2, _037FB78C ; =0x027FFC3C ldr r0, _037FB790 ; =_03807610 ldr r1, [r2] ldr r3, [r0, #0x60] add r0, r1, #1 str r0, [r2] cmp r3, #0 beq _037FB774 mov lr, pc bx r3 _037FB774: ldr r1, _037FB794 ; =0x0380FFF8 ldr r0, [r1] orr r0, r0, #1 str r0, [r1] ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FB78C: .word 0x027FFC3C _037FB790: .word _03807610 _037FB794: .word 0x0380FFF8 arm_func_end sub_037FB748 arm_func_start sub_037FB798 sub_037FB798: ; 0x037FB798 ldr r0, _037FB7B4 ; =_03807608 mov r2, #0 str r2, [r0, #4] ldr r1, _037FB7B8 ; =0x027FFC3C str r2, [r0] str r2, [r1] bx lr .align 2, 0 _037FB7B4: .word _03807608 _037FB7B8: .word 0x027FFC3C arm_func_end sub_037FB798 arm_func_start sub_037FB7BC sub_037FB7BC: ; 0x037FB7BC stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} ldr r4, _037FB84C ; =_038074F4 mov sb, #0 mov r2, #0xc ldr r5, _037FB850 ; =_03807670 ldr r7, _037FB854 ; =_03807610 mov r8, sb mov lr, sb mov ip, #1 mov r3, r2 _037FB7E4: tst r0, #1 beq _037FB834 mov sl, r8 cmp sb, #8 blt _037FB808 cmp sb, #0xb suble r6, sb, #8 mlale sl, r6, r3, r7 ble _037FB82C _037FB808: cmp sb, #3 blt _037FB820 cmp sb, #6 addle r6, sb, #1 mlale sl, r6, r2, r7 ble _037FB82C _037FB820: cmp sb, #0 strne r1, [r4, sb, lsl #2] moveq sl, r5 _037FB82C: cmp sl, #0 stmneia sl, {r1, ip, lr} _037FB834: add sb, sb, #1 cmp sb, #0x19 mov r0, r0, lsr #1 blt _037FB7E4 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} bx lr .align 2, 0 _037FB84C: .word _038074F4 _037FB850: .word _03807670 _037FB854: .word _03807610 arm_func_end sub_037FB7BC arm_func_start sub_037FB858 sub_037FB858: ; 0x037FB858 stmdb sp!, {r4, lr} mov r3, #0xc mul r4, r0, r3 ldr ip, _037FB898 ; =_03807640 ldr r3, _037FB89C ; =_03807648 str r1, [ip, r4] add r0, r0, #3 mov r1, #1 mov r0, r1, lsl r0 str r2, [r3, r4] bl sub_037FB8F0 ldr r0, _037FB8A0 ; =_03807644 mov r1, #1 str r1, [r0, r4] ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FB898: .word _03807640 _037FB89C: .word _03807648 _037FB8A0: .word _03807644 arm_func_end sub_037FB858 arm_func_start sub_037FB8A4 sub_037FB8A4: ; 0x037FB8A4 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FB8D8 ldr r1, _037FB8D4 ; =0x04000210 ldr r3, [r1] sub r2, r1, #8 str r4, [r1] ldrh r1, [r2] strh r0, [r2] mov r0, r3 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FB8D4: .word 0x04000210 arm_func_end sub_037FB8A4 arm_func_start sub_037FB8D8 sub_037FB8D8: ; 0x037FB8D8 ldr r2, _037FB8EC ; =0x04000208 mov r1, #0 ldrh r0, [r2] strh r1, [r2] bx lr .align 2, 0 _037FB8EC: .word 0x04000208 arm_func_end sub_037FB8D8 arm_func_start sub_037FB8F0 sub_037FB8F0: ; 0x037FB8F0 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FB8D8 ldr ip, _037FB924 ; =0x04000210 ldr r3, [ip] sub r2, ip, #8 orr r1, r3, r4 str r1, [ip] ldrh r1, [r2] strh r0, [r2] mov r0, r3 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FB924: .word 0x04000210 arm_func_end sub_037FB8F0 arm_func_start sub_037FB928 sub_037FB928: ; 0x037FB928 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FB8D8 ldr ip, _037FB960 ; =0x04000210 mvn r1, r4 ldr r3, [ip] sub r2, ip, #8 and r1, r3, r1 str r1, [ip] ldrh r1, [r2] strh r0, [r2] mov r0, r3 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FB960: .word 0x04000210 arm_func_end sub_037FB928 arm_func_start sub_037FB964 sub_037FB964: ; 0x037FB964 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FB8D8 ldr r1, _037FB994 ; =0x04000214 ldr r3, [r1] sub r2, r1, #0xc str r4, [r1] ldrh r1, [r2] strh r0, [r2] mov r0, r3 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FB994: .word 0x04000214 arm_func_end sub_037FB964 arm_func_start sub_037FB998 sub_037FB998: ; 0x037FB998 stmdb sp!, {r3, r4, r5, lr} ldr r0, _037FBA00 ; =_0380767C ldr r1, [r0] cmp r1, #0 bne _037FB9F8 ldr r4, _037FBA04 ; =0x027FFFF0 mov r2, #1 mov r1, #0 str r2, [r0] strh r1, [r4, #6] mov r5, #0x400 b _037FB9D0 _037FB9C8: mov r0, r5 bl sub_037FBA0C _037FB9D0: ldrh r0, [r4, #4] cmp r0, #0x7f bne _037FB9C8 ldr r1, _037FBA08 ; =0x027FFFB8 mvn r0, #0 str r0, [r1] mov r0, r0, lsl #0x10 str r0, [r1, #4] mov r0, #0xbf strh r0, [r4, #6] _037FB9F8: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FBA00: .word _0380767C _037FBA04: .word 0x027FFFF0 _037FBA08: .word 0x027FFFB8 arm_func_end sub_037FB998 arm_func_start sub_037FBA0C sub_037FBA0C: ; 0x037FBA0C ldr ip, _037FBA14 ; =sub_038037B8 bx ip .align 2, 0 _037FBA14: .word sub_038037B8 + 1 arm_func_end sub_037FBA0C arm_func_start sub_037FBA18 sub_037FBA18: ; 0x037FBA18 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r1 ldrh r1, [r7, #4] mov r6, r2 cmp r0, r1 mov r5, r3 mvnne r0, #1 bne _037FBA8C cmp r5, #0 beq _037FBA48 bl sub_037FDD2C b _037FBA4C _037FBA48: bl sub_037FDD00 _037FBA4C: mov r4, r0 mov r0, #0 strh r0, [r7, #4] cmp r6, #0 beq _037FBA68 mov lr, pc bx r6 _037FBA68: mov r0, #0 str r0, [r7] cmp r5, #0 mov r0, r4 beq _037FBA84 bl sub_037FDD40 b _037FBA88 _037FBA84: bl sub_037FDD14 _037FBA88: mov r0, #0 _037FBA8C: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_037FBA18 arm_func_start sub_037FBA94 sub_037FBA94: ; 0x037FBA94 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} movs r6, r3 mov sb, r0 mov r8, r1 mov r7, r2 beq _037FBAB4 bl sub_037FDD2C b _037FBAB8 _037FBAB4: bl sub_037FDD00 _037FBAB8: mov r5, r0 mov r0, sb mov r1, r8 bl sub_037FE2AC movs r4, r0 bne _037FBAE4 cmp r7, #0 beq _037FBAE0 mov lr, pc bx r7 _037FBAE0: strh sb, [r8, #4] _037FBAE4: cmp r6, #0 mov r0, r5 beq _037FBAF8 bl sub_037FDD40 b _037FBAFC _037FBAF8: bl sub_037FDD14 _037FBAFC: mov r0, r4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr arm_func_end sub_037FBA94 arm_func_start sub_037FBB08 sub_037FBB08: ; 0x037FBB08 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r6, _037FBB50 ; =0x027FFFE8 ldr r5, _037FBB54 ; =sub_037FBBA4 mov r8, r0 mov r7, #0x400 mov r4, #1 b _037FBB2C _037FBB24: mov r0, r7 bl sub_037FBA0C _037FBB2C: mov r0, r8 mov r1, r6 mov r2, r5 mov r3, r4 bl sub_037FBA94 cmp r0, #0 bgt _037FBB24 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FBB50: .word 0x027FFFE8 _037FBB54: .word sub_037FBBA4 arm_func_end sub_037FBB08 arm_func_start sub_037FBB58 sub_037FBB58: ; 0x037FBB58 ldr ip, _037FBB6C ; =sub_037FBA18 ldr r1, _037FBB70 ; =0x027FFFE8 ldr r2, _037FBB74 ; =sub_037FBBA8 mov r3, #1 bx ip .align 2, 0 _037FBB6C: .word sub_037FBA18 _037FBB70: .word 0x027FFFE8 _037FBB74: .word sub_037FBBA8 arm_func_end sub_037FBB58 arm_func_start sub_037FBB78 sub_037FBB78: ; 0x037FBB78 ldr r1, _037FBB80 ; =sub_037FBB58 bx r1 .align 2, 0 _037FBB80: .word sub_037FBB58 arm_func_end sub_037FBB78 arm_func_start sub_037FBB84 sub_037FBB84: ; 0x037FBB84 ldr ip, _037FBB98 ; =sub_037FBA94 ldr r1, _037FBB9C ; =0x027FFFE8 ldr r2, _037FBBA0 ; =sub_037FBBA4 mov r3, #1 bx ip .align 2, 0 _037FBB98: .word sub_037FBA94 _037FBB9C: .word 0x027FFFE8 _037FBBA0: .word sub_037FBBA4 arm_func_end sub_037FBB84 arm_func_start sub_037FBBA4 sub_037FBBA4: ; 0x037FBBA4 bx lr arm_func_end sub_037FBBA4 arm_func_start sub_037FBBA8 sub_037FBBA8: ; 0x037FBBA8 bx lr arm_func_end sub_037FBBA8 arm_func_start sub_037FBBAC sub_037FBBAC: ; 0x037FBBAC ldr ip, _037FBBC0 ; =sub_037FBA18 ldr r1, _037FBBC4 ; =0x027FFFE0 ldr r2, _037FBBC8 ; =sub_037FBBF0 mov r3, #0 bx ip .align 2, 0 _037FBBC0: .word sub_037FBA18 _037FBBC4: .word 0x027FFFE0 _037FBBC8: .word sub_037FBBF0 arm_func_end sub_037FBBAC arm_func_start sub_037FBBCC sub_037FBBCC: ; 0x037FBBCC ldr ip, _037FBBE0 ; =sub_037FBA94 ldr r1, _037FBBE4 ; =0x027FFFE0 ldr r2, _037FBBE8 ; =sub_037FBBEC mov r3, #0 bx ip .align 2, 0 _037FBBE0: .word sub_037FBA94 _037FBBE4: .word 0x027FFFE0 _037FBBE8: .word sub_037FBBEC arm_func_end sub_037FBBCC arm_func_start sub_037FBBEC sub_037FBBEC: ; 0x037FBBEC bx lr arm_func_end sub_037FBBEC arm_func_start sub_037FBBF0 sub_037FBBF0: ; 0x037FBBF0 bx lr arm_func_end sub_037FBBF0 arm_func_start sub_037FBBF4 sub_037FBBF4: ; 0x037FBBF4 ldrh r0, [r0, #4] bx lr arm_func_end sub_037FBBF4 arm_func_start sub_037FBBFC sub_037FBBFC: ; 0x037FBBFC ldr r3, _037FBC9C ; =0x027FFFB8 ldr r1, [r3] mov r2, #0 mov r0, #0x80000000 _037FBC0C: tst r1, r0 bne _037FBC28 add r2, r2, #1 cmp r2, #0x20 beq _037FBC28 mov r0, r0, lsr #1 b _037FBC0C _037FBC28: cmp r2, #0x20 bne _037FBC34 b _037FBC38 _037FBC34: mov r0, #0x80 _037FBC38: bne _037FBC80 add r3, r3, #4 ldr r1, [r3] mov r2, #0 mov r0, #0x80000000 _037FBC4C: tst r1, r0 bne _037FBC68 add r2, r2, #1 cmp r2, #0x20 beq _037FBC68 mov r0, r0, lsr #1 b _037FBC4C _037FBC68: cmp r2, #0x20 ldr r0, _037FBCA0 ; =0xFFFFFFFD beq _037FBC78 b _037FBC7C _037FBC78: bx lr _037FBC7C: mov r0, #0xa0 _037FBC80: add r0, r0, r2 mov r1, #0x80000000 mov r1, r1, lsr r2 ldr r2, [r3] bic r2, r2, r1 str r2, [r3] bx lr .align 2, 0 _037FBC9C: .word 0x027FFFB8 _037FBCA0: .word 0xFFFFFFFD arm_func_end sub_037FBBFC arm_func_start sub_037FBCA4 sub_037FBCA4: ; 0x037FBCA4 ldr r3, _037FBCE8 ; =0x027FFFB8 cmp r0, #0xa0 bpl _037FBCB4 b _037FBCB8 _037FBCB4: add r3, r3, #4 _037FBCB8: bpl _037FBCC0 b _037FBCC4 _037FBCC0: sub r0, r0, #0xa0 _037FBCC4: bmi _037FBCCC b _037FBCD0 _037FBCCC: sub r0, r0, #0x80 _037FBCD0: mov r1, #0x80000000 mov r1, r1, lsr r0 ldr r2, [r3] orr r2, r2, r1 str r2, [r3] bx lr .align 2, 0 _037FBCE8: .word 0x027FFFB8 arm_func_end sub_037FBCA4 arm_func_start sub_037FBCEC sub_037FBCEC: ; 0x037FBCEC ldr ip, [r0] b _037FBD00 _037FBCF4: cmp ip, r1 bxeq lr ldr ip, [ip, #0x64] _037FBD00: cmp ip, #0 beq _037FBD18 ldr r3, [ip, #0x54] ldr r2, [r1, #0x54] cmp r3, r2 bls _037FBCF4 _037FBD18: cmp ip, #0 bne _037FBD44 ldr r2, [r0, #4] cmp r2, #0 streq r1, [r0] strne r1, [r2, #0x64] str r2, [r1, #0x60] mov r2, #0 str r2, [r1, #0x64] str r1, [r0, #4] bx lr _037FBD44: ldr r2, [ip, #0x60] cmp r2, #0 streq r1, [r0] strne r1, [r2, #0x64] str r2, [r1, #0x60] str ip, [r1, #0x64] str r1, [ip, #0x60] bx lr arm_func_end sub_037FBCEC arm_func_start sub_037FBD64 sub_037FBD64: ; 0x037FBD64 stmdb sp!, {r3, lr} ldr lr, [r0] mov r2, lr b _037FBDA8 _037FBD74: ldr r3, [r2, #0x64] cmp r2, r1 bne _037FBDA4 ldr ip, [r2, #0x60] cmp lr, r2 streq r3, [r0] strne r3, [ip, #0x64] ldr r1, [r0, #4] cmp r1, r2 streq ip, [r0, #4] strne ip, [r3, #0x60] b _037FBDB0 _037FBDA4: mov r2, r3 _037FBDA8: cmp r2, #0 bne _037FBD74 _037FBDB0: mov r0, r2 ldmia sp!, {r3, lr} bx lr arm_func_end sub_037FBD64 arm_func_start sub_037FBDBC sub_037FBDBC: ; 0x037FBDBC ldr r2, [r0] cmp r2, #0 beq _037FBDE4 ldr r1, [r2, #0x10] str r1, [r0] cmp r1, #0 movne r0, #0 strne r0, [r1, #0x14] moveq r1, #0 streq r1, [r0, #4] _037FBDE4: mov r0, r2 bx lr arm_func_end sub_037FBDBC arm_func_start sub_037FBDEC sub_037FBDEC: ; 0x037FBDEC stmdb sp!, {r3, lr} ldr r1, _037FBE48 ; =_03807680 mov ip, #0 ldr lr, [r1, #0x2c] mov r3, lr b _037FBE0C _037FBE04: mov ip, r3 ldr r3, [r3, #0x4c] _037FBE0C: cmp r3, #0 beq _037FBE24 ldr r2, [r3, #0x54] ldr r1, [r0, #0x54] cmp r2, r1 blo _037FBE04 _037FBE24: cmp ip, #0 ldreq r1, _037FBE48 ; =_03807680 streq lr, [r0, #0x4c] streq r0, [r1, #0x2c] ldrne r1, [ip, #0x4c] strne r1, [r0, #0x4c] strne r0, [ip, #0x4c] ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FBE48: .word _03807680 arm_func_end sub_037FBDEC arm_func_start sub_037FBE4C sub_037FBE4C: ; 0x037FBE4C ldr r1, _037FBE8C ; =_03807680 mov r2, #0 ldr r1, [r1, #0x2c] b _037FBE64 _037FBE5C: mov r2, r1 ldr r1, [r1, #0x4c] _037FBE64: cmp r1, #0 cmpne r1, r0 bne _037FBE5C cmp r2, #0 ldreq r1, [r0, #0x4c] ldreq r0, _037FBE8C ; =_03807680 streq r1, [r0, #0x2c] ldrne r0, [r0, #0x4c] strne r0, [r2, #0x4c] bx lr .align 2, 0 _037FBE8C: .word _03807680 arm_func_end sub_037FBE4C arm_func_start sub_037FBE90 sub_037FBE90: ; 0x037FBE90 stmdb sp!, {r4, r5, r6, lr} ldr r0, _037FBF5C ; =_03807680 ldr r1, [r0, #4] cmp r1, #0 bne _037FBF54 ldrh r0, [r0, #0x26] ldr r4, _037FBF60 ; =_038076A4 cmp r0, #0 bne _037FBEC0 bl sub_037FDD58 cmp r0, #0x12 bne _037FBECC _037FBEC0: mov r0, #1 strh r0, [r4] b _037FBF54 _037FBECC: ldr r0, _037FBF5C ; =_03807680 ldr r0, [r0, #8] ldr r6, [r0] bl sub_037FC398 mov r5, r0 cmp r6, r5 cmpne r5, #0 beq _037FBF54 ldr r0, [r6, #0x48] cmp r0, #2 beq _037FBF08 mov r0, r6 bl sub_037FC64C cmp r0, #0 bne _037FBF54 _037FBF08: ldr r0, _037FBF5C ; =_03807680 ldr r2, [r0] cmp r2, #0 beq _037FBF28 mov r0, r6 mov r1, r5 mov lr, pc bx r2 _037FBF28: ldr r2, [r4, #0xc] cmp r2, #0 beq _037FBF44 mov r0, r6 mov r1, r5 mov lr, pc bx r2 _037FBF44: ldr r1, _037FBF5C ; =_03807680 mov r0, r5 str r5, [r1, #0x28] bl sub_037FC680 _037FBF54: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037FBF5C: .word _03807680 _037FBF60: .word _038076A4 arm_func_end sub_037FBE90 arm_func_start sub_037FBF64 sub_037FBF64: ; 0x037FBF64 stmdb sp!, {r3, lr} ldr r0, _037FC028 ; =_03807680 ldr r1, [r0, #0xc] cmp r1, #0 bne _037FC020 ldr r1, _037FC02C ; =_038076A8 mov r2, #1 str r2, [r0, #0xc] str r1, [r0, #8] mov r1, #0x10 str r1, [r0, #0x12c] mov r3, #0 str r3, [r0, #0x128] str r2, [r0, #0x120] str r3, [r0, #0x124] ldr r2, _037FC030 ; =0x00000400 ldr r1, _037FC034 ; =_03807758 str r3, [r0, #0x130] str r1, [r0, #0x2c] str r1, [r0, #0x28] cmp r2, #0 ldrle r0, _037FC038 ; =sub_037F8000 ldrgt r1, _037FC03C ; =0x00000400 ldrgt r0, _037FC040 ; =0x0380FF80 subgt r0, r0, r1 sub ip, r0, r2 ldr r2, _037FC03C ; =0x00000400 ldr r0, _037FC040 ; =0x0380FF80 ldr r1, _037FC028 ; =_03807680 sub r3, r0, r2 str r3, [r1, #0x150] str ip, [r1, #0x14c] mov r0, #0 ldr r2, _037FC044 ; =0xD73BFDF7 str r0, [r1, #0x154] str r2, [r3, #-4] ldr r2, [r1, #0x14c] ldr ip, _037FC048 ; =0xFBDD37BB ldr r3, _037FC04C ; =_038076A4 str ip, [r2] str r0, [r1, #0x15c] str r0, [r1, #0x158] strh r0, [r1, #0x24] ldr r2, _037FC050 ; =0x027FFFA4 strh r0, [r1, #0x26] str r3, [r2] bl sub_037FC52C _037FC020: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FC028: .word _03807680 _037FC02C: .word _038076A8 _037FC030: .word 0x00000400 _037FC034: .word _03807758 _037FC038: .word sub_037F8000 _037FC03C: .word 0x00000400 _037FC040: .word 0x0380FF80 _037FC044: .word 0xD73BFDF7 _037FC048: .word 0xFBDD37BB _037FC04C: .word _038076A4 _037FC050: .word 0x027FFFA4 arm_func_end sub_037FBF64 arm_func_start sub_037FC054 sub_037FC054: ; 0x037FC054 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r0 mov r5, r1 mov r7, r2 mov r6, r3 bl sub_037FDD00 ldr r1, _037FC14C ; =_03807680 ldr r2, [sp, #0x1c] ldr r3, [r1, #0x20] mov r4, r0 add r0, r3, #1 str r0, [r1, #0x20] str r2, [r8, #0x54] str r0, [r8, #0x50] mov r1, #0 str r1, [r8, #0x48] mov r0, r8 str r1, [r8, #0x58] bl sub_037FBDEC ldr r0, [sp, #0x18] mov r1, r5 str r6, [r8, #0x78] sub r5, r6, r0 sub r2, r6, #4 str r5, [r8, #0x74] mov ip, #0 str ip, [r8, #0x7c] ldr r6, _037FC150 ; =0xD73BFDF7 ldr r0, [r8, #0x78] ldr r3, _037FC154 ; =0xFBDD37BB str r6, [r0, #-4] ldr r0, [r8, #0x74] str r3, [r0] str ip, [r8, #0x84] mov r0, r8 str ip, [r8, #0x80] bl sub_037FC5C8 ldr r2, _037FC158 ; =sub_037FC15C str r7, [r8, #4] str r2, [r8, #0x3c] ldr r2, [sp, #0x18] add r1, r5, #4 mov r0, #0 sub r2, r2, #8 bl sub_037FDFD0 mov r0, #0 str r0, [r8, #0x68] str r0, [r8, #0x6c] str r0, [r8, #0x70] str r0, [r8, #0x98] str r0, [r8, #0x5c] str r0, [r8, #0x64] str r0, [r8, #0x60] add r1, r8, #0x88 mov r2, #0xc bl sub_037FDFD0 mov r1, #0 mov r0, r4 str r1, [r8, #0x94] bl sub_037FDD14 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FC14C: .word _03807680 _037FC150: .word 0xD73BFDF7 _037FC154: .word 0xFBDD37BB _037FC158: .word sub_037FC15C arm_func_end sub_037FC054 arm_func_start sub_037FC15C sub_037FC15C: ; 0x037FC15C stmdb sp!, {r3, lr} bl sub_037FDD00 ldr r0, _037FC17C ; =_03807680 mov r1, #0 ldr r0, [r0, #0x28] bl sub_037FC180 ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FC17C: .word _03807680 arm_func_end sub_037FC15C arm_func_start sub_037FC180 sub_037FC180: ; 0x037FC180 stmdb sp!, {r3, r4, r5, lr} ldr r2, _037FC1D8 ; =_03807680 mov r5, r0 ldr r2, [r2, #0x1c] mov r4, r1 cmp r2, #0 beq _037FC1C8 ldr r1, _037FC1DC ; =sub_037FC1E0 bl sub_037FC5C8 str r4, [r5, #4] ldr r1, [r5] mov r0, r5 orr r1, r1, #0x80 str r1, [r5] mov r1, #1 str r1, [r5, #0x48] bl sub_037FC680 b _037FC1D0 _037FC1C8: mov r0, r4 bl sub_037FC1E0 _037FC1D0: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FC1D8: .word _03807680 _037FC1DC: .word sub_037FC1E0 arm_func_end sub_037FC180 arm_func_start sub_037FC1E0 sub_037FC1E0: ; 0x037FC1E0 stmdb sp!, {r3, lr} ldr r1, _037FC21C ; =_03807680 ldr r1, [r1, #8] ldr r3, [r1] ldr r2, [r3, #0x98] cmp r2, #0 beq _037FC210 mov r1, #0 str r1, [r3, #0x98] mov lr, pc bx r2 _037FC20C: bl sub_037FDD00 _037FC210: bl sub_037FC220 ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FC21C: .word _03807680 arm_func_end sub_037FC1E0 arm_func_start sub_037FC220 sub_037FC220: ; 0x037FC220 stmdb sp!, {r4, lr} ldr r0, _037FC28C ; =_03807680 ldr r0, [r0, #8] ldr r4, [r0] bl sub_037FC558 mov r0, r4 bl sub_037FC96C ldr r0, [r4, #0x5c] cmp r0, #0 beq _037FC250 mov r1, r4 bl sub_037FBD64 _037FC250: mov r0, r4 bl sub_037FBE4C mov r1, #2 add r0, r4, #0x80 str r1, [r4, #0x48] bl sub_037FC2E4 bl sub_037FC590 bl sub_037FDD00 mov r4, r0 bl sub_037FBE90 mov r0, r4 bl sub_037FDD14 bl sub_037FDE70 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FC28C: .word _03807680 arm_func_end sub_037FC220 arm_func_start sub_037FC290 sub_037FC290: ; 0x037FC290 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 bl sub_037FDD00 ldr r1, _037FC2E0 ; =_03807680 mov r4, r0 ldr r0, [r1, #8] cmp r6, #0 ldr r5, [r0] beq _037FC2C4 mov r0, r6 mov r1, r5 str r6, [r5, #0x5c] bl sub_037FBCEC _037FC2C4: mov r0, #0 str r0, [r5, #0x48] bl sub_037FBE90 mov r0, r4 bl sub_037FDD14 ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037FC2E0: .word _03807680 arm_func_end sub_037FC290 arm_func_start sub_037FC2E4 sub_037FC2E4: ; 0x037FC2E4 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl sub_037FDD00 ldr r1, [r5] mov r4, r0 cmp r1, #0 beq _037FC35C mov r2, #0 mov r3, r2 mov r1, #1 mov r0, r2 b _037FC340 _037FC314: beq _037FC330 ldr ip, [lr, #0x64] str ip, [r5] cmp ip, #0 strne r3, [ip, #0x60] streq r2, [r5, #4] streq r2, [lr, #0x5c] _037FC330: str r1, [lr, #0x48] str r0, [lr, #0x5c] str r0, [lr, #0x64] str r0, [lr, #0x60] _037FC340: ldr lr, [r5] cmp lr, #0 bne _037FC314 mov r0, #0 str r0, [r5, #4] str r0, [r5] bl sub_037FBE90 _037FC35C: mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_037FC2E4 arm_func_start sub_037FC36C sub_037FC36C: ; 0x037FC36C stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl sub_037FDD00 mov r1, #1 mov r4, r0 str r1, [r5, #0x48] bl sub_037FBE90 mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_037FC36C arm_func_start sub_037FC398 sub_037FC398: ; 0x037FC398 ldr r0, _037FC3BC ; =_03807680 ldr r0, [r0, #0x2c] b _037FC3A8 _037FC3A4: ldr r0, [r0, #0x4c] _037FC3A8: cmp r0, #0 ldrne r1, [r0, #0x48] cmpne r1, #1 bne _037FC3A4 bx lr .align 2, 0 _037FC3BC: .word _03807680 arm_func_end sub_037FC398 arm_func_start sub_037FC3C0 sub_037FC3C0: ; 0x037FC3C0 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r2, _037FC460 ; =_03807680 mov r7, r0 ldr r8, [r2, #0x2c] mov r6, r1 mov r4, #0 bl sub_037FDD00 mov r5, r0 b _037FC3EC _037FC3E4: mov r4, r8 ldr r8, [r8, #0x4c] _037FC3EC: cmp r8, #0 cmpne r8, r7 bne _037FC3E4 cmp r8, #0 ldrne r0, _037FC464 ; =_038076B4 cmpne r8, r0 bne _037FC418 mov r0, r5 bl sub_037FDD14 mov r0, #0 b _037FC458 _037FC418: ldr r0, [r8, #0x54] cmp r0, r6 beq _037FC44C cmp r4, #0 ldreq r1, [r7, #0x4c] ldreq r0, _037FC460 ; =_03807680 streq r1, [r0, #0x2c] ldrne r0, [r7, #0x4c] strne r0, [r4, #0x4c] mov r0, r7 str r6, [r7, #0x54] bl sub_037FBDEC bl sub_037FBE90 _037FC44C: mov r0, r5 bl sub_037FDD14 mov r0, #1 _037FC458: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FC460: .word _03807680 _037FC464: .word _038076B4 arm_func_end sub_037FC3C0 arm_func_start sub_037FC468 sub_037FC468: ; 0x037FC468 stmdb sp!, {r4, r5, lr} sub sp, sp, #0x34 mov r4, r0 add r0, sp, #8 bl sub_037FD3A0 ldr r0, _037FC500 ; =_03807680 ldr r0, [r0, #8] ldr r0, [r0] str r0, [sp, #4] bl sub_037FDD00 ldr r1, _037FC504 ; =0x000082EA mov r2, #0 umull ip, r3, r4, r1 mla r3, r4, r2, r3 mla r3, r2, r1, r3 mov r5, r0 mov r1, ip, lsr #6 ldr r4, [sp, #4] add r0, sp, #8 str r0, [r4, #0x94] add r2, sp, #4 str r2, [sp] mov r2, r3, lsr #6 orr r1, r1, r3, lsl #26 ldr r3, _037FC508 ; =sub_037FC50C bl sub_037FD4DC mov r4, #0 b _037FC4E0 _037FC4D8: mov r0, r4 bl sub_037FC290 _037FC4E0: ldr r0, [sp, #4] cmp r0, #0 bne _037FC4D8 mov r0, r5 bl sub_037FDD14 add sp, sp, #0x34 ldmia sp!, {r4, r5, lr} bx lr .align 2, 0 _037FC500: .word _03807680 _037FC504: .word 0x000082EA _037FC508: .word sub_037FC50C arm_func_end sub_037FC468 arm_func_start sub_037FC50C sub_037FC50C: ; 0x037FC50C ldr r2, [r0] mov r1, #0 str r1, [r0] ldr ip, _037FC528 ; =sub_037FC36C mov r0, r2 str r1, [r2, #0x94] bx ip .align 2, 0 _037FC528: .word sub_037FC36C arm_func_end sub_037FC50C arm_func_start sub_037FC52C sub_037FC52C: ; 0x037FC52C stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl sub_037FDD00 ldr r1, _037FC554 ; =_03807680 ldr r4, [r1, #0x30] str r5, [r1, #0x30] bl sub_037FDD14 mov r0, r4 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FC554: .word _03807680 arm_func_end sub_037FC52C arm_func_start sub_037FC558 sub_037FC558: ; 0x037FC558 stmdb sp!, {r4, lr} bl sub_037FDD00 ldr r2, _037FC58C ; =_03807680 mvn r1, #0 ldr r3, [r2, #4] cmp r3, r1 addlo r1, r3, #1 strlo r1, [r2, #4] movlo r4, r3 bl sub_037FDD14 mov r0, r4 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FC58C: .word _03807680 arm_func_end sub_037FC558 arm_func_start sub_037FC590 sub_037FC590: ; 0x037FC590 stmdb sp!, {r4, lr} bl sub_037FDD00 ldr r1, _037FC5C4 ; =_03807680 mov r4, #0 ldr r3, [r1, #4] cmp r3, #0 subne r2, r3, #1 strne r2, [r1, #4] movne r4, r3 bl sub_037FDD14 mov r0, r4 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FC5C4: .word _03807680 arm_func_end sub_037FC590 arm_func_start sub_037FC5C8 sub_037FC5C8: ; 0x037FC5C8 add r1, r1, #4 str r1, [r0, #0x40] str r2, [r0, #0x44] sub r2, r2, #0x40 tst r2, #4 bne _037FC5E4 b _037FC5E8 _037FC5E4: sub r2, r2, #4 _037FC5E8: str r2, [r0, #0x38] ands r1, r1, #1 bne _037FC5F8 b _037FC5FC _037FC5F8: mov r1, #0x3f _037FC5FC: beq _037FC604 b _037FC608 _037FC604: mov r1, #0x1f _037FC608: str r1, [r0] mov r1, #0 str r1, [r0, #4] str r1, [r0, #8] str r1, [r0, #0xc] str r1, [r0, #0x10] str r1, [r0, #0x14] str r1, [r0, #0x18] str r1, [r0, #0x1c] str r1, [r0, #0x20] str r1, [r0, #0x24] str r1, [r0, #0x28] str r1, [r0, #0x2c] str r1, [r0, #0x30] str r1, [r0, #0x34] str r1, [r0, #0x3c] bx lr arm_func_end sub_037FC5C8 arm_func_start sub_037FC64C sub_037FC64C: ; 0x037FC64C add r1, r0, #0 mrs r2, cpsr str r2, [r1], #4 mov r0, #0xd3 msr cpsr_c, r0 str sp, [r1, #0x40] msr cpsr_c, r2 mov r0, #1 stmia r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} add r0, pc, #0x8 ; =sub_037FC680 str r0, [r1, #0x3c] mov r0, #0 bx lr arm_func_end sub_037FC64C arm_func_start sub_037FC680 sub_037FC680: ; 0x037FC680 mrs r1, cpsr bic r1, r1, #0x1f orr r1, r1, #0xd3 msr cpsr_c, r1 ldr r1, [r0], #4 msr spsr_fsxc, r1 ldr sp, [r0, #0x40] ldr lr, [r0, #0x3c] ldmia r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^ mov r0, r0 subs pc, lr, #4 arm_func_end sub_037FC680 arm_func_start sub_037FC6AC sub_037FC6AC: ; 0x037FC6AC mov r3, #0 str r3, [r0, #4] str r3, [r0] str r3, [r0, #0xc] str r3, [r0, #8] str r1, [r0, #0x10] str r2, [r0, #0x14] str r3, [r0, #0x18] str r3, [r0, #0x1c] bx lr arm_func_end sub_037FC6AC arm_func_start sub_037FC6D4 sub_037FC6D4: ; 0x037FC6D4 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r2 mov r6, r0 mov r5, r1 bl sub_037FDD00 mov r4, r0 and r7, r7, #1 b _037FC714 _037FC6F4: cmp r7, #0 bne _037FC70C mov r0, r4 bl sub_037FDD14 mov r0, #0 b _037FC758 _037FC70C: mov r0, r6 bl sub_037FC290 _037FC714: ldr r2, [r6, #0x1c] ldr r1, [r6, #0x14] cmp r1, r2 ble _037FC6F4 ldr r0, [r6, #0x18] add r0, r0, r2 bl sub_03806BC8 ldr r2, [r6, #0x10] add r0, r6, #8 str r5, [r2, r1, lsl #2] ldr r1, [r6, #0x1c] add r1, r1, #1 str r1, [r6, #0x1c] bl sub_037FC2E4 mov r0, r4 bl sub_037FDD14 mov r0, #1 _037FC758: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_037FC6D4 arm_func_start sub_037FC760 sub_037FC760: ; 0x037FC760 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r2 mov r6, r0 mov r5, r1 bl sub_037FDD00 mov r4, r0 and r7, r7, #1 b _037FC7A0 _037FC780: cmp r7, #0 bne _037FC798 mov r0, r4 bl sub_037FDD14 mov r0, #0 b _037FC7F4 _037FC798: add r0, r6, #8 bl sub_037FC290 _037FC7A0: ldr r0, [r6, #0x1c] cmp r0, #0 beq _037FC780 cmp r5, #0 ldrne r1, [r6, #0x10] ldrne r0, [r6, #0x18] ldrne r0, [r1, r0, lsl #2] strne r0, [r5] ldr r0, [r6, #0x18] ldr r1, [r6, #0x14] add r0, r0, #1 bl sub_03806BC8 str r1, [r6, #0x18] ldr r1, [r6, #0x1c] mov r0, r6 sub r1, r1, #1 str r1, [r6, #0x1c] bl sub_037FC2E4 mov r0, r4 bl sub_037FDD14 mov r0, #1 _037FC7F4: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_037FC760 arm_func_start sub_037FC7FC sub_037FC7FC: ; 0x037FC7FC stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r6, r2 mov r7, r0 mov r4, r1 bl sub_037FDD00 mov r5, r0 and r6, r6, #1 b _037FC83C _037FC81C: cmp r6, #0 bne _037FC834 mov r0, r5 bl sub_037FDD14 mov r0, #0 b _037FC868 _037FC834: add r0, r7, #8 bl sub_037FC290 _037FC83C: ldr r0, [r7, #0x1c] cmp r0, #0 beq _037FC81C cmp r4, #0 ldrne r1, [r7, #0x10] ldrne r0, [r7, #0x18] ldrne r0, [r1, r0, lsl #2] strne r0, [r4] mov r0, r5 bl sub_037FDD14 mov r0, #1 _037FC868: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_037FC7FC arm_func_start sub_037FC870 sub_037FC870: ; 0x037FC870 mov r1, #0 str r1, [r0, #4] str r1, [r0] str r1, [r0, #8] str r1, [r0, #0xc] bx lr arm_func_end sub_037FC870 arm_func_start sub_037FC888 sub_037FC888: ; 0x037FC888 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r5, r0 bl sub_037FDD00 ldr r1, _037FC908 ; =_038076A4 mov r4, r0 ldr r7, [r1, #4] mov r6, #0 _037FC8A4: ldr r0, [r5, #8] cmp r0, #0 bne _037FC8D0 str r7, [r5, #8] ldr r1, [r5, #0xc] mov r0, r7 add r2, r1, #1 mov r1, r5 str r2, [r5, #0xc] bl sub_037FC9A4 b _037FC8F8 _037FC8D0: cmp r0, r7 ldreq r0, [r5, #0xc] addeq r0, r0, #1 streq r0, [r5, #0xc] beq _037FC8F8 str r5, [r7, #0x68] mov r0, r5 bl sub_037FC290 str r6, [r7, #0x68] b _037FC8A4 _037FC8F8: mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FC908: .word _038076A4 arm_func_end sub_037FC888 arm_func_start sub_037FC90C sub_037FC90C: ; 0x037FC90C stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl sub_037FDD00 ldr r1, _037FC968 ; =_038076A4 mov r4, r0 ldr r0, [r1, #4] ldr r1, [r5, #8] cmp r1, r0 bne _037FC958 ldr r1, [r5, #0xc] subs r1, r1, #1 str r1, [r5, #0xc] bne _037FC958 mov r1, r5 bl sub_037FC9C8 mov r1, #0 mov r0, r5 str r1, [r5, #8] bl sub_037FC2E4 _037FC958: mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FC968: .word _038076A4 arm_func_end sub_037FC90C arm_func_start sub_037FC96C sub_037FC96C: ; 0x037FC96C stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r4, #0 b _037FC990 _037FC97C: add r0, r5, #0x6c bl sub_037FBDBC str r4, [r0, #0xc] str r4, [r0, #8] bl sub_037FC2E4 _037FC990: ldr r0, [r5, #0x6c] cmp r0, #0 bne _037FC97C ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_037FC96C arm_func_start sub_037FC9A4 sub_037FC9A4: ; 0x037FC9A4 ldr r2, [r0, #0x70] cmp r2, #0 streq r1, [r0, #0x6c] strne r1, [r2, #0x10] str r2, [r1, #0x14] mov r2, #0 str r2, [r1, #0x10] str r1, [r0, #0x70] bx lr arm_func_end sub_037FC9A4 arm_func_start sub_037FC9C8 sub_037FC9C8: ; 0x037FC9C8 ldr r2, [r1, #0x10] ldr r1, [r1, #0x14] cmp r2, #0 streq r1, [r0, #0x70] strne r1, [r2, #0x14] cmp r1, #0 streq r2, [r0, #0x6c] strne r2, [r1, #0x10] bx lr arm_func_end sub_037FC9C8 arm_func_start sub_037FC9EC sub_037FC9EC: ; 0x037FC9EC stmdb sp!, {r3, lr} bl sub_037FCA1C bl sub_037FE2B4 bl sub_037FB998 bl sub_037FB798 bl sub_037FD128 bl sub_037FD34C bl sub_037FBF64 bl sub_037FDD7C bl sub_03806388 ldmia sp!, {r3, lr} bx lr arm_func_end sub_037FC9EC arm_func_start sub_037FCA1C sub_037FCA1C: ; 0x037FCA1C stmdb sp!, {r3, lr} ldr r1, _037FCA54 ; =_038077FC ldr r0, [r1] cmp r0, #0 bne _037FCA4C mov r0, #1 str r0, [r1] bl sub_037FCA58 mov r0, #7 bl sub_037FCA58 mov r0, #8 bl sub_037FCA58 _037FCA4C: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FCA54: .word _038077FC arm_func_end sub_037FCA1C arm_func_start sub_037FCA58 sub_037FCA58: ; 0x037FCA58 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FCABC mov r1, r4, lsl #2 add r1, r1, #0x2700000 add r1, r1, #0xff000 str r0, [r1, #0xdc4] mov r0, r4 bl sub_037FCB38 mov r1, r4, lsl #2 add r1, r1, #0x2700000 add r1, r1, #0xff000 str r0, [r1, #0xda0] ldmia sp!, {r4, lr} bx lr arm_func_end sub_037FCA58 arm_func_start sub_037FCA94 sub_037FCA94: ; 0x037FCA94 mov r0, r0, lsl #2 add r0, r0, #0x2700000 add r0, r0, #0xff000 ldr r0, [r0, #0xdc4] bx lr arm_func_end sub_037FCA94 arm_func_start sub_037FCAA8 sub_037FCAA8: ; 0x037FCAA8 mov r0, r0, lsl #2 add r0, r0, #0x2700000 add r0, r0, #0xff000 ldr r0, [r0, #0xda0] bx lr arm_func_end sub_037FCAA8 arm_func_start sub_037FCABC sub_037FCABC: ; 0x037FCABC cmp r0, #1 beq _037FCAD8 cmp r0, #7 beq _037FCAE0 cmp r0, #8 beq _037FCAE8 b _037FCB1C _037FCAD8: ldr r0, _037FCB24 ; =0x027FF000 bx lr _037FCAE0: mov r0, #0x3800000 bx lr _037FCAE8: ldr r2, _037FCB28 ; =0x00000400 ldr r0, _037FCB2C ; =0x0380FF80 ldr r1, _037FCB30 ; =SDK_WRAM_ARENA_LO sub r2, r0, r2 mov r0, #0x3800000 cmp r1, #0x3800000 movhi r0, r1 ldr r1, _037FCB34 ; =0x00000400 cmp r1, #0 bxeq lr sublt r0, r0, r1 subge r0, r2, r1 bx lr _037FCB1C: mov r0, #0 bx lr .align 2, 0 _037FCB24: .word 0x027FF000 _037FCB28: .word 0x00000400 _037FCB2C: .word 0x0380FF80 _037FCB30: .word SDK_WRAM_ARENA_LO _037FCB34: .word 0x00000400 arm_func_end sub_037FCABC arm_func_start sub_037FCB38 sub_037FCB38: ; 0x037FCB38 cmp r0, #1 beq _037FCB54 cmp r0, #7 beq _037FCB5C cmp r0, #8 beq _037FCB6C b _037FCB80 _037FCB54: ldr r0, _037FCB88 ; =SDK_SUBPRIV_ARENA_LO bx lr _037FCB5C: ldr r0, _037FCB8C ; =SDK_WRAM_ARENA_LO cmp r0, #0x3800000 movhi r0, #0x3800000 bx lr _037FCB6C: ldr r1, _037FCB8C ; =SDK_WRAM_ARENA_LO mov r0, #0x3800000 cmp r1, #0x3800000 movhi r0, r1 bx lr _037FCB80: mov r0, #0 bx lr .align 2, 0 _037FCB88: .word SDK_SUBPRIV_ARENA_LO _037FCB8C: .word SDK_WRAM_ARENA_LO arm_func_end sub_037FCB38 arm_func_start sub_037FCB90 sub_037FCB90: ; 0x037FCB90 mov r0, r0, lsl #2 add r0, r0, #0x2700000 add r0, r0, #0xff000 str r1, [r0, #0xda0] bx lr arm_func_end sub_037FCB90 arm_func_start sub_037FCBA4 sub_037FCBA4: ; 0x037FCBA4 ldr r3, [r1, #4] cmp r3, #0 ldrne r2, [r1] strne r2, [r3] ldr r2, [r1] cmp r2, #0 ldreq r0, [r1, #4] ldrne r1, [r1, #4] strne r1, [r2, #4] bx lr arm_func_end sub_037FCBA4 arm_func_start sub_037FCBCC sub_037FCBCC: ; 0x037FCBCC stmdb sp!, {r3, lr} mov lr, r0 mov ip, #0 b _037FCBEC _037FCBDC: cmp r1, lr bls _037FCBF4 mov ip, lr ldr lr, [lr, #4] _037FCBEC: cmp lr, #0 bne _037FCBDC _037FCBF4: stmia r1, {ip, lr} cmp lr, #0 beq _037FCC30 str r1, [lr] ldr r3, [r1, #8] add r2, r1, r3 cmp r2, lr bne _037FCC30 ldr r2, [lr, #8] add r2, r3, r2 str r2, [r1, #8] ldr lr, [lr, #4] str lr, [r1, #4] cmp lr, #0 strne r1, [lr] _037FCC30: cmp ip, #0 beq _037FCC68 str r1, [ip, #4] ldr r2, [ip, #8] add r3, ip, r2 cmp r3, r1 bne _037FCC6C ldr r1, [r1, #8] cmp lr, #0 add r1, r2, r1 str r1, [ip, #8] str lr, [ip, #4] strne ip, [lr] b _037FCC6C _037FCC68: mov r0, r1 _037FCC6C: ldmia sp!, {r3, lr} bx lr arm_func_end sub_037FCBCC arm_func_start sub_037FCC74 sub_037FCC74: ; 0x037FCC74 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r4, r0 mov r5, r1 mov r7, r2 bl sub_037FDD00 ldr r1, _037FCD80 ; =_03807800 mov r6, r0 ldr r1, [r1, r4, lsl #2] cmp r1, #0 bne _037FCCA8 bl sub_037FDD14 mov r0, #0 b _037FCD78 _037FCCA8: cmp r5, #0 ldrlt r5, [r1] ldr r1, [r1, #0x10] mov r0, #0xc mla r4, r5, r0, r1 ldr r0, [r4, #4] add r1, r7, #0x3f mov r5, r0 bic r7, r1, #0x1f b _037FCCE0 _037FCCD0: ldr r1, [r5, #8] cmp r7, r1 ble _037FCCE8 ldr r5, [r5, #4] _037FCCE0: cmp r5, #0 bne _037FCCD0 _037FCCE8: cmp r5, #0 bne _037FCD00 mov r0, r6 bl sub_037FDD14 mov r0, #0 b _037FCD78 _037FCD00: ldr r1, [r5, #8] sub r1, r1, r7 cmp r1, #0x40 bhs _037FCD20 mov r1, r5 bl sub_037FCBA4 str r0, [r4, #4] b _037FCD54 _037FCD20: str r7, [r5, #8] add r2, r5, r7 str r1, [r2, #8] ldr r0, [r5] str r0, [r5, r7] ldr r0, [r5, #4] str r0, [r2, #4] cmp r0, #0 strne r2, [r0] ldr r0, [r2] cmp r0, #0 strne r2, [r0, #4] streq r2, [r4, #4] _037FCD54: ldr r1, [r4, #8] mov r0, #0 stmia r5, {r0, r1} cmp r1, #0 strne r5, [r1] mov r0, r6 str r5, [r4, #8] bl sub_037FDD14 add r0, r5, #0x20 _037FCD78: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FCD80: .word _03807800 arm_func_end sub_037FCC74 arm_func_start sub_037FCD84 sub_037FCD84: ; 0x037FCD84 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 mov r5, r2 bl sub_037FDD00 ldr r1, _037FCDEC ; =_03807800 mov r4, r0 ldr r0, [r1, r7, lsl #2] cmp r6, #0 ldrlt r6, [r0] ldr r1, [r0, #0x10] mov r0, #0xc mla r7, r6, r0, r1 sub r5, r5, #0x20 ldr r0, [r7, #8] mov r1, r5 bl sub_037FCBA4 str r0, [r7, #8] ldr r0, [r7, #4] mov r1, r5 bl sub_037FCBCC str r0, [r7, #4] mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FCDEC: .word _03807800 arm_func_end sub_037FCD84 arm_func_start sub_037FCDF0 sub_037FCDF0: ; 0x037FCDF0 stmdb sp!, {r3, r4, r5, lr} mov r4, r0 mov r5, r1 bl sub_037FDD00 ldr r1, _037FCE20 ; =_03807800 ldr r1, [r1, r4, lsl #2] ldr r4, [r1] str r5, [r1] bl sub_037FDD14 mov r0, r4 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FCE20: .word _03807800 arm_func_end sub_037FCDF0 arm_func_start sub_037FCE24 sub_037FCE24: ; 0x037FCE24 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r5, r1 mov r4, r2 mov r6, r3 bl sub_037FDD00 ldr r2, _037FCEC8 ; =_03807800 mov r1, #0xc str r5, [r2, r7, lsl #2] add r2, r5, #0x14 str r2, [r5, #0x10] mov r7, #0 mul r1, r6, r1 str r6, [r5, #4] mvn lr, #0 mov ip, r7 mov r2, #0xc b _037FCE88 _037FCE6C: mul r3, r7, r2 ldr r6, [r5, #0x10] add r7, r7, #1 str lr, [r6, r3] add r3, r6, r3 str ip, [r3, #8] str ip, [r3, #4] _037FCE88: ldr r3, [r5, #4] cmp r7, r3 blt _037FCE6C mvn r2, #0 str r2, [r5] ldr r3, [r5, #0x10] bic r2, r4, #0x1f add r1, r3, r1 add r1, r1, #0x1f bic r1, r1, #0x1f str r1, [r5, #8] str r2, [r5, #0xc] bl sub_037FDD14 ldr r0, [r5, #8] ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FCEC8: .word _03807800 arm_func_end sub_037FCE24 arm_func_start sub_037FCECC sub_037FCECC: ; 0x037FCECC stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r4, r0 mov r6, r1 mov r5, r2 bl sub_037FDD00 ldr r2, _037FCF68 ; =_03807800 add r1, r6, #0x1f ldr lr, [r2, r4, lsl #2] bic r6, r1, #0x1f ldr r7, [lr, #4] bic r5, r5, #0x1f mov r4, #0 mov r1, #0xc b _037FCF50 _037FCF04: mul r3, r4, r1 ldr ip, [lr, #0x10] ldr r2, [ip, r3] add r3, ip, r3 cmp r2, #0 bge _037FCF4C sub r1, r5, r6 str r1, [r3] mov r2, #0 str r2, [r6] str r2, [r6, #4] ldr r1, [r3] str r1, [r6, #8] str r6, [r3, #4] str r2, [r3, #8] bl sub_037FDD14 mov r0, r4 b _037FCF60 _037FCF4C: add r4, r4, #1 _037FCF50: cmp r4, r7 blt _037FCF04 bl sub_037FDD14 mvn r0, #0 _037FCF60: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FCF68: .word _03807800 arm_func_end sub_037FCECC arm_func_start sub_037FCF6C sub_037FCF6C: ; 0x037FCF6C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r4, #0 mov r8, r0 mov r7, r1 mov r5, r4 sub r6, r4, #1 bl sub_037FDD00 ldr r1, _037FD108 ; =_03807800 mvn r2, #0 ldr r1, [r1, r8, lsl #2] cmp r7, r2 ldr ip, [r1, #0x10] ldreq r7, [r1] cmp ip, #0 beq _037FD0F8 cmp r7, #0 blt _037FD0F8 ldr r2, [r1, #4] cmp r7, r2 bge _037FD0F8 mov r2, #0xc mul r3, r7, r2 ldr r2, [ip, r3] add r7, ip, r3 cmp r2, #0 blt _037FD0F8 ldr ip, [r7, #8] cmp ip, #0 ldrne r3, [ip] cmpne r3, #0 bne _037FD0F8 b _037FD04C _037FCFEC: ldr r3, [r1, #8] cmp r3, ip bhi _037FD0F8 ldr r3, [r1, #0xc] cmp ip, r3 bhs _037FD0F8 tst ip, #0x1f bne _037FD0F8 ldr lr, [ip, #4] cmp lr, #0 ldrne r3, [lr] cmpne r3, ip bne _037FD0F8 ldr r3, [ip, #8] cmp r3, #0x40 blo _037FD0F8 tst r3, #0x1f bne _037FD0F8 add r4, r4, r3 cmp r4, #0 ble _037FD0F8 cmp r4, r2 bgt _037FD0F8 mov ip, lr _037FD04C: cmp ip, #0 bne _037FCFEC ldr lr, [r7, #4] cmp lr, #0 ldrne r3, [lr] cmpne r3, #0 bne _037FD0F8 b _037FD0E8 _037FD06C: ldr r3, [r1, #8] cmp r3, lr bhi _037FD0F8 ldr r3, [r1, #0xc] cmp lr, r3 bhs _037FD0F8 tst lr, #0x1f bne _037FD0F8 ldr r7, [lr, #4] cmp r7, #0 ldrne r3, [r7] cmpne r3, lr bne _037FD0F8 ldr ip, [lr, #8] cmp ip, #0x40 blo _037FD0F8 tst ip, #0x1f bne _037FD0F8 cmp r7, #0 beq _037FD0C8 add r3, lr, ip cmp r3, r7 bhs _037FD0F8 _037FD0C8: add r4, r4, ip sub r3, ip, #0x20 cmp r4, #0 add r5, r5, r3 ble _037FD0F8 cmp r4, r2 bgt _037FD0F8 mov lr, r7 _037FD0E8: cmp lr, #0 bne _037FD06C cmp r4, r2 moveq r6, r5 _037FD0F8: bl sub_037FDD14 mov r0, r6 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FD108: .word _03807800 arm_func_end sub_037FCF6C arm_func_start sub_037FD10C sub_037FD10C: ; 0x037FD10C ldr r1, _037FD124 ; =_03807824 mov r2, #1 ldrh r3, [r1] orr r0, r3, r2, lsl r0 strh r0, [r1] bx lr .align 2, 0 _037FD124: .word _03807824 arm_func_end sub_037FD10C arm_func_start sub_037FD128 sub_037FD128: ; 0x037FD128 stmdb sp!, {r3, lr} ldr r1, _037FD198 ; =_03807828 ldrh r0, [r1] cmp r0, #0 bne _037FD190 mov r2, #1 mov r0, #0 strh r2, [r1] bl sub_037FD10C ldr r0, _037FD198 ; =_03807828 mov r2, #0 str r2, [r0, #8] ldr r3, _037FD19C ; =0x04000102 str r2, [r0, #0xc] strh r2, [r3] ldr r1, _037FD1A0 ; =sub_037FD1B4 strh r2, [r3, #-2] mov r2, #0xc1 mov r0, #8 strh r2, [r3] bl sub_037FB7BC mov r0, #8 bl sub_037FB8F0 ldr r0, _037FD198 ; =_03807828 mov r1, #0 str r1, [r0, #4] _037FD190: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FD198: .word _03807828 _037FD19C: .word 0x04000102 _037FD1A0: .word sub_037FD1B4 arm_func_end sub_037FD128 arm_func_start sub_037FD1A4 sub_037FD1A4: ; 0x037FD1A4 ldr r0, _037FD1B0 ; =_03807828 ldrh r0, [r0] bx lr .align 2, 0 _037FD1B0: .word _03807828 arm_func_end sub_037FD1A4 arm_func_start sub_037FD1B4 sub_037FD1B4: ; 0x037FD1B4 ldr r0, _037FD20C ; =_03807828 mov r3, #0 ldr r2, [r0, #8] ldr r1, [r0, #0xc] adds r2, r2, #1 str r2, [r0, #8] adc r1, r1, #0 str r1, [r0, #0xc] ldr r1, [r0, #4] cmp r1, #0 beq _037FD1F8 ldr r2, _037FD210 ; =0x04000102 mov r1, #0xc1 strh r3, [r2] strh r3, [r2, #-2] strh r1, [r2] str r3, [r0, #4] _037FD1F8: ldr ip, _037FD214 ; =sub_037FB858 mov r0, #0 ldr r1, _037FD218 ; =sub_037FD1B4 mov r2, r0 bx ip .align 2, 0 _037FD20C: .word _03807828 _037FD210: .word 0x04000102 _037FD214: .word sub_037FB858 _037FD218: .word sub_037FD1B4 arm_func_end sub_037FD1B4 arm_func_start sub_037FD21C sub_037FD21C: ; 0x037FD21C stmdb sp!, {lr} sub sp, sp, #0xc bl sub_037FDD00 ldr lr, _037FD2B4 ; =0x04000100 ldr r1, _037FD2B8 ; =_03807828 ldrh r3, [lr] ldr r2, _037FD2BC ; =0x0000FFFF strh r3, [sp] ldr ip, [r1, #8] ldr r3, [r1, #0xc] sub r1, r2, #0x10000 and ip, ip, r1 and r1, r3, r2 str ip, [sp, #4] str r1, [sp, #8] ldr r1, [lr, #0x114] tst r1, #8 beq _037FD288 ldrh r1, [sp] tst r1, #0x8000 bne _037FD288 ldr r2, [sp, #4] ldr r1, [sp, #8] adds r2, r2, #1 adc r1, r1, #0 str r2, [sp, #4] str r1, [sp, #8] _037FD288: bl sub_037FDD14 ldr r2, [sp, #4] ldr r1, [sp, #8] ldrh r0, [sp] mov r1, r1, lsl #0x10 orr r1, r1, r2, lsr #16 orr r1, r1, r0, asr #31 orr r0, r0, r2, lsl #16 add sp, sp, #0xc ldmia sp!, {lr} bx lr .align 2, 0 _037FD2B4: .word 0x04000100 _037FD2B8: .word _03807828 _037FD2BC: .word 0x0000FFFF arm_func_end sub_037FD21C arm_func_start sub_037FD2C0 sub_037FD2C0: ; 0x037FD2C0 stmdb sp!, {r3, r4, r5, lr} mov r4, r0 bl sub_037FD21C ldr r3, _037FD33C ; =0x04000106 mov r2, #0 strh r2, [r3] ldr ip, [r4, #0xc] ldr r3, [r4, #0x10] subs r5, ip, r0 sbc r4, r3, r1 ldr r1, _037FD340 ; =sub_037FD648 mov r0, #1 bl sub_037FB858 subs r0, r5, #0 mov r3, #0 sbcs r0, r4, #0 ldrlt r3, _037FD344 ; =0x0000FFFE blt _037FD31C subs r0, r5, #0x10000 sbcs r0, r4, r3 mvnlt r0, r5 movlt r0, r0, lsl #0x10 movlt r3, r0, lsr #0x10 _037FD31C: ldr r2, _037FD348 ; =0x04000104 mov r1, #0xc1 strh r3, [r2] mov r0, #0x10 strh r1, [r2, #2] bl sub_037FB8F0 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FD33C: .word 0x04000106 _037FD340: .word sub_037FD648 _037FD344: .word 0x0000FFFE _037FD348: .word 0x04000104 arm_func_end sub_037FD2C0 arm_func_start sub_037FD34C sub_037FD34C: ; 0x037FD34C stmdb sp!, {r3, lr} ldr r1, _037FD38C ; =_03807838 ldrh r0, [r1] cmp r0, #0 bne _037FD384 mov r0, #1 strh r0, [r1] bl sub_037FD10C ldr r1, _037FD38C ; =_03807838 mov r2, #0 str r2, [r1, #4] mov r0, #0x10 str r2, [r1, #8] bl sub_037FB928 _037FD384: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FD38C: .word _03807838 arm_func_end sub_037FD34C arm_func_start sub_037FD390 sub_037FD390: ; 0x037FD390 ldr r0, _037FD39C ; =_03807838 ldrh r0, [r0] bx lr .align 2, 0 _037FD39C: .word _03807838 arm_func_end sub_037FD390 arm_func_start sub_037FD3A0 sub_037FD3A0: ; 0x037FD3A0 mov r1, #0 str r1, [r0] str r1, [r0, #8] bx lr arm_func_end sub_037FD3A0 arm_func_start sub_037FD3B0 sub_037FD3B0: ; 0x037FD3B0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r0 ldr r0, [r8, #0x20] ldr r3, [r8, #0x1c] cmp r0, #0 mov r7, r1 mov r6, r2 cmpeq r3, #0 beq _037FD424 bl sub_037FD21C ldr r6, [r8, #0x28] ldr r7, [r8, #0x24] cmp r6, r1 cmpeq r7, r0 bhs _037FD424 ldr r5, [r8, #0x1c] ldr r4, [r8, #0x20] subs r0, r0, r7 mov r2, r5 mov r3, r4 sbc r1, r1, r6 bl sub_03806B80 adds r2, r0, #1 adc r0, r1, #0 umull r3, r1, r5, r2 mla r1, r5, r0, r1 mla r1, r4, r2, r1 adds r7, r7, r3 adc r6, r6, r1 _037FD424: str r7, [r8, #0xc] ldr r0, _037FD4D8 ; =_03807838 str r6, [r8, #0x10] mov r2, #0 ldr r5, [r0, #4] mov r1, r2 b _037FD494 _037FD440: ldr r3, [r5, #0xc] ldr r0, [r5, #0x10] subs r4, r7, r3 sbc r3, r6, r0 subs r0, r4, r1 sbcs r0, r3, r2 bge _037FD490 ldr r0, [r5, #0x14] str r0, [r8, #0x14] str r8, [r5, #0x14] str r5, [r8, #0x18] ldr r0, [r8, #0x14] cmp r0, #0 strne r8, [r0, #0x18] bne _037FD4D0 ldr r1, _037FD4D8 ; =_03807838 mov r0, r8 str r8, [r1, #4] bl sub_037FD2C0 b _037FD4D0 _037FD490: ldr r5, [r5, #0x18] _037FD494: cmp r5, #0 bne _037FD440 ldr r1, _037FD4D8 ; =_03807838 mov r0, #0 str r0, [r8, #0x18] ldr r0, [r1, #8] str r8, [r1, #8] str r0, [r8, #0x14] cmp r0, #0 strne r8, [r0, #0x18] bne _037FD4D0 str r8, [r1, #8] mov r0, r8 str r8, [r1, #4] bl sub_037FD2C0 _037FD4D0: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FD4D8: .word _03807838 arm_func_end sub_037FD3B0 arm_func_start sub_037FD4DC sub_037FD4DC: ; 0x037FD4DC stmdb sp!, {r3, r4, r5, r6, r7, lr} movs r6, r0 mov r5, r1 mov r4, r2 mov r7, r3 beq _037FD500 ldr r0, [r6] cmp r0, #0 beq _037FD504 _037FD500: bl sub_037FDE70 _037FD504: bl sub_037FDD00 mov r1, #0 str r1, [r6, #0x1c] str r1, [r6, #0x20] str r7, [r6] ldr r1, [sp, #0x18] mov r7, r0 str r1, [r6, #4] bl sub_037FD21C adds r3, r5, r0 adc r2, r4, r1 mov r0, r6 mov r1, r3 bl sub_037FD3B0 mov r0, r7 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_037FD4DC arm_func_start sub_037FD54C sub_037FD54C: ; 0x037FD54C stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r5, [sp, #0x18] movs r4, r0 mov r8, r1 mov r7, r2 mov r6, r3 beq _037FD574 ldr r0, [r4] cmp r0, #0 beq _037FD578 _037FD574: bl sub_037FDE70 _037FD578: bl sub_037FDD00 str r6, [r4, #0x1c] str r5, [r4, #0x20] str r8, [r4, #0x24] mov r1, #0 mov r5, r0 ldr r0, [sp, #0x1c] str r7, [r4, #0x28] ldr r3, [sp, #0x20] str r0, [r4] mov r0, r4 mov r2, r1 str r3, [r4, #4] bl sub_037FD3B0 mov r0, r5 bl sub_037FDD14 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr arm_func_end sub_037FD54C arm_func_start sub_037FD5C0 sub_037FD5C0: ; 0x037FD5C0 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl sub_037FDD00 ldr r1, [r5] mov r4, r0 cmp r1, #0 bne _037FD5E4 bl sub_037FDD14 b _037FD63C _037FD5E4: ldr r0, [r5, #0x18] cmp r0, #0 ldreq r2, [r5, #0x14] ldreq r1, _037FD644 ; =_03807838 streq r2, [r1, #8] ldrne r1, [r5, #0x14] strne r1, [r0, #0x14] ldr r1, [r5, #0x14] cmp r1, #0 strne r0, [r1, #0x18] bne _037FD624 ldr r1, _037FD644 ; =_03807838 cmp r0, #0 str r0, [r1, #4] beq _037FD624 bl sub_037FD2C0 _037FD624: mov r1, #0 str r1, [r5] str r1, [r5, #0x1c] mov r0, r4 str r1, [r5, #0x20] bl sub_037FDD14 _037FD63C: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FD644: .word _03807838 arm_func_end sub_037FD5C0 arm_func_start sub_037FD648 sub_037FD648: ; 0x037FD648 stmdb sp!, {r0, lr} bl sub_037FD658 ldmia sp!, {r0, lr} bx lr arm_func_end sub_037FD648 arm_func_start sub_037FD658 sub_037FD658: ; 0x037FD658 stmdb sp!, {r3, r4, r5, lr} ldr r1, _037FD740 ; =0x04000106 mov r2, #0 mov r0, #0x10 strh r2, [r1] bl sub_037FB928 ldr r1, _037FD744 ; =0x0380FFF8 ldr r0, [r1] orr r0, r0, #0x10 str r0, [r1] bl sub_037FD21C ldr r2, _037FD748 ; =_03807838 ldr r4, [r2, #4] cmp r4, #0 beq _037FD738 ldr r3, [r4, #0x10] ldr ip, [r4, #0xc] cmp r1, r3 cmpeq r0, ip bhs _037FD6B4 mov r0, r4 bl sub_037FD2C0 b _037FD738 _037FD6B4: ldr r1, [r4, #0x18] mov r0, #0 str r1, [r2, #4] cmp r1, #0 streq r0, [r2, #8] strne r0, [r1, #0x14] ldr r0, [r4, #0x20] ldr r1, [r4, #0x1c] cmp r0, #0 ldr r5, [r4] mov r0, #0 cmpeq r1, #0 streq r0, [r4] cmp r5, #0 beq _037FD6FC ldr r0, [r4, #4] mov lr, pc bx r5 _037FD6FC: ldr r0, [r4, #0x20] ldr r1, [r4, #0x1c] cmp r0, #0 cmpeq r1, #0 mov r1, #0 beq _037FD724 mov r0, r4 mov r2, r1 str r5, [r4] bl sub_037FD3B0 _037FD724: ldr r0, _037FD748 ; =_03807838 ldr r0, [r0, #4] cmp r0, #0 beq _037FD738 bl sub_037FD2C0 _037FD738: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FD740: .word 0x04000106 _037FD744: .word 0x0380FFF8 _037FD748: .word _03807838 arm_func_end sub_037FD658 arm_func_start sub_037FD74C sub_037FD74C: ; 0x037FD74C stmdb sp!, {r3, lr} ldr r1, _037FD794 ; =_03807844 ldrh r0, [r1] cmp r0, #0 bne _037FD78C mov r0, #1 strh r0, [r1] mov r2, #0 str r2, [r1, #0xc] mov r0, #4 str r2, [r1, #0x10] bl sub_037FB928 ldr r0, _037FD794 ; =_03807844 mov r1, #0 str r1, [r0, #8] str r1, [r0, #4] _037FD78C: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FD794: .word _03807844 arm_func_end sub_037FD74C arm_func_start sub_037FD798 sub_037FD798: ; 0x037FD798 ldr r0, _037FD7A4 ; =_03807844 ldrh r0, [r0] bx lr .align 2, 0 _037FD7A4: .word _03807844 arm_func_end sub_037FD798 arm_func_start sub_037FD7A8 sub_037FD7A8: ; 0x037FD7A8 stmdb sp!, {r3, lr} ldr r1, _037FD848 ; =_03807844 ldr r3, [r1, #0xc] b _037FD80C _037FD7B8: ldr r2, [r0, #0xc] ldr r1, [r3, #0xc] cmp r1, r2 blo _037FD808 bne _037FD7DC ldrsh r2, [r3, #0x10] ldrsh r1, [r0, #0x10] cmp r2, r1 ble _037FD808 _037FD7DC: ldr r1, [r3, #0x14] str r1, [r0, #0x14] str r3, [r0, #0x18] str r0, [r3, #0x14] cmp r1, #0 strne r0, [r1, #0x18] bne _037FD840 ldr r1, _037FD848 ; =_03807844 str r0, [r1, #0xc] bl sub_037FD9B8 b _037FD840 _037FD808: ldr r3, [r3, #0x18] _037FD80C: cmp r3, #0 bne _037FD7B8 ldr r1, _037FD848 ; =_03807844 mov r2, #0 ldr r3, [r1, #0x10] str r3, [r0, #0x14] str r2, [r0, #0x18] str r0, [r1, #0x10] cmp r3, #0 strne r0, [r3, #0x18] bne _037FD840 str r0, [r1, #0xc] bl sub_037FD9B8 _037FD840: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FD848: .word _03807844 arm_func_end sub_037FD7A8 arm_func_start sub_037FD84C sub_037FD84C: ; 0x037FD84C cmp r0, #0 bxeq lr ldr r2, [r0, #0x18] ldr r1, [r0, #0x14] cmp r2, #0 ldreq r0, _037FD880 ; =_03807844 strne r1, [r2, #0x14] streq r1, [r0, #0x10] cmp r1, #0 ldreq r0, _037FD880 ; =_03807844 strne r2, [r1, #0x18] streq r2, [r0, #0xc] bx lr .align 2, 0 _037FD880: .word _03807844 arm_func_end sub_037FD84C arm_func_start sub_037FD884 sub_037FD884: ; 0x037FD884 mov r1, #0 str r1, [r0] str r1, [r0, #8] str r1, [r0, #0x20] bx lr arm_func_end sub_037FD884 arm_func_start sub_037FD898 sub_037FD898: ; 0x037FD898 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r8, r0 mov r7, r1 mov r6, r2 mov r5, r3 bl sub_037FDD00 mov r4, r0 cmp r8, #0 beq _037FD8C8 ldr r0, [r8] cmp r0, #0 beq _037FD8CC _037FD8C8: bl sub_037FDE70 _037FD8CC: ldr r0, _037FD924 ; =0x04000006 ldrh sb, [r0] mov r0, sb bl sub_037FDCA8 mov r1, #0 str r1, [r8, #0x1c] cmp r7, sb strh r7, [r8, #0x10] addle r0, r0, #1 str r0, [r8, #0xc] strh r6, [r8, #0x12] ldr r0, [sp, #0x20] str r5, [r8] str r0, [r8, #4] mov r1, #0 mov r0, r8 str r1, [r8, #0x24] bl sub_037FD7A8 mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _037FD924: .word 0x04000006 arm_func_end sub_037FD898 arm_func_start sub_037FD928 sub_037FD928: ; 0x037FD928 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov r8, r0 mov r7, r1 mov r6, r2 mov r5, r3 bl sub_037FDD00 mov r4, r0 cmp r8, #0 beq _037FD958 ldr r0, [r8] cmp r0, #0 beq _037FD95C _037FD958: bl sub_037FDE70 _037FD95C: ldr r0, _037FD9B4 ; =0x04000006 ldrh sb, [r0] mov r0, sb bl sub_037FDCA8 mov r1, #1 str r1, [r8, #0x1c] cmp r7, sb strh r7, [r8, #0x10] addle r0, r0, #1 str r0, [r8, #0xc] strh r6, [r8, #0x12] ldr r0, [sp, #0x20] str r5, [r8] str r0, [r8, #4] mov r1, #0 mov r0, r8 str r1, [r8, #0x24] bl sub_037FD7A8 mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _037FD9B4: .word 0x04000006 arm_func_end sub_037FD928 arm_func_start sub_037FD9B8 sub_037FD9B8: ; 0x037FD9B8 stmdb sp!, {r4, lr} ldr r1, _037FDA0C ; =sub_037FDAF8 mov r4, r0 mov r0, #4 bl sub_037FB7BC ldrsh r3, [r4, #0x10] ldr r2, _037FDA10 ; =0x04000004 mov r0, r3, lsl #0x18 ldrh r1, [r2] and r3, r3, #0x100 and r1, r1, #0x3f orr r0, r1, r0, lsr #16 orr r0, r0, r3, asr #1 strh r0, [r2] ldrh r1, [r2] mov r0, #4 orr r1, r1, #0x20 strh r1, [r2] bl sub_037FB8F0 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FDA0C: .word sub_037FDAF8 _037FDA10: .word 0x04000004 arm_func_end sub_037FD9B8 arm_func_start sub_037FDA14 sub_037FDA14: ; 0x037FDA14 stmdb sp!, {r3, r4, r5, lr} movs r4, r1 mov r5, r0 bne _037FDA28 bl sub_037FDE70 _037FDA28: cmp r5, #0 strne r4, [r5, #8] ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_037FDA14 arm_func_start sub_037FDA38 sub_037FDA38: ; 0x037FDA38 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl sub_037FDD00 mov r1, #1 str r1, [r5, #0x24] ldr r1, [r5] mov r4, r0 cmp r1, #0 bne _037FDA64 bl sub_037FDD14 b _037FDA7C _037FDA64: mov r0, r5 bl sub_037FD84C mov r1, #0 mov r0, r4 str r1, [r5] bl sub_037FDD14 _037FDA7C: ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_037FDA38 arm_func_start sub_037FDA84 sub_037FDA84: ; 0x037FDA84 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 bl sub_037FDD00 mov r5, r0 cmp r7, #0 bne _037FDAA0 bl sub_037FDE70 _037FDAA0: ldr r0, _037FDAF4 ; =_03807844 mov r4, #0 ldr r0, [r0, #0xc] cmp r0, #0 ldrne r6, [r0, #0x18] moveq r6, #0 b _037FDADC _037FDABC: ldr r1, [r0, #8] cmp r1, r7 bne _037FDACC bl sub_037FDA38 _037FDACC: mov r0, r6 cmp r6, #0 ldrne r6, [r6, #0x18] moveq r6, r4 _037FDADC: cmp r0, #0 bne _037FDABC mov r0, r5 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FDAF4: .word _03807844 arm_func_end sub_037FDA84 arm_func_start sub_037FDAF8 sub_037FDAF8: ; 0x037FDAF8 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r0, #4 bl sub_037FB928 ldr r2, _037FDC98 ; =0x04000004 ldr r1, _037FDC9C ; =0x0380FFF8 ldrh r0, [r2] bic r0, r0, #0x20 strh r0, [r2] ldr r0, [r1] orr r0, r0, #4 str r0, [r1] ldrh r0, [r2] mov r1, r0, asr #8 mov r0, r0, lsl #1 and r1, r1, #0xff and r0, r0, #0x100 orr r0, r1, r0 sub r0, r0, #1 bl sub_037FDCA8 ldr sl, _037FDCA0 ; =0x04000006 mov r6, #0 ldr r5, _037FDCA4 ; =_03807844 sub r7, sl, #2 mov fp, #1 mov r8, r6 b _037FDC84 _037FDB60: ldrh sb, [sl] mov r0, sb bl sub_037FDCA8 ldrsh r1, [r4, #0x10] ldr r2, [r4, #0xc] sub r1, sb, r1 mov sb, r0 subs r0, sb, r2 bmi _037FDB94 cmp r0, #0 bne _037FDB9C cmp r1, #0 bge _037FDB9C _037FDB94: mov r0, r8 b _037FDBB8 _037FDB9C: cmp r1, #0 addlt r0, r1, #7 addlt r1, r0, #0x100 ldrsh r0, [r4, #0x12] cmp r1, r0 movle r0, fp movgt r0, #2 _037FDBB8: cmp r0, #0 beq _037FDBD4 cmp r0, #1 beq _037FDC10 cmp r0, #2 beq _037FDC68 b _037FDC84 _037FDBD4: mov r0, r4 bl sub_037FD9B8 ldrh r1, [sl] ldrsh r0, [r4, #0x10] cmp r0, r1 ldreq r0, [r4, #0xc] cmpeq r0, sb bne _037FDC90 mov r0, #4 bl sub_037FB928 ldrh r1, [r7] mov r0, #4 bic r1, r1, #0x20 strh r1, [r7] bl sub_037FB964 _037FDC10: ldr sb, [r4] mov r0, r4 bl sub_037FD84C str r6, [r4] cmp sb, #0 beq _037FDC34 ldr r0, [r4, #4] mov lr, pc bx sb _037FDC34: ldr r0, [r4, #0x1c] cmp r0, #0 beq _037FDC84 ldr r0, [r4, #0x24] cmp r0, #0 bne _037FDC84 str sb, [r4] ldr r1, [r5, #8] mov r0, r4 add r1, r1, #1 str r1, [r4, #0xc] bl sub_037FD7A8 b _037FDC84 _037FDC68: mov r0, r4 bl sub_037FD84C ldr r1, [r5, #8] mov r0, r4 add r1, r1, #1 str r1, [r4, #0xc] bl sub_037FD7A8 _037FDC84: ldr r4, [r5, #0xc] cmp r4, #0 bne _037FDB60 _037FDC90: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _037FDC98: .word 0x04000004 _037FDC9C: .word 0x0380FFF8 _037FDCA0: .word 0x04000006 _037FDCA4: .word _03807844 arm_func_end sub_037FDAF8 arm_func_start sub_037FDCA8 sub_037FDCA8: ; 0x037FDCA8 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FDD00 ldr r1, _037FDCE8 ; =_03807844 ldr r2, [r1, #4] cmp r4, r2 ldrlt r2, [r1, #8] addlt r2, r2, #1 strlt r2, [r1, #8] ldr r1, _037FDCE8 ; =_03807844 str r4, [r1, #4] bl sub_037FDD14 ldr r0, _037FDCE8 ; =_03807844 ldr r0, [r0, #8] ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FDCE8: .word _03807844 arm_func_end sub_037FDCA8 arm_func_start sub_037FDCEC sub_037FDCEC: ; 0x037FDCEC mrs r0, cpsr bic r1, r0, #0x80 msr cpsr_c, r1 and r0, r0, #0x80 bx lr arm_func_end sub_037FDCEC arm_func_start sub_037FDD00 sub_037FDD00: ; 0x037FDD00 mrs r0, cpsr orr r1, r0, #0x80 msr cpsr_c, r1 and r0, r0, #0x80 bx lr arm_func_end sub_037FDD00 arm_func_start sub_037FDD14 sub_037FDD14: ; 0x037FDD14 mrs r1, cpsr bic r2, r1, #0x80 orr r2, r2, r0 msr cpsr_c, r2 and r0, r1, #0x80 bx lr arm_func_end sub_037FDD14 arm_func_start sub_037FDD2C sub_037FDD2C: ; 0x037FDD2C mrs r0, cpsr orr r1, r0, #0xc0 msr cpsr_c, r1 and r0, r0, #0xc0 bx lr arm_func_end sub_037FDD2C arm_func_start sub_037FDD40 sub_037FDD40: ; 0x037FDD40 mrs r1, cpsr bic r2, r1, #0xc0 orr r2, r2, r0 msr cpsr_c, r2 and r0, r1, #0xc0 bx lr arm_func_end sub_037FDD40 arm_func_start sub_037FDD58 sub_037FDD58: ; 0x037FDD58 mrs r0, cpsr and r0, r0, #0x1f bx lr arm_func_end sub_037FDD58 arm_func_start sub_037FDD64 sub_037FDD64: ; 0x037FDD64 ldr ip, _037FDD78 ; =sub_038037B8 mov r1, r0, asr #1 add r0, r0, r1, lsr #30 mov r0, r0, asr #2 bx ip .align 2, 0 _037FDD78: .word sub_038037B8 + 1 arm_func_end sub_037FDD64 arm_func_start sub_037FDD7C sub_037FDD7C: ; 0x037FDD7C stmdb sp!, {r3, lr} ldr r2, _037FDDAC ; =_03807858 ldrh r0, [r2] cmp r0, #0 bne _037FDDA4 ldr r1, _037FDDB0 ; =sub_037FDDC4 mov r3, #1 mov r0, #0xc strh r3, [r2] bl sub_037FE39C _037FDDA4: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FDDAC: .word _03807858 _037FDDB0: .word sub_037FDDC4 arm_func_end sub_037FDD7C arm_func_start sub_037FDDB4 sub_037FDDB4: ; 0x037FDDB4 ldr r0, _037FDDC0 ; =_03807858 ldrh r0, [r0, #2] bx lr .align 2, 0 _037FDDC0: .word _03807858 arm_func_end sub_037FDDB4 arm_func_start sub_037FDDC4 sub_037FDDC4: ; 0x037FDDC4 stmdb sp!, {r3, lr} and r0, r1, #0x7f00 mov r0, r0, lsl #8 mov r0, r0, lsr #0x10 cmp r0, #0x10 ldreq r0, _037FDDF4 ; =_03807858 moveq r1, #1 streqh r1, [r0, #2] beq _037FDDEC bl sub_037FDE70 _037FDDEC: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FDDF4: .word _03807858 arm_func_end sub_037FDDC4 arm_func_start sub_037FDDF8 sub_037FDDF8: ; 0x037FDDF8 stmdb sp!, {r4, r5, r6, lr} mov r0, #0 bl sub_037FDEF4 mov r0, #1 bl sub_037FDEF4 mov r0, #2 bl sub_037FDEF4 mov r0, #3 bl sub_037FDEF4 mov r0, #0x40000 bl sub_037FB8A4 mvn r0, #0 bl sub_037FB964 bl sub_037FE6B4 mov r6, #0xc mov r5, #0x1000 mov r4, #0 _037FDE3C: mov r0, r6 mov r1, r5 mov r2, r4 bl sub_037FE410 cmp r0, #0 bne _037FDE3C ldr r0, _037FDE6C ; =0x04000208 mov r1, #0 strh r1, [r0] bl sub_038072C0 ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037FDE6C: .word 0x04000208 arm_func_end sub_037FDDF8 arm_func_start sub_037FDE70 sub_037FDE70: ; 0x037FDE70 stmdb sp!, {r3, lr} mov r0, #0 bl sub_03806610 _037FDE7C: bl sub_037FDD00 bl sub_037F8478 b _037FDE7C arm_func_end sub_037FDE70 arm_func_start sub_037FDE88 sub_037FDE88: ; 0x037FDE88 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FDD00 add r1, r4, r4, lsl #1 add r1, r1, #2 mov r1, r1, lsl #2 add r1, r1, #0xb0 add r2, r1, #0x4000000 _037FDEA8: ldr r1, [r2] tst r1, #0x80000000 bne _037FDEA8 cmp r4, #0 bne _037FDEE4 mov r1, #0xc mul r1, r4, r1 add r2, r1, #0x4000000 mov r3, #0 add r1, r1, #0xb0 str r3, [r2, #0xb0] add r2, r1, #0x4000000 ldr r1, _037FDEF0 ; =0x81400001 str r3, [r2, #4] str r1, [r2, #8] _037FDEE4: bl sub_037FDD14 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FDEF0: .word 0x81400001 arm_func_end sub_037FDE88 arm_func_start sub_037FDEF4 sub_037FDEF4: ; 0x037FDEF4 stmdb sp!, {r4, lr} mov r4, r0 bl sub_037FDD00 mov r1, #6 mul r1, r4, r1 add r1, r1, #5 mov r1, r1, lsl #1 add r1, r1, #0x4000000 ldrh r2, [r1, #0xb0] cmp r4, #0 bic r2, r2, #0x3200 strh r2, [r1, #0xb0] ldrh r2, [r1, #0xb0] bic r2, r2, #0x8000 strh r2, [r1, #0xb0] ldrh r2, [r1, #0xb0] ldrh r1, [r1, #0xb0] bne _037FDF64 mov r1, #0xc mul r1, r4, r1 add r2, r1, #0x4000000 mov r3, #0 add r1, r1, #0xb0 str r3, [r2, #0xb0] add r2, r1, #0x4000000 ldr r1, _037FDF70 ; =0x81400001 str r3, [r2, #4] str r1, [r2, #8] _037FDF64: bl sub_037FDD14 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FDF70: .word 0x81400001 arm_func_end sub_037FDEF4 arm_func_start sub_037FDF74 sub_037FDF74: ; 0x037FDF74 mov r3, #0 _037FDF78: cmp r3, r2 blt _037FDF84 b _037FDF88 _037FDF84: strh r0, [r1, r3] _037FDF88: blt _037FDF90 b _037FDF94 _037FDF90: add r3, r3, #2 _037FDF94: blt _037FDF78 bx lr arm_func_end sub_037FDF74 arm_func_start sub_037FDF9C sub_037FDF9C: ; 0x037FDF9C mov ip, #0 _037FDFA0: cmp ip, r2 blt _037FDFAC b _037FDFB0 _037FDFAC: ldrh r3, [r0, ip] _037FDFB0: blt _037FDFB8 b _037FDFBC _037FDFB8: strh r3, [r1, ip] _037FDFBC: blt _037FDFC4 b _037FDFC8 _037FDFC4: add ip, ip, #2 _037FDFC8: blt _037FDFA0 bx lr arm_func_end sub_037FDF9C arm_func_start sub_037FDFD0 sub_037FDFD0: ; 0x037FDFD0 add ip, r1, r2 _037FDFD4: cmp r1, ip blt _037FDFE0 b _037FDFE4 _037FDFE0: stmia r1!, {r0} _037FDFE4: blt _037FDFD4 bx lr arm_func_end sub_037FDFD0 arm_func_start sub_037FDFEC sub_037FDFEC: ; 0x037FDFEC add ip, r1, r2 _037FDFF0: cmp r1, ip blt _037FDFFC b _037FE000 _037FDFFC: ldmia r0!, {r2} _037FE000: blt _037FE008 b _037FE00C _037FE008: stmia r1!, {r2} _037FE00C: blt _037FDFF0 bx lr arm_func_end sub_037FDFEC arm_func_start sub_037FE014 sub_037FE014: ; 0x037FE014 stmdb sp!, {r4, r5, r6, r7, r8, sb} add sb, r1, r2 mov ip, r2, lsr #5 add ip, r1, ip, lsl #5 mov r2, r0 mov r3, r2 mov r4, r2 mov r5, r2 mov r6, r2 mov r7, r2 mov r8, r2 _037FE040: cmp r1, ip blt _037FE04C b _037FE050 _037FE04C: stmia r1!, {r0, r2, r3, r4, r5, r6, r7, r8} _037FE050: blt _037FE040 _037FE054: cmp r1, sb blt _037FE060 b _037FE064 _037FE060: stmia r1!, {r0} _037FE064: blt _037FE054 ldmia sp!, {r4, r5, r6, r7, r8, sb} bx lr arm_func_end sub_037FE014 arm_func_start sub_037FE070 sub_037FE070: ; 0x037FE070 cmp r2, #0 beq _037FE07C b _037FE080 _037FE07C: bx lr _037FE080: tst r0, #1 beq _037FE0AC ldrh ip, [r0, #-1] and ip, ip, #0xff orr r3, ip, r1, lsl #8 strh r3, [r0, #-1] add r0, r0, #1 subs r2, r2, #1 beq _037FE0A8 b _037FE0AC _037FE0A8: bx lr _037FE0AC: cmp r2, #2 blo _037FE104 orr r1, r1, r1, lsl #8 tst r0, #2 beq _037FE0D4 strh r1, [r0], #2 subs r2, r2, #2 beq _037FE0D0 b _037FE0D4 _037FE0D0: bx lr _037FE0D4: orr r1, r1, r1, lsl #16 bics r3, r2, #3 beq _037FE0F4 sub r2, r2, r3 add ip, r3, r0 _037FE0E8: str r1, [r0], #4 cmp r0, ip blo _037FE0E8 _037FE0F4: tst r2, #2 bne _037FE100 b _037FE104 _037FE100: strh r1, [r0], #2 _037FE104: tst r2, #1 beq _037FE110 b _037FE114 _037FE110: bx lr _037FE114: ldrh r3, [r0] and r3, r3, #0xff00 and r1, r1, #0xff orr r1, r1, r3 strh r1, [r0] bx lr arm_func_end sub_037FE070 arm_func_start sub_037FE12C sub_037FE12C: ; 0x037FE12C cmp r2, #0 beq _037FE138 b _037FE13C _037FE138: bx lr _037FE13C: tst r1, #1 beq _037FE194 ldrh ip, [r1, #-1] and ip, ip, #0xff tst r0, #1 bne _037FE158 b _037FE15C _037FE158: ldrh r3, [r0, #-1] _037FE15C: bne _037FE164 b _037FE168 _037FE164: mov r3, r3, lsr #8 _037FE168: beq _037FE170 b _037FE174 _037FE170: ldrh r3, [r0] _037FE174: orr r3, ip, r3, lsl #8 strh r3, [r1, #-1] add r0, r0, #1 add r1, r1, #1 subs r2, r2, #1 beq _037FE190 b _037FE194 _037FE190: bx lr _037FE194: eor ip, r1, r0 tst ip, #1 beq _037FE1F0 bic r0, r0, #1 ldrh ip, [r0], #2 mov r3, ip, lsr #8 subs r2, r2, #2 blo _037FE1CC _037FE1B4: ldrh ip, [r0], #2 orr ip, r3, ip, lsl #8 strh ip, [r1], #2 mov r3, ip, lsr #0x10 subs r2, r2, #2 bhs _037FE1B4 _037FE1CC: tst r2, #1 beq _037FE1D8 b _037FE1DC _037FE1D8: bx lr _037FE1DC: ldrh ip, [r1] and ip, ip, #0xff00 orr ip, ip, r3 strh ip, [r1] bx lr _037FE1F0: tst ip, #2 beq _037FE21C bics r3, r2, #1 beq _037FE280 sub r2, r2, r3 add ip, r3, r1 _037FE208: ldrh r3, [r0], #2 strh r3, [r1], #2 cmp r1, ip blo _037FE208 b _037FE280 _037FE21C: cmp r2, #2 blo _037FE280 tst r1, #2 beq _037FE244 ldrh r3, [r0], #2 strh r3, [r1], #2 subs r2, r2, #2 beq _037FE240 b _037FE244 _037FE240: bx lr _037FE244: bics r3, r2, #3 beq _037FE264 sub r2, r2, r3 add ip, r3, r1 _037FE254: ldr r3, [r0], #4 str r3, [r1], #4 cmp r1, ip blo _037FE254 _037FE264: tst r2, #2 bne _037FE270 b _037FE274 _037FE270: ldrh r3, [r0], #2 _037FE274: bne _037FE27C b _037FE280 _037FE27C: strh r3, [r1], #2 _037FE280: tst r2, #1 beq _037FE28C b _037FE290 _037FE28C: bx lr _037FE290: ldrh r2, [r1] ldrh r0, [r0] and r2, r2, #0xff00 and r0, r0, #0xff orr r0, r2, r0 strh r0, [r1] bx lr arm_func_end sub_037FE12C arm_func_start sub_037FE2AC sub_037FE2AC: ; 0x037FE2AC .word 0xE1010090 bx lr arm_func_end sub_037FE2AC arm_func_start sub_037FE2B4 sub_037FE2B4: ; 0x037FE2B4 ldr ip, _037FE2BC ; =sub_037FE2C0 bx ip .align 2, 0 _037FE2BC: .word sub_037FE2C0 arm_func_end sub_037FE2B4 arm_func_start sub_037FE2C0 sub_037FE2C0: ; 0x037FE2C0 stmdb sp!, {r4, r5, r6, r7, r8, lr} bl sub_037FDD00 ldr r1, _037FE380 ; =_0380785C mov r4, r0 ldrh r0, [r1] cmp r0, #0 bne _037FE370 ldr r0, _037FE384 ; =0x027FFC00 mov r2, #1 strh r2, [r1] mov r2, #0 str r2, [r0, #0x38c] ldr r0, _037FE388 ; =_03807860 mov r1, r2 _037FE2F8: str r1, [r0, r2, lsl #2] add r2, r2, #1 cmp r2, #0x20 blt _037FE2F8 ldr r2, _037FE38C ; =0x0000C408 ldr r1, _037FE390 ; =0x04000184 mov r0, #0x40000 strh r2, [r1] bl sub_037FB964 ldr r1, _037FE394 ; =sub_037FE4A8 mov r0, #0x40000 bl sub_037FB7BC mov r0, #0x40000 bl sub_037FB8F0 mov r5, #8 ldr r8, _037FE398 ; =0x04000180 mov r6, r5 mov r7, #0x3e8 b _037FE368 _037FE344: mov r0, r5, lsl #8 strh r0, [r8] mov r0, r7 bl sub_037FDD64 ldrh r0, [r8] and r0, r0, #0xf cmp r0, r5 movne r5, r6 sub r5, r5, #1 _037FE368: cmp r5, #0 bge _037FE344 _037FE370: mov r0, r4 bl sub_037FDD14 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FE380: .word _0380785C _037FE384: .word 0x027FFC00 _037FE388: .word _03807860 _037FE38C: .word 0x0000C408 _037FE390: .word 0x04000184 _037FE394: .word sub_037FE4A8 _037FE398: .word 0x04000180 arm_func_end sub_037FE2C0 arm_func_start sub_037FE39C sub_037FE39C: ; 0x037FE39C stmdb sp!, {r3, r4, r5, lr} mov r4, r0 mov r5, r1 bl sub_037FDD00 ldr r1, _037FE3E4 ; =_03807860 ldr r3, _037FE3E8 ; =0x027FFC00 str r5, [r1, r4, lsl #2] cmp r5, #0 ldrne r2, [r3, #0x38c] mov r1, #1 orrne r1, r2, r1, lsl r4 ldreq r2, [r3, #0x38c] mvneq r1, r1, lsl r4 andeq r1, r2, r1 str r1, [r3, #0x38c] bl sub_037FDD14 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FE3E4: .word _03807860 _037FE3E8: .word 0x027FFC00 arm_func_end sub_037FE39C arm_func_start sub_037FE3EC sub_037FE3EC: ; 0x037FE3EC ldr r2, _037FE40C ; =0x027FFC00 mov r3, #1 add r1, r2, r1, lsl #2 ldr r1, [r1, #0x388] tst r1, r3, lsl r0 moveq r3, #0 mov r0, r3 bx lr .align 2, 0 _037FE40C: .word 0x027FFC00 arm_func_end sub_037FE3EC arm_func_start sub_037FE410 sub_037FE410: ; 0x037FE410 stmdb sp!, {r3, lr} ldr r3, [sp] and r0, r0, #0x1f bic r3, r3, #0x1f orr r0, r3, r0 bic r3, r0, #0x20 mov r0, r2, lsl #0x1f orr r0, r3, r0, lsr #26 and r0, r0, #0x3f orr r0, r0, r1, lsl #6 str r0, [sp] bl sub_037FE448 ldmia sp!, {r3, lr} bx lr arm_func_end sub_037FE410 arm_func_start sub_037FE448 sub_037FE448: ; 0x037FE448 stmdb sp!, {r4, lr} ldr r2, _037FE4A4 ; =0x04000184 mov r4, r0 ldrh r0, [r2] tst r0, #0x4000 ldrneh r1, [r2] mvnne r0, #0 orrne r1, r1, #0xc000 strneh r1, [r2] bne _037FE49C bl sub_037FDD00 ldr r2, _037FE4A4 ; =0x04000184 ldrh r1, [r2] tst r1, #2 beq _037FE490 bl sub_037FDD14 mvn r0, #1 b _037FE49C _037FE490: str r4, [r2, #4] bl sub_037FDD14 mov r0, #0 _037FE49C: ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FE4A4: .word 0x04000184 arm_func_end sub_037FE448 arm_func_start sub_037FE4A8 sub_037FE4A8: ; 0x037FE4A8 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #4 ldr r6, [sp] mvn r8, #3 ldr r4, _037FE580 ; =_03807860 ldr sb, _037FE584 ; =0x04000184 add sl, r8, #1 mov r7, #0x4100000 mov r5, #0 _037FE4CC: ldrh r0, [sb] tst r0, #0x4000 ldrneh r0, [sb] addne r1, r8, #1 orrne r0, r0, #0xc000 strneh r0, [sb] bne _037FE514 bl sub_037FDD00 ldrh r1, [sb] tst r1, #0x100 beq _037FE504 bl sub_037FDD14 mov r1, r8 b _037FE514 _037FE504: ldr r6, [r7] str r6, [sp] bl sub_037FDD14 mov r1, r5 _037FE514: cmp r1, r8 beq _037FE574 cmp r1, sl beq _037FE4CC mov r0, r6, lsl #0x1b movs r0, r0, lsr #0x1b beq _037FE4CC ldr r3, [r4, r0, lsl #2] cmp r3, #0 beq _037FE554 mov r2, r6, lsl #0x1a mov r1, r6, lsr #6 mov r2, r2, lsr #0x1f mov lr, pc bx r3 _037FE550: b _037FE4CC _037FE554: mov r0, r6, lsl #0x1a movs r0, r0, lsr #0x1f bne _037FE4CC orr r6, r6, #0x20 mov r0, r6 str r6, [sp] bl sub_037FE448 b _037FE4CC _037FE574: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} bx lr .align 2, 0 _037FE580: .word _03807860 _037FE584: .word 0x04000184 arm_func_end sub_037FE4A8 arm_func_start sub_037FE588 sub_037FE588: ; 0x037FE588 ldr r2, _037FE5A4 ; =0x04000134 mvn r3, r0 ldrh r0, [r2] and r0, r3, r0 orr r0, r1, r0 strh r0, [r2] bx lr .align 2, 0 _037FE5A4: .word 0x04000134 arm_func_end sub_037FE588 arm_func_start sub_037FE5A8 sub_037FE5A8: ; 0x037FE5A8 ldr ip, _037FE5BC ; =sub_037FE588 mov r0, r0, lsl #0x10 mov r1, r0, lsr #0x10 mov r0, #0xc000 bx ip .align 2, 0 _037FE5BC: .word sub_037FE588 arm_func_end sub_037FE5A8 arm_func_start sub_037FE5C0 sub_037FE5C0: ; 0x037FE5C0 stmdb sp!, {lr} sub sp, sp, #0xc bl sub_037FD1A4 cmp r0, #0 beq _037FE5E0 bl sub_037FD390 cmp r0, #0 bne _037FE5E8 _037FE5E0: mov r0, #0 b _037FE640 _037FE5E8: ldr r0, _037FE64C ; =_038078E0 ldr r0, [r0] cmp r0, #0 movne r0, #0 bne _037FE640 ldr r0, _037FE650 ; =_038078E4 bl sub_037FD3A0 bl sub_037FD21C ldr r2, _037FE654 ; =sub_037FE65C ldr r3, _037FE658 ; =0x0000082E str r2, [sp, #4] adds ip, r0, r3 mov lr, #0 str lr, [sp, #8] adc r2, r1, #0 ldr r0, _037FE650 ; =_038078E4 mov r1, ip str lr, [sp] bl sub_037FD54C ldr r1, _037FE64C ; =_038078E0 mov r0, #1 str r0, [r1] _037FE640: add sp, sp, #0xc ldmia sp!, {lr} bx lr .align 2, 0 _037FE64C: .word _038078E0 _037FE650: .word _038078E4 _037FE654: .word sub_037FE65C _037FE658: .word 0x0000082E arm_func_end sub_037FE5C0 arm_func_start sub_037FE65C sub_037FE65C: ; 0x037FE65C stmdb sp!, {r4, lr} mov r0, #0x8000 mov r4, #0 bl sub_037FE5A8 ldr r0, _037FE694 ; =0x04000136 ldrh r1, [r0] ldr r0, _037FE698 ; =0x027FFFA8 tst r1, #0x80 movne r4, #0x8000 and r1, r1, #0xb orr r1, r4, r1, lsl #10 strh r1, [r0] ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FE694: .word 0x04000136 _037FE698: .word 0x027FFFA8 arm_func_end sub_037FE65C arm_func_start sub_037FE69C sub_037FE69C: ; 0x037FE69C ldr r1, _037FE6B0 ; =0x04000501 ldrb r0, [r1] orr r0, r0, #0x80 strb r0, [r1] bx lr .align 2, 0 _037FE6B0: .word 0x04000501 arm_func_end sub_037FE69C arm_func_start sub_037FE6B4 sub_037FE6B4: ; 0x037FE6B4 stmdb sp!, {r3, r4, r5, lr} ldr r1, _037FE700 ; =0x04000501 mov r5, #0 ldrb r0, [r1] bic r0, r0, #0x80 strb r0, [r1] mov r4, #1 _037FE6D0: mov r0, r5 mov r1, r4 bl sub_037FEA20 add r5, r5, #1 cmp r5, #0x10 blt _037FE6D0 ldr r0, _037FE704 ; =0x04000508 mov r1, #0 strb r1, [r0] strb r1, [r0, #1] ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FE700: .word 0x04000501 _037FE704: .word 0x04000508 arm_func_end sub_037FE6B4 arm_func_start sub_037FE708 sub_037FE708: ; 0x037FE708 stmdb sp!, {r3, lr} ldr r2, _037FE74C ; =0x04000501 mov r0, #0x80 ldrb r1, [r2] bic r1, r1, #0x80 strb r1, [r2] bl sub_037FE754 mov r0, #0x40000 bl sub_037FDD64 mov r0, #1 bl sub_03804D64 ldr r1, _037FE750 ; =0x04000304 ldrh r0, [r1] bic r0, r0, #1 strh r0, [r1] ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FE74C: .word 0x04000501 _037FE750: .word 0x04000304 arm_func_end sub_037FE708 arm_func_start sub_037FE754 sub_037FE754: ; 0x037FE754 ldr ip, _037FE75C ; =sub_038037E6 bx ip .align 2, 0 _037FE75C: .word sub_038037E6 + 1 arm_func_end sub_037FE754 arm_func_start sub_037FE760 sub_037FE760: ; 0x037FE760 stmdb sp!, {r3, lr} ldr r2, _037FE7A4 ; =0x04000304 mov r0, #1 ldrh r1, [r2] orr r1, r1, #1 strh r1, [r2] bl sub_03804D40 mov r0, #0x100 bl sub_037FE7B0 ldr r0, _037FE7A8 ; =0x0007AB80 bl sub_037FDD64 ldr r1, _037FE7AC ; =0x04000501 ldrb r0, [r1] orr r0, r0, #0x80 strb r0, [r1] ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FE7A4: .word 0x04000304 _037FE7A8: .word 0x0007AB80 _037FE7AC: .word 0x04000501 arm_func_end sub_037FE760 arm_func_start sub_037FE7B0 sub_037FE7B0: ; 0x037FE7B0 ldr ip, _037FE7B8 ; =sub_038037DE bx ip .align 2, 0 _037FE7B8: .word sub_038037DE + 1 arm_func_end sub_037FE7B0 arm_func_start sub_037FE7BC sub_037FE7BC: ; 0x037FE7BC ldr r1, _037FE7C8 ; =0x04000500 strb r0, [r1] bx lr .align 2, 0 _037FE7C8: .word 0x04000500 arm_func_end sub_037FE7BC arm_func_start sub_037FE7CC sub_037FE7CC: ; 0x037FE7CC ldr ip, _037FE800 ; =0x04000501 mov r3, r3, lsl #5 ldrb ip, [ip] tst ip, #0x80 movne ip, #1 moveq ip, #0 orr r3, r3, ip, lsl #7 orr r2, r3, r2, lsl #4 orr r2, r2, r1, lsl #2 ldr r1, _037FE800 ; =0x04000501 orr r0, r0, r2 strb r0, [r1] bx lr .align 2, 0 _037FE800: .word 0x04000501 arm_func_end sub_037FE7CC arm_func_start sub_037FE804 sub_037FE804: ; 0x037FE804 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r4, _037FE8BC ; =_03807558 mov r8, r1 ldr lr, [r4] ldr r1, _037FE8C0 ; =_03807910 mov r7, r2 ldr r5, [sp, #0x2c] ldr r4, _037FE8C4 ; =_03807914 ldr ip, [sp, #0x20] ldr r2, _037FE8C8 ; =_03807924 strb r5, [r4, r0] cmp lr, #0 ldr r1, [r1] movge r5, lr mov r6, r3 mov r4, r0, lsl #4 strb ip, [r2, r0] cmp r1, #0 ble _037FE870 ldr r1, _037FE8CC ; =0x0000FFF5 mov r2, #1 tst r1, r2, lsl r0 beq _037FE870 mov r0, ip mov r1, r5 bl sub_037FEC40 mov ip, r0 _037FE870: ldr r2, [sp, #0x24] mov r0, r6, lsl #0x1b orr r0, r0, r7, lsl #29 orr r1, r0, r5, lsl #16 ldr r0, [sp, #0x28] orr r2, r1, r2, lsl #8 add r1, r4, #0x4000000 orr r2, ip, r2 str r2, [r1, #0x400] ldr r3, [sp, #0x18] rsb r2, r0, #0x10000 add r0, r1, #0x400 strh r2, [r0, #8] ldr r2, [sp, #0x1c] strh r3, [r0, #0xa] str r2, [r1, #0x40c] str r8, [r1, #0x404] ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FE8BC: .word _03807558 _037FE8C0: .word _03807910 _037FE8C4: .word _03807914 _037FE8C8: .word _03807924 _037FE8CC: .word 0x0000FFF5 arm_func_end sub_037FE804 arm_func_start sub_037FE8D0 sub_037FE8D0: ; 0x037FE8D0 stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r4, _037FE968 ; =_03807558 mov r7, r1 ldr ip, [r4] ldr r1, _037FE96C ; =_03807910 mov r6, r3 ldr r3, _037FE970 ; =_03807924 ldr r5, [sp, #0x1c] ldr r4, _037FE974 ; =_03807914 ldr r1, [r1] strb r5, [r4, r0] cmp ip, #0 movge r5, ip mov r4, r0, lsl #4 strb r2, [r3, r0] cmp r1, #0 ble _037FE934 ldr r1, _037FE978 ; =0x0000FFF5 mov r3, #1 tst r1, r3, lsl r0 beq _037FE934 mov r0, r2 mov r1, r5 bl sub_037FEC40 mov r2, r0 _037FE934: mov r0, r7, lsl #0x18 orr r0, r0, #0x60000000 orr r0, r0, r5, lsl #16 ldr r1, [sp, #0x18] orr r3, r0, r6, lsl #8 add r0, r4, #0x4000000 orr r2, r2, r3 str r2, [r0, #0x400] rsb r1, r1, #0x10000 add r0, r0, #0x400 strh r1, [r0, #8] ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FE968: .word _03807558 _037FE96C: .word _03807910 _037FE970: .word _03807924 _037FE974: .word _03807914 _037FE978: .word 0x0000FFF5 arm_func_end sub_037FE8D0 arm_func_start sub_037FE97C sub_037FE97C: ; 0x037FE97C stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r4, _037FEA0C ; =_03807558 mov r7, r2 ldr ip, [r4] ldr r2, _037FEA10 ; =_03807910 mov r6, r3 ldr r3, _037FEA14 ; =_03807924 ldr r5, [sp, #0x18] ldr r4, _037FEA18 ; =_03807914 ldr r2, [r2] strb r5, [r4, r0] cmp ip, #0 movge r5, ip mov r4, r0, lsl #4 strb r1, [r3, r0] cmp r2, #0 ble _037FE9E0 ldr r2, _037FEA1C ; =0x0000FFF5 mov r3, #1 tst r2, r3, lsl r0 beq _037FE9E0 mov r0, r1 mov r1, r5 bl sub_037FEC40 mov r1, r0 _037FE9E0: mov r0, r5, lsl #0x10 orr r0, r0, #0x60000000 orr r2, r0, r7, lsl #8 add r0, r4, #0x4000000 orr r1, r1, r2 str r1, [r0, #0x400] rsb r1, r6, #0x10000 add r0, r0, #0x400 strh r1, [r0, #8] ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _037FEA0C: .word _03807558 _037FEA10: .word _03807910 _037FEA14: .word _03807924 _037FEA18: .word _03807914 _037FEA1C: .word 0x0000FFF5 arm_func_end sub_037FE97C arm_func_start sub_037FEA20 sub_037FEA20: ; 0x037FEA20 mov r3, r0, lsl #4 add r0, r3, #0x4000000 ldr r2, [r0, #0x400] add r0, r3, #0x400 tst r1, #1 bic r1, r2, #0x80000000 add r0, r0, #0x4000000 orrne r1, r1, #0x8000 str r1, [r0] bx lr arm_func_end sub_037FEA20 arm_func_start sub_037FEA48 sub_037FEA48: ; 0x037FEA48 stmdb sp!, {r3, r4, r5, lr} ldr r3, _037FEAB4 ; =_03807910 ldr ip, _037FEAB8 ; =_03807924 ldr r3, [r3] mov r5, r0 mov r4, r2 strb r1, [ip, r5] cmp r3, #0 ble _037FEA98 ldr r0, _037FEABC ; =0x0000FFF5 mov r2, #1 tst r0, r2, lsl r5 beq _037FEA98 mov r0, r5, lsl #4 add r0, r0, #0x4000000 ldrb r2, [r0, #0x402] mov r0, r1 mov r1, r2 bl sub_037FEC40 mov r1, r0 _037FEA98: mov r0, r5, lsl #4 add r0, r0, #0x4000000 orr r1, r1, r4, lsl #8 add r0, r0, #0x400 strh r1, [r0] ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _037FEAB4: .word _03807910 _037FEAB8: .word _03807924 _037FEABC: .word 0x0000FFF5 arm_func_end sub_037FEA48 arm_func_start sub_037FEAC0 sub_037FEAC0: ; 0x037FEAC0 mov r0, r0, lsl #4 add r0, r0, #0x4000000 rsb r1, r1, #0x10000 add r0, r0, #0x400 strh r1, [r0, #8] bx lr arm_func_end sub_037FEAC0 arm_func_start sub_037FEAD8 sub_037FEAD8: ; 0x037FEAD8 stmdb sp!, {r4, lr} ldr r2, _037FEB3C ; =_03807558 ldr r3, _037FEB40 ; =_03807914 ldr r2, [r2] strb r1, [r3, r0] cmp r2, #0 ldr r3, _037FEB44 ; =_03807910 mov r4, r0, lsl #4 movge r1, r2 add r2, r4, #0x4000000 strb r1, [r2, #0x402] ldr r2, [r3] cmp r2, #0 ble _037FEB34 ldr r2, _037FEB48 ; =0x0000FFF5 mov r3, #1 tst r2, r3, lsl r0 beq _037FEB34 ldr r2, _037FEB4C ; =_03807924 ldrb r0, [r2, r0] bl sub_037FEC40 add r1, r4, #0x4000000 strb r0, [r1, #0x400] _037FEB34: ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FEB3C: .word _03807558 _037FEB40: .word _03807914 _037FEB44: .word _03807910 _037FEB48: .word 0x0000FFF5 _037FEB4C: .word _03807924 arm_func_end sub_037FEAD8 arm_func_start sub_037FEB50 sub_037FEB50: ; 0x037FEB50 mov r0, r0, lsl #4 add r0, r0, #0x4000000 ldrb r0, [r0, #0x403] tst r0, #0x80 movne r0, #1 moveq r0, #0 bx lr arm_func_end sub_037FEB50 arm_func_start sub_037FEB6C sub_037FEB6C: ; 0x037FEB6C ldr r1, _037FEBC8 ; =_03807558 cmp r0, #0 str r0, [r1] blt _037FEBA0 mov r2, #0 and r1, r0, #0xff _037FEB84: mov r0, r2, lsl #4 add r0, r0, #0x4000000 add r2, r2, #1 strb r1, [r0, #0x402] cmp r2, #0x10 blt _037FEB84 bx lr _037FEBA0: ldr r2, _037FEBCC ; =_03807914 mov r3, #0 _037FEBA8: ldrb r1, [r2, r3] mov r0, r3, lsl #4 add r0, r0, #0x4000000 add r3, r3, #1 strb r1, [r0, #0x402] cmp r3, #0x10 blt _037FEBA8 bx lr .align 2, 0 _037FEBC8: .word _03807558 _037FEBCC: .word _03807914 arm_func_end sub_037FEB6C arm_func_start sub_037FEBD0 sub_037FEBD0: ; 0x037FEBD0 mov r0, r0, lsl #4 add r0, r0, #0x4000000 ldr r0, [r0, #0x400] bx lr arm_func_end sub_037FEBD0 arm_func_start sub_037FEBE0 sub_037FEBE0: ; 0x037FEBE0 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r1, _037FEC34 ; =_03807910 ldr r5, _037FEC38 ; =_03807924 ldr r4, _037FEC3C ; =0x0000FFF5 str r0, [r1] mov r7, #0 mov r6, #1 _037FEBFC: tst r4, r6, lsl r7 beq _037FEC20 mov r8, r7, lsl #4 add r0, r8, #0x4000000 ldrb r1, [r0, #0x402] ldrb r0, [r5, r7] bl sub_037FEC40 add r1, r8, #0x4000000 strb r0, [r1, #0x400] _037FEC20: add r7, r7, #1 cmp r7, #0x10 blt _037FEBFC ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _037FEC34: .word _03807910 _037FEC38: .word _03807924 _037FEC3C: .word 0x0000FFF5 arm_func_end sub_037FEBE0 arm_func_start sub_037FEC40 sub_037FEC40: ; 0x037FEC40 cmp r1, #0x18 bge _037FEC70 ldr r2, _037FECA4 ; =_03807910 add r3, r1, #0x28 ldr ip, [r2] ldr r1, _037FECA8 ; =0x00007FFF mul r2, ip, r3 sub r1, r1, ip add r1, r2, r1, lsl #6 mul r1, r0, r1 mov r0, r1, asr #0x15 bx lr _037FEC70: cmp r1, #0x68 bxle lr ldr r2, _037FECA4 ; =_03807910 sub r1, r1, #0x28 ldr ip, [r2] rsb r2, ip, #0 mul r3, r2, r1 add r1, ip, #0xff add r1, r1, #0x7f00 add r1, r3, r1, lsl #6 mul r1, r0, r1 mov r0, r1, asr #0x15 bx lr .align 2, 0 _037FECA4: .word _03807910 _037FECA8: .word 0x00007FFF arm_func_end sub_037FEC40 arm_func_start sub_037FECAC sub_037FECAC: ; 0x037FECAC stmdb sp!, {r4, r5, r6, lr} mov r5, r0 rsb r0, r1, #0 mov r4, #0 b _037FECC8 _037FECC0: sub r4, r4, #1 add r0, r0, #0x300 _037FECC8: cmp r0, #0 blt _037FECC0 b _037FECDC _037FECD4: add r4, r4, #1 sub r0, r0, #0x300 _037FECDC: cmp r0, #0x300 bge _037FECD4 bl sub_037FEDCC adds r3, r0, #0x10000 mov r0, r5, asr #0x1f umull r2, r1, r3, r5 mov ip, #0 mla r1, r3, r0, r1 adc r3, ip, #0 sub r0, r4, #0x10 mla r1, r3, r5, r1 cmp r0, #0 mov r4, #0x10000 bgt _037FED34 rsb r3, r0, #0 mov r4, r2, lsr r3 rsb r0, r3, #0x20 orr r4, r4, r1, lsl r0 sub r0, r3, #0x20 mov r3, r1, lsr r3 orr r4, r4, r1, lsr r0 b _037FED90 _037FED34: cmp r0, #0x20 bge _037FED88 rsb r5, r0, #0x20 sub lr, ip, #1 mov r6, lr, lsl r5 rsb r3, r5, #0x20 orr r6, r6, lr, lsr r3 sub r3, r5, #0x20 orr r6, r6, lr, lsl r3 and r3, r1, r6 and r6, r2, lr, lsl r5 cmp r3, ip cmpeq r6, ip subne r0, r4, #1 bne _037FEDC0 mov r3, r1, lsl r0 orr r3, r3, r2, lsr r5 sub r1, r0, #0x20 mov r4, r2, lsl r0 orr r3, r3, r2, lsl r1 b _037FED90 _037FED88: sub r0, r4, #1 b _037FEDC0 _037FED90: mov r0, #0x10 cmp r3, #0 cmpeq r4, #0x10 mov r1, #0 movlo r4, r0 blo _037FEDB8 ldr r0, _037FEDC8 ; =0x0000FFFF cmp r3, r1 cmpeq r4, r0 movhi r4, r0 _037FEDB8: mov r0, r4, lsl #0x10 mov r0, r0, lsr #0x10 _037FEDC0: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _037FEDC8: .word 0x0000FFFF arm_func_end sub_037FECAC arm_func_start sub_037FEDCC sub_037FEDCC: ; 0x037FEDCC ldr ip, _037FEDD4 ; =sub_03803828 bx ip .align 2, 0 _037FEDD4: .word sub_03803828 + 1 arm_func_end sub_037FEDCC arm_func_start sub_037FEDD8 sub_037FEDD8: ; 0x037FEDD8 stmdb sp!, {r4, lr} ldr r1, _037FEE48 ; =0xFFFFFD2D mov r4, r0 cmp r4, r1 movlt r4, r1 blt _037FEDF8 cmp r4, #0 movgt r4, #0 _037FEDF8: add r0, r4, #0xd3 add r0, r0, #0x200 bl sub_037FEE4C mvn r2, #0xef cmp r4, r2 movlt r1, #3 blt _037FEE34 add r1, r2, #0x78 cmp r4, r1 movlt r1, #2 blt _037FEE34 add r1, r2, #0xb4 cmp r4, r1 movlt r1, #1 movge r1, #0 _037FEE34: orr r0, r0, r1, lsl #8 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FEE48: .word 0xFFFFFD2D arm_func_end sub_037FEDD8 arm_func_start sub_037FEE4C sub_037FEE4C: ; 0x037FEE4C ldr ip, _037FEE54 ; =sub_0380382C bx ip .align 2, 0 _037FEE54: .word sub_0380382C + 1 arm_func_end sub_037FEE4C arm_func_start sub_037FEE58 sub_037FEE58: ; 0x037FEE58 cmp r0, #0x20 ldrlt r1, _037FEEC0 ; =_03806FB8 ldrltsb r0, [r1, r0] bxlt lr cmp r0, #0x40 ldrlt r1, _037FEEC0 ; =_03806FB8 rsblt r0, r0, #0x40 ldrltsb r0, [r1, r0] bxlt lr cmp r0, #0x60 bge _037FEEA0 ldr r1, _037FEEC0 ; =_03806FB8 sub r0, r0, #0x40 ldrsb r0, [r1, r0] rsb r0, r0, #0 mov r0, r0, lsl #0x18 mov r0, r0, asr #0x18 bx lr _037FEEA0: ldr r1, _037FEEC0 ; =_03806FB8 sub r0, r0, #0x60 rsb r0, r0, #0x20 ldrsb r0, [r1, r0] rsb r0, r0, #0 mov r0, r0, lsl #0x18 mov r0, r0, asr #0x18 bx lr .align 2, 0 _037FEEC0: .word _03806FB8 arm_func_end sub_037FEE58 arm_func_start sub_037FEEC4 sub_037FEEC4: ; 0x037FEEC4 ldr r2, _037FEEEC ; =_0380755C ldr r0, _037FEEF0 ; =0x0019660D ldr r3, [r2] ldr r1, _037FEEF4 ; =0x3C6EF35F mla r1, r3, r0, r1 mov r0, r1, lsr #0x10 mov r0, r0, lsl #0x10 str r1, [r2] mov r0, r0, lsr #0x10 bx lr .align 2, 0 _037FEEEC: .word _0380755C _037FEEF0: .word 0x0019660D _037FEEF4: .word 0x3C6EF35F arm_func_end sub_037FEEC4 arm_func_start sub_037FEEF8 sub_037FEEF8: ; 0x037FEEF8 stmdb sp!, {r4, lr} sub sp, sp, #8 ldr r1, _037FEF54 ; =_03807934 mov r4, r0 ldr r0, [r1] cmp r0, #0 bne _037FEF48 mov r0, #1 str r0, [r1] bl sub_03801ED8 mov r0, #0x400 str r0, [sp] ldr r0, _037FEF58 ; =_038079A4 ldr r1, _037FEF5C ; =sub_037FF008 ldr r3, _037FEF60 ; =_03807E48 mov r2, #0 str r4, [sp, #4] bl sub_037FC054 ldr r0, _037FEF58 ; =_038079A4 bl sub_037FC36C _037FEF48: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr .align 2, 0 _037FEF54: .word _03807934 _037FEF58: .word _038079A4 _037FEF5C: .word sub_037FF008 _037FEF60: .word _03807E48 arm_func_end sub_037FEEF8 arm_func_start sub_037FEF64 sub_037FEF64: ; 0x037FEF64 stmdb sp!, {lr} sub sp, sp, #0xc bl sub_037FD21C ldr r3, _037FEFA8 ; =sub_037FEFEC adds ip, r0, #0x10000 str r3, [sp, #4] mov lr, #0 str lr, [sp, #8] adc r2, r1, #0 ldr r3, _037FEFAC ; =0x00000AA8 ldr r0, _037FEFB0 ; =_03807978 mov r1, ip str lr, [sp] bl sub_037FD54C add sp, sp, #0xc ldmia sp!, {lr} bx lr .align 2, 0 _037FEFA8: .word sub_037FEFEC _037FEFAC: .word 0x00000AA8 _037FEFB0: .word _03807978 arm_func_end sub_037FEF64 arm_func_start sub_037FEFB4 sub_037FEFB4: ; 0x037FEFB4 ldr ip, _037FEFC0 ; =sub_037FD5C0 ldr r0, _037FEFC4 ; =_03807978 bx ip .align 2, 0 _037FEFC0: .word sub_037FD5C0 _037FEFC4: .word _03807978 arm_func_end sub_037FEFB4 arm_func_start sub_037FEFC8 sub_037FEFC8: ; 0x037FEFC8 ldr ip, _037FEFDC ; =sub_037FC6D4 ldr r0, _037FEFE0 ; =_03807958 mov r1, #2 mov r2, #0 bx ip .align 2, 0 _037FEFDC: .word sub_037FC6D4 _037FEFE0: .word _03807958 arm_func_end sub_037FEFC8 arm_func_start sub_037FEFE4 sub_037FEFE4: ; 0x037FEFE4 bx lr arm_func_end sub_037FEFE4 arm_func_start sub_037FEFE8 sub_037FEFE8: ; 0x037FEFE8 bx lr arm_func_end sub_037FEFE8 arm_func_start sub_037FEFEC sub_037FEFEC: ; 0x037FEFEC ldr ip, _037FF000 ; =sub_037FC6D4 ldr r0, _037FF004 ; =_03807958 mov r1, #1 mov r2, #0 bx ip .align 2, 0 _037FF000: .word sub_037FC6D4 _037FF004: .word _03807958 arm_func_end sub_037FEFEC arm_func_start sub_037FF008 sub_037FF008: ; 0x037FF008 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0x10 ldr r0, _037FF0E8 ; =_03807958 ldr r1, _037FF0EC ; =_03807938 mov r2, #8 bl sub_037FC6AC ldr r0, _037FF0F0 ; =_03807978 bl sub_037FD3A0 bl sub_037FF164 bl sub_037FFEF0 bl sub_03801D24 bl sub_037FE69C mov r0, #0 mov r1, r0 mov r2, r0 mov r3, r0 bl sub_037FE7CC mov r0, #0x7f bl sub_037FE7BC bl sub_037FD21C ldr r2, _037FF0F4 ; =sub_037FEFEC adds r4, r0, #0x10000 str r2, [sp, #4] mov r0, #0 str r0, [sp, #8] str r0, [sp] adc r2, r1, #0 ldr r3, _037FF0F8 ; =0x00000AA8 ldr r0, _037FF0F0 ; =_03807978 mov r1, r4 bl sub_037FD54C ldr r7, _037FF0E8 ; =_03807958 mov r4, #1 add r6, sp, #0xc mov r8, #0 mov r5, r4 _037FF098: mov r0, r7 mov r1, r6 mov r2, r5 mov sb, r8 bl sub_037FC760 ldr r0, [sp, #0xc] cmp r0, #1 beq _037FF0C0 cmp r0, #2 b _037FF0C4 _037FF0C0: mov sb, r4 _037FF0C4: bl sub_037FF1C0 bl sub_03801F1C mov r0, sb bl sub_037FFF54 mov r0, sb bl sub_037FF3AC bl sub_03801C8C bl sub_037FEEC4 b _037FF098 .align 2, 0 _037FF0E8: .word _03807958 _037FF0EC: .word _03807938 _037FF0F0: .word _03807978 _037FF0F4: .word sub_037FEFEC _037FF0F8: .word 0x00000AA8 arm_func_end sub_037FF008 arm_func_start sub_037FF0FC sub_037FF0FC: ; 0x037FF0FC stmdb sp!, {r3, r4, r5, lr} ldr r4, [sp, #0x10] mov r5, r0, lsl #3 cmp r4, #0 movne r4, #0 moveq r4, #1 mov ip, r4, lsl #2 ldr lr, [sp, #0x14] orr r1, ip, r1, lsl #3 orr ip, r1, lr, lsl #1 ldr r4, [sp, #0x18] add r0, r0, #0x4000000 orr r4, r4, ip strb r4, [r0, #0x508] add r1, r5, #0x4000000 str r2, [r1, #0x510] add r0, r1, #0x500 strh r3, [r0, #0x14] ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_037FF0FC arm_func_start sub_037FF14C sub_037FF14C: ; 0x037FF14C add r0, r0, #0x4000000 ldrb r0, [r0, #0x508] tst r0, #0x80 movne r0, #1 moveq r0, #0 bx lr arm_func_end sub_037FF14C arm_func_start sub_037FF164 sub_037FF164: ; 0x037FF164 stmdb sp!, {r3, lr} ldr r3, _037FF1B8 ; =_03807E70 mov lr, #0 mov r0, #0x54 _037FF174: mul r1, lr, r0 add ip, r3, r1 strb lr, [r3, r1] ldrb r1, [ip, #3] add lr, lr, #1 bic r2, r1, #0xf8 and r1, r2, #0xff bic r1, r1, #1 strb r1, [ip, #3] cmp lr, #0x10 blt _037FF174 ldr r0, _037FF1BC ; =_03807E48 mov r1, #0 str r1, [r0, #4] str r1, [r0] ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FF1B8: .word _03807E70 _037FF1BC: .word _03807E48 arm_func_end sub_037FF164 arm_func_start sub_037FF1C0 sub_037FF1C0: ; 0x037FF1C0 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #0x18 ldr r7, _037FF3A8 ; =_03807E70 mov sb, #0 mov r4, #2 mov r5, #1 mov r6, sb mov sl, #0x54 _037FF1E0: mla r8, sb, sl, r7 ldrb r0, [r8, #3] mov r0, r0, lsl #0x18 movs r0, r0, lsr #0x1b beq _037FF340 tst r0, #2 beq _037FF208 mov r0, sb mov r1, r6 bl sub_037FEA20 _037FF208: ldrb r0, [r8, #3] mov r0, r0, lsl #0x18 mov r0, r0, lsr #0x1b tst r0, #1 beq _037FF2E4 ldrb r0, [r8, #1] cmp r0, #0 beq _037FF23C cmp r0, #1 beq _037FF294 cmp r0, #2 beq _037FF2C0 b _037FF340 _037FF23C: ldrb r0, [r8, #0x39] ldrh ip, [r8, #0x24] cmp r0, #0 ldrh r0, [r8, #0x3e] movne r3, r5 str r0, [sp] ldr r2, [r8, #0x40] and r1, ip, #0xff str r2, [sp, #4] str r1, [sp, #8] mov r0, ip, asr #8 str r0, [sp, #0xc] ldrh r1, [r8, #0x26] moveq r3, r4 str r1, [sp, #0x10] ldrb r1, [r8, #0x23] mov r0, sb str r1, [sp, #0x14] ldr r1, [r8, #0x44] ldrb r2, [r8, #0x38] bl sub_037FE804 b _037FF340 _037FF294: ldrh r3, [r8, #0x24] ldrh r1, [r8, #0x26] mov r0, sb str r1, [sp] ldrb r1, [r8, #0x23] and r2, r3, #0xff str r1, [sp, #4] ldr r1, [r8, #0x44] mov r3, r3, asr #8 bl sub_037FE8D0 b _037FF340 _037FF2C0: ldrh r2, [r8, #0x24] ldrb r1, [r8, #0x23] mov r0, sb str r1, [sp] ldrh r3, [r8, #0x26] and r1, r2, #0xff mov r2, r2, asr #8 bl sub_037FE97C b _037FF340 _037FF2E4: tst r0, #4 beq _037FF2F8 ldrh r1, [r8, #0x26] mov r0, sb bl sub_037FEAC0 _037FF2F8: ldrb r0, [r8, #3] mov r0, r0, lsl #0x18 mov r0, r0, lsr #0x1b tst r0, #8 beq _037FF320 ldrh r2, [r8, #0x24] mov r0, sb and r1, r2, #0xff mov r2, r2, asr #8 bl sub_037FEA48 _037FF320: ldrb r0, [r8, #3] mov r0, r0, lsl #0x18 mov r0, r0, lsr #0x1b tst r0, #0x10 beq _037FF340 ldrb r1, [r8, #0x23] mov r0, sb bl sub_037FEAD8 _037FF340: add sb, sb, #1 cmp sb, #0x10 blt _037FF1E0 ldr r3, _037FF3A8 ; =_03807E70 mov r4, #0 mov r1, #0x54 _037FF358: mla r5, r4, r1, r3 ldrb r0, [r5, #3] mov r0, r0, lsl #0x18 movs r0, r0, lsr #0x1b beq _037FF390 tst r0, #1 movne r0, r4, lsl #4 addne r0, r0, #0x4000000 ldrneb r2, [r0, #0x403] orrne r2, r2, #0x80 strneb r2, [r0, #0x403] ldrb r0, [r5, #3] bic r0, r0, #0xf8 strb r0, [r5, #3] _037FF390: add r4, r4, #1 cmp r4, #0x10 blt _037FF358 add sp, sp, #0x18 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} bx lr .align 2, 0 _037FF3A8: .word _03807E70 arm_func_end sub_037FF1C0 arm_func_start sub_037FF3AC sub_037FF3AC: ; 0x037FF3AC stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov fp, #0x8000 mov sl, r0 mov r5, #0 rsb fp, fp, #0 _037FF3C0: ldr r0, _037FF750 ; =_03807E70 mov r1, #0x54 mla r4, r5, r1, r0 ldrb r2, [r4, #3] mov r6, #0 mov r0, r2, lsl #0x1f mov r7, r6 mov r8, r6 movs r0, r0, lsr #0x1f beq _037FF73C mov r0, r2, lsl #0x1e movs r0, r0, lsr #0x1f beq _037FF424 bic r1, r2, #0xf8 mov r0, r2, lsl #0x18 mov r0, r0, lsr #0x1b orr r0, r0, #1 and r0, r0, #0xff mov r0, r0, lsl #0x1b orr r0, r1, r0, lsr #24 strb r0, [r4, #3] and r0, r0, #0xff bic r0, r0, #2 strb r0, [r4, #3] b _037FF474 _037FF424: mov r0, r5 bl sub_037FEB50 cmp r0, #0 bne _037FF474 ldr r3, [r4, #0x48] cmp r3, #0 moveq r0, r6 streqb r0, [r4, #0x22] beq _037FF45C ldr r2, [r4, #0x4c] mov r0, r4 mov r1, #1 mov lr, pc bx r3 _037FF45C: mov r0, #0 strh r0, [r4, #0x24] ldrb r0, [r4, #3] bic r0, r0, #1 strb r0, [r4, #3] b _037FF73C _037FF474: ldrb r0, [r4, #9] ldrb r1, [r4, #8] mov r2, r0, lsl #1 ldr r0, _037FF754 ; =_03806FDC ldrsh r2, [r0, r2] ldrb r0, [r4, #5] add r6, r6, r2 sub r0, r1, r0 add r7, r7, r0, lsl #6 mov r0, r4 mov r1, sl bl sub_037FF82C ldrsh r3, [r4, #0x32] add r6, r6, r0 cmp r3, #0 moveq r0, #0 beq _037FF4FC ldr r0, [r4, #0x14] ldr r2, [r4, #0x18] cmp r0, r2 movge r0, #0 bge _037FF4FC sub r0, r2, r0 smull r0, r1, r3, r0 mov r3, r2, asr #0x1f bl sub_038069D0 cmp sl, #0 beq _037FF4FC ldrb r1, [r4, #3] mov r1, r1, lsl #0x1d movs r1, r1, lsr #0x1f ldrne r1, [r4, #0x14] addne r1, r1, #1 strne r1, [r4, #0x14] _037FF4FC: ldrsh r1, [r4, #0xc] add r2, r7, r0 ldrsh r0, [r4, #6] add r1, r6, r1 add r6, r1, r0 ldrsh r1, [r4, #0xe] add r0, r4, #0x28 add r7, r2, r1 bl sub_037FFE14 mov r1, r0, asr #0x1f cmp r1, #0 mov sb, r0 cmpeq r0, #0 beq _037FF590 ldrb r2, [r4, #0x28] cmp r2, #0 beq _037FF57C cmp r2, #1 beq _037FF55C cmp r2, #2 moveq r1, r1, lsl #6 orreq r1, r1, r0, lsr #26 moveq sb, r0, lsl #6 b _037FF588 _037FF55C: mov r2, #0x3c umull sb, r3, r0, r2 mov r2, #0 mla r3, r0, r2, r3 mov r0, #0x3c mla r3, r1, r0, r3 mov r1, r3 b _037FF588 _037FF57C: mov r1, r1, lsl #6 orr r1, r1, r0, lsr #26 mov sb, r0, lsl #6 _037FF588: mov sb, sb, lsr #0xe orr sb, sb, r1, lsl #18 _037FF590: cmp sl, #0 beq _037FF5A0 add r0, r4, #0x28 bl sub_037FFDB4 _037FF5A0: ldrb r0, [r4, #0x28] cmp r0, #0 beq _037FF5CC cmp r0, #1 beq _037FF5C0 cmp r0, #2 addeq r8, r8, sb b _037FF5D0 _037FF5C0: cmp r6, fp addgt r6, r6, sb b _037FF5D0 _037FF5CC: add r7, r7, sb _037FF5D0: ldrsb r1, [r4, #0xa] ldrb r0, [r4, #4] add r8, r8, r1 cmp r0, #0x7f mulne r0, r8, r0 addne r0, r0, #0x40 movne r8, r0, asr #7 ldrsb r1, [r4, #0xb] ldrb r0, [r4, #2] add r8, r8, r1 cmp r0, #3 bne _037FF65C ldr r0, _037FF758 ; =0xFFFFFD2D cmp r6, r0 bgt _037FF65C ldrb r0, [r4, #3] bic r0, r0, #0xf8 orr r0, r0, #0x10 strb r0, [r4, #3] ldr r3, [r4, #0x48] cmp r3, #0 moveq r0, #0 streqb r0, [r4, #0x22] beq _037FF644 ldr r2, [r4, #0x4c] mov r0, r4 mov r1, #1 mov lr, pc bx r3 _037FF644: mov r0, #0 strh r0, [r4, #0x24] ldrb r0, [r4, #3] bic r0, r0, #1 strb r0, [r4, #3] b _037FF73C _037FF65C: mov r0, r6 bl sub_037FEDD8 mov r6, r0 ldrh r0, [r4, #0x3c] mov r1, r7 bl sub_037FECAC ldrb r1, [r4, #1] cmp r1, #1 ldreq r1, _037FF75C ; =0x0000FFFC andeq r0, r0, r1 moveq r0, r0, lsl #0x10 moveq r0, r0, lsr #0x10 adds r8, r8, #0x40 movmi r8, #0 bmi _037FF6A0 cmp r8, #0x7f movgt r8, #0x7f _037FF6A0: ldrh r1, [r4, #0x24] cmp r6, r1 beq _037FF6D4 strh r6, [r4, #0x24] ldrb r1, [r4, #3] bic r2, r1, #0xf8 mov r1, r1, lsl #0x18 mov r1, r1, lsr #0x1b orr r1, r1, #8 and r1, r1, #0xff mov r1, r1, lsl #0x1b orr r1, r2, r1, lsr #24 strb r1, [r4, #3] _037FF6D4: ldrh r1, [r4, #0x26] cmp r0, r1 beq _037FF708 strh r0, [r4, #0x26] ldrb r0, [r4, #3] bic r1, r0, #0xf8 mov r0, r0, lsl #0x18 mov r0, r0, lsr #0x1b orr r0, r0, #4 and r0, r0, #0xff mov r0, r0, lsl #0x1b orr r0, r1, r0, lsr #24 strb r0, [r4, #3] _037FF708: ldrb r0, [r4, #0x23] cmp r8, r0 beq _037FF73C strb r8, [r4, #0x23] ldrb r0, [r4, #3] bic r1, r0, #0xf8 mov r0, r0, lsl #0x18 mov r0, r0, lsr #0x1b orr r0, r0, #0x10 and r0, r0, #0xff mov r0, r0, lsl #0x1b orr r0, r1, r0, lsr #24 strb r0, [r4, #3] _037FF73C: add r5, r5, #1 cmp r5, #0x10 blt _037FF3C0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _037FF750: .word _03807E70 _037FF754: .word _03806FDC _037FF758: .word 0xFFFFFD2D _037FF75C: .word 0x0000FFFC arm_func_end sub_037FF3AC arm_func_start sub_037FF760 sub_037FF760: ; 0x037FF760 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #0 strb r0, [r4, #1] mov lr, r2 add ip, r4, #0x38 ldmia r1, {r0, r1, r2} stmia ip, {r0, r1, r2} mov r0, r4 mov r1, r3 str lr, [r4, #0x44] bl sub_037FFEB8 mov r0, #1 ldmia sp!, {r4, lr} bx lr arm_func_end sub_037FF760 arm_func_start sub_037FF79C sub_037FF79C: ; 0x037FF79C stmdb sp!, {r3, lr} ldrb r3, [r0] cmp r3, #8 movlo r0, #0 blo _037FF7DC cmp r3, #0xd movhi r0, #0 bhi _037FF7DC mov r3, #1 strb r3, [r0, #1] str r1, [r0, #0x44] ldr r3, _037FF7E4 ; =0x00001F46 mov r1, r2 strh r3, [r0, #0x3c] bl sub_037FFEB8 mov r0, #1 _037FF7DC: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FF7E4: .word 0x00001F46 arm_func_end sub_037FF79C arm_func_start sub_037FF7E8 sub_037FF7E8: ; 0x037FF7E8 stmdb sp!, {r3, lr} ldrb r2, [r0] cmp r2, #0xe movlo r0, #0 blo _037FF820 cmp r2, #0xf movhi r0, #0 bhi _037FF820 ldr r2, _037FF828 ; =0x00001F46 mov r3, #2 strb r3, [r0, #1] strh r2, [r0, #0x3c] bl sub_037FFEB8 mov r0, #1 _037FF820: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FF828: .word 0x00001F46 arm_func_end sub_037FF7E8 arm_func_start sub_037FF82C sub_037FF82C: ; 0x037FF82C cmp r1, #0 beq _037FF8C4 ldrb r1, [r0, #2] cmp r1, #3 addls pc, pc, r1, lsl #2 b _037FF8C4 _037FF844: ; jump table b _037FF854 ; case 0 b _037FF87C ; case 1 b _037FF8C4 ; case 2 b _037FF8B4 ; case 3 _037FF854: ldr r2, [r0, #0x10] ldrb r1, [r0, #0x1c] rsb r2, r2, #0 mul r1, r2, r1 mov r1, r1, asr #8 rsbs r1, r1, #0 str r1, [r0, #0x10] moveq r1, #1 streqb r1, [r0, #2] b _037FF8C4 _037FF87C: ldrb r2, [r0, #0x1d] ldr r1, _037FF8D0 ; =_03806FDC mov r2, r2, lsl #1 ldrsh r3, [r1, r2] ldr r2, [r0, #0x10] ldrh r1, [r0, #0x1e] mov ip, r3, lsl #7 sub r1, r2, r1 str r1, [r0, #0x10] cmp r1, r3, lsl #7 strle ip, [r0, #0x10] movle r1, #2 strleb r1, [r0, #2] b _037FF8C4 _037FF8B4: ldr r2, [r0, #0x10] ldrh r1, [r0, #0x20] sub r1, r2, r1 str r1, [r0, #0x10] _037FF8C4: ldr r0, [r0, #0x10] mov r0, r0, asr #7 bx lr .align 2, 0 _037FF8D0: .word _03806FDC arm_func_end sub_037FF82C arm_func_start sub_037FF8D4 sub_037FF8D4: ; 0x037FF8D4 cmp r1, #0x6d ldrge r2, _037FF8F0 ; =_038071F0 rsblt r1, r1, #0xff rsbge r1, r1, #0x7f ldrgeb r1, [r2, r1] strb r1, [r0, #0x1c] bx lr .align 2, 0 _037FF8F0: .word _038071F0 arm_func_end sub_037FF8D4 arm_func_start sub_037FF8F4 sub_037FF8F4: ; 0x037FF8F4 stmdb sp!, {r4, lr} mov r4, r0 mov r0, r1 bl sub_037FFE64 strh r0, [r4, #0x1e] ldmia sp!, {r4, lr} bx lr arm_func_end sub_037FF8F4 arm_func_start sub_037FF910 sub_037FF910: ; 0x037FF910 strb r1, [r0, #0x1d] bx lr arm_func_end sub_037FF910 arm_func_start sub_037FF918 sub_037FF918: ; 0x037FF918 stmdb sp!, {r4, lr} mov r4, r0 mov r0, r1 bl sub_037FFE64 strh r0, [r4, #0x20] ldmia sp!, {r4, lr} bx lr arm_func_end sub_037FF918 arm_func_start sub_037FF934 sub_037FF934: ; 0x037FF934 mov r1, #3 strb r1, [r0, #2] bx lr arm_func_end sub_037FF934 arm_func_start sub_037FF940 sub_037FF940: ; 0x037FF940 ldrb r0, [r0, #3] mov r0, r0, lsl #0x1f mov r0, r0, lsr #0x1f bx lr arm_func_end sub_037FF940 arm_func_start sub_037FF950 sub_037FF950: ; 0x037FF950 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr r4, _037FFB08 ; =_03807E48 mov r6, r1 ldr r1, [r4, #4] mov r5, r3 mvn r1, r1 cmp r2, #0 and r0, r0, r1 ldreq r1, [r4] mov r4, #0 mvneq r1, r1 andeq r0, r0, r1 ldr r3, _037FFB0C ; =_038071DC ldr r8, _037FFB10 ; =_038071E0 mov sb, r4 mvn r1, #0 mov fp, #1 _037FF994: ldrb ip, [r8, sb] tst r0, fp, lsl ip beq _037FFA14 ldr r2, _037FFB14 ; =_03807E70 mov r7, #0x54 mla sl, ip, r7, r2 cmp r4, #0 moveq r4, sl beq _037FFA14 ldrb r7, [r4, #0x22] ldrb r2, [sl, #0x22] cmp r2, r7 bhi _037FFA14 bne _037FFA10 ldrh r2, [r4, #0x24] ldrh r7, [sl, #0x24] mov ip, r2, lsl #0x18 mov ip, ip, lsr #0x14 ldrb r2, [r3, r2, asr #8] mov lr, r7, lsl #0x18 mov r2, ip, asr r2 mov ip, lr, lsr #0x14 ldrb r7, [r3, r7, asr #8] cmp r2, ip, asr r7 beq _037FFA04 movlt r2, fp movge r2, r1 b _037FFA08 _037FFA04: mov r2, #0 _037FFA08: cmp r2, #0 bge _037FFA14 _037FFA10: mov r4, sl _037FFA14: add sb, sb, #1 cmp sb, #0x10 blt _037FF994 cmp r4, #0 moveq r0, #0 beq _037FFB00 ldrb r0, [r4, #0x22] cmp r6, r0 movlt r0, #0 blt _037FFB00 ldr r3, [r4, #0x48] cmp r3, #0 beq _037FFA5C ldr r2, [r4, #0x4c] mov r0, r4 mov r1, #0 mov lr, pc bx r3 _037FFA5C: ldrb r0, [r4, #3] mov r7, #0 bic r0, r0, #0xf8 orr r1, r0, #0x10 and r0, r1, #0xff bic r0, r0, #1 strb r0, [r4, #3] str r7, [r4, #0x50] ldr r0, [sp, #0x28] str r5, [r4, #0x48] str r0, [r4, #0x4c] str r7, [r4, #0x34] strb r6, [r4, #0x22] mov r3, #0x7f strh r3, [r4, #0x24] ldrb r1, [r4, #3] mov r0, #0x3c bic r2, r1, #2 and r1, r2, #0xff orr r1, r1, #4 strb r1, [r4, #3] strb r0, [r4, #8] strb r0, [r4, #5] strb r3, [r4, #9] strb r7, [r4, #0xa] strh r7, [r4, #0xc] strh r7, [r4, #6] strh r7, [r4, #0xe] strb r7, [r4, #0xb] strb r3, [r4, #4] strh r7, [r4, #0x32] str r7, [r4, #0x18] str r7, [r4, #0x14] ldr r1, _037FFB18 ; =0x0000FFFF strb r7, [r4, #0x1c] strh r1, [r4, #0x1e] strb r3, [r4, #0x1d] add r0, r4, #0x28 strh r1, [r4, #0x20] bl sub_037FFD90 mov r0, r4 _037FFB00: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _037FFB08: .word _03807E48 _037FFB0C: .word _038071DC _037FFB10: .word _038071E0 _037FFB14: .word _03807E70 _037FFB18: .word 0x0000FFFF arm_func_end sub_037FF950 arm_func_start sub_037FFB1C sub_037FFB1C: ; 0x037FFB1C cmp r0, #0 movne r1, #0 strne r1, [r0, #0x48] strne r1, [r0, #0x4c] bx lr arm_func_end sub_037FFB1C arm_func_start sub_037FFB30 sub_037FFB30: ; 0x037FFB30 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sb, #0 ldr r7, _037FFBD8 ; =_03807E70 ldr r4, _037FFBDC ; =_03807E48 mov sl, r0 mov r5, sb mov r6, #1 mov fp, #0x54 b _037FFBC0 _037FFB54: tst sl, #1 beq _037FFBB8 ldr r0, [r4, #4] mla r8, sb, fp, r7 tst r0, r6, lsl sb bne _037FFBB8 ldr r3, [r8, #0x48] cmp r3, #0 beq _037FFB8C ldr r2, [r8, #0x4c] mov r0, r8 mov r1, #0 mov lr, pc bx r3 _037FFB8C: mov r0, sb mov r1, #0 bl sub_037FEA20 strb r5, [r8, #0x22] mov r0, r8 bl sub_037FFB1C ldrb r0, [r8, #3] bic r1, r0, #0xf8 and r0, r1, #0xff bic r0, r0, #1 strb r0, [r8, #3] _037FFBB8: add sb, sb, #1 mov sl, sl, lsr #1 _037FFBC0: cmp sb, #0x10 bge _037FFBD0 cmp sl, #0 bne _037FFB54 _037FFBD0: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _037FFBD8: .word _03807E70 _037FFBDC: .word _03807E48 arm_func_end sub_037FFB30 arm_func_start sub_037FFBE0 sub_037FFBE0: ; 0x037FFBE0 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sl, r0 mov r8, #0 ldr r5, _037FFCB8 ; =_03807E70 mov sb, r1 mov r7, sl mov fp, r8 mov r4, #1 b _037FFC7C _037FFC04: tst r7, #1 beq _037FFC74 ldr r0, _037FFCBC ; =_03807E48 ldr r1, [r0, #4] mov r0, #0x54 mla r6, r8, r0, r5 tst r1, r4, lsl r8 bne _037FFC74 ldr r3, [r6, #0x48] cmp r3, #0 beq _037FFC44 ldr r2, [r6, #0x4c] mov r0, r6 mov r1, #0 mov lr, pc bx r3 _037FFC44: mov r0, r8 mov r1, #0 bl sub_037FEA20 strb fp, [r6, #0x22] mov r0, r6 bl sub_037FFB1C ldrb r0, [r6, #3] bic r0, r0, #0xf8 strb r0, [r6, #3] and r0, r0, #0xff bic r0, r0, #1 strb r0, [r6, #3] _037FFC74: add r8, r8, #1 mov r7, r7, lsr #1 _037FFC7C: cmp r8, #0x10 bge _037FFC8C cmp r7, #0 bne _037FFC04 _037FFC8C: tst sb, #1 ldrne r0, _037FFCBC ; =_03807E48 ldrne r1, [r0] orrne r1, r1, sl strne r1, [r0] ldreq r0, _037FFCBC ; =_03807E48 ldreq r1, [r0, #4] orreq r1, r1, sl streq r1, [r0, #4] ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _037FFCB8: .word _03807E70 _037FFCBC: .word _03807E48 arm_func_end sub_037FFBE0 arm_func_start sub_037FFCC0 sub_037FFCC0: ; 0x037FFCC0 tst r1, #1 ldreq r1, _037FFCF4 ; =_03807E48 mvneq r0, r0 ldreq r2, [r1, #4] andeq r0, r2, r0 streq r0, [r1, #4] bxeq lr ldr r1, _037FFCF4 ; =_03807E48 mvn r0, r0 ldr r2, [r1] and r0, r2, r0 str r0, [r1] bx lr .align 2, 0 _037FFCF4: .word _03807E48 arm_func_end sub_037FFCC0 arm_func_start sub_037FFCF8 sub_037FFCF8: ; 0x037FFCF8 tst r0, #1 ldrne r0, _037FFD10 ; =_03807E48 ldrne r0, [r0] ldreq r0, _037FFD10 ; =_03807E48 ldreq r0, [r0, #4] bx lr .align 2, 0 _037FFD10: .word _03807E48 arm_func_end sub_037FFCF8 arm_func_start sub_037FFD14 sub_037FFD14: ; 0x037FFD14 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r5, _037FFD8C ; =_03807E70 mov r6, #0 mov r8, r0 mov r7, r1 mov r4, r6 mov sb, #0x54 _037FFD30: mla r2, r6, sb, r5 ldrb r1, [r2, #3] mov r0, r1, lsl #0x1f movs r0, r0, lsr #0x1f beq _037FFD74 ldrb r0, [r2, #1] cmp r0, #0 bne _037FFD74 ldr r0, [r2, #0x44] cmp r8, r0 cmpls r0, r7 bhi _037FFD74 bic r3, r1, #2 mov r0, r6 mov r1, r4 strb r3, [r2, #3] bl sub_037FEA20 _037FFD74: add r0, r6, #1 and r6, r0, #0xff cmp r6, #0x10 blo _037FFD30 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _037FFD8C: .word _03807E70 arm_func_end sub_037FFD14 arm_func_start sub_037FFD90 sub_037FFD90: ; 0x037FFD90 mov r2, #0 strb r2, [r0] strb r2, [r0, #2] mov r1, #1 strb r1, [r0, #3] mov r1, #0x10 strb r1, [r0, #1] strh r2, [r0, #4] bx lr arm_func_end sub_037FFD90 arm_func_start sub_037FFDB4 sub_037FFDB4: ; 0x037FFDB4 ldrh r2, [r0, #6] ldrh r1, [r0, #4] cmp r2, r1 addlo r1, r2, #1 strloh r1, [r0, #6] bxlo lr ldrh r1, [r0, #8] ldrb r2, [r0, #1] add r1, r1, r2, lsl #6 mov r3, r1, lsr #8 b _037FFDE4 _037FFDE0: sub r3, r3, #0x80 _037FFDE4: cmp r3, #0x80 bhs _037FFDE0 ldrh r1, [r0, #8] add r1, r1, r2, lsl #6 strh r1, [r0, #8] ldrh r1, [r0, #8] and r1, r1, #0xff strh r1, [r0, #8] ldrh r1, [r0, #8] orr r1, r1, r3, lsl #8 strh r1, [r0, #8] bx lr arm_func_end sub_037FFDB4 arm_func_start sub_037FFE14 sub_037FFE14: ; 0x037FFE14 stmdb sp!, {r4, lr} mov r4, r0 ldrb r0, [r4, #2] cmp r0, #0 moveq r0, #0 beq _037FFE5C ldrh r1, [r4, #6] ldrh r0, [r4, #4] cmp r1, r0 movlo r0, #0 blo _037FFE5C ldrh r0, [r4, #8] mov r0, r0, lsr #8 bl sub_037FEE58 ldrb r1, [r4, #2] ldrb r2, [r4, #3] mul r0, r1, r0 mul r0, r2, r0 _037FFE5C: ldmia sp!, {r4, lr} bx lr arm_func_end sub_037FFE14 arm_func_start sub_037FFE64 sub_037FFE64: ; 0x037FFE64 stmdb sp!, {r3, lr} cmp r0, #0x7f ldreq r0, _037FFEB4 ; =0x0000FFFF beq _037FFEAC cmp r0, #0x7e moveq r0, #0x3c00 beq _037FFEAC cmp r0, #0x32 movlt r0, r0, lsl #1 addlt r0, r0, #1 movlt r0, r0, lsl #0x10 movlt r0, r0, lsr #0x10 blt _037FFEAC rsb r1, r0, #0x7e mov r0, #0x1e00 bl sub_03806BC8 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 _037FFEAC: ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FFEB4: .word 0x0000FFFF arm_func_end sub_037FFE64 arm_func_start sub_037FFEB8 sub_037FFEB8: ; 0x037FFEB8 ldr r3, _037FFEEC ; =0xFFFE9680 mov r2, #0 str r3, [r0, #0x10] strb r2, [r0, #2] str r1, [r0, #0x34] strh r2, [r0, #0x30] strh r2, [r0, #0x2e] ldrb r1, [r0, #3] orr r2, r1, #2 bic r1, r2, #1 orr r1, r1, #1 strb r1, [r0, #3] bx lr .align 2, 0 _037FFEEC: .word 0xFFFE9680 arm_func_end sub_037FFEB8 arm_func_start sub_037FFEF0 sub_037FFEF0: ; 0x037FFEF0 stmdb sp!, {r3, lr} ldr r3, _037FFF4C ; =_038083B0 mov lr, #0 mov r0, #0x24 _037FFF00: mul r2, lr, r0 ldrb r1, [r3, r2] add ip, r3, r2 bic r1, r1, #1 strb r1, [r3, r2] strb lr, [ip, #1] add lr, lr, #1 cmp lr, #0x10 blt _037FFF00 ldr r1, _037FFF50 ; =_038085F0 mov r2, #0 _037FFF2C: ldrb r0, [r1, r2, lsl #6] bic r0, r0, #1 strb r0, [r1, r2, lsl #6] add r2, r2, #1 cmp r2, #0x20 blt _037FFF2C ldmia sp!, {r3, lr} bx lr .align 2, 0 _037FFF4C: .word _038083B0 _037FFF50: .word _038085F0 arm_func_end sub_037FFEF0 arm_func_start sub_037FFF54 sub_037FFF54: ; 0x037FFF54 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} mov r6, #0 mov sb, r0 mov r5, r6 _037FFF64: mov r0, #0x24 mul r0, r5, r0 ldr r2, _038000AC ; =_038083B0 ldrb r1, [r2, r0] add r4, r2, r0 mov r0, r1, lsl #0x1f movs r0, r0, lsr #0x1f beq _03800088 mov r0, r1, lsl #0x1e movs r0, r0, lsr #0x1f beq _03800074 cmp sb, #0 beq _03800040 mov r0, r1, lsl #0x1d movs r0, r0, lsr #0x1f bne _03800040 mov r8, #0 b _037FFFBC _037FFFAC: ldrh r0, [r4, #0x1c] add r8, r8, #1 sub r0, r0, #0xf0 strh r0, [r4, #0x1c] _037FFFBC: ldrh r0, [r4, #0x1c] cmp r0, #0xf0 bhs _037FFFAC mov r7, #0 mov sl, #1 b _037FFFF8 _037FFFD4: mov r0, r4 mov r1, sl bl sub_03800CF0 cmp r0, #0 beq _037FFFF4 mov r0, r4 bl sub_03800B00 b _03800000 _037FFFF4: add r7, r7, #1 _037FFFF8: cmp r7, r8 blt _037FFFD4 _03800000: ldr r0, _038000B0 ; =_03807E6C ldr r2, [r0] cmp r2, #0 beq _03800028 ldrb r1, [r4, #1] mov r0, #0x24 mla r2, r1, r0, r2 ldr r0, [r2, #0x40] add r0, r0, r7 str r0, [r2, #0x40] _03800028: ldrh r2, [r4, #0x18] ldrh r1, [r4, #0x1a] ldrh r0, [r4, #0x1c] mul r1, r2, r1 add r0, r0, r1, asr #8 strh r0, [r4, #0x1c] _03800040: mov r8, #0 mov r7, #1 _03800048: mov r0, r4 mov r1, r8 bl sub_03800A7C cmp r0, #0 beq _03800068 mov r1, r4 mov r2, r7 bl sub_03800B98 _03800068: add r8, r8, #1 cmp r8, #0x10 blt _03800048 _03800074: ldrb r0, [r4] mov r0, r0, lsl #0x1f movs r0, r0, lsr #0x1f movne r0, #1 orrne r6, r6, r0, lsl r5 _03800088: add r5, r5, #1 cmp r5, #0x10 blt _037FFF64 ldr r0, _038000B0 ; =_03807E6C ldr r0, [r0] cmp r0, #0 strne r6, [r0, #4] ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} bx lr .align 2, 0 _038000AC: .word _038083B0 _038000B0: .word _03807E6C arm_func_end sub_037FFF54 arm_func_start sub_038000B4 sub_038000B4: ; 0x038000B4 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov sb, r0 mov r0, #0x24 mul r5, sb, r0 ldr r6, _03800284 ; =_038083B0 mov r8, r1 ldrb r0, [r6, r5] mov r7, r2 mov r0, r0, lsl #0x1f mov r4, r3 add r5, r6, r5 movs r0, r0, lsr #0x1f beq _038000F0 mov r0, r5 bl sub_03800B00 _038000F0: ldrb r1, [r5] mov r0, #0x78 bic r1, r1, #4 strb r1, [r5] str r4, [r5, #0x20] strh r0, [r5, #0x18] mov r0, #0x100 strh r0, [r5, #0x1a] mov r0, #0xf0 strh r0, [r5, #0x1c] mov r0, #0x7f strb r0, [r5, #5] mov r2, #0 strh r2, [r5, #6] mov r0, #0x40 strb r0, [r5, #4] mov r1, #0xff _03800134: add r0, r5, r2 add r2, r2, #1 strb r1, [r0, #8] cmp r2, #0x10 blt _03800134 ldr r1, _03800288 ; =_03807E6C ldr r3, [r1] cmp r3, #0 beq _03800194 ldrb r2, [r5, #1] mov r0, #0x24 mla r0, r2, r0, r3 mov r6, #0 str r6, [r0, #0x40] mvn r4, #0 mov r0, #0x24 _03800174: ldr r2, [r1] ldrb r3, [r5, #1] mla r2, r3, r0, r2 add r2, r2, r6, lsl #1 add r6, r6, #1 strh r4, [r2, #0x20] cmp r6, #0x10 blt _03800174 _03800194: bl sub_03801884 movs r4, r0 bmi _0380027C ldr r0, _0380028C ; =_038085F0 add r6, r0, r4, lsl #6 mov r0, r6 bl sub_038008F0 str r8, [r6, #0x24] add r0, r8, r7 str r0, [r6, #0x28] strb r4, [r5, #8] ldr r0, [r6, #0x28] bl sub_03800784 mov r0, r6 bl sub_03800290 cmp r0, #0xfe ldrne r0, [r6, #0x28] subne r0, r0, #1 strne r0, [r6, #0x28] bne _03800248 mov r0, r6 bl sub_03800290 mov r4, r0 mov r0, r6 bl sub_03800290 orr r0, r4, r0, lsl #8 mov r0, r0, lsl #0x10 ldr r4, _0380028C ; =_038085F0 mov r8, r0, lsr #0x11 mov r7, #1 b _03800240 _03800210: tst r8, #1 beq _03800234 bl sub_03801884 movs r6, r0 bmi _03800248 add r0, r4, r6, lsl #6 bl sub_038008F0 add r0, r5, r7 strb r6, [r0, #8] _03800234: mov r0, r8, lsl #0xf add r7, r7, #1 mov r8, r0, lsr #0x10 _03800240: cmp r8, #0 bne _03800210 _03800248: ldrb r1, [r5] ldr r0, _03800288 ; =_03807E6C bic r1, r1, #1 ldr r2, [r0] orr r1, r1, #1 and r0, r1, #0xff bic r0, r0, #2 strb r0, [r5] cmp r2, #0 ldrne r1, [r2, #4] movne r0, #1 orrne r0, r1, r0, lsl sb strne r0, [r2, #4] _0380027C: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _03800284: .word _038083B0 _03800288: .word _03807E6C _0380028C: .word _038085F0 arm_func_end sub_038000B4 arm_func_start sub_03800290 sub_03800290: ; 0x03800290 stmdb sp!, {r3, r4, r5, lr} ldr r1, _038002E8 ; =_03807E50 mov r5, r0 ldr r4, [r5, #0x28] ldr r0, [r1, #4] cmp r4, r0 blo _038002B8 ldr r0, [r1, #8] cmp r4, r0 blo _038002C0 _038002B8: mov r0, r4 bl sub_03800784 _038002C0: ldr r0, _038002E8 ; =_03807E50 ldr r1, [r5, #0x28] ldr r2, [r0, #4] ldr r0, _038002EC ; =_03807E5C sub r2, r4, r2 ldrb r0, [r0, r2] add r1, r1, #1 str r1, [r5, #0x28] ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _038002E8: .word _03807E50 _038002EC: .word _03807E5C arm_func_end sub_03800290 arm_func_start sub_038002F0 sub_038002F0: ; 0x038002F0 mov r1, #0x24 mul r1, r0, r1 ldr r2, _0380030C ; =_038083B0 ldrb r0, [r2, r1] orr r0, r0, #2 strb r0, [r2, r1] bx lr .align 2, 0 _0380030C: .word _038083B0 arm_func_end sub_038002F0 arm_func_start sub_03800310 sub_03800310: ; 0x03800310 stmdb sp!, {r4, lr} mov r4, r0 bl sub_038000B4 mov r0, #0x24 mul r1, r4, r0 ldr r2, _0380033C ; =_038083B0 ldrb r0, [r2, r1] orr r0, r0, #2 strb r0, [r2, r1] ldmia sp!, {r4, lr} bx lr .align 2, 0 _0380033C: .word _038083B0 arm_func_end sub_03800310 arm_func_start sub_03800340 sub_03800340: ; 0x03800340 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #0x24 mul r1, r4, r0 ldr r2, _03800394 ; =_038083B0 ldrb r0, [r2, r1] mov r0, r0, lsl #0x1f movs r0, r0, lsr #0x1f beq _0380038C add r0, r2, r1 bl sub_03800B00 ldr r0, _03800398 ; =_03807E6C ldr r2, [r0] cmp r2, #0 movne r0, #1 ldrne r1, [r2, #4] mvnne r0, r0, lsl r4 andne r0, r1, r0 strne r0, [r2, #4] _0380038C: ldmia sp!, {r4, lr} bx lr .align 2, 0 _03800394: .word _038083B0 _03800398: .word _03807E6C arm_func_end sub_03800340 arm_func_start sub_0380039C sub_0380039C: ; 0x0380039C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r2, #0x24 mul r4, r0, r2 ldr r5, _03800410 ; =_038083B0 and r0, r1, #0xff ldrb r2, [r5, r4] mov r0, r0, lsl #0x1f bic r2, r2, #4 orr r0, r2, r0, lsr #29 strb r0, [r5, r4] cmp r1, #0 beq _03800408 mov r8, #0 mov r6, #0x7f _038003D4: mov r1, r8 add r0, r5, r4 bl sub_03800A7C movs r7, r0 beq _038003FC mov r2, r6 add r1, r5, r4 bl sub_038009E0 mov r0, r7 bl sub_03800A48 _038003FC: add r8, r8, #1 cmp r8, #0x10 blt _038003D4 _03800408: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _03800410: .word _038083B0 arm_func_end sub_0380039C arm_func_start sub_03800414 sub_03800414: ; 0x03800414 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r3, _038004D8 ; =_038083B0 mov r2, #0x24 mla r6, r0, r2, r3 mov r8, r1 mov r7, #0 mov r4, #0x7f _03800430: mov r0, r6 mov r1, r7 bl sub_03800A7C movs r5, r0 beq _03800458 mov r1, r6 mov r2, r4 bl sub_038009E0 mov r0, r5 bl sub_03800A48 _03800458: add r7, r7, #1 cmp r7, #0x10 blt _03800430 bl sub_037FEFB4 mov r4, #0 mov r5, r4 b _03800498 _03800474: mov r0, r6 mov r1, r5 bl sub_03800CF0 cmp r0, #0 beq _03800494 mov r0, r6 bl sub_03800B00 b _038004A0 _03800494: add r4, r4, #1 _03800498: cmp r4, r8 blo _03800474 _038004A0: bl sub_037FEF64 ldr r0, _038004DC ; =_03807E6C ldr r3, [r0] cmp r3, #0 beq _038004D0 ldrb r1, [r6, #1] mov r0, #0x24 mul r2, r1, r0 add r1, r3, #0x40 ldr r0, [r1, r2] add r0, r0, r4 str r0, [r1, r2] _038004D0: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _038004D8: .word _038083B0 _038004DC: .word _03807E6C arm_func_end sub_03800414 arm_func_start sub_038004E0 sub_038004E0: ; 0x038004E0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r3, #0x24 mul r4, r0, r3 ldr r5, _03800548 ; =_038083B0 mov r8, r1 mov r7, r2 mov r6, #0 b _03800530 _03800500: tst r8, #1 beq _03800528 mov r1, r6 add r0, r5, r4 bl sub_03800A7C cmp r0, #0 beq _03800528 mov r2, r7 add r1, r5, r4 bl sub_038018C8 _03800528: add r6, r6, #1 mov r8, r8, lsr #1 _03800530: cmp r6, #0x10 bge _03800540 cmp r8, #0 bne _03800500 _03800540: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _03800548: .word _038083B0 arm_func_end sub_038004E0 arm_func_start sub_0380054C sub_0380054C: ; 0x0380054C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r3, #0x24 mul r4, r0, r3 mov r0, r2, lsl #0x10 ldr r5, _038005B8 ; =_038083B0 mov r7, r1 mov r6, #0 mov r8, r0, lsr #0x10 b _038005A0 _03800570: tst r7, #1 beq _03800598 mov r1, r6 add r0, r5, r4 bl sub_03800A7C cmp r0, #0 strneh r8, [r0, #0x1e] ldrneb r1, [r0] orrne r1, r1, #0x80 strneb r1, [r0] _03800598: add r6, r6, #1 mov r7, r7, lsr #1 _038005A0: cmp r6, #0x10 bge _038005B0 cmp r7, #0 bne _03800570 _038005B0: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _038005B8: .word _038083B0 arm_func_end sub_0380054C arm_func_start sub_038005BC sub_038005BC: ; 0x038005BC stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr r6, _03800644 ; =_038083B0 mov r7, #0 mov sl, r0 mov sb, r1 mov fp, r7 mov r4, #0x24 _038005D8: mul r5, r7, r4 ldrb r0, [r6, r5] mov r0, r0, lsl #0x1f movs r0, r0, lsr #0x1f beq _03800630 mov r8, fp b _03800628 _038005F4: mov r1, r8 add r0, r6, r5 bl sub_03800A7C cmp r0, #0 beq _03800624 ldr r0, [r0, #0x28] cmp sl, r0 cmpls r0, sb bhi _03800624 add r0, r6, r5 bl sub_03800B00 b _03800630 _03800624: add r8, r8, #1 _03800628: cmp r8, #0x10 blt _038005F4 _03800630: add r7, r7, #1 cmp r7, #0x10 blt _038005D8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03800644: .word _038083B0 arm_func_end sub_038005BC arm_func_start sub_03800648 sub_03800648: ; 0x03800648 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r4, _038006A0 ; =_038083B0 mov r7, r0 mov r6, r1 mov r5, #0 mov r8, #0x24 _03800660: mul r0, r5, r8 ldrb r1, [r4, r0] add r0, r4, r0 mov r1, r1, lsl #0x1f movs r1, r1, lsr #0x1f beq _0380068C ldr r1, [r0, #0x20] cmp r7, r1 cmpls r1, r6 bhi _0380068C bl sub_03800B00 _0380068C: add r5, r5, #1 cmp r5, #0x10 blt _03800660 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _038006A0: .word _038083B0 arm_func_end sub_03800648 arm_func_start sub_038006A4 sub_038006A4: ; 0x038006A4 stmdb sp!, {r3, lr} ldr lr, _038006E4 ; =_038083B0 mov ip, #0x24 mla ip, r0, ip, lr cmp r3, #1 beq _038006D0 cmp r3, #2 beq _038006D8 cmp r3, #4 streq r2, [ip, r1] b _038006DC _038006D0: strb r2, [ip, r1] b _038006DC _038006D8: strh r2, [ip, r1] _038006DC: ldmia sp!, {r3, lr} bx lr .align 2, 0 _038006E4: .word _038083B0 arm_func_end sub_038006A4 arm_func_start sub_038006E8 sub_038006E8: ; 0x038006E8 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r4, #0x24 mul r5, r0, r4 mov r8, r3 mov r0, r8, lsl #0x10 ldr r7, [sp, #0x28] mov sl, r1 mov sb, r2 mov r6, #0 mov fp, r0, lsr #0x10 and r4, r8, #0xff b _03800768 _03800718: tst sl, #1 beq _03800760 ldr r0, _03800780 ; =_038083B0 mov r1, r6 add r0, r0, r5 bl sub_03800A7C cmp r0, #0 beq _03800760 cmp r7, #1 beq _03800754 cmp r7, #2 beq _0380075C cmp r7, #4 streq r8, [r0, sb] b _03800760 _03800754: strb r4, [r0, sb] b _03800760 _0380075C: strh fp, [r0, sb] _03800760: add r6, r6, #1 mov sl, sl, lsr #1 _03800768: cmp r6, #0x10 bge _03800778 cmp sl, #0 bne _03800718 _03800778: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03800780: .word _038083B0 arm_func_end sub_038006E8 arm_func_start sub_03800784 sub_03800784: ; 0x03800784 ldr r1, _038007BC ; =_03807E50 bic r2, r0, #3 str r2, [r1, #4] add r0, r2, #0x10 str r0, [r1, #8] ldr r0, [r2] str r0, [r1, #0xc] ldr r0, [r2, #4] str r0, [r1, #0x10] ldr r0, [r2, #8] str r0, [r1, #0x14] ldr r0, [r2, #0xc] str r0, [r1, #0x18] bx lr .align 2, 0 _038007BC: .word _03807E50 arm_func_end sub_03800784 arm_func_start sub_038007C0 sub_038007C0: ; 0x038007C0 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 bl sub_03800290 mov r4, r0 mov r0, r5 bl sub_03800290 orr r4, r4, r0, lsl #8 mov r0, r5 bl sub_03800290 orr r0, r4, r0, lsl #16 ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_038007C0 arm_func_start sub_038007F0 sub_038007F0: ; 0x038007F0 stmdb sp!, {r4, r5, r6, lr} mov r4, r0 mov r6, r1 cmp r2, #4 addls pc, pc, r2, lsl #2 b _038008E4 _03800808: ; jump table b _0380081C ; case 0 b _03800828 ; case 1 b _03800848 ; case 2 b _03800884 ; case 3 b _03800868 ; case 4 _0380081C: bl sub_03800290 mov r5, r0 b _038008E4 _03800828: bl sub_03800290 mov r5, r0 mov r0, r4 bl sub_03800290 orr r0, r5, r0, lsl #8 mov r0, r0, lsl #0x10 mov r5, r0, lsr #0x10 b _038008E4 _03800848: mov r5, #0 _0380084C: mov r0, r4 bl sub_03800290 and r1, r0, #0x7f tst r0, #0x80 orr r5, r1, r5, lsl #7 bne _0380084C b _038008E4 _03800868: bl sub_03800290 mov r1, r0 mov r0, r6 bl sub_03801840 cmp r0, #0 ldrnesh r5, [r0] b _038008E4 _03800884: bl sub_03800290 mov r5, r0 mov r0, r4 bl sub_03800290 orr r0, r5, r0, lsl #8 mov r0, r0, lsl #0x10 mov r1, r0, lsr #0x10 mov r0, r4 mov r5, r1, lsl #0x10 bl sub_03800290 mov r6, r0 mov r0, r4 bl sub_03800290 orr r0, r6, r0, lsl #8 mov r0, r0, lsl #0x10 mov r4, r0, lsr #0x10 bl sub_037FEEC4 mov r1, r4, lsl #0x10 mov r1, r1, asr #0x10 sub r1, r1, r5, asr #16 add r1, r1, #1 mul r1, r0, r1 mov r0, r1, asr #0x10 add r5, r0, r5, asr #16 _038008E4: mov r0, r5 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_end sub_038007F0 arm_func_start sub_038008F0 sub_038008F0: ; 0x038008F0 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #0 str r0, [r4, #0x24] str r0, [r4, #0x28] ldrb r1, [r4] mov r2, #0xff orr r1, r1, #2 bic ip, r1, #4 strb r1, [r4] and r1, ip, #0xff bic r3, r1, #8 strb ip, [r4] and r1, r3, #0xff bic ip, r1, #0x10 strb r3, [r4] and r1, ip, #0xff bic r3, r1, #0x20 and r1, r3, #0xff orr r1, r1, #0x40 strb ip, [r4] bic r1, r1, #0x80 strb r1, [r4] strb r0, [r4, #0x3b] strh r0, [r4, #2] mov r1, #0x40 strb r1, [r4, #0x12] mov r1, #0x7f strb r1, [r4, #4] strb r1, [r4, #5] strh r0, [r4, #0xa] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #6] strh r0, [r4, #0xc] strb r2, [r4, #0xe] strb r2, [r4, #0xf] strb r2, [r4, #0x10] strb r2, [r4, #0x11] strb r1, [r4, #1] mov r1, #2 strb r1, [r4, #7] mov r1, #0x3c strb r1, [r4, #0x14] strb r0, [r4, #0x15] strh r0, [r4, #0x16] strb r0, [r4, #0x13] add r0, r2, #0xff00 strh r0, [r4, #0x1e] add r0, r4, #0x18 bl sub_037FFD90 mov r0, #0 str r0, [r4, #0x20] str r0, [r4, #0x3c] ldmia sp!, {r4, lr} bx lr arm_func_end sub_038008F0 arm_func_start sub_038009D0 sub_038009D0: ; 0x038009D0 str r1, [r0, #0x24] add r1, r1, r2 str r1, [r0, #0x28] bx lr arm_func_end sub_038009D0 arm_func_start sub_038009E0 sub_038009E0: ; 0x038009E0 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r2 mov r4, r0 mov r2, #0 bl sub_03800B98 ldr r5, [r4, #0x3c] and r6, r7, #0xff mov r4, #1 b _03800A38 _03800A04: mov r0, r5 bl sub_037FF940 cmp r0, #0 beq _03800A34 cmp r7, #0 blt _03800A28 mov r0, r5 mov r1, r6 bl sub_037FF918 _03800A28: mov r0, r5 strb r4, [r5, #0x22] bl sub_037FF934 _03800A34: ldr r5, [r5, #0x50] _03800A38: cmp r5, #0 bne _03800A04 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_038009E0 arm_func_start sub_03800A48 sub_03800A48: ; 0x03800A48 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 ldr r4, [r5, #0x3c] b _03800A64 _03800A58: mov r0, r4 bl sub_037FFB1C ldr r4, [r4, #0x50] _03800A64: cmp r4, #0 bne _03800A58 mov r0, #0 str r0, [r5, #0x3c] ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_03800A48 arm_func_start sub_03800A7C sub_03800A7C: ; 0x03800A7C cmp r1, #0xf movgt r0, #0 bxgt lr add r0, r0, r1 ldrb r1, [r0, #8] cmp r1, #0xff moveq r0, #0 ldrne r0, _03800AA4 ; =_038085F0 addne r0, r0, r1, lsl #6 bx lr .align 2, 0 _03800AA4: .word _038085F0 arm_func_end sub_03800A7C arm_func_start sub_03800AA8 sub_03800AA8: ; 0x03800AA8 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r4, r1 bl sub_03800A7C movs r5, r0 beq _03800AF4 mov r1, r6 mvn r2, #0 bl sub_038009E0 mov r0, r5 bl sub_03800A48 add ip, r6, #8 ldrb r2, [ip, r4] ldr r3, _03800AFC ; =_038085F0 mov r0, #0xff ldrb r1, [r3, r2, lsl #6] bic r1, r1, #1 strb r1, [r3, r2, lsl #6] strb r0, [ip, r4] _03800AF4: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _03800AFC: .word _038085F0 arm_func_end sub_03800AA8 arm_func_start sub_03800B00 sub_03800B00: ; 0x03800B00 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r4, #0 _03800B0C: mov r0, r5 mov r1, r4 bl sub_03800AA8 add r4, r4, #1 cmp r4, #0x10 blt _03800B0C ldrb r0, [r5] bic r0, r0, #1 strb r0, [r5] ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_03800B00 arm_func_start sub_03800B38 sub_03800B38: ; 0x03800B38 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r4, r2 cmp r1, #1 bne _03800B58 mov r1, #0 strb r1, [r5, #0x22] bl sub_037FFB1C _03800B58: ldr r1, [r4, #0x3c] cmp r1, r5 ldreq r0, [r5, #0x50] streq r0, [r4, #0x3c] beq _03800B90 b _03800B84 _03800B70: cmp r0, r5 ldreq r0, [r5, #0x50] streq r0, [r1, #0x50] beq _03800B90 mov r1, r0 _03800B84: ldr r0, [r1, #0x50] cmp r0, #0 bne _03800B70 _03800B90: ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_03800B38 arm_func_start sub_03800B98 sub_03800B98: ; 0x03800B98 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sl, r0 ldrb r0, [sl, #7] ldrb r6, [sl, #4] ldrb r3, [sl, #5] ldrb fp, [r1, #5] mov r5, r0, lsl #6 mov r8, r3, lsl #1 ldrb r4, [sl, #1] ldrsb r7, [sl, #6] mov sb, r6, lsl #1 ldr r0, _03800CEC ; =_03806FDC mul r6, r7, r5 mov r3, fp, lsl #1 ldrsh sb, [r0, sb] ldrsh r7, [r0, r8] ldrsh r0, [r0, r3] add r8, sb, r7 ldrsb r3, [sl, #8] cmp r4, #0x7f mulne r4, r3, r4 addne r3, r4, #0x40 mov r4, #0x8000 ldrsh r5, [sl, #0xc] mov sb, r2 add r2, r5, r6, asr #7 ldrsh r7, [sl, #0xa] ldrsh r1, [r1, #6] ldrsb r5, [sl, #9] movne r3, r3, asr #7 add r0, r0, r8 rsb r4, r4, #0 cmp r0, r4 movlt r0, r4 mov r4, #0x8000 add r1, r7, r1 rsb r4, r4, #0 cmp r1, r4 movlt r1, r4 add r3, r3, r5 mvn r4, #0x7f cmp r3, r4 movlt r3, r4 blt _03800C50 cmp r3, #0x7f movgt r3, #0x7f _03800C50: mov r0, r0, lsl #0x10 mov r2, r2, lsl #0x10 mov r3, r3, lsl #0x18 mov r1, r1, lsl #0x10 ldr r8, [sl, #0x3c] mov r6, r0, asr #0x10 mov r5, r2, asr #0x10 mov r4, r3, asr #0x18 mov r7, r1, asr #0x10 mov fp, #1 b _03800CDC _03800C7C: strh r7, [r8, #6] ldrb r0, [r8, #2] cmp r0, #3 beq _03800CD8 strh r6, [r8, #0xc] strh r5, [r8, #0xe] strb r4, [r8, #0xb] ldrb r0, [sl, #1] strb r0, [r8, #4] ldrh r0, [sl, #0x18] strh r0, [r8, #0x28] ldrh r0, [sl, #0x1a] strh r0, [r8, #0x2a] ldrh r0, [sl, #0x1c] strh r0, [r8, #0x2c] ldr r0, [r8, #0x34] cmp r0, #0 bne _03800CD8 cmp sb, #0 beq _03800CD8 mov r0, r8 strb fp, [r8, #0x22] bl sub_037FF934 _03800CD8: ldr r8, [r8, #0x50] _03800CDC: cmp r8, #0 bne _03800C7C ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03800CEC: .word _03806FDC arm_func_end sub_03800B98 arm_func_start sub_03800CF0 sub_03800CF0: ; 0x03800CF0 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x24 mov r2, #0 str r2, [sp, #0x10] str r1, [sp, #8] mov r7, r0 mov sl, r2 _03800D0C: mov r0, r7 mov r1, sl bl sub_03800A7C movs r8, r0 ldrne r0, [r8, #0x28] cmpne r0, #0 beq _0380180C ldr r0, [r8, #0x3c] b _03800D68 _03800D30: ldr r1, [r0, #0x34] cmp r1, #0 subgt r1, r1, #1 strgt r1, [r0, #0x34] ldrb r1, [r0, #3] mov r1, r1, lsl #0x1d movs r1, r1, lsr #0x1f bne _03800D64 ldr r2, [r0, #0x14] ldr r1, [r0, #0x18] cmp r2, r1 addlt r1, r2, #1 strlt r1, [r0, #0x14] _03800D64: ldr r0, [r0, #0x50] _03800D68: cmp r0, #0 bne _03800D30 ldrb r1, [r8] mov r0, r1, lsl #0x1b movs r0, r0, lsr #0x1f beq _03800D98 ldr r0, [r8, #0x3c] cmp r0, #0 movne r0, #0 bne _038017F0 bic r0, r1, #0x10 strb r0, [r8] _03800D98: ldr r0, [r8, #0x20] cmp r0, #0 subgt r0, r0, #1 strgt r0, [r8, #0x20] cmpgt r0, #0 movgt r0, #0 bgt _038017F0 ldr r0, [r8, #0x28] bl sub_03800784 ldr r0, _03801834 ; =0x0000FFFF sub fp, r0, #0x10000 b _038017D0 _03800DC8: mov r0, r8 mov sb, #0 mov r4, #1 bl sub_03800290 mov r6, r0 cmp r6, #0xa2 bne _03800DFC mov r0, r8 bl sub_03800290 mov r6, r0 ldrb r0, [r8] mov r0, r0, lsl #0x19 mov r4, r0, lsr #0x1f _03800DFC: cmp r6, #0xa0 bne _03800E18 mov r0, r8 bl sub_03800290 mov r6, r0 mov r5, #3 mov sb, #1 _03800E18: cmp r6, #0xa1 bne _03800E34 mov r0, r8 bl sub_03800290 mov r6, r0 mov r5, #4 mov sb, #1 _03800E34: tst r6, #0x80 bne _038010B8 mov r0, r8 bl sub_03800290 cmp sb, #0 str r0, [sp, #0xc] movne r2, r5 moveq r2, #2 mov r0, r8 mov r1, r7 bl sub_038007F0 cmp r4, #0 mov r4, r0 ldrsb r0, [r8, #0x13] add sb, r6, r0 beq _038017D0 cmp sb, #0 movlt sb, #0 blt _03800E88 cmp sb, #0x7f movgt sb, #0x7f _03800E88: ldrb r1, [r8] mov r0, r1, lsl #0x1d movs r0, r0, lsr #0x1f bne _0380108C ldr r0, [sp, #8] cmp r0, #0 beq _0380108C mov r0, r1, lsl #0x1c mov r6, #0 movs r0, r0, lsr #0x1f ldrne r6, [r8, #0x3c] cmpne r6, #0 strneb sb, [r6, #8] ldrne r0, [sp, #0xc] strneb r0, [r6, #9] cmp r6, #0 bne _03800FBC ldr r0, [r7, #0x20] ldrh r1, [r8, #2] mov r2, sb add r3, sp, #0x16 bl sub_03801948 cmp r0, #0 beq _0380108C ldrb r0, [sp, #0x16] cmp r0, #4 addls pc, pc, r0, lsl #2 b _0380108C _03800EF8: ; jump table b _0380108C ; case 0 b _03800F0C ; case 1 b _03800F14 ; case 2 b _03800F1C ; case 3 b _03800F0C ; case 4 _03800F0C: ldr r1, _03801834 ; =0x0000FFFF b _03800F20 _03800F14: mov r1, #0x3f00 b _03800F20 _03800F1C: mov r1, #0xc000 _03800F20: ldrh r0, [r8, #0x1e] ldr r3, _03801838 ; =sub_03800B38 str r8, [sp] ldrb r2, [r8] and r0, r1, r0 mov r2, r2, lsl #0x18 ldrb r6, [r7, #4] ldrb r1, [r8, #0x12] mov r2, r2, lsr #0x1f add r1, r6, r1 bl sub_037FF950 movs r6, r0 beq _0380108C ldrb r0, [r8] mov r0, r0, lsl #0x1c movs r0, r0, lsr #0x1f movne r3, fp bne _03800F74 cmp r4, #0 movgt r3, r4 movle r3, fp _03800F74: ldr r2, [sp, #0xc] ldr r1, [r7, #0x20] mov r0, r6 str r1, [sp] add r1, sp, #0x16 str r1, [sp, #4] mov r1, sb bl sub_03801B08 cmp r0, #0 bne _03800FB0 mov r0, #0 strb r0, [r6, #0x22] mov r0, r6 bl sub_037FFB1C b _0380108C _03800FB0: ldr r0, [r8, #0x3c] str r0, [r6, #0x50] str r6, [r8, #0x3c] _03800FBC: ldrb r1, [r8, #0xe] cmp r1, #0xff beq _03800FD0 mov r0, r6 bl sub_037FF8D4 _03800FD0: ldrb r1, [r8, #0xf] cmp r1, #0xff beq _03800FE4 mov r0, r6 bl sub_037FF8F4 _03800FE4: ldrb r1, [r8, #0x10] cmp r1, #0xff beq _03800FF8 mov r0, r6 bl sub_037FF910 _03800FF8: ldrb r1, [r8, #0x11] cmp r1, #0xff beq _0380100C mov r0, r6 bl sub_037FF918 _0380100C: ldrsh r0, [r8, #0x16] strh r0, [r6, #0x32] ldrb r0, [r8] mov r0, r0, lsl #0x1a movs r0, r0, lsr #0x1f beq _0380103C ldrsh r1, [r6, #0x32] ldrb r0, [r8, #0x14] sub r0, r0, sb mov r0, r0, lsl #0x16 add r0, r1, r0, asr #16 strh r0, [r6, #0x32] _0380103C: ldrb r0, [r8, #0x15] cmp r0, #0 bne _03801068 cmp r4, #0 movgt r0, r4 movle r0, fp str r0, [r6, #0x18] ldrb r0, [r6, #3] bic r0, r0, #4 strb r0, [r6, #3] b _03801084 _03801068: mul r1, r0, r0 ldrsh r0, [r6, #0x32] cmp r0, #0 rsblt r0, r0, #0 mul r0, r1, r0 mov r0, r0, asr #0xb str r0, [r6, #0x18] _03801084: mov r0, #0 str r0, [r6, #0x14] _0380108C: strb sb, [r8, #0x14] ldrb r0, [r8] mov r0, r0, lsl #0x1e movs r0, r0, lsr #0x1f beq _038017D0 str r4, [r8, #0x20] cmp r4, #0 ldreqb r0, [r8] orreq r0, r0, #0x10 streqb r0, [r8] b _038017D0 _038010B8: and r0, r6, #0xf0 cmp r0, #0xc0 bgt _038010EC bge _03801234 cmp r0, #0x90 bgt _038010E0 bge _03801158 cmp r0, #0x80 beq _03801110 b _038017D0 _038010E0: cmp r0, #0xb0 beq _038014E4 b _038017D0 _038010EC: cmp r0, #0xe0 bgt _03801104 bge _03801490 cmp r0, #0xd0 beq _03801234 b _038017D0 _03801104: cmp r0, #0xf0 beq _0380172C b _038017D0 _03801110: cmp sb, #0 movne r2, r5 moveq r2, #2 mov r0, r8 mov r1, r7 bl sub_038007F0 cmp r4, #0 beq _038017D0 cmp r6, #0x80 beq _03801144 cmp r6, #0x81 beq _0380114C b _038017D0 _03801144: str r0, [r8, #0x20] b _038017D0 _0380114C: cmp r0, #0x10000 strlth r0, [r8, #2] b _038017D0 _03801158: cmp r6, #0x93 beq _03801174 cmp r6, #0x94 beq _038011D4 cmp r6, #0x95 beq _038011F0 b _038017D0 _03801174: mov r0, r8 bl sub_03800290 mov r6, r0 mov r0, r8 bl sub_038007C0 cmp r4, #0 mov sb, r0 beq _038017D0 mov r1, r6 mov r0, r7 bl sub_03800A7C movs r4, r0 cmpne r4, r8 beq _038017D0 mov r1, r7 mov r2, fp bl sub_038009E0 mov r0, r4 bl sub_03800A48 mov r0, r4 mov r2, sb ldr r1, [r8, #0x24] bl sub_038009D0 b _038017D0 _038011D4: mov r0, r8 bl sub_038007C0 cmp r4, #0 ldrne r1, [r8, #0x24] addne r0, r1, r0 strne r0, [r8, #0x28] b _038017D0 _038011F0: mov r0, r8 bl sub_038007C0 cmp r4, #0 beq _038017D0 ldrb r1, [r8, #0x3b] cmp r1, #3 bhs _038017D0 add r1, r8, r1, lsl #2 ldr r2, [r8, #0x28] str r2, [r1, #0x2c] ldrb r1, [r8, #0x3b] add r1, r1, #1 strb r1, [r8, #0x3b] ldr r1, [r8, #0x24] add r0, r1, r0 str r0, [r8, #0x28] b _038017D0 _03801234: cmp sb, #0 movne r2, r5 moveq r2, #0 mov r0, r8 mov r1, r7 bl sub_038007F0 cmp r4, #0 strb r0, [sp, #0x14] beq _038017D0 sub r1, r6, #0xc0 cmp r1, #0x17 addls pc, pc, r1, lsl #2 b _038017D0 _03801268: ; jump table b _03801460 ; case 0 b _038012C8 ; case 1 b _038012E0 ; case 2 b _03801448 ; case 3 b _03801454 ; case 4 b _038012EC ; case 5 b _038012F8 ; case 6 b _03801304 ; case 7 b _038013C4 ; case 8 b _0380140C ; case 9 b _0380132C ; case 10 b _03801338 ; case 11 b _03801344 ; case 12 b _03801350 ; case 13 b _0380142C ; case 14 b _03801320 ; case 15 b _0380135C ; case 16 b _03801368 ; case 17 b _03801374 ; case 18 b _03801380 ; case 19 b _0380138C ; case 20 b _038012D4 ; case 21 b _03801470 ; case 22 b _038013F8 ; case 23 _038012C8: and r0, r0, #0xff strb r0, [r8, #4] b _038017D0 _038012D4: and r0, r0, #0xff strb r0, [r8, #5] b _038017D0 _038012E0: and r0, r0, #0xff strb r0, [r7, #5] b _038017D0 _038012EC: and r0, r0, #0xff strb r0, [r8, #7] b _038017D0 _038012F8: and r0, r0, #0xff strb r0, [r8, #0x12] b _038017D0 _03801304: and r0, r0, #0xff mov r0, r0, lsl #0x1f ldrb r1, [r8] bic r1, r1, #2 orr r0, r1, r0, lsr #30 strb r0, [r8] b _038017D0 _03801320: and r0, r0, #0xff strb r0, [r8, #0x15] b _038017D0 _0380132C: and r0, r0, #0xff strb r0, [r8, #0x1a] b _038017D0 _03801338: and r0, r0, #0xff strb r0, [r8, #0x19] b _038017D0 _03801344: and r0, r0, #0xff strb r0, [r8, #0x18] b _038017D0 _03801350: and r0, r0, #0xff strb r0, [r8, #0x1b] b _038017D0 _0380135C: and r0, r0, #0xff strb r0, [r8, #0xe] b _038017D0 _03801368: and r0, r0, #0xff strb r0, [r8, #0xf] b _038017D0 _03801374: and r0, r0, #0xff strb r0, [r8, #0x10] b _038017D0 _03801380: and r0, r0, #0xff strb r0, [r8, #0x11] b _038017D0 _0380138C: ldrb r1, [r8, #0x3b] cmp r1, #3 bhs _038017D0 add r2, r8, r1, lsl #2 and r1, r0, #0xff ldr r0, [r8, #0x28] str r0, [r2, #0x2c] ldrb r0, [r8, #0x3b] add r0, r8, r0 strb r1, [r0, #0x38] ldrb r0, [r8, #0x3b] add r0, r0, #1 strb r0, [r8, #0x3b] b _038017D0 _038013C4: and r0, r0, #0xff mov r1, r0, lsl #0x1f ldrb r2, [r8] mov r0, r8 bic r2, r2, #8 orr r1, r2, r1, lsr #28 strb r1, [r8] mov r1, r7 mov r2, fp bl sub_038009E0 mov r0, r8 bl sub_03800A48 b _038017D0 _038013F8: and r2, r0, #0xff mov r0, r8 mov r1, r7 bl sub_038018C8 b _038017D0 _0380140C: and r1, r0, #0xff ldrsb r0, [r8, #0x13] add r0, r1, r0 strb r0, [r8, #0x14] ldrb r0, [r8] orr r0, r0, #0x20 strb r0, [r8] b _038017D0 _0380142C: and r0, r0, #0xff mov r0, r0, lsl #0x1f ldrb r1, [r8] bic r1, r1, #0x20 orr r0, r1, r0, lsr #26 strb r0, [r8] b _038017D0 _03801448: ldrsb r0, [sp, #0x14] strb r0, [r8, #0x13] b _038017D0 _03801454: ldrsb r0, [sp, #0x14] strb r0, [r8, #6] b _038017D0 _03801460: and r0, r0, #0xff sub r0, r0, #0x40 strb r0, [r8, #8] b _038017D0 _03801470: ldr r1, _0380183C ; =_03807E50 ldr r1, [r1] cmp r1, #0 beq _038017D0 and r1, r0, #0xff mov r0, r7 bl sub_03801840 b _038017D0 _03801490: cmp sb, #0 movne r2, r5 moveq r2, #1 mov r0, r8 mov r1, r7 bl sub_038007F0 mov r0, r0, lsl #0x10 cmp r4, #0 mov r0, r0, asr #0x10 beq _038017D0 cmp r6, #0xe0 beq _038014DC cmp r6, #0xe1 beq _038014D4 cmp r6, #0xe3 streqh r0, [r8, #0x16] b _038017D0 _038014D4: strh r0, [r7, #0x18] b _038017D0 _038014DC: strh r0, [r8, #0x1c] b _038017D0 _038014E4: mov r0, r8 bl sub_03800290 cmp sb, #0 movne r2, r5 mov sb, r0 moveq r2, #1 mov r0, r8 mov r1, r7 bl sub_038007F0 mov r0, r0, lsl #0x10 mov r1, sb mov sb, r0, asr #0x10 mov r0, r7 bl sub_03801840 cmp r4, #0 mov r4, r0 cmpne r4, #0 beq _038017D0 sub r0, r6, #0xb0 cmp r0, #0xd addls pc, pc, r0, lsl #2 b _038017D0 _0380153C: ; jump table b _03801574 ; case 0 b _0380157C ; case 1 b _0380158C ; case 2 b _0380159C ; case 3 b _038015AC ; case 4 b _038015C8 ; case 5 b _038015EC ; case 6 b _038017D0 ; case 7 b _03801624 ; case 8 b _03801650 ; case 9 b _0380167C ; case 10 b _038016A8 ; case 11 b _038016D4 ; case 12 b _03801700 ; case 13 _03801574: strh sb, [r4] b _038017D0 _0380157C: ldrsh r0, [r4] add r0, r0, sb strh r0, [r4] b _038017D0 _0380158C: ldrsh r0, [r4] sub r0, r0, sb strh r0, [r4] b _038017D0 _0380159C: ldrsh r0, [r4] mul r1, r0, sb strh r1, [r4] b _038017D0 _038015AC: cmp sb, #0 beq _038017D0 mov r1, sb ldrsh r0, [r4] bl sub_03806BC8 strh r0, [r4] b _038017D0 _038015C8: cmp sb, #0 ldrgesh r0, [r4] movge r0, r0, lsl sb strgeh r0, [r4] ldrltsh r1, [r4] rsblt r0, sb, #0 movlt r0, r1, asr r0 strlth r0, [r4] b _038017D0 _038015EC: cmp sb, #0 rsblt r0, sb, #0 movlt r0, r0, lsl #0x10 mov r6, #0 movlt sb, r0, asr #0x10 movlt r6, #1 bl sub_037FEEC4 add r1, sb, #1 mul r1, r0, r1 mov r0, r1, asr #0x10 cmp r6, #0 rsbne r0, r0, #0 strh r0, [r4] b _038017D0 _03801624: ldrsh r0, [r4] ldrb r1, [r8] cmp r0, sb moveq r0, #1 movne r0, #0 and r0, r0, #0xff mov r0, r0, lsl #0x1f bic r1, r1, #0x40 orr r0, r1, r0, lsr #25 strb r0, [r8] b _038017D0 _03801650: ldrsh r0, [r4] ldrb r1, [r8] cmp r0, sb movge r0, #1 movlt r0, #0 and r0, r0, #0xff mov r0, r0, lsl #0x1f bic r1, r1, #0x40 orr r0, r1, r0, lsr #25 strb r0, [r8] b _038017D0 _0380167C: ldrsh r0, [r4] ldrb r1, [r8] cmp r0, sb movgt r0, #1 movle r0, #0 and r0, r0, #0xff mov r0, r0, lsl #0x1f bic r1, r1, #0x40 orr r0, r1, r0, lsr #25 strb r0, [r8] b _038017D0 _038016A8: ldrsh r0, [r4] ldrb r1, [r8] cmp r0, sb movle r0, #1 movgt r0, #0 and r0, r0, #0xff mov r0, r0, lsl #0x1f bic r1, r1, #0x40 orr r0, r1, r0, lsr #25 strb r0, [r8] b _038017D0 _038016D4: ldrsh r0, [r4] ldrb r1, [r8] cmp r0, sb movlt r0, #1 movge r0, #0 and r0, r0, #0xff mov r0, r0, lsl #0x1f bic r1, r1, #0x40 orr r0, r1, r0, lsr #25 strb r0, [r8] b _038017D0 _03801700: ldrsh r0, [r4] ldrb r1, [r8] cmp r0, sb movne r0, #1 moveq r0, #0 and r0, r0, #0xff mov r0, r0, lsl #0x1f bic r1, r1, #0x40 orr r0, r1, r0, lsr #25 strb r0, [r8] b _038017D0 _0380172C: cmp r4, #0 beq _038017D0 sub r0, r6, #0xfc cmp r0, #3 addls pc, pc, r0, lsl #2 b _038017D0 _03801744: ; jump table b _0380177C ; case 0 b _03801754 ; case 1 b _038017D0 ; case 2 b _038017C8 ; case 3 _03801754: ldrb r0, [r8, #0x3b] cmp r0, #0 beq _038017D0 sub r0, r0, #1 strb r0, [r8, #0x3b] and r0, r0, #0xff add r0, r8, r0, lsl #2 ldr r0, [r0, #0x2c] str r0, [r8, #0x28] b _038017D0 _0380177C: ldrb r0, [r8, #0x3b] cmp r0, #0 beq _038017D0 add r1, r8, r0 ldrb r0, [r1, #0x37] cmp r0, #0 beq _038017B0 sub r0, r0, #1 ands r0, r0, #0xff ldreqb r0, [r8, #0x3b] subeq r0, r0, #1 streqb r0, [r8, #0x3b] beq _038017D0 _038017B0: strb r0, [r1, #0x37] ldrb r0, [r8, #0x3b] add r0, r8, r0, lsl #2 ldr r0, [r0, #0x28] str r0, [r8, #0x28] b _038017D0 _038017C8: mvn r0, #0 b _038017F0 _038017D0: ldr r0, [r8, #0x20] cmp r0, #0 bne _038017EC ldrb r0, [r8] mov r0, r0, lsl #0x1b movs r0, r0, lsr #0x1f beq _03800DC8 _038017EC: mov r0, #0 _038017F0: cmp r0, #0 moveq r0, #1 streq r0, [sp, #0x10] beq _0380180C mov r0, r7 mov r1, sl bl sub_03800AA8 _0380180C: add sl, sl, #1 cmp sl, #0x10 blt _03800D0C ldr r0, [sp, #0x10] cmp r0, #0 moveq r0, #1 movne r0, #0 add sp, sp, #0x24 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03801834: .word 0x0000FFFF _03801838: .word sub_03800B38 _0380183C: .word _03807E50 arm_func_end sub_03800CF0 arm_func_start sub_03801840 sub_03801840: ; 0x03801840 ldr r2, _03801880 ; =_03807E6C ldr r3, [r2] cmp r3, #0 moveq r0, #0 bxeq lr cmp r1, #0x10 addge r2, r3, #0x260 subge r0, r1, #0x10 addge r0, r2, r0, lsl #1 bxge lr ldrb r2, [r0, #1] add r3, r3, #0x20 mov r0, #0x24 mla r0, r2, r0, r3 add r0, r0, r1, lsl #1 bx lr .align 2, 0 _03801880: .word _03807E6C arm_func_end sub_03801840 arm_func_start sub_03801884 sub_03801884: ; 0x03801884 ldr ip, _038018C4 ; =_038085F0 mov r0, #0 b _038018B4 _03801890: ldrb r1, [ip, r0, lsl #6] mov r3, r0, lsl #6 mov r2, r1, lsl #0x1f movs r2, r2, lsr #0x1f biceq r1, r1, #1 orreq r1, r1, #1 streqb r1, [ip, r3] bxeq lr add r0, r0, #1 _038018B4: cmp r0, #0x20 blt _03801890 mvn r0, #0 bx lr .align 2, 0 _038018C4: .word _038085F0 arm_func_end sub_03801884 arm_func_start sub_038018C8 sub_038018C8: ; 0x038018C8 stmdb sp!, {r4, lr} mov r4, r0 cmp r2, #3 addls pc, pc, r2, lsl #2 b _03801940 _038018DC: ; jump table b _038018EC ; case 0 b _038018FC ; case 1 b _0380190C ; case 2 b _03801924 ; case 3 _038018EC: ldrb r0, [r4] bic r0, r0, #4 strb r0, [r4] b _03801940 _038018FC: ldrb r0, [r4] orr r0, r0, #4 strb r0, [r4] b _03801940 _0380190C: ldrb r3, [r4] mvn r2, #0 orr r3, r3, #4 strb r3, [r4] bl sub_038009E0 b _03801940 _03801924: ldrb r3, [r4] mov r2, #0x7f orr r3, r3, #4 strb r3, [r4] bl sub_038009E0 mov r0, r4 bl sub_03800A48 _03801940: ldmia sp!, {r4, lr} bx lr arm_func_end sub_038018C8 arm_func_start sub_03801948 sub_03801948: ; 0x03801948 stmdb sp!, {r3, r4, r5, r6, r7, lr} movs r7, r1 mov r6, r0 mov r5, r2 mov r4, r3 movmi r0, #0 bmi _03801AC0 bl sub_037FEFE4 ldr r0, [r6, #0x38] cmp r7, r0 blo _03801980 bl sub_037FEFE8 mov r0, #0 b _03801AC0 _03801980: add r0, r6, r7, lsl #2 ldr r1, [r0, #0x3c] and r0, r1, #0xff strb r1, [r4] cmp r0, #0x11 mov r1, r1, lsr #8 addls pc, pc, r0, lsl #2 b _03801AAC _038019A0: ; jump table b _03801AAC ; case 0 b _038019E8 ; case 1 b _038019E8 ; case 2 b _038019E8 ; case 3 b _038019E8 ; case 4 b _038019E8 ; case 5 b _03801AAC ; case 6 b _03801AAC ; case 7 b _03801AAC ; case 8 b _03801AAC ; case 9 b _03801AAC ; case 10 b _03801AAC ; case 11 b _03801AAC ; case 12 b _03801AAC ; case 13 b _03801AAC ; case 14 b _03801AAC ; case 15 b _03801A08 ; case 16 b _03801A58 ; case 17 _038019E8: add r3, r6, r1 add r2, r4, #2 mov r1, #5 _038019F4: ldrh r0, [r3], #2 subs r1, r1, #1 strh r0, [r2], #2 bne _038019F4 b _03801AB8 _03801A08: ldrb r0, [r6, r1] add r2, r6, r1 ldrb r1, [r2, #1] cmp r5, r0 blt _03801A24 cmp r5, r1 ble _03801A30 _03801A24: bl sub_037FEFE8 mov r0, #0 b _03801AC0 _03801A30: sub r1, r5, r0 mov r0, #0xc mla r0, r1, r0, r2 add r2, r0, #2 mov r1, #6 _03801A44: ldrh r0, [r2], #2 subs r1, r1, #1 strh r0, [r4], #2 bne _03801A44 b _03801AB8 _03801A58: add r2, r6, r1 mov r1, #0 b _03801A7C _03801A64: add r1, r1, #1 cmp r1, #8 blt _03801A7C bl sub_037FEFE8 mov r0, #0 b _03801AC0 _03801A7C: ldrb r0, [r2, r1] cmp r5, r0 bgt _03801A64 mov r0, #0xc mla r0, r1, r0, r2 add r2, r0, #8 mov r1, #6 _03801A98: ldrh r0, [r2], #2 subs r1, r1, #1 strh r0, [r4], #2 bne _03801A98 b _03801AB8 _03801AAC: bl sub_037FEFE8 mov r0, #0 b _03801AC0 _03801AB8: bl sub_037FEFE8 mov r0, #1 _03801AC0: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_03801948 arm_func_start sub_03801AC8 sub_03801AC8: ; 0x03801AC8 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r4, r1 bl sub_037FEFE4 add r0, r5, r4, lsl #2 ldr r4, [r0, #0x3c] cmp r4, #0 beq _03801AF4 cmp r4, #0x2000000 addlo r4, r5, r4 b _03801AF8 _03801AF4: mov r4, #0 _03801AF8: bl sub_037FEFE8 mov r0, r4 ldmia sp!, {r3, r4, r5, lr} bx lr arm_func_end sub_03801AC8 arm_func_start sub_03801B08 sub_03801B08: ; 0x03801B08 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r5, [sp, #0x24] mov sb, r0 ldrb r4, [r5, #0xa] ldrb r0, [r5] cmp r4, #0xff mov r6, r3 mov r8, r1 mov r7, r2 mvneq r6, #0 moveq r4, #0 cmp r0, #4 addls pc, pc, r0, lsl #2 b _03801BE8 _03801B40: ; jump table b _03801BE8 ; case 0 b _03801B54 ; case 1 b _03801BC4 ; case 2 b _03801BD8 ; case 3 b _03801B54 ; case 4 _03801B54: cmp r0, #1 bne _03801B98 ldr r2, [sp, #0x20] ldrh r0, [r5, #4] ldrh r1, [r5, #2] add r0, r2, r0, lsl #3 ldr r0, [r0, #0x18] cmp r0, #0 moveq r1, #0 beq _03801BA4 ldr r2, [r0, #0x38] cmp r1, r2 movhs r1, #0 bhs _03801BA4 bl sub_03801AC8 mov r1, r0 b _03801BA4 _03801B98: ldrh r1, [r5, #4] ldrh r0, [r5, #2] orr r1, r0, r1, lsl #16 _03801BA4: cmp r1, #0 moveq r0, #0 beq _03801BEC mov r0, sb mov r3, r6 add r2, r1, #0xc bl sub_037FF760 b _03801BEC _03801BC4: ldrh r1, [r5, #2] mov r0, sb mov r2, r6 bl sub_037FF79C b _03801BEC _03801BD8: mov r0, sb mov r1, r6 bl sub_037FF7E8 b _03801BEC _03801BE8: mov r0, #0 _03801BEC: cmp r0, #0 moveq r0, #0 beq _03801C48 strb r8, [sb, #8] ldrb r1, [r5, #6] mov r0, sb strb r1, [sb, #5] strb r7, [sb, #9] ldrb r1, [r5, #7] bl sub_037FF8D4 ldrb r1, [r5, #8] mov r0, sb bl sub_037FF8F4 ldrb r1, [r5, #9] mov r0, sb bl sub_037FF910 mov r0, sb mov r1, r4 bl sub_037FF918 ldrb r1, [r5, #0xb] mov r0, #1 sub r1, r1, #0x40 strb r1, [sb, #0xa] _03801C48: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr arm_func_end sub_03801B08 arm_func_start sub_03801C50 sub_03801C50: ; 0x03801C50 ldr ip, _03801C6C ; =_03807E6C mov r3, #0x24 ldr ip, [ip] mla r3, r0, r3, ip add r0, r3, r1, lsl #1 strh r2, [r0, #0x20] bx lr .align 2, 0 _03801C6C: .word _03807E6C arm_func_end sub_03801C50 arm_func_start sub_03801C70 sub_03801C70: ; 0x03801C70 ldr r2, _03801C88 ; =_03807E6C ldr r2, [r2] add r0, r2, r0, lsl #1 add r0, r0, #0x200 strh r1, [r0, #0x60] bx lr .align 2, 0 _03801C88: .word _03807E6C arm_func_end sub_03801C70 arm_func_start sub_03801C8C sub_03801C8C: ; 0x03801C8C stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r0, _03801D20 ; =_03807E6C mov r4, #0 ldr r0, [r0] mov r5, r4 cmp r0, #0 beq _03801D18 mov r7, r4 mov r6, #1 _03801CB0: mov r0, r7 bl sub_037FEB50 cmp r0, #0 orrne r0, r4, r6, lsl r7 movne r0, r0, lsl #0x10 add r7, r7, #1 movne r4, r0, lsr #0x10 cmp r7, #0x10 blt _03801CB0 mov r0, #0 bl sub_037FF14C cmp r0, #0 orrne r0, r5, #1 movne r0, r0, lsl #0x10 movne r5, r0, lsr #0x10 mov r0, #1 bl sub_037FF14C cmp r0, #0 orrne r0, r5, #2 movne r0, r0, lsl #0x10 movne r5, r0, lsr #0x10 ldr r0, _03801D20 ; =_03807E6C ldr r1, [r0] strh r4, [r1, #8] ldr r0, [r0] strh r5, [r0, #0xa] _03801D18: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _03801D20: .word _03807E6C arm_func_end sub_03801C8C arm_func_start sub_03801D24 sub_03801D24: ; 0x03801D24 ldr r1, _03801D4C ; =_03807E70 mov r3, #0 mov r2, r3 _03801D30: add r0, r1, r3, lsl #6 strb r2, [r0, #0xf80] add r3, r3, #1 strb r2, [r0, #0xf81] cmp r3, #8 blt _03801D30 bx lr .align 2, 0 _03801D4C: .word _03807E70 arm_func_end sub_03801D24 arm_func_start sub_03801D50 sub_03801D50: ; 0x03801D50 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr lr, _03801DA8 ; =_03808DF0 ldr r4, [sp, #0x18] ldrb ip, [lr, r0, lsl #6] mov r7, r1 mov r6, r2 mov r5, r3 cmp ip, #0 add r8, lr, r0, lsl #6 beq _03801D88 add r0, r8, #0x14 bl sub_037FD5C0 mov r0, #0 strb r0, [r8] _03801D88: str r7, [r8, #4] str r6, [r8, #8] str r5, [r8, #0xc] ldr r0, [sp, #0x1c] str r4, [r8, #0x10] strb r0, [r8, #1] ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _03801DA8: .word _03808DF0 arm_func_end sub_03801D50 arm_func_start sub_03801DAC sub_03801DAC: ; 0x03801DAC stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0xc ldr r1, _03801E60 ; =_03808DF0 mov sb, r0 ldrb r0, [r1, sb, lsl #6] add r8, r1, sb, lsl #6 cmp r0, #0 beq _03801DDC add r0, r8, #0x14 bl sub_037FD5C0 mov r0, #0 strb r0, [r8] _03801DDC: ldrb r1, [r8, #1] ldr r7, [r8, #0xc] ldr r6, [r8, #0x10] add r0, r8, #0x14 ldr r5, [r8, #4] ldr r4, [r8, #8] orr sb, sb, r1, lsl #8 bl sub_037FD3A0 cmp r6, #0 cmpeq r7, #0 bne _03801E24 ldr r3, _03801E64 ; =sub_03801EA8 mov r1, r5 mov r2, r4 add r0, r8, #0x14 str sb, [sp] bl sub_037FD4DC b _03801E4C _03801E24: bl sub_037FD21C ldr r2, _03801E64 ; =sub_03801EA8 adds r0, r5, r0 stmib sp, {r2, sb} adc r2, r4, r1 mov r1, r0 mov r3, r7 add r0, r8, #0x14 str r6, [sp] bl sub_037FD54C _03801E4C: mov r0, #1 strb r0, [r8] add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _03801E60: .word _03808DF0 _03801E64: .word sub_03801EA8 arm_func_end sub_03801DAC arm_func_start sub_03801E68 sub_03801E68: ; 0x03801E68 stmdb sp!, {r4, lr} ldr r2, _03801EA4 ; =_03808DF0 ldrb r1, [r2, r0, lsl #6] add r4, r2, r0, lsl #6 cmp r1, #0 beq _03801E9C add r0, r4, #0x14 bl sub_037FD5C0 ldrb r1, [r4, #1] mov r0, #0 add r1, r1, #1 strb r1, [r4, #1] strb r0, [r4] _03801E9C: ldmia sp!, {r4, lr} bx lr .align 2, 0 _03801EA4: .word _03808DF0 arm_func_end sub_03801E68 arm_func_start sub_03801EA8 sub_03801EA8: ; 0x03801EA8 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, #7 mov r4, #0 _03801EB8: mov r0, r5 mov r1, r6 mov r2, r4 bl sub_037FE410 cmp r0, #0 blt _03801EB8 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_end sub_03801EA8 arm_func_start sub_03801ED8 sub_03801ED8: ; 0x03801ED8 stmdb sp!, {r3, lr} ldr r0, _03801F0C ; =_03808FF0 ldr r1, _03801F10 ; =_03809010 mov r2, #8 bl sub_037FC6AC ldr r1, _03801F14 ; =sub_038025CC mov r0, #7 bl sub_037FE39C ldr r0, _03801F18 ; =_03807E6C mov r1, #0 str r1, [r0] ldmia sp!, {r3, lr} bx lr .align 2, 0 _03801F0C: .word _03808FF0 _03801F10: .word _03809010 _03801F14: .word sub_038025CC _03801F18: .word _03807E6C arm_func_end sub_03801ED8 arm_func_start sub_03801F1C sub_03801F1C: ; 0x03801F1C stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x34 b _03802594 _03801F28: ldr sl, _038025B8 ; =0x04000509 ldr r6, [sp, #0x18] sub r4, sl, #1 b _03802578 _03801F38: add r5, sp, #0x1c ldmia r6!, {r0, r1, r2, r3} stmia r5!, {r0, r1, r2, r3} ldmia r6, {r0, r1} stmia r5, {r0, r1} ldr r0, [sp, #0x20] cmp r0, #0x21 addls pc, pc, r0, lsl #2 b _03802574 _03801F5C: ; jump table b _03801FE4 ; case 0 b _03801FFC ; case 1 b _03802008 ; case 2 b _03802020 ; case 3 b _0380202C ; case 4 b _0380203C ; case 5 b _0380204C ; case 6 b _03802064 ; case 7 b _0380208C ; case 8 b _038020A0 ; case 9 b _038020B4 ; case 10 b _038020D0 ; case 11 b _038020E8 ; case 12 b _038021B0 ; case 13 b _0380238C ; case 14 b _0380240C ; case 15 b _03802444 ; case 16 b _03802254 ; case 17 b _0380229C ; case 18 b _038022C4 ; case 19 b _03802304 ; case 20 b _0380234C ; case 21 b _03802474 ; case 22 b _03802480 ; case 23 b _0380248C ; case 24 b _03802498 ; case 25 b _038024B0 ; case 26 b _038024C0 ; case 27 b _038024D0 ; case 28 b _03802510 ; case 29 b _038024E0 ; case 30 b _038024F0 ; case 31 b _03802500 ; case 32 b _03802520 ; case 33 _03801FE4: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] ldr r3, [sp, #0x30] bl sub_03800310 b _03802574 _03801FFC: ldr r0, [sp, #0x24] bl sub_03800340 b _03802574 _03802008: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] ldr r3, [sp, #0x30] bl sub_038000B4 b _03802574 _03802020: ldr r0, [sp, #0x24] bl sub_038002F0 b _03802574 _0380202C: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_0380039C b _03802574 _0380203C: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_03800414 b _03802574 _0380204C: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] ldr r3, [sp, #0x30] bl sub_038006A4 b _03802574 _03802064: ldr r1, [sp, #0x24] mov r0, r1, lsr #0x18 and r0, r0, #0xff str r0, [sp] bic r0, r1, #0xff000000 ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] ldr r3, [sp, #0x30] bl sub_038006E8 b _03802574 _0380208C: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] bl sub_038004E0 b _03802574 _038020A0: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] bl sub_0380054C b _03802574 _038020B4: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] mov r2, r2, lsl #0x10 mov r2, r2, asr #0x10 bl sub_03801C50 b _03802574 _038020D0: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] mov r1, r1, lsl #0x10 mov r1, r1, asr #0x10 bl sub_03801C70 b _03802574 _038020E8: ldr r7, [sp, #0x2c] ldr r6, [sp, #0x28] ldr r5, [sp, #0x24] bl sub_037FDD00 mov r8, r0 mov r2, #0 b _03802124 _03802104: tst r5, #1 movne r0, r2, lsl #4 addne r0, r0, #0x4000000 ldrneb r1, [r0, #0x403] add r2, r2, #1 orrne r1, r1, #0x80 strneb r1, [r0, #0x403] mov r5, r5, lsr #1 _03802124: cmp r2, #0x10 bge _03802134 cmp r5, #0 bne _03802104 _03802134: tst r6, #1 beq _03802160 tst r6, #2 ldrneh r1, [r4] orrne r0, r1, #0x80 orrne r0, r0, #0x8000 strneh r0, [r4] ldreqb r0, [r4] orreq r0, r0, #0x80 streqb r0, [r4] b _03802170 _03802160: tst r6, #2 ldrneb r0, [sl] orrne r0, r0, #0x80 strneb r0, [sl] _03802170: mov r5, #0 b _03802190 _03802178: tst r7, #1 beq _03802188 mov r0, r5 bl sub_03801DAC _03802188: add r5, r5, #1 mov r7, r7, lsr #1 _03802190: cmp r5, #8 bge _038021A0 cmp r7, #0 bne _03802178 _038021A0: mov r0, r8 bl sub_037FDD14 bl sub_03801C8C b _03802574 _038021B0: ldr sb, [sp, #0x30] ldr r7, [sp, #0x2c] ldr r6, [sp, #0x28] ldr r5, [sp, #0x24] bl sub_037FDD00 mov fp, r0 mov r8, #0 b _038021E8 _038021D0: tst r7, #1 beq _038021E0 mov r0, r8 bl sub_03801E68 _038021E0: add r8, r8, #1 mov r7, r7, lsr #1 _038021E8: cmp r8, #8 bge _038021F8 cmp r7, #0 bne _038021D0 _038021F8: mov r7, #0 b _0380221C _03802200: tst r5, #1 beq _03802214 mov r0, r7 mov r1, sb bl sub_037FEA20 _03802214: add r7, r7, #1 mov r5, r5, lsr #1 _0380221C: cmp r7, #0x10 bge _0380222C cmp r5, #0 bne _03802200 _0380222C: tst r6, #1 movne r0, #0 strneb r0, [r4] tst r6, #2 movne r0, #0 strneb r0, [sl] mov r0, fp bl sub_037FDD14 bl sub_03801C8C b _03802574 _03802254: ldr r1, [sp, #0x2c] mov r0, r1, lsr #0x1d and r0, r0, #1 str r0, [sp] mov r0, r1, lsr #0x1c and r0, r0, #1 str r0, [sp, #4] mov r0, r1, lsr #0x1b and r0, r0, #1 str r0, [sp, #8] mov r0, r1, lsr #0x1f and r0, r0, #1 mov r1, r1, lsr #0x1e and r1, r1, #1 ldr r2, [sp, #0x24] ldr r3, [sp, #0x28] bl sub_037FF0FC b _03802574 _0380229C: ldr r0, [sp, #0x30] mov r2, #0 str r0, [sp, #4] ldr r3, [sp, #0x2c] mov r0, #0 str r0, [sp] ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_03801D50 b _03802574 _038022C4: ldr r6, [sp, #0x28] ldr r5, [sp, #0x24] mov r7, #0 b _038022F0 _038022D4: tst r5, #1 beq _038022E8 mov r0, r7 mov r1, r6 bl sub_037FEAC0 _038022E8: add r7, r7, #1 mov r5, r5, lsr #1 _038022F0: cmp r7, #0x10 bge _03802574 cmp r5, #0 bne _038022D4 b _03802574 _03802304: ldr r7, [sp, #0x2c] ldr r6, [sp, #0x28] ldr r5, [sp, #0x24] mov r8, #0 b _03802338 _03802318: tst r5, #1 beq _03802330 mov r0, r8 mov r1, r6 mov r2, r7 bl sub_037FEA48 _03802330: add r8, r8, #1 mov r5, r5, lsr #1 _03802338: cmp r8, #0x10 bge _03802574 cmp r5, #0 bne _03802318 b _03802574 _0380234C: ldr r6, [sp, #0x28] ldr r5, [sp, #0x24] mov r7, #0 b _03802378 _0380235C: tst r5, #1 beq _03802370 mov r0, r7 mov r1, r6 bl sub_037FEAD8 _03802370: add r7, r7, #1 mov r5, r5, lsr #1 _03802378: cmp r7, #0x10 bge _03802574 cmp r5, #0 bne _0380235C b _03802574 _0380238C: ldr r3, [sp, #0x30] ldr r0, [sp, #0x24] mov r1, r3, lsl #0x10 ldr r2, [sp, #0x2c] mov r1, r1, lsr #0x10 str r1, [sp] ldr r1, _038025BC ; =0x003FFFFF and r1, r2, r1 str r1, [sp, #4] mov r1, r2, lsr #0x18 and r1, r1, #0x7f str r1, [sp, #8] mov r1, r2, lsr #0x16 and r1, r1, #3 str r1, [sp, #0xc] mov r1, r0, lsr #0x10 mov r1, r1, lsl #0x10 mov r1, r1, lsr #0x10 str r1, [sp, #0x10] mov r1, r3, lsr #0x10 mov r2, r3, lsr #0x18 and r1, r1, #0x7f str r1, [sp, #0x14] ldr r1, [sp, #0x28] mov r0, r0, lsl #0x10 mov r3, r3, lsr #0x1a mov r0, r0, lsr #0x10 bic r1, r1, #0xf8000000 and r2, r2, #3 and r3, r3, #3 bl sub_037FE804 b _03802574 _0380240C: ldr r1, [sp, #0x2c] ldr r3, [sp, #0x28] mov r0, r1, lsl #8 mov r0, r0, lsr #0x10 str r0, [sp] and r0, r1, #0x7f str r0, [sp, #4] ldr r0, [sp, #0x24] ldr r1, [sp, #0x30] and r2, r3, #0x7f mov r3, r3, lsr #8 and r3, r3, #3 bl sub_037FE8D0 b _03802574 _03802444: ldr r1, [sp, #0x2c] ldr r2, [sp, #0x28] and r0, r1, #0x7f str r0, [sp] mov r0, r1, lsl #8 mov r3, r0, lsr #0x10 ldr r0, [sp, #0x24] and r1, r2, #0x7f mov r2, r2, lsr #8 and r2, r2, #3 bl sub_037FE97C b _03802574 _03802474: ldr r0, [sp, #0x24] bl sub_037FEBE0 b _03802574 _03802480: ldr r0, [sp, #0x24] bl sub_037FE7BC b _03802574 _0380248C: ldr r0, [sp, #0x24] bl sub_037FEB6C b _03802574 _03802498: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] ldr r2, [sp, #0x2c] ldr r3, [sp, #0x30] bl sub_037FE7CC b _03802574 _038024B0: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_037FFBE0 b _03802574 _038024C0: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_037FFCC0 b _03802574 _038024D0: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_037FFB30 b _03802574 _038024E0: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_038005BC b _03802574 _038024F0: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_03800648 b _03802574 _03802500: ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl sub_037FFD14 b _03802574 _03802510: ldr r1, [sp, #0x24] ldr r0, _038025C0 ; =_03807E6C str r1, [r0] b _03802574 _03802520: ldr r5, [sp, #0x24] ldr r0, _038025C4 ; =_03807E70 mov r1, r5 mov r2, #0x1180 bl sub_037FDFEC ldr r0, _038025C4 ; =_03807E70 add r1, r5, #0x1000 str r0, [r1, #0x1c0] mov r6, #0 _03802544: mov r0, r6 bl sub_037FEBD0 add r1, r5, r6, lsl #2 add r1, r1, #0x1000 str r0, [r1, #0x180] add r6, r6, #1 cmp r6, #0x10 blt _03802544 mov r0, #0 bl sub_037FFCF8 add r1, r5, #0x1000 str r0, [r1, #0x1c4] _03802574: ldr r6, [sp, #0x1c] _03802578: cmp r6, #0 bne _03801F38 ldr r0, _038025C0 ; =_03807E6C ldr r1, [r0] ldr r0, [r1] add r0, r0, #1 str r0, [r1] _03802594: ldr r0, _038025C8 ; =_03808FF0 add r1, sp, #0x18 mov r2, #0 bl sub_037FC760 cmp r0, #0 bne _03801F28 add sp, sp, #0x34 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _038025B8: .word 0x04000509 _038025BC: .word 0x003FFFFF _038025C0: .word _03807E6C _038025C4: .word _03807E70 _038025C8: .word _03808FF0 arm_func_end sub_03801F1C arm_func_start sub_038025CC sub_038025CC: ; 0x038025CC stmdb sp!, {r3, r4, r5, lr} mov r5, r1 bl sub_037FDD00 mov r4, r0 cmp r5, #0x2000000 blo _038025F8 ldr r0, _03802614 ; =_03808FF0 mov r1, r5 mov r2, #0 bl sub_037FC6D4 b _03802604 _038025F8: cmp r5, #0 bne _03802604 bl sub_037FEFC8 _03802604: mov r0, r4 bl sub_037FDD14 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _03802614: .word _03808FF0 arm_func_end sub_038025CC arm_func_start sub_03802618 sub_03802618: ; 0x03802618 ldr ip, _03802620 ; =sub_03803168 bx ip .align 2, 0 _03802620: .word sub_03803168 arm_func_end sub_03802618 arm_func_start sub_03802624 sub_03802624: ; 0x03802624 stmdb sp!, {r4, lr} sub sp, sp, #8 ldr r4, _038026C8 ; =_03809060 mov r2, #0 mvn r1, #2 str r1, [r4, #0xc] mov r0, #4 str r0, [r4, #0xf0] str r2, [r4, #0x10] str r2, [r4, #0x1c] str r2, [r4] str r2, [r4, #8] str r2, [r4, #0x18] str r2, [r4, #0x14] str r2, [r4, #0xf8] str r2, [r4, #0xf4] mov r0, #0x400 str r0, [sp] ldr ip, [r4, #0xf0] ldr r1, _038026CC ; =sub_038032B8 ldr r3, _038026D0 ; =_03809660 add r0, r4, #0x48 str ip, [sp, #4] bl sub_037FC054 add r0, r4, #0x48 bl sub_037FC36C ldr r1, _038026D4 ; =sub_038031D4 mov r0, #0xb bl sub_037FE39C ldr r0, _038026D8 ; =0x027FFC40 ldrh r0, [r0] cmp r0, #2 moveq r0, #1 movne r0, #0 cmp r0, #0 ldreq r0, _038026DC ; =_03809040 moveq r1, #1 streq r1, [r0] add sp, sp, #8 ldmia sp!, {r4, lr} bx lr .align 2, 0 _038026C8: .word _03809060 _038026CC: .word sub_038032B8 _038026D0: .word _03809660 _038026D4: .word sub_038031D4 _038026D8: .word 0x027FFC40 _038026DC: .word _03809040 arm_func_end sub_03802624 arm_func_start sub_038026E0 sub_038026E0: ; 0x038026E0 stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r5, _0380271C ; =_03809060 mov r7, r0 bl sub_037FDD00 ldr r6, [r5, #0xf0] mov r4, r0 mov r1, r7 add r0, r5, #0x48 str r7, [r5, #0xf0] bl sub_037FC3C0 mov r0, r4 bl sub_037FDD14 mov r0, r6 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _0380271C: .word _03809060 arm_func_end sub_038026E0 arm_func_start sub_03802720 sub_03802720: ; 0x03802720 ldr r0, _03802728 ; =0x027FFA80 bx lr .align 2, 0 _03802728: .word 0x027FFA80 arm_func_end sub_03802720 arm_func_start sub_0380272C sub_0380272C: ; 0x0380272C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r5, r0 mov r4, r1 adds r1, r5, r4 beq _038027C4 cmp r5, #0 beq _0380274C bl sub_037FC468 _0380274C: cmp r4, #0 beq _038027A0 sub r7, r4, r5 mov r4, #0 mov r5, #1 mov r6, #5 b _03802780 _03802768: cmp r7, #5 movlt r8, r7 movge r8, r6 mov r0, r8 bl sub_037FC468 sub r7, r7, r8 _03802780: bl sub_038027D0 tst r0, #1 moveq r0, r5 movne r0, r4 cmp r0, #0 bne _038027A0 cmp r7, #0 bgt _03802768 _038027A0: bl sub_038027D0 tst r0, #1 moveq r0, #1 movne r0, #0 cmp r0, #0 ldreq r0, _038027CC ; =_03809060 moveq r1, #4 ldreq r0, [r0] streq r1, [r0] _038027C4: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _038027CC: .word _03809060 arm_func_end sub_0380272C arm_func_start sub_038027D0 sub_038027D0: ; 0x038027D0 stmdb sp!, {r3, lr} ldr ip, _03802814 ; =_03809660 mov lr, #2 ldr r0, _03802818 ; =_0380720C ldr r3, _0380281C ; =sub_03802924 mov r1, #0 mov r2, #1 str lr, [ip, #4] bl sub_03802860 ldr r3, _03802820 ; =sub_038028E4 add r1, sp, #0 mov r0, #0 mov r2, #1 bl sub_03802860 ldrb r0, [sp] ldmia sp!, {r3, lr} bx lr .align 2, 0 _03802814: .word _03809660 _03802818: .word _0380720C _0380281C: .word sub_03802924 _03802820: .word sub_038028E4 arm_func_end sub_038027D0 arm_func_start sub_03802824 sub_03802824: ; 0x03802824 stmdb sp!, {r3, lr} mov r0, #0 mov r1, #0x32 bl sub_0380272C ldr r0, _0380285C ; =_03809060 ldr r1, [r0] ldr r0, [r1] cmp r0, #4 moveq r0, #6 streq r0, [r1] moveq r0, #0 movne r0, #1 ldmia sp!, {r3, lr} bx lr .align 2, 0 _0380285C: .word _03809060 arm_func_end sub_03802824 arm_func_start sub_03802860 sub_03802860: ; 0x03802860 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r5, _038028D8 ; =_03809664 ldr r8, _038028DC ; =0x0000A040 ldr r4, _038028E0 ; =0x040001A0 stmib r5, {r0, r1} strh r8, [r4] mov r7, r2 mov r6, r3 mov r8, #0xa000 b _038028B4 _03802888: ldr r0, [r5] subs r0, r0, #1 str r0, [r5] streqh r8, [r4] _03802898: ldrh r0, [r4] tst r0, #0x80 bne _03802898 mov r0, r5 mov lr, pc bx r6 _038028B0: sub r7, r7, #1 _038028B4: cmp r7, #0 bne _03802888 ldr r0, [r5] cmp r0, #0 ldreq r0, _038028E0 ; =0x040001A0 moveq r1, #0 streqh r1, [r0] ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _038028D8: .word _03809664 _038028DC: .word 0x0000A040 _038028E0: .word 0x040001A0 arm_func_end sub_03802860 arm_func_start sub_038028E4 sub_038028E4: ; 0x038028E4 ldr r1, _03802920 ; =0x040001A2 mov r2, #0 strh r2, [r1] sub r2, r1, #2 _038028F4: ldrh r1, [r2] tst r1, #0x80 bne _038028F4 ldr r2, _03802920 ; =0x040001A2 ldr r1, [r0, #8] ldrh r2, [r2] strb r2, [r1] ldr r1, [r0, #8] add r1, r1, #1 str r1, [r0, #8] bx lr .align 2, 0 _03802920: .word 0x040001A2 arm_func_end sub_038028E4 arm_func_start sub_03802924 sub_03802924: ; 0x03802924 stmdb sp!, {r3} sub sp, sp, #4 ldr r1, [r0, #4] ldr r2, _03802970 ; =0x040001A2 ldrb r1, [r1] strh r1, [r2] ldr r1, [r0, #4] add r1, r1, #1 str r1, [r0, #4] sub r1, r2, #2 _0380294C: ldrh r0, [r1] tst r0, #0x80 bne _0380294C ldr r0, _03802970 ; =0x040001A2 ldrh r0, [r0] strh r0, [sp] add sp, sp, #4 ldmia sp!, {r3} bx lr .align 2, 0 _03802970: .word 0x040001A2 arm_func_end sub_03802924 arm_func_start sub_03802974 sub_03802974: ; 0x03802974 ldr r1, _038029D4 ; =0x040001A2 mov r2, #0 strh r2, [r1] sub r2, r1, #2 _03802984: ldrh r1, [r2] tst r1, #0x80 bne _03802984 ldr r2, _038029D4 ; =0x040001A2 ldr r1, [r0, #4] ldrh r2, [r2] ldrb r1, [r1] and r2, r2, #0xff cmp r2, r1 beq _038029C4 mov r1, #0 str r1, [r0, #0xc] ldr r1, [r0] cmp r1, #1 movhi r1, #1 strhi r1, [r0] _038029C4: ldr r1, [r0, #4] add r1, r1, #1 str r1, [r0, #4] bx lr .align 2, 0 _038029D4: .word 0x040001A2 arm_func_end sub_03802974 arm_func_start sub_038029D8 sub_038029D8: ; 0x038029D8 stmdb sp!, {r3, lr} ldr ip, _03802A00 ; =_03809660 mov r2, #1 ldr r0, _03802A04 ; =_03807204 ldr r3, _03802A08 ; =sub_03802924 mov r1, #0 str r2, [ip, #4] bl sub_03802860 ldmia sp!, {r3, lr} bx lr .align 2, 0 _03802A00: .word _03809660 _03802A04: .word _03807204 _03802A08: .word sub_03802924 arm_func_end sub_038029D8 arm_func_start sub_03802A0C sub_03802A0C: ; 0x03802A0C stmdb sp!, {r3, lr} ldr r2, _03802AA4 ; =_03809060 ldr r2, [r2] ldr r2, [r2, #0x28] cmp r2, #1 beq _03802A38 cmp r2, #2 beq _03802A54 cmp r2, #3 beq _03802A6C b _03802A88 _03802A38: mov r3, r0, lsr #5 and r3, r3, #8 mov ip, r0, lsl #0x18 orr r0, r1, r3 orr r0, r0, ip, lsr #16 str r0, [sp] b _03802A88 _03802A54: and r3, r0, #0xff00 mov ip, r0, lsl #0x18 orr r0, r1, r3 orr r0, r0, ip, lsr #8 str r0, [sp] b _03802A88 _03802A6C: mov r3, r0, lsr #8 and r3, r3, #0xff00 and ip, r0, #0xff00 orr r1, r1, r3 orr r1, r1, ip, lsl #8 orr r0, r1, r0, lsl #24 str r0, [sp] _03802A88: ldr r3, _03802AA8 ; =sub_03802924 add r0, sp, #0 add r2, r2, #1 mov r1, #0 bl sub_03802860 ldmia sp!, {r3, lr} bx lr .align 2, 0 _03802AA4: .word _03809060 _03802AA8: .word sub_03802924 arm_func_end sub_03802A0C arm_func_start sub_03802AAC sub_03802AAC: ; 0x03802AAC stmdb sp!, {r4, lr} ldr r0, _03802AFC ; =_03809060 ldr r0, [r0] ldrb r4, [r0, #0x54] cmp r4, #0xff beq _03802AF4 ldr r0, _03802B00 ; =_03809660 ldr r0, [r0] cmp r0, #0 bne _03802AF4 bl sub_038027D0 cmp r4, r0 beq _03802AE8 mov r0, r4 bl sub_03802F04 _03802AE8: ldr r0, _03802B00 ; =_03809660 mov r1, #1 str r1, [r0] _03802AF4: ldmia sp!, {r4, lr} bx lr .align 2, 0 _03802AFC: .word _03809060 _03802B00: .word _03809660 arm_func_end sub_03802AAC arm_func_start sub_03802B04 sub_03802B04: ; 0x03802B04 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, r1 mov r4, r2 bl sub_03802824 cmp r0, #0 beq _03802B5C ldr r0, _03802B64 ; =_03809060 ldr r2, _03802B68 ; =_03809660 ldr r1, [r0] mov r0, r6 ldr r3, [r1, #0x28] mov r1, #3 add r3, r3, #1 add r3, r3, r4 str r3, [r2, #4] bl sub_03802A0C ldr r3, _03802B6C ; =sub_038028E4 mov r1, r5 mov r2, r4 mov r0, #0 bl sub_03802860 _03802B5C: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _03802B64: .word _03809060 _03802B68: .word _03809660 _03802B6C: .word sub_038028E4 arm_func_end sub_03802B04 arm_func_start sub_03802B70 sub_03802B70: ; 0x03802B70 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sl, r0 mov sb, r1 mov r8, r2 bl sub_03802824 cmp r0, #0 beq _03802C14 ldr r0, _03802C1C ; =_03809060 ldr fp, _03802C20 ; =_03809660 ldr r5, [r0] ldr r6, [r5, #0x24] sub r4, r6, #1 b _03802C0C _03802BA4: and r0, sl, r4 sub r7, r6, r0 cmp r7, r8 movhi r7, r8 bl sub_038029D8 ldr r1, [r5, #0x28] mov r0, sl add r1, r1, #1 add r1, r1, r7 str r1, [fp, #4] mov r1, #2 bl sub_03802A0C ldr r3, _03802C24 ; =sub_03802924 mov r0, sb mov r1, #0 mov r2, r7 bl sub_03802860 ldr r0, [r5, #0x2c] mov r1, #0 bl sub_0380272C ldr r0, [r5] cmp r0, #0 bne _03802C14 add sb, sb, r7 add sl, sl, r7 sub r8, r8, r7 _03802C0C: cmp r8, #0 bne _03802BA4 _03802C14: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03802C1C: .word _03809060 _03802C20: .word _03809660 _03802C24: .word sub_03802924 arm_func_end sub_03802B70 arm_func_start sub_03802C28 sub_03802C28: ; 0x03802C28 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sl, r0 mov sb, r1 mov r8, r2 bl sub_03802824 cmp r0, #0 beq _03802CCC ldr r0, _03802CD4 ; =_03809060 ldr fp, _03802CD8 ; =_03809660 ldr r5, [r0] ldr r6, [r5, #0x24] sub r4, r6, #1 b _03802CC4 _03802C5C: and r0, sl, r4 sub r7, r6, r0 cmp r7, r8 movhi r7, r8 bl sub_038029D8 ldr r1, [r5, #0x28] mov r0, sl add r1, r1, #1 add r1, r1, r7 str r1, [fp, #4] mov r1, #0xa bl sub_03802A0C ldr r3, _03802CDC ; =sub_03802924 mov r0, sb mov r1, #0 mov r2, r7 bl sub_03802860 ldr r0, [r5, #0x30] ldr r1, [r5, #0x34] bl sub_0380272C ldr r0, [r5] cmp r0, #0 bne _03802CCC add sb, sb, r7 add sl, sl, r7 sub r8, r8, r7 _03802CC4: cmp r8, #0 bne _03802C5C _03802CCC: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03802CD4: .word _03809060 _03802CD8: .word _03809660 _03802CDC: .word sub_03802924 arm_func_end sub_03802C28 arm_func_start sub_03802CE0 sub_03802CE0: ; 0x03802CE0 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 mov r5, r2 bl sub_03802824 cmp r0, #0 beq _03802D5C ldr r0, _03802D64 ; =_03809060 ldr r2, _03802D68 ; =_03809660 ldr r4, [r0] mov r0, #1 str r0, [r2, #0x10] ldr r1, [r4, #0x28] mov r0, r7 add r1, r1, #1 add r3, r1, r5 mov r1, #3 str r3, [r2, #4] bl sub_03802A0C ldr r3, _03802D6C ; =sub_03802974 mov r0, r6 mov r2, r5 mov r1, #0 bl sub_03802860 ldr r0, [r4] cmp r0, #0 ldreq r0, _03802D68 ; =_03809660 ldreq r0, [r0, #0x10] cmpeq r0, #0 moveq r0, #1 streq r0, [r4] _03802D5C: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _03802D64: .word _03809060 _03802D68: .word _03809660 _03802D6C: .word sub_03802974 arm_func_end sub_03802CE0 arm_func_start sub_03802D70 sub_03802D70: ; 0x03802D70 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r2, _03802E04 ; =_03809060 mov r7, r0 ldr r4, [r2] mov r6, r1 ldr r5, [r4, #0x1c] orr r0, r7, r6 sub r1, r5, #1 tst r1, r0 movne r0, #2 strne r0, [r4] bne _03802DFC bl sub_03802824 cmp r0, #0 beq _03802DFC ldr r8, _03802E08 ; =_03809660 mov sb, #0xd8 b _03802DF4 _03802DB8: bl sub_038029D8 ldr r1, [r4, #0x28] mov r0, r7 add r1, r1, #1 str r1, [r8, #4] mov r1, sb bl sub_03802A0C ldr r0, [r4, #0x40] ldr r1, [r4, #0x44] bl sub_0380272C ldr r0, [r4] cmp r0, #0 bne _03802DFC add r7, r7, r5 sub r6, r6, r5 _03802DF4: cmp r6, #0 bne _03802DB8 _03802DFC: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _03802E04: .word _03809060 _03802E08: .word _03809660 arm_func_end sub_03802D70 arm_func_start sub_03802E0C sub_03802E0C: ; 0x03802E0C stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r2, _03802EA0 ; =_03809060 mov r7, r0 ldr r4, [r2] mov r6, r1 ldr r5, [r4, #0x20] orr r0, r7, r6 sub r1, r5, #1 tst r1, r0 movne r0, #2 strne r0, [r4] bne _03802E98 bl sub_03802824 cmp r0, #0 beq _03802E98 ldr r8, _03802EA4 ; =_03809660 mov sb, #0x20 b _03802E90 _03802E54: bl sub_038029D8 ldr r1, [r4, #0x28] mov r0, r7 add r1, r1, #1 str r1, [r8, #4] mov r1, sb bl sub_03802A0C ldr r0, [r4, #0x48] ldr r1, [r4, #0x4c] bl sub_0380272C ldr r0, [r4] cmp r0, #0 bne _03802E98 add r7, r7, r5 sub r6, r6, r5 _03802E90: cmp r6, #0 bne _03802E54 _03802E98: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _03802EA0: .word _03809060 _03802EA4: .word _03809660 arm_func_end sub_03802E0C arm_func_start sub_03802EA8 sub_03802EA8: ; 0x03802EA8 stmdb sp!, {r4, lr} bl sub_03802824 cmp r0, #0 beq _03802EEC ldr r0, _03802EF4 ; =_03809060 ldr r4, [r0] bl sub_038029D8 ldr r1, _03802EF8 ; =_03809660 mov r2, #1 ldr r0, _03802EFC ; =_03807208 ldr r3, _03802F00 ; =sub_03802924 str r2, [r1, #4] mov r1, #0 bl sub_03802860 ldr r0, [r4, #0x38] ldr r1, [r4, #0x3c] bl sub_0380272C _03802EEC: ldmia sp!, {r4, lr} bx lr .align 2, 0 _03802EF4: .word _03809060 _03802EF8: .word _03809660 _03802EFC: .word _03807208 _03802F00: .word sub_03802924 arm_func_end sub_03802EA8 arm_func_start sub_03802F04 sub_03802F04: ; 0x03802F04 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov r4, r0 bl sub_03802824 cmp r0, #0 beq _03802F88 ldr r0, _03802F90 ; =_03809060 strb r4, [sp, #1] mov r1, #1 ldr sb, [r0] ldr r5, _03802F94 ; =sub_03802924 ldr r4, _03802F98 ; =_03809660 strb r1, [sp] mov sl, #0xa add r7, sp, #0 mov r8, #2 mov r6, #0 mov fp, #5 _03802F48: bl sub_038029D8 mov r0, r7 str r8, [r4, #4] mov r1, r6 mov r2, r8 mov r3, r5 bl sub_03802860 mov r0, fp mov r1, #0 bl sub_0380272C ldr r0, [sb] cmp r0, #4 bne _03802F88 sub sl, sl, #1 cmp sl, #0 bgt _03802F48 _03802F88: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03802F90: .word _03809060 _03802F94: .word sub_03802924 _03802F98: .word _03809660 arm_func_end sub_03802F04 arm_func_start sub_03802F9C sub_03802F9C: ; 0x03802F9C ldr r3, _03802FF4 ; =0x040001A4 _03802FA0: ldr r2, [r3] tst r2, #0x80000000 bne _03802FA0 ldr r3, _03802FF8 ; =0x040001A1 mov r2, #0xc0 strb r2, [r3] mov r2, r0, lsr #0x18 strb r2, [r3, #7] mov r2, r0, lsr #0x10 strb r2, [r3, #8] mov r2, r0, lsr #8 strb r2, [r3, #9] strb r0, [r3, #0xa] mov r0, r1, lsr #0x18 strb r0, [r3, #0xb] mov r0, r1, lsr #0x10 strb r0, [r3, #0xc] mov r0, r1, lsr #8 strb r0, [r3, #0xd] strb r1, [r3, #0xe] bx lr .align 2, 0 _03802FF4: .word 0x040001A4 _03802FF8: .word 0x040001A1 arm_func_end sub_03802F9C arm_func_start sub_03802FFC sub_03802FFC: ; 0x03802FFC stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r4, _0380306C ; =_03809060 mov r1, #0 ldr r0, [r4] str r1, [r0] ldr r7, [r4, #0x3c] ldr r6, [r4, #0x40] bl sub_037FDD00 ldr r1, [r4, #0xfc] mov r5, r0 bic r0, r1, #0x4c str r0, [r4, #0xfc] add r0, r4, #0xf4 bl sub_037FC2E4 ldr r0, [r4, #0xfc] tst r0, #0x10 beq _03803048 add r0, r4, #0x48 bl sub_037FC36C _03803048: mov r0, r5 bl sub_037FDD14 cmp r7, #0 beq _03803064 mov r0, r6 mov lr, pc bx r7 _03803064: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _0380306C: .word _03809060 arm_func_end sub_03802FFC arm_func_start sub_03803070 sub_03803070: ; 0x03803070 ldr r1, _0380308C ; =_03807560 ldr r1, [r1] ldr r1, [r1, #0x60] bic r1, r1, #0x7000000 orr r0, r1, r0 orr r0, r0, #0xa0000000 bx lr .align 2, 0 _0380308C: .word _03807560 arm_func_end sub_03803070 arm_func_start sub_03803090 sub_03803090: ; 0x03803090 bx lr arm_func_end sub_03803090 arm_func_start sub_03803094 sub_03803094: ; 0x03803094 stmdb sp!, {r3, lr} mov r0, #0xb8000000 mov r1, #0 bl sub_03802F9C mov r0, #0x7000000 bl sub_03803070 mov r1, #0x2000 rsb r1, r1, #0 ldr r2, _038030DC ; =0x040001A4 and r0, r0, r1 str r0, [r2] _038030C0: ldr r0, [r2] tst r0, #0x800000 beq _038030C0 ldr r0, _038030E0 ; =0x04100010 ldr r0, [r0] ldmia sp!, {r3, lr} bx lr .align 2, 0 _038030DC: .word 0x040001A4 _038030E0: .word 0x04100010 arm_func_end sub_03803094 arm_func_start sub_038030E4 sub_038030E4: ; 0x038030E4 stmdb sp!, {r4, lr} ldr r0, _03803110 ; =_03809060 mov r1, #0 mov r2, r1 bl sub_03803114 bl sub_03803094 mov r4, r0 bl sub_03802FFC mov r0, r4 ldmia sp!, {r4, lr} bx lr .align 2, 0 _03803110: .word _03809060 arm_func_end sub_038030E4 arm_func_start sub_03803114 sub_03803114: ; 0x03803114 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 mov r5, r2 bl sub_037FDD00 mov r4, r0 b _03803138 _03803130: add r0, r7, #0xf4 bl sub_037FC290 _03803138: ldr r0, [r7, #0xfc] tst r0, #4 bne _03803130 ldr r1, [r7, #0xfc] mov r0, r4 orr r1, r1, #4 str r1, [r7, #0xfc] str r6, [r7, #0x3c] str r5, [r7, #0x40] bl sub_037FDD14 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_03803114 arm_func_start sub_03803168 sub_03803168: ; 0x03803168 stmdb sp!, {r3, lr} ldr ip, _038031C8 ; =_03809060 ldr r0, [ip, #0xfc] cmp r0, #0 bne _038031C0 ldr r0, _038031CC ; =_03809680 mov r2, #0 sub r1, r2, #1 mov r3, #1 str r3, [ip, #0xfc] str r2, [ip, #0x28] str r2, [ip, #0x24] str r2, [ip, #0x20] str r1, [ip, #0x2c] str r2, [ip, #0x3c] str r2, [ip, #0x40] str r2, [r0] bl sub_03802624 ldr r1, _038031D0 ; =sub_03803090 ldr r0, _038031CC ; =_03809680 str r1, [r0, #0x20] bl sub_038034EC _038031C0: ldmia sp!, {r3, lr} bx lr .align 2, 0 _038031C8: .word _03809060 _038031CC: .word _03809680 _038031D0: .word sub_03803090 arm_func_end sub_03803168 arm_func_start sub_038031D4 sub_038031D4: ; 0x038031D4 stmdb sp!, {r3, lr} cmp r0, #0xb bne _038032AC cmp r2, #0 beq _038032AC ldr r0, _038032B4 ; =_03809060 ldr r2, [r0, #8] cmp r2, #0 streq r1, [r0, #4] ldr r2, [r0, #4] cmp r2, #0xf addls pc, pc, r2, lsl #2 b _03803278 _03803208: ; jump table b _03803248 ; case 0 b _03803278 ; case 1 b _0380326C ; case 2 b _0380326C ; case 3 b _0380326C ; case 4 b _0380326C ; case 5 b _0380326C ; case 6 b _0380326C ; case 7 b _0380326C ; case 8 b _0380326C ; case 9 b _0380326C ; case 10 b _0380326C ; case 11 b _0380326C ; case 12 b _0380326C ; case 13 b _0380326C ; case 14 b _0380326C ; case 15 _03803248: ldr r2, [r0, #8] cmp r2, #0 beq _03803278 cmp r2, #1 ldreq r2, [r0, #0xfc] streq r1, [r0] orreq r1, r2, #0x10 streq r1, [r0, #0xfc] b _03803278 _0380326C: ldr r1, [r0, #0xfc] orr r1, r1, #0x10 str r1, [r0, #0xfc] _03803278: ldr r1, [r0, #0xfc] tst r1, #0x10 ldreq r1, [r0, #8] addeq r1, r1, #1 streq r1, [r0, #8] beq _038032AC ldr r1, [r0, #0xfc] mov r2, #0 str r2, [r0, #8] tst r1, #4 ldrne r0, [r0, #0xec] addeq r0, r0, #0x48 bl sub_037FC36C _038032AC: ldmia sp!, {r3, lr} bx lr .align 2, 0 _038032B4: .word _03809060 arm_func_end sub_038031D4 arm_func_start sub_038032B8 sub_038032B8: ; 0x038032B8 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r4, _038034E8 ; =_03809060 _038032C0: mov r5, #0 bl sub_037FDD00 mov r6, r0 add r8, r4, #0x48 mov r7, r5 _038032D4: ldr r0, [r4, #0xfc] tst r0, #4 bne _0380330C ldr r0, [r4, #0xfc] tst r0, #0x10 beq _03803318 ldr r0, [r4, #0xfc] mov r5, #1 orr r0, r0, #4 str r0, [r4, #0xfc] ldr r0, [r4, #0xfc] bic r0, r0, #0x10 str r0, [r4, #0xfc] b _03803328 _0380330C: ldr r0, [r4, #0xfc] tst r0, #8 bne _03803328 _03803318: mov r0, r7 str r8, [r4, #0xec] bl sub_037FC290 b _038032D4 _03803328: mov r0, r6 bl sub_037FDD14 cmp r5, #0 beq _038034D4 ldr r0, [r4] mov r1, #0 str r1, [r0] ldr r3, [r4] ldr r2, [r4, #4] ldr r1, [r3, #0x58] mov r0, #1 tst r1, r0, lsl r2 moveq r0, #3 streq r0, [r3] beq _03803478 cmp r2, #0xf addls pc, pc, r2, lsl #2 b _03803470 _03803370: ; jump table b _03803478 ; case 0 b _03803478 ; case 1 b _038033B0 ; case 2 b _038033B8 ; case 3 b _038033C8 ; case 4 b _03803470 ; case 5 b _038033D4 ; case 6 b _038033E8 ; case 7 b _038033FC ; case 8 b _03803410 ; case 9 b _03803470 ; case 10 b _03803424 ; case 11 b _03803444 ; case 12 b _0380344C ; case 13 b _03803460 ; case 14 b _03803434 ; case 15 _038033B0: bl sub_03802AAC b _03803478 _038033B8: bl sub_03803094 ldr r1, [r4] str r0, [r1, #8] b _03803478 _038033C8: mov r0, #3 str r0, [r3] b _03803478 _038033D4: ldr r0, [r3, #0xc] ldr r1, [r3, #0x10] ldr r2, [r3, #0x14] bl sub_03802B04 b _03803478 _038033E8: ldr r0, [r3, #0x10] ldr r1, [r3, #0xc] ldr r2, [r3, #0x14] bl sub_03802C28 b _03803478 _038033FC: ldr r0, [r3, #0x10] ldr r1, [r3, #0xc] ldr r2, [r3, #0x14] bl sub_03802B70 b _03803478 _03803410: ldr r0, [r3, #0x10] ldr r1, [r3, #0xc] ldr r2, [r3, #0x14] bl sub_03802CE0 b _03803478 _03803424: ldr r0, [r3, #0x10] ldr r1, [r3, #0x14] bl sub_03802D70 b _03803478 _03803434: ldr r0, [r3, #0x10] ldr r1, [r3, #0x14] bl sub_03802E0C b _03803478 _03803444: bl sub_03802EA8 b _03803478 _0380344C: bl sub_038027D0 ldr r1, [r4] ldr r1, [r1, #0x10] strb r0, [r1] b _03803478 _03803460: ldr r0, [r3, #0xc] ldrb r0, [r0] bl sub_03802F04 b _03803478 _03803470: mov r0, #3 str r0, [r3] _03803478: mov r6, #0xb mov r5, #1 _03803480: mov r0, r6 mov r1, r5 mov r2, r5 bl sub_037FE410 cmp r0, #0 blt _03803480 bl sub_037FDD00 ldr r1, [r4, #0xfc] mov r5, r0 bic r0, r1, #0x4c str r0, [r4, #0xfc] add r0, r4, #0xf4 bl sub_037FC2E4 ldr r0, [r4, #0xfc] tst r0, #0x10 beq _038034C8 add r0, r4, #0x48 bl sub_037FC36C _038034C8: mov r0, r5 bl sub_037FDD14 b _038032C0 _038034D4: ldr r1, [r4, #0x44] mov r0, r4 mov lr, pc bx r1 _038034E4: b _038032C0 .align 2, 0 _038034E8: .word _03809060 arm_func_end sub_038032B8 arm_func_start sub_038034EC sub_038034EC: ; 0x038034EC stmdb sp!, {r3, r4, r5, lr} ldr r0, _0380353C ; =_038098C0 ldr r1, [r0, #8] cmp r1, #0 bne _03803534 mov r1, #1 str r1, [r0, #8] bl sub_037FE2B4 mov r5, #0xe mov r4, #0 _03803514: mov r0, r5 mov r1, r4 bl sub_037FE3EC cmp r0, #0 beq _03803514 ldr r1, _03803540 ; =sub_03803544 mov r0, #0xe bl sub_037FE39C _03803534: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _0380353C: .word _038098C0 _03803540: .word sub_03803544 arm_func_end sub_038034EC arm_func_start sub_03803544 sub_03803544: ; 0x03803544 stmdb sp!, {r4, lr} and r0, r1, #0x3f cmp r0, #1 bne _0380359C mov r0, #0 bl sub_037FDEF4 mov r0, #1 bl sub_037FDEF4 mov r0, #2 bl sub_037FDEF4 mov r0, #3 bl sub_037FDEF4 mov r0, #0 bl sub_03806610 bl sub_037FDD00 mov r4, r0 bl sub_037FE708 bl sub_0380528C mov r0, r4 bl sub_037FDD14 bl sub_037FDE70 b _038035A0 _0380359C: bl sub_037FDE70 _038035A0: ldmia sp!, {r4, lr} bx lr arm_func_end sub_03803544 arm_func_start sub_038035A8 sub_038035A8: ; 0x038035A8 stmdb sp!, {r3, lr} ldr r0, _038035E8 ; =_038098C0 ldr r0, [r0, #0xc] cmp r0, #0 bne _038035D8 ldr r0, _038035EC ; =0x027FFE1F ldrb r0, [r0] tst r0, #0x80 beq _038035D4 bl sub_038035F0 b _038035D8 _038035D4: bl sub_03803690 _038035D8: ldr r0, _038035E8 ; =_038098C0 ldr r0, [r0, #0xc] ldmia sp!, {r3, lr} bx lr .align 2, 0 _038035E8: .word _038098C0 _038035EC: .word 0x027FFE1F arm_func_end sub_038035A8 arm_func_start sub_038035F0 sub_038035F0: ; 0x038035F0 stmdb sp!, {r3, r4, r5, lr} mov r5, #1 bl sub_037FBBFC mov r4, r0 mvn r0, #2 cmp r4, r0 beq _03803668 mov r0, r4, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_037FBBCC cmp r0, #0 bne _0380365C ldr r1, _03803688 ; =0x027FFC10 ldrh r0, [r1] cmp r0, #0 subeq r0, r1, #0x410 subne r0, r1, #0x10 ldr r0, [r0] str r0, [sp] bl sub_038030E4 ldr r1, [sp] cmp r0, r1 mov r0, r4, lsl #0x10 moveq r5, #1 mov r0, r0, lsr #0x10 movne r5, #0 bl sub_037FBBAC _0380365C: mov r0, r4, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_037FBCA4 _03803668: ldr r1, _0380368C ; =_038098C0 cmp r5, #0 moveq r2, #1 movne r2, #0 str r2, [r1, #0xc] mov r0, r5 ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _03803688: .word 0x027FFC10 _0380368C: .word _038098C0 arm_func_end sub_038035F0 arm_func_start sub_03803690 sub_03803690: ; 0x03803690 ldr r0, _038036B4 ; =0x04000214 mov r2, #1 ldr r1, [r0] mov r0, r2 tst r1, #0x100000 ldrne r1, _038036B8 ; =_038098C0 movne r0, #0 strne r2, [r1, #0xc] bx lr .align 2, 0 _038036B4: .word 0x04000214 _038036B8: .word _038098C0 arm_func_end sub_03803690 arm_func_start sub_038036BC sub_038036BC: ; 0x038036BC stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r0, _038037A8 ; =_038098C0 ldr r0, [r0, #4] cmp r0, #0 bne _038037A0 ldr r2, _038037AC ; =0x027FFC40 ldrh r0, [r2] cmp r0, #2 beq _038037A0 ldr r1, _038037B0 ; =_03807564 mvn r0, #0 ldr r3, [r1] cmp r3, r0 ldreq r0, [r2, #-4] addeq r0, r0, #0xa streq r0, [r1] beq _038037A0 ldr r0, [r2, #-4]! cmp r0, r3 blo _038037A0 ldr r0, [r2] add r0, r0, #0xa str r0, [r1] bl sub_038035A8 cmp r0, #0 beq _03803750 ldr r0, _038037A8 ; =_038098C0 mov r1, #1 str r1, [r0, #4] bl sub_03802720 ldr r0, [r0, #0xc] cmp r0, #0 bne _03803750 ldr r0, _038037B0 ; =_03807564 ldr r0, [r0, #4] cmp r0, #0 bne _038037A0 _03803750: ldr r0, _038037A8 ; =_038098C0 ldr r1, _038037B0 ; =_03807564 ldr r0, [r0, #4] mov r2, #0 str r2, [r1, #4] cmp r0, #0 beq _038037A0 mov r7, #0x64 mov r6, #0xe mov r5, #0x11 mov r4, r2 b _03803788 _03803780: mov r0, r7 bl sub_037FBA0C _03803788: mov r0, r6 mov r1, r5 mov r2, r4 bl sub_037FE410 cmp r0, #0 bne _03803780 _038037A0: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _038037A8: .word _038098C0 _038037AC: .word 0x027FFC40 _038037B0: .word _03807564 arm_func_end sub_038036BC thumb_func_start sub_038037B4 sub_038037B4: ; 0x038037B4 swi 0 bx lr thumb_func_end sub_038037B4 thumb_func_start sub_038037B8 sub_038037B8: ; 0x038037B8 swi 3 bx lr thumb_func_end sub_038037B8 thumb_func_start sub_038037BC sub_038037BC: ; 0x038037BC ldr r2, _038037C8 ; =0x04000000 mov ip, r2 mov r2, #0 swi 4 bx lr .align 2, 0 _038037C8: .word 0x04000000 thumb_func_end sub_038037BC thumb_func_start sub_038037CC sub_038037CC: ; 0x038037CC mov r2, #0 swi 5 bx lr thumb_func_end sub_038037CC non_word_aligned_thumb_func_start sub_038037D2 sub_038037D2: ; 0x038037D2 swi 6 bx lr thumb_func_end sub_038037D2 non_word_aligned_thumb_func_start sub_038037D6 sub_038037D6: ; 0x038037D6 swi 7 bx lr thumb_func_end sub_038037D6 non_word_aligned_thumb_func_start sub_038037DA sub_038037DA: ; 0x038037DA swi 8 bx lr thumb_func_end sub_038037DA non_word_aligned_thumb_func_start sub_038037DE sub_038037DE: ; 0x038037DE add r1, r0, #0 mov r0, #1 swi 8 bx lr thumb_func_end sub_038037DE non_word_aligned_thumb_func_start sub_038037E6 sub_038037E6: ; 0x038037E6 add r1, r0, #0 mov r0, #0 swi 8 bx lr thumb_func_end sub_038037E6 non_word_aligned_thumb_func_start sub_038037EE sub_038037EE: ; 0x038037EE swi 9 bx lr thumb_func_end sub_038037EE non_word_aligned_thumb_func_start sub_038037F2 sub_038037F2: ; 0x038037F2 swi 9 add r0, r1, #0 bx lr thumb_func_end sub_038037F2 thumb_func_start sub_038037F8 sub_038037F8: ; 0x038037F8 swi 0xb bx lr thumb_func_end sub_038037F8 thumb_func_start sub_038037FC sub_038037FC: ; 0x038037FC swi 0xc bx lr thumb_func_end sub_038037FC thumb_func_start sub_03803800 sub_03803800: ; 0x03803800 swi 0xd bx lr thumb_func_end sub_03803800 thumb_func_start sub_03803804 sub_03803804: ; 0x03803804 swi 0xe bx lr thumb_func_end sub_03803804 thumb_func_start sub_03803808 sub_03803808: ; 0x03803808 swi 0xf bx lr thumb_func_end sub_03803808 thumb_func_start sub_0380380C sub_0380380C: ; 0x0380380C swi 0x10 bx lr thumb_func_end sub_0380380C thumb_func_start sub_03803810 sub_03803810: ; 0x03803810 swi 0x11 bx lr thumb_func_end sub_03803810 thumb_func_start sub_03803814 sub_03803814: ; 0x03803814 swi 0x12 bx lr thumb_func_end sub_03803814 thumb_func_start sub_03803818 sub_03803818: ; 0x03803818 swi 0x13 bx lr thumb_func_end sub_03803818 thumb_func_start sub_0380381C sub_0380381C: ; 0x0380381C swi 0x14 bx lr thumb_func_end sub_0380381C thumb_func_start sub_03803820 sub_03803820: ; 0x03803820 swi 0x15 bx lr thumb_func_end sub_03803820 thumb_func_start sub_03803824 sub_03803824: ; 0x03803824 swi 0x1a bx lr thumb_func_end sub_03803824 thumb_func_start sub_03803828 sub_03803828: ; 0x03803828 swi 0x1b bx lr thumb_func_end sub_03803828 thumb_func_start sub_0380382C sub_0380382C: ; 0x0380382C swi 0x1c bx lr thumb_func_end sub_0380382C arm_func_start sub_03803830 sub_03803830: ; 0x03803830 ldr r1, _03803868 ; =0x55555555 ldr r2, _0380386C ; =0x33333333 and r1, r1, r0, lsr #1 sub r1, r0, r1 ldr r0, _03803870 ; =0x0F0F0F0F and r3, r1, r2 and r1, r2, r1, lsr #2 add r1, r3, r1 add r1, r1, r1, lsr #4 and r0, r1, r0 add r0, r0, r0, lsr #8 add r0, r0, r0, lsr #16 and r0, r0, #0xff bx lr .align 2, 0 _03803868: .word 0x55555555 _0380386C: .word 0x33333333 _03803870: .word 0x0F0F0F0F arm_func_end sub_03803830 arm_func_start sub_03803874 sub_03803874: ; 0x03803874 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #8 ldr r1, _03803970 ; =_038098D0 mov r4, r0 ldrh r0, [r1] cmp r0, #0 bne _03803964 mov r0, #1 strh r0, [r1] mov r0, #0 str r0, [r1, #4] mov r0, #5 str r0, [r1, #8] bl sub_03803D50 bl sub_027F4FAC bl sub_03805360 bl sub_038048A4 bl sub_037FE2B4 ldr r1, _03803974 ; =sub_03803CE8 mov r0, #6 bl sub_037FE39C ldr r1, _03803974 ; =sub_03803CE8 mov r0, #9 bl sub_037FE39C ldr r1, _03803974 ; =sub_03803CE8 mov r0, #8 bl sub_037FE39C ldr r1, _03803974 ; =sub_03803CE8 mov r0, #4 bl sub_037FE39C ldr r0, _03803978 ; =_03809B80 ldr r1, _0380397C ; =_03809BA0 mov r2, #0x10 bl sub_037FC6AC mov sb, #0 mov r6, #0x18 ldr r8, _03803980 ; =_03809BE0 mov r7, sb mov r5, r6 _03803910: mla r0, sb, r5, r8 mov r1, r7 mov r2, r6 bl sub_037FE070 add sb, sb, #1 cmp sb, #0x10 blt _03803910 ldr r0, _03803970 ; =_038098D0 mov r2, #0 str r2, [r0, #0x490] str r2, [r0, #0x498] str r2, [r0, #0x494] mov r0, #0x200 str r0, [sp] ldr r0, _03803984 ; =_038098DC ldr r1, _03803988 ; =sub_03803C7C ldr r3, _03803978 ; =_03809B80 str r4, [sp, #4] bl sub_037FC054 ldr r0, _03803984 ; =_038098DC bl sub_037FC36C _03803964: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _03803970: .word _038098D0 _03803974: .word sub_03803CE8 _03803978: .word _03809B80 _0380397C: .word _03809BA0 _03803980: .word _03809BE0 _03803984: .word _038098DC _03803988: .word sub_03803C7C arm_func_end sub_03803874 arm_func_start sub_0380398C sub_0380398C: ; 0x0380398C stmdb sp!, {r4, r5, r6, lr} ldr r5, _038039E0 ; =_03809D64 ldr r4, _038039E4 ; =_038098D0 mov r6, r0 _0380399C: bl sub_037FDD00 ldr r1, [r4, #4] cmp r1, #0 beq _038039BC bl sub_037FDD14 mov r0, r5 bl sub_037FC290 b _0380399C _038039BC: ldr r1, _038039E4 ; =_038098D0 mov r2, #1 str r2, [r1, #4] mov r2, #4 str r2, [r1, #8] str r6, [r1, #0x49c] bl sub_037FDD14 ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _038039E0: .word _03809D64 _038039E4: .word _038098D0 arm_func_end sub_0380398C arm_func_start sub_038039E8 sub_038039E8: ; 0x038039E8 stmdb sp!, {r3, lr} ldr r1, _03803A40 ; =_038098D0 ldr r2, [r1, #4] cmp r2, #0 beq _03803A38 ldr r2, [r1, #8] cmp r2, #4 ldreq r1, [r1, #0x49c] cmpeq r1, r0 bne _03803A38 bl sub_037FDD00 ldr r1, _03803A40 ; =_038098D0 mov r2, #5 str r2, [r1, #8] mov r2, #0 str r2, [r1, #4] str r2, [r1, #0x49c] bl sub_037FDD14 ldr r0, _03803A44 ; =_03809D64 bl sub_037FC2E4 _03803A38: ldmia sp!, {r3, lr} bx lr .align 2, 0 _03803A40: .word _038098D0 _03803A44: .word _03809D64 arm_func_end sub_038039E8 arm_func_start sub_03803A48 sub_03803A48: ; 0x03803A48 stmdb sp!, {r4, r5, r6, lr} and r2, r0, #0x70 cmp r2, #0x30 bgt _03803A80 bge _03803ACC cmp r2, #0x10 bgt _03803A74 bge _03803AB4 cmp r2, #0 beq _03803AB4 b _03803AD0 _03803A74: cmp r2, #0x20 beq _03803ACC b _03803AD0 _03803A80: cmp r2, #0x50 bgt _03803A98 bge _03803ABC cmp r2, #0x40 beq _03803ABC b _03803AD0 _03803A98: cmp r2, #0x60 bgt _03803AA8 beq _03803AC4 b _03803AD0 _03803AA8: cmp r2, #0x70 beq _03803AC4 b _03803AD0 _03803AB4: mov r4, #6 b _03803AD0 _03803ABC: mov r4, #9 b _03803AD0 _03803AC4: mov r4, #8 b _03803AD0 _03803ACC: mov r4, #4 _03803AD0: and r0, r0, #0xff orr r0, r0, #0x80 mov r0, r0, lsl #8 orr r2, r0, #0x3000000 and r0, r1, #0xff orr r6, r2, r0 mov r5, #0 _03803AEC: mov r0, r4 mov r1, r6 mov r2, r5 bl sub_037FE410 cmp r0, #0 blt _03803AEC ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_end sub_03803A48 arm_func_start sub_03803B0C sub_03803B0C: ; 0x03803B0C ldr r0, _03803B24 ; =_038098D0 ldr r0, [r0, #4] cmp r0, #0 moveq r0, #1 movne r0, #0 bx lr .align 2, 0 _03803B24: .word _038098D0 arm_func_end sub_03803B0C arm_func_start sub_03803B28 sub_03803B28: ; 0x03803B28 ldr r1, _03803B3C ; =_038098D0 mov r2, #1 str r2, [r1, #4] str r0, [r1, #8] bx lr .align 2, 0 _03803B3C: .word _038098D0 arm_func_end sub_03803B28 arm_func_start sub_03803B40 sub_03803B40: ; 0x03803B40 stmdb sp!, {r3, lr} ldr r1, _03803B74 ; =_038098D0 ldr r2, [r1, #8] cmp r2, r0 bne _03803B6C ldr r0, _03803B78 ; =_03809D64 mov r2, #5 str r2, [r1, #8] mov r2, #0 str r2, [r1, #4] bl sub_037FC2E4 _03803B6C: ldmia sp!, {r3, lr} bx lr .align 2, 0 _03803B74: .word _038098D0 _03803B78: .word _03809D64 arm_func_end sub_03803B40 arm_func_start sub_03803B7C sub_03803B7C: ; 0x03803B7C stmdb sp!, {r0, r1, r2, r3} stmdb sp!, {r4, r5, r6, lr} ldrh r2, [sp, #0x18] mov r5, r0 cmp r2, #4 mov r4, r1 movhi r0, #0 bhi _03803C3C bl sub_037FDD00 ldr r3, _03803C48 ; =_038098D0 add r2, sp, #0x18 ldr ip, [r3, #0x490] mov r1, #0x18 mul r6, ip, r1 ldr lr, _03803C4C ; =_03809BE0 ldr ip, _03803C50 ; =_03809BE4 str r5, [lr, r6] ldr r5, [r3, #0x490] bic r2, r2, #3 mul lr, r5, r1 str r4, [ip, lr] add r6, r2, #4 ldrh r1, [sp, #0x18] ldr r5, _03803C54 ; =_038098D4 mov lr, #0 mov r2, #0x18 b _03803C04 _03803BE8: ldr ip, [r3, #0x490] add r6, r6, #4 mla r4, ip, r2, r5 add r4, r4, lr, lsl #2 ldr ip, [r6, #-4] add lr, lr, #1 str ip, [r4, #0x314] _03803C04: cmp lr, r1 blt _03803BE8 ldr r1, _03803C48 ; =_038098D0 ldr r4, [r1, #0x490] add r2, r4, #1 and r2, r2, #0xf str r2, [r1, #0x490] bl sub_037FDD14 ldr r1, _03803C4C ; =_03809BE0 mov r0, #0x18 mla r1, r4, r0, r1 ldr r0, _03803C58 ; =_03809B80 mov r2, #0 bl sub_037FC6D4 _03803C3C: ldmia sp!, {r4, r5, r6, lr} add sp, sp, #0x10 bx lr .align 2, 0 _03803C48: .word _038098D0 _03803C4C: .word _03809BE0 _03803C50: .word _03809BE4 _03803C54: .word _038098D4 _03803C58: .word _03809B80 arm_func_end sub_03803B7C arm_func_start sub_03803C5C sub_03803C5C: ; 0x03803C5C stmdb sp!, {r3, lr} ldr r0, _03803C78 ; =_03809B80 add r1, sp, #0 mov r2, #0 bl sub_037FC7FC ldmia sp!, {r3, lr} bx lr .align 2, 0 _03803C78: .word _03809B80 arm_func_end sub_03803C5C arm_func_start sub_03803C7C sub_03803C7C: ; 0x03803C7C stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #4 ldr r6, _03803CE4 ; =_03809B80 add r5, sp, #0 mov r4, #1 _03803C90: mov r0, r6 mov r1, r5 mov r2, r4 bl sub_037FC760 ldr r0, [sp] ldr r1, [r0] cmp r1, #3 addls pc, pc, r1, lsl #2 b _03803C90 _03803CB4: ; jump table b _03803CC4 ; case 0 b _03803CDC ; case 1 b _03803CCC ; case 2 b _03803CD4 ; case 3 _03803CC4: bl sub_03804048 b _03803C90 _03803CCC: bl sub_03805714 b _03803C90 _03803CD4: bl sub_03804A9C b _03803C90 _03803CDC: bl sub_027F517C b _03803C90 .align 2, 0 _03803CE4: .word _03809B80 arm_func_end sub_03803C7C arm_func_start sub_03803CE8 sub_03803CE8: ; 0x03803CE8 stmdb sp!, {r3, lr} cmp r2, #0 bne _03803D48 sub r0, r0, #4 cmp r0, #5 addls pc, pc, r0, lsl #2 b _03803D48 _03803D04: ; jump table b _03803D40 ; case 0 b _03803D48 ; case 1 b _03803D1C ; case 2 b _03803D48 ; case 3 b _03803D34 ; case 4 b _03803D28 ; case 5 _03803D1C: mov r0, r1 bl sub_03803E60 b _03803D48 _03803D28: mov r0, r1 bl sub_038053A8 b _03803D48 _03803D34: mov r0, r1 bl sub_038048E0 b _03803D48 _03803D40: mov r0, r1 bl sub_027F4FD4 _03803D48: ldmia sp!, {r3, lr} bx lr arm_func_end sub_03803CE8 arm_func_start sub_03803D50 sub_03803D50: ; 0x03803D50 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r0, _03803E1C ; =_03809D70 mov r3, #0 str r3, [r0, #0x24] mov r1, #0x14 str r1, [r0, #0x28] str r1, [r0, #0x2c] ldr r0, _03803E20 ; =_03809D74 mov r2, r3 _03803D74: mov r1, r3, lsl #1 add r3, r3, #1 strh r2, [r0, r1] cmp r3, #0x10 blt _03803D74 bl sub_037FD798 cmp r0, #0 bne _03803D98 bl sub_037FD74C _03803D98: ldr r7, _03803E24 ; =_03809DA0 ldr r5, _03803E28 ; =0x54505641 mov r8, #0 mov r4, #0x28 _03803DA8: mul r6, r8, r4 add r0, r7, r6 bl sub_037FD884 mov r1, r5 add r0, r7, r6 bl sub_037FDA14 add r8, r8, #1 cmp r8, #4 blt _03803DA8 ldr r2, _03803E2C ; =0x040001C0 _03803DD0: ldrh r0, [r2] tst r0, #0x80 bne _03803DD0 ldr r1, _03803E30 ; =0x00008A01 ldr r0, _03803E34 ; =0x040001C2 strh r1, [r2] mov r1, #0x84 strh r1, [r0] sub r1, r0, #2 _03803DF4: ldrh r0, [r1] tst r0, #0x80 bne _03803DF4 bl sub_03803E3C ldr r1, _03803E38 ; =0x00008201 ldr r0, _03803E2C ; =0x040001C0 strh r1, [r0] bl sub_03803E3C ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr .align 2, 0 _03803E1C: .word _03809D70 _03803E20: .word _03809D74 _03803E24: .word _03809DA0 _03803E28: .word 0x54505641 _03803E2C: .word 0x040001C0 _03803E30: .word 0x00008A01 _03803E34: .word 0x040001C2 _03803E38: .word 0x00008201 arm_func_end sub_03803D50 arm_func_start sub_03803E3C sub_03803E3C: ; 0x03803E3C ldr r0, _03803E5C ; =0x040001C2 mov r1, #0 strh r1, [r0] sub r1, r0, #2 _03803E4C: ldrh r0, [r1] tst r0, #0x80 bne _03803E4C bx lr .align 2, 0 _03803E5C: .word 0x040001C2 arm_func_end sub_03803E3C arm_func_start sub_03803E60 sub_03803E60: ; 0x03803E60 stmdb sp!, {r3, r4, lr} sub sp, sp, #4 tst r0, #0x2000000 beq _03803E90 ldr r1, _0380403C ; =_03809D74 mov r4, #0 mov r3, r4 _03803E7C: mov r2, r4, lsl #1 add r4, r4, #1 strh r3, [r1, r2] cmp r4, #0x10 blt _03803E7C _03803E90: ldr r1, _0380403C ; =_03809D74 and r2, r0, #0xf0000 mov r2, r2, lsr #0x10 mov r2, r2, lsl #1 strh r0, [r1, r2] tst r0, #0x1000000 beq _03804030 ldr r2, _03804040 ; =_03809D70 ldrh r1, [r2, #4] and r0, r1, #0xff00 mov r0, r0, lsl #8 mov r4, r0, lsr #0x10 cmp r4, #3 addls pc, pc, r4, lsl #2 b _03804024 _03803ECC: ; jump table b _03803F10 ; case 0 b _03803F38 ; case 1 b _03803FD4 ; case 2 b _03803EDC ; case 3 _03803EDC: and r0, r1, #0xff mov r0, r0, lsl #0x10 movs r3, r0, lsr #0x10 mov r0, #3 bne _03803EFC mov r1, #2 bl sub_03803A48 b _03804030 _03803EFC: str r3, [r2, #0x28] mov r1, #0 str r3, [r2, #0x2c] bl sub_03803A48 b _03804030 _03803F10: mov r0, #0 mov r1, r4 mov r2, r0 bl sub_03803B7C cmp r0, #0 bne _03804030 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03804030 _03803F38: ldr r0, [r2, #0x24] cmp r0, #0 beq _03803F54 mov r0, r4 mov r1, #3 bl sub_03803A48 b _03804030 _03803F54: and r0, r1, #0xff mov r0, r0, lsl #0x10 movs r3, r0, lsr #0x10 beq _03803F6C cmp r3, #4 bls _03803F7C _03803F6C: mov r0, r4 mov r1, #2 bl sub_03803A48 b _03804030 _03803F7C: ldrh ip, [r2, #6] ldr r0, _03804044 ; =0x00000107 cmp ip, r0 blo _03803F9C mov r0, r4 mov r1, #2 bl sub_03803A48 b _03804030 _03803F9C: mov r1, r4 mov r0, #0 mov r2, #2 str ip, [sp] bl sub_03803B7C cmp r0, #0 ldrne r0, _03804040 ; =_03809D70 movne r1, #1 strne r1, [r0, #0x24] bne _03804030 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03804030 _03803FD4: ldr r0, [r2, #0x24] cmp r0, #2 beq _03803FF0 mov r0, r4 mov r1, #3 bl sub_03803A48 b _03804030 _03803FF0: mov r0, #0 mov r1, r4 mov r2, r0 bl sub_03803B7C cmp r0, #0 ldrne r0, _03804040 ; =_03809D70 movne r1, #3 strne r1, [r0, #0x24] bne _03804030 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03804030 _03804024: mov r0, r4 mov r1, #1 bl sub_03803A48 _03804030: add sp, sp, #4 ldmia sp!, {r3, r4, lr} bx lr .align 2, 0 _0380403C: .word _03809D74 _03804040: .word _03809D70 _03804044: .word 0x00000107 arm_func_end sub_03803E60 arm_func_start sub_03804048 sub_03804048: ; 0x03804048 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0xc mov sl, r0 ldr r1, [sl, #4] cmp r1, #2 bhi _0380407C cmp r1, #0 beq _03804094 cmp r1, #1 beq _03804200 cmp r1, #2 beq _038042C8 b _03804314 _0380407C: cmp r1, #0x10 bne _03804314 ldr r0, _03804320 ; =_03809D70 ldr r0, [r0, #0x24] cmp r0, #2 bne _03804314 _03804094: bl sub_037FDD00 mov r4, r0 mov r0, #0 bl sub_03803B0C cmp r0, #0 bne _038040CC mov r0, r4 bl sub_037FDD14 ldr r0, [sl, #4] mov r1, #4 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_03803A48 b _03804314 _038040CC: mov r0, #0 bl sub_03803B28 mov r0, r4 bl sub_037FDD14 ldr r1, _03804320 ; =_03809D70 add r0, sp, #8 ldr r1, [r1, #0x28] add r2, sp, #4 bl sub_038046AC ldr r0, [sp, #8] ldrh r2, [sp, #4] mov r1, r0, lsl #7 movs r1, r1, lsr #0x1f ldreq r0, _03804320 ; =_03809D70 moveq r1, #0 streqb r1, [r0, #1] streqb r1, [r0] beq _038041AC mov r0, r0, lsl #5 movs r0, r0, lsr #0x1e beq _0380415C ldr r0, _03804320 ; =_03809D70 mov r3, #0 strb r3, [r0] ldrb r1, [r0, #1] add r2, r1, #1 and r1, r2, #0xff strb r2, [r0, #1] cmp r1, #4 blo _038041AC strb r3, [r0, #1] ldr r1, [r0, #0x28] cmp r1, #0x23 addlt r1, r1, #1 strlt r1, [r0, #0x28] b _038041AC _0380415C: ldr r0, _03804320 ; =_03809D70 mov r4, #0 strb r4, [r0, #1] ldr r3, [r0, #0x28] cmp r2, r3, asr #1 strgeb r4, [r0] bge _038041AC ldrb r1, [r0] add r2, r1, #1 and r1, r2, #0xff strb r2, [r0] cmp r1, #4 blo _038041AC strb r4, [r0] ldr r1, [r0, #0x2c] cmp r3, r1 subgt r1, r3, #1 strgt r1, [r0, #0x28] movgt r1, #3 strgtb r1, [r0, #1] _038041AC: ldrh r0, [sp, #8] ldr r1, _03804324 ; =0x027FFFAA strh r0, [r1] ldrh r0, [sp, #0xa] strh r0, [r1, #2] ldr r0, [sl, #4] cmp r0, #0 bne _038041E0 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 mov r1, #0 bl sub_03803A48 b _038041F4 _038041E0: ldr r1, [sl, #8] mov r0, r0, lsl #0x10 and r1, r1, #0xff mov r0, r0, lsr #0x10 bl sub_03803A48 _038041F4: mov r0, #0 bl sub_03803B40 b _03804314 _03804200: ldr r0, _03804320 ; =_03809D70 ldr r0, [r0, #0x24] cmp r0, #1 bne _038042B4 ldr r8, _03804328 ; =0x00000107 ldr r6, _0380432C ; =_03809D74 ldr r5, _03804330 ; =_03809DA0 mov sb, #0 mov r7, #0xd7 mov fp, #0xa mov r4, #0x28 b _03804284 _03804230: mul r0, sb, r8 bl sub_03806DD4 ldr r2, [sl, #0xc] mov r1, r8 add r0, r2, r0 bl sub_03806DD4 mov r0, r1, lsl #0x10 mov r0, r0, lsr #0x10 cmp r0, #0xc8 blo _03804260 cmp r0, #0xd7 movlo r0, r7 _03804260: add r1, r6, sb, lsl #1 strh r0, [r1, #0xcc] str sb, [sp] mla r0, sb, r4, r5 ldrsh r1, [r1, #0xcc] ldr r3, _03804334 ; =sub_0380433C mov r2, fp bl sub_037FD928 add sb, sb, #1 _03804284: ldr r1, [sl, #8] cmp sb, r1 blo _03804230 ldr r0, [sl, #4] mov r1, #0 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_03803A48 ldr r0, _03804320 ; =_03809D70 mov r1, #2 str r1, [r0, #0x24] b _03804314 _038042B4: mov r0, r1, lsl #0x10 mov r0, r0, lsr #0x10 mov r1, #3 bl sub_03803A48 b _03804314 _038042C8: ldr r0, _03804320 ; =_03809D70 ldr r0, [r0, #0x24] cmp r0, #3 bne _03804304 ldr r0, _03804338 ; =0x54505641 bl sub_037FDA84 ldr r0, [sl, #4] mov r1, #0 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_03803A48 ldr r0, _03804320 ; =_03809D70 mov r1, #0 str r1, [r0, #0x24] b _03804314 _03804304: mov r0, r1, lsl #0x10 mov r0, r0, lsr #0x10 mov r1, #3 bl sub_03803A48 _03804314: add sp, sp, #0xc ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _03804320: .word _03809D70 _03804324: .word 0x027FFFAA _03804328: .word 0x00000107 _0380432C: .word _03809D74 _03804330: .word _03809DA0 _03804334: .word sub_0380433C _03804338: .word 0x54505641 arm_func_end sub_03804048 arm_func_start sub_0380433C sub_0380433C: ; 0x0380433C stmdb sp!, {r3, r4, lr} sub sp, sp, #4 mov r4, r0 mov r3, r4 mov r0, #0 mov r1, #0x10 mov r2, #1 bl sub_03803B7C cmp r0, #0 bne _03804394 ldr r0, [sp] ldr r3, _038043A0 ; =0x027FFFAA bic r0, r0, #0x6000000 orr r0, r0, #0x6000000 str r0, [sp] ldrh r0, [sp] ldrh r2, [sp, #2] strh r0, [r3] and r1, r4, #0xff mov r0, #0x10 strh r2, [r3, #2] bl sub_03803A48 _03804394: add sp, sp, #4 ldmia sp!, {r3, r4, lr} bx lr .align 2, 0 _038043A0: .word 0x027FFFAA arm_func_end sub_0380433C arm_func_start sub_038043A4 sub_038043A4: ; 0x038043A4 stmdb sp!, {r3, lr} mov r0, #0x8000 bl sub_037FE5A8 ldr r2, _03804480 ; =0x040001C0 _038043B4: ldrh r0, [r2] tst r0, #0x80 bne _038043B4 ldr r1, _03804484 ; =0x00008A01 ldr r0, _03804488 ; =0x040001C2 strh r1, [r2] mov r1, #0x84 strh r1, [r0] sub r1, r0, #2 _038043D8: ldrh r0, [r1] tst r0, #0x80 bne _038043D8 bl sub_03804498 ldr r1, _0380448C ; =0x00008201 ldr r0, _03804480 ; =0x040001C0 strh r1, [r0] bl sub_03804498 ldr r0, _03804490 ; =_03809E48 ldrh r0, [r0] cmp r0, #0 bne _03804420 ldr r0, _03804494 ; =0x04000136 ldrh r0, [r0] tst r0, #0x40 moveq r0, #1 movne r0, #0 b _03804478 _03804420: ldr r2, _03804494 ; =0x04000136 ldrh r0, [r2] tst r0, #0x40 moveq r0, #1 beq _03804478 ldr r1, _03804484 ; =0x00008A01 mov r0, #0x84 strh r1, [r2, #0x8a] strh r0, [r2, #0x8c] _03804444: ldrh r0, [r2, #0x8a] tst r0, #0x80 bne _03804444 bl sub_03804498 ldr r1, _0380448C ; =0x00008201 ldr r0, _03804480 ; =0x040001C0 strh r1, [r0] bl sub_03804498 ldr r0, _03804494 ; =0x04000136 ldrh r0, [r0] tst r0, #0x40 movne r0, #0 moveq r0, #2 _03804478: ldmia sp!, {r3, lr} bx lr .align 2, 0 _03804480: .word 0x040001C0 _03804484: .word 0x00008A01 _03804488: .word 0x040001C2 _0380448C: .word 0x00008201 _03804490: .word _03809E48 _03804494: .word 0x04000136 arm_func_end sub_038043A4 arm_func_start sub_03804498 sub_03804498: ; 0x03804498 ldr r0, _038044B8 ; =0x040001C2 mov r1, #0 strh r1, [r0] sub r1, r0, #2 _038044A8: ldrh r0, [r1] tst r0, #0x80 bne _038044A8 bx lr .align 2, 0 _038044B8: .word 0x040001C2 arm_func_end sub_03804498 arm_func_start sub_038044BC sub_038044BC: ; 0x038044BC stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} sub sp, sp, #0x14 cmp r2, #0 ldr r2, _03804698 ; =0x040001C0 mov r5, r3 moveq r3, #0xd1 moveq r4, #1 mov r7, r0 mov r6, r1 movne r3, #0x91 movne r4, #2 _038044E8: ldrh r0, [r2] tst r0, #0x80 bne _038044E8 ldr r1, _0380469C ; =0x00008A01 ldr r0, _038046A0 ; =0x040001C2 strh r1, [r2] and r2, r3, #0xff strh r2, [r0] sub r1, r0, #2 _0380450C: ldrh r0, [r1] tst r0, #0x80 bne _0380450C mov r0, r2, lsl #0x10 ldr r2, _03804698 ; =0x040001C0 mov ip, #0 ldr r8, _038046A4 ; =0x00007FF8 add r1, sp, #0 mov r0, r0, lsr #0x10 mov r3, ip _03804534: strh r3, [r2, #2] _03804538: ldrh sb, [r2] tst sb, #0x80 bne _03804538 ldrh sb, [r2, #2] and sb, sb, #0xff mov lr, sb, lsl #0x10 mov sb, lr, lsr #8 str sb, [r1, ip, lsl #2] strh r0, [r2, #2] _0380455C: ldrh sb, [r2] tst sb, #0x80 bne _0380455C ldrh lr, [r2, #2] ldr sb, [r1, ip, lsl #2] and lr, lr, #0xff mov lr, lr, lsl #0x10 orr sb, sb, lr, lsr #16 and lr, sb, r8 mov lr, lr, asr #3 str lr, [r1, ip, lsl #2] add ip, ip, #1 cmp ip, #5 blt _03804534 ldr r0, _038046A8 ; =0x00008201 strh r0, [r2] bl sub_03804498 mov r8, #0 mov sb, r8 add r2, sp, #0 _038045AC: ldr r1, [r2, sb, lsl #2] add r3, sb, #1 b _038045D0 _038045B8: ldr r0, [r2, r3, lsl #2] add r3, r3, #1 subs r0, r1, r0 rsbmi r0, r0, #0 cmp r0, r8 movgt r8, r0 _038045D0: cmp r3, #5 blt _038045B8 add sb, sb, #1 cmp sb, #4 blt _038045AC strh r8, [r5] mov r8, #0 add r0, sp, #0 b _03804668 _038045F4: ldr r3, [r0, r8, lsl #2] add sb, r8, #1 b _0380465C _03804600: ldr r2, [r0, sb, lsl #2] subs r1, r3, r2 rsbmi r1, r1, #0 cmp r1, r6 bgt _03804658 add r1, sb, #1 b _03804650 _0380461C: ldr r5, [r0, r1, lsl #2] subs ip, r3, r5 rsbmi ip, ip, #0 cmp ip, r6 bgt _0380464C add r0, r2, r3, lsl #1 add r0, r5, r0 mov r0, r0, asr #2 bic r0, r0, #7 strh r0, [r7] mov r0, #0 b _0380468C _0380464C: add r1, r1, #1 _03804650: cmp r1, #5 blt _0380461C _03804658: add sb, sb, #1 _0380465C: cmp sb, #4 blt _03804600 add r8, r8, #1 _03804668: cmp r8, #3 blt _038045F4 ldr r2, [sp] ldr r1, [sp, #0x10] mov r0, r4 add r1, r2, r1 mov r1, r1, asr #1 bic r1, r1, #7 strh r1, [r7] _0380468C: add sp, sp, #0x14 ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _03804698: .word 0x040001C0 _0380469C: .word 0x00008A01 _038046A0: .word 0x040001C2 _038046A4: .word 0x00007FF8 _038046A8: .word 0x00008201 arm_func_end sub_038044BC arm_func_start sub_038046AC sub_038046AC: ; 0x038046AC stmdb sp!, {r3, r4, r5, r6, r7, lr} sub sp, sp, #8 movs r6, r1 mov r5, r2 mov r1, #0 mov r7, r0 strh r1, [r5] rsbmi r6, r6, #0 bl sub_038043A4 movs r4, r0 bne _03804714 ldr r1, [r7] mov r0, #0x1000 rsb r0, r0, #0 and r1, r1, r0 ldr r0, _03804890 ; =0xFF000FFF and r0, r1, r0 bic r1, r0, #0x1000000 bic r0, r1, #0x6000000 str r1, [r7] orr r1, r0, #0x6000000 str r1, [r7] ldr r0, _03804894 ; =_03809E48 mov r1, #0 strh r1, [r0] b _03804884 _03804714: add r0, sp, #4 add r3, sp, #2 mov r1, r6 mov r2, #0 bl sub_038044BC ldr r1, [r7] mov r0, r0, lsl #0x1e bic r1, r1, #0x6000000 orr ip, r1, r0, lsr #5 str ip, [r7] mov r1, #0x1000 rsb r1, r1, #0 ldrh r2, [sp, #4] and ip, ip, r1 and r1, r2, r1, lsr #20 orr ip, ip, r1 add r0, sp, #4 add r3, sp, #0 mov r1, r6 mov r2, #1 str ip, [r7] bl sub_038044BC cmp r0, #2 bne _03804794 ldr r1, [r7] mov r0, r1, lsl #5 mov r0, r0, lsr #0x1e orr r0, r0, #2 bic r1, r1, #0x6000000 mov r0, r0, lsl #0x1e orr r0, r1, r0, lsr #5 str r0, [r7] _03804794: ldrh r1, [sp, #4] ldr r2, [r7] ldr r0, _03804890 ; =0xFF000FFF mov r1, r1, lsl #0x14 and r0, r2, r0 orr r2, r0, r1, lsr #8 ldr r1, _03804898 ; =0x00008A01 ldr r0, _0380489C ; =0x040001C0 str r2, [r7] strh r1, [r0] mov r6, #0 _038047C0: bl sub_03804498 add r6, r6, #1 cmp r6, #0xc blt _038047C0 ldr r1, _038048A0 ; =0x00008201 ldr r0, _0380489C ; =0x040001C0 strh r1, [r0] bl sub_03804498 cmp r4, #2 ldreq r0, [r7] biceq r0, r0, #0x6000000 orreq r0, r0, #0x6000000 streq r0, [r7] bl sub_038043A4 cmp r0, #0 beq _03804864 cmp r0, #1 beq _03804834 cmp r0, #2 bne _03804880 ldr r1, [r7] ldr r0, _03804894 ; =_03809E48 orr r2, r1, #0x1000000 bic r1, r2, #0x6000000 orr r1, r1, #0x6000000 str r1, [r7] mov r1, #0 strh r1, [r0] b _03804884 _03804834: ldr r1, [r7] ldr r0, _03804894 ; =_03809E48 orr r1, r1, #0x1000000 str r1, [r7] mov r2, #1 ldrh r1, [sp] ldrh r3, [sp, #2] strh r2, [r0] cmp r3, r1 movlo r3, r1 strh r3, [r5] b _03804884 _03804864: ldr r1, [r7] ldr r0, _03804894 ; =_03809E48 bic r1, r1, #0x1000000 str r1, [r7] mov r1, #0 strh r1, [r0] b _03804884 _03804880: bl sub_037FDE70 _03804884: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _03804890: .word 0xFF000FFF _03804894: .word _03809E48 _03804898: .word 0x00008A01 _0380489C: .word 0x040001C0 _038048A0: .word 0x00008201 arm_func_end sub_038046AC arm_func_start sub_038048A4 sub_038048A4: ; 0x038048A4 ldr r0, _038048D8 ; =_03809E4C mov r1, #1 str r1, [r0, #4] mov r3, #0 str r3, [r0, #0x28] ldr r0, _038048DC ; =_03809E54 mov r2, r3 _038048C0: mov r1, r3, lsl #1 add r3, r3, #1 strh r2, [r0, r1] cmp r3, #0x10 blt _038048C0 bx lr .align 2, 0 _038048D8: .word _03809E4C _038048DC: .word _03809E54 arm_func_end sub_038048A4 arm_func_start sub_038048E0 sub_038048E0: ; 0x038048E0 stmdb sp!, {r3, r4, lr} sub sp, sp, #4 tst r0, #0x2000000 beq _03804910 ldr r1, _03804A94 ; =_03809E54 mov r4, #0 mov r3, r4 _038048FC: mov r2, r4, lsl #1 add r4, r4, #1 strh r3, [r1, r2] cmp r4, #0x10 blt _038048FC _03804910: ldr r1, _03804A94 ; =_03809E54 and r2, r0, #0xf0000 mov r2, r2, lsr #0x10 mov r2, r2, lsl #1 strh r0, [r1, r2] tst r0, #0x1000000 beq _03804A88 ldr r1, _03804A98 ; =_03809E4C ldrh r2, [r1, #8] and r0, r2, #0xff00 mov r0, r0, lsl #8 mov r4, r0, lsr #0x10 sub r0, r4, #0x60 cmp r0, #7 addls pc, pc, r0, lsl #2 b _03804A7C _03804950: ; jump table b _03804970 ; case 0 b _03804980 ; case 1 b _03804A7C ; case 2 b _03804A18 ; case 3 b _038049B4 ; case 4 b _038049E8 ; case 5 b _03804A4C ; case 6 b _03804A64 ; case 7 _03804970: mov r0, #0x60 mov r1, #0 bl sub_03803A48 b _03804A88 _03804980: ldrh ip, [r1, #0xa] mov r1, r4 and r3, r2, #0xff mov r0, #3 mov r2, #2 str ip, [sp] bl sub_03803B7C cmp r0, #0 bne _03804A88 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03804A88 _038049B4: ldrh ip, [r1, #0xa] mov r1, r4 and r3, r2, #0xff mov r0, #3 mov r2, #2 str ip, [sp] bl sub_03803B7C cmp r0, #0 bne _03804A88 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03804A88 _038049E8: mov r0, r2, lsl #0x10 mov r1, r4 mov r3, r0, lsr #0x10 mov r0, #3 mov r2, #1 bl sub_03803B7C cmp r0, #0 bne _03804A88 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03804A88 _03804A18: ldrh r0, [r1, #0xa] mov r2, r2, lsl #0x18 mov r1, r4 orr r3, r0, r2, lsr #8 mov r0, #3 mov r2, #1 bl sub_03803B7C cmp r0, #0 bne _03804A88 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03804A88 _03804A4C: and r0, r2, #0xff bl sub_0380521C mov r0, #0x66 mov r1, #0 bl sub_03803A48 b _03804A88 _03804A64: bl sub_03805238 mov r0, r0, lsl #0x10 mov r1, r0, lsr #0x10 mov r0, #0x67 bl sub_03803A48 b _03804A88 _03804A7C: mov r0, r4 mov r1, #1 bl sub_03803A48 _03804A88: add sp, sp, #4 ldmia sp!, {r3, r4, lr} bx lr .align 2, 0 _03804A94: .word _03809E54 _03804A98: .word _03809E4C arm_func_end sub_038048E0 arm_func_start sub_03804A9C sub_03804A9C: ; 0x03804A9C stmdb sp!, {r3, r4, r5, lr} mov r4, r0 bl sub_037FDD00 mov r5, r0 mov r0, #3 bl sub_03803B0C cmp r0, #0 bne _03804ADC mov r0, r5 bl sub_037FDD14 ldr r0, [r4, #4] mov r1, #4 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_03803A48 b _03804C00 _03804ADC: mov r0, #3 bl sub_03803B28 mov r0, r5 bl sub_037FDD14 ldr r1, [r4, #4] sub r0, r1, #0x61 cmp r0, #5 addls pc, pc, r0, lsl #2 b _03804BE8 _03804B00: ; jump table b _03804B18 ; case 0 b _03804BE8 ; case 1 b _03804BB4 ; case 2 b _03804B3C ; case 3 b _03804B78 ; case 4 b _03804BDC ; case 5 _03804B18: ldr r0, _03804C08 ; =_03809E4C mov r1, #1 str r1, [r0, #0x28] ldr r1, [r4, #8] strh r1, [r0, #2] ldr r1, [r4, #0xc] strh r1, [r0] bl sub_03804F1C b _03804BF8 _03804B3C: ldr r2, _03804C08 ; =_03809E4C mov r0, #4 str r0, [r2, #0x28] ldr r0, [r4, #8] str r0, [r2, #0x30] ldr r3, [r4, #0xc] mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 and r1, r3, #0xff str r3, [r2, #0x2c] bl sub_03804C50 mov r0, #0x64 mov r1, #0 bl sub_03803A48 b _03804BF8 _03804B78: ldr r1, _03804C08 ; =_03809E4C mov r0, #3 str r0, [r1, #0x28] ldr r2, [r4, #8] mov r0, r2, lsl #0x10 mov r4, r0, lsr #0x10 mov r0, r4 str r2, [r1, #0x30] bl sub_03804CCC add r1, r4, #0x70 mov r2, r1, lsl #0x10 mov r1, r0 mov r0, r2, lsr #0x10 bl sub_03803A48 b _03804BF8 _03804BB4: ldr r1, _03804C08 ; =_03809E4C mov r0, #2 str r0, [r1, #0x28] ldr r0, [r4, #8] str r0, [r1, #0x2c] bl sub_03804D90 mov r0, #0x63 mov r1, #0 bl sub_03803A48 b _03804BF8 _03804BDC: ldr r0, [r4, #8] bl sub_03804EB4 b _03804BF8 _03804BE8: mov r0, r1, lsl #0x10 mov r0, r0, lsr #0x10 mov r1, #1 bl sub_03803A48 _03804BF8: mov r0, #3 bl sub_03803B40 _03804C00: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _03804C08: .word _03809E4C arm_func_end sub_03804A9C arm_func_start sub_03804C0C sub_03804C0C: ; 0x03804C0C stmdb sp!, {r4, r5, r6, lr} and r1, r1, #0x3f0000 and r3, r0, #0x3c00000 mov r1, r1, lsl #0x10 mov r0, r2, lsl #0x10 orr r1, r1, r3, lsl #22 orr r6, r1, r0, lsr #16 mov r5, #8 mov r4, #0 _03804C30: mov r0, r5 mov r1, r6 mov r2, r4 bl sub_037FE410 cmp r0, #0 bne _03804C30 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_end sub_03804C0C arm_func_start sub_03804C50 sub_03804C50: ; 0x03804C50 stmdb sp!, {r4, lr} ldr r2, _03804C9C ; =0x040001C0 mov r4, r1 _03804C5C: ldrh r1, [r2] tst r1, #0x80 bne _03804C5C ldr r1, _03804CA0 ; =0x00008202 and r0, r0, #0xff strh r1, [r2] add r1, r1, #0x600 strh r1, [r2] bl sub_03804CA8 ldr r2, _03804CA4 ; =0x00008002 ldr r1, _03804C9C ; =0x040001C0 and r0, r4, #0xff strh r2, [r1] strh r0, [r1, #2] ldmia sp!, {r4, lr} bx lr .align 2, 0 _03804C9C: .word 0x040001C0 _03804CA0: .word 0x00008202 _03804CA4: .word 0x00008002 arm_func_end sub_03804C50 arm_func_start sub_03804CA8 sub_03804CA8: ; 0x03804CA8 ldr r1, _03804CC8 ; =0x040001C2 and r0, r0, #0xff strh r0, [r1] sub r1, r1, #2 _03804CB8: ldrh r0, [r1] tst r0, #0x80 bne _03804CB8 bx lr .align 2, 0 _03804CC8: .word 0x040001C2 arm_func_end sub_03804CA8 arm_func_start sub_03804CCC sub_03804CCC: ; 0x03804CCC stmdb sp!, {r3, lr} ldr r2, _03804D30 ; =0x040001C0 _03804CD4: ldrh r1, [r2] tst r1, #0x80 bne _03804CD4 ldr r1, _03804D34 ; =0x00008202 orr r0, r0, #0x80 strh r1, [r2] add r1, r1, #0x600 and r0, r0, #0xff strh r1, [r2] bl sub_03804CA8 ldr r2, _03804D38 ; =0x00008002 ldr r1, _03804D30 ; =0x040001C0 mov r0, #0 strh r2, [r1] strh r0, [r1, #2] _03804D10: ldrh r0, [r1] tst r0, #0x80 bne _03804D10 ldr r0, _03804D3C ; =0x040001C2 ldrh r0, [r0] and r0, r0, #0xff ldmia sp!, {r3, lr} bx lr .align 2, 0 _03804D30: .word 0x040001C0 _03804D34: .word 0x00008202 _03804D38: .word 0x00008002 _03804D3C: .word 0x040001C2 arm_func_end sub_03804CCC arm_func_start sub_03804D40 sub_03804D40: ; 0x03804D40 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #0 bl sub_03804CCC orr r1, r0, r4 mov r0, #0 bl sub_03804C50 ldmia sp!, {r4, lr} bx lr arm_func_end sub_03804D40 arm_func_start sub_03804D64 sub_03804D64: ; 0x03804D64 stmdb sp!, {r4, lr} mov r4, r0 mov r0, #0 bl sub_03804CCC mvn r1, r4 and r0, r0, r1 and r1, r0, #0xff mov r0, #0 bl sub_03804C50 ldmia sp!, {r4, lr} bx lr arm_func_end sub_03804D64 arm_func_start sub_03804D90 sub_03804D90: ; 0x03804D90 stmdb sp!, {r3, lr} cmp r0, #0xf addls pc, pc, r0, lsl #2 b _03804EAC _03804DA0: ; jump table b _03804EAC ; case 0 b _03804DE0 ; case 1 b _03804DF4 ; case 2 b _03804E08 ; case 3 b _03804E1C ; case 4 b _03804E28 ; case 5 b _03804E34 ; case 6 b _03804E40 ; case 7 b _03804E4C ; case 8 b _03804E58 ; case 9 b _03804E64 ; case 10 b _03804E70 ; case 11 b _03804E7C ; case 12 b _03804E88 ; case 13 b _03804EA0 ; case 14 b _03804E94 ; case 15 _03804DE0: mov r0, #1 bl sub_0380521C mov r0, #1 bl sub_03804EB4 b _03804EAC _03804DF4: mov r0, #3 bl sub_0380521C mov r0, #3 bl sub_03804EB4 b _03804EAC _03804E08: mov r0, #2 bl sub_0380521C mov r0, #2 bl sub_03804EB4 b _03804EAC _03804E1C: mov r0, #4 bl sub_03804D40 b _03804EAC _03804E28: mov r0, #4 bl sub_03804D64 b _03804EAC _03804E34: mov r0, #8 bl sub_03804D40 b _03804EAC _03804E40: mov r0, #8 bl sub_03804D64 b _03804EAC _03804E4C: mov r0, #0xc bl sub_03804D40 b _03804EAC _03804E58: mov r0, #0xc bl sub_03804D64 b _03804EAC _03804E64: mov r0, #1 bl sub_03804D40 b _03804EAC _03804E70: mov r0, #1 bl sub_03804D64 b _03804EAC _03804E7C: mov r0, #2 bl sub_03804D64 b _03804EAC _03804E88: mov r0, #2 bl sub_03804D40 b _03804EAC _03804E94: mov r0, #0x40 bl sub_03804D64 b _03804EAC _03804EA0: bl sub_037FE708 mov r0, #0x40 bl sub_03804D40 _03804EAC: ldmia sp!, {r3, lr} bx lr arm_func_end sub_03804D90 arm_func_start sub_03804EB4 sub_03804EB4: ; 0x03804EB4 stmdb sp!, {r4, lr} mov r4, r0 cmp r4, #1 beq _03804ED8 cmp r4, #2 beq _03804EF0 cmp r4, #3 beq _03804EE4 b _03804F04 _03804ED8: mov r0, #0x10 bl sub_03804D64 b _03804F08 _03804EE4: mov r0, #0x30 bl sub_03804D40 b _03804F08 _03804EF0: mov r0, #0x20 bl sub_03804D64 mov r0, #0x10 bl sub_03804D40 b _03804F08 _03804F04: bl sub_037FDE70 _03804F08: ldr r0, _03804F18 ; =_0380756C str r4, [r0] ldmia sp!, {r4, lr} bx lr .align 2, 0 _03804F18: .word _0380756C arm_func_end sub_03804EB4 arm_func_start sub_03804F1C sub_03804F1C: ; 0x03804F1C stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} ldr r0, _038050D8 ; =0x04000208 mov r8, #0 ldrh sb, [r0] strh r8, [r0] bl sub_037FDD00 mov r4, r0 mvn r0, #0xfe000000 bl sub_037FB928 mov r5, r0 mov r0, r8 bl sub_03804CCC mov r6, r0 mov r0, #2 bl sub_0380521C mov r0, #2 bl sub_03804EB4 mov r0, #2 bl sub_03804EB4 bl sub_037FE708 mov r0, #1 bl sub_03804D64 ldr r0, _038050DC ; =_03809E4E ldrh r0, [r0] tst r0, #1 beq _03804FA0 ldr r0, _038050E0 ; =_03809E4C ldr r1, _038050E4 ; =0x04000132 ldrh r2, [r0] mov r0, #0x1000 orr r2, r2, #0x4000 strh r2, [r1] bl sub_037FB8F0 _03804FA0: ldr r0, _038050DC ; =_03809E4E ldrh r0, [r0] tst r0, #4 beq _03804FB8 mov r0, #0x400000 bl sub_037FB8F0 _03804FB8: ldr r0, _038050DC ; =_03809E4E ldrh r0, [r0] tst r0, #2 beq _03804FFC ldr r1, _038050E8 ; =0x04000134 mov r0, #0x8000 ldrh r7, [r1] mov r8, #1 bl sub_037FE5A8 mov r0, #0x40 mov r1, #0 bl sub_037FE588 mov r0, #0x100 mov r1, r0 bl sub_037FE588 mov r0, #0x80 bl sub_037FB8F0 _03804FFC: ldr r0, _038050DC ; =_03809E4E ldrh r0, [r0] tst r0, #8 beq _03805014 mov r0, #0x100000 bl sub_037FB8F0 _03805014: ldr r0, _038050DC ; =_03809E4E ldrh r0, [r0] tst r0, #0x10 beq _0380502C mov r0, #0x2000 bl sub_037FB8F0 _0380502C: mov r0, r4 bl sub_037FDD14 ldr r2, _038050D8 ; =0x04000208 mov r0, #1 ldrh r1, [r2] strh r0, [r2] bl sub_038050F0 mov r1, r6 mov r0, #0 bl sub_03804C50 ldr r0, _038050DC ; =_03809E4E ldrh r1, [r0] tst r1, #0x20 movne r0, #6 moveq r0, #7 tst r1, #0x40 movne r6, #4 moveq r6, #5 bl sub_03804D90 mov r0, r6 bl sub_03804D90 cmp r8, #0 ldrne r0, _038050E8 ; =0x04000134 strneh r7, [r0] mov r0, #1 bl sub_03804D40 bl sub_037FE760 mov r1, #0 ldr r3, _038050EC ; =_03809E54 mov r2, r1 mov r0, #0x62 str r1, [r3, #0x20] bl sub_03804C0C bl sub_037FDD00 mov r0, r5 bl sub_037FB8A4 mov r0, r4 bl sub_037FDD14 ldr r1, _038050D8 ; =0x04000208 ldrh r0, [r1] strh sb, [r1] ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} bx lr .align 2, 0 _038050D8: .word 0x04000208 _038050DC: .word _03809E4E _038050E0: .word _03809E4C _038050E4: .word 0x04000132 _038050E8: .word 0x04000134 _038050EC: .word _03809E54 arm_func_end sub_03804F1C arm_func_start sub_038050F0 sub_038050F0: ; 0x038050F0 ldr ip, _038050F8 ; =sub_038037D6 bx ip .align 2, 0 _038050F8: .word sub_038037D6 + 1 arm_func_end sub_038050F0 arm_func_start sub_038050FC sub_038050FC: ; 0x038050FC stmdb sp!, {r4, r5, r6, lr} ldr r1, _03805210 ; =_03809E80 ldr r3, [r1, #4] cmp r3, #0 bne _03805138 mov r2, #1 mov r3, r2 mov r0, #3 mov r1, #0x66 bl sub_03803B7C cmp r0, #0 beq _03805208 mov r0, #1 bl sub_0380521C b _03805208 _03805138: cmp r3, #4 bge _03805164 ldr r0, _03805214 ; =_0380756C ldr r0, [r0] cmp r3, r0 beq _03805208 mov r0, #3 mov r1, #0x66 mov r2, #1 bl sub_03803B7C b _03805208 _03805164: sub r2, r3, #4 mov r0, #0xc mul r4, r2, r0 ldr r5, _03805218 ; =_03807570 ldr r0, [r1] add r6, r5, r4 ldrh r1, [r6, #0xa] bl sub_03806DD4 mov r1, #0 mov r3, r1, lsr r0 ldr ip, [r6, #4] mov r2, #0x80000000 rsb r1, r0, #0x20 orr r3, r3, r2, lsl r1 sub r1, r0, #0x20 and ip, ip, r2, lsr r0 orr r3, r3, r2, lsr r1 ldr r0, [r5, r4] cmp ip, #0 and r0, r0, r3 cmpeq r0, #0 movne r3, #1 ldrh r2, [r6, #8] ldrh r1, [r6, #0xa] ldr r0, _03805210 ; =_03809E80 mul r1, r2, r1 ldr r2, [r0] moveq r3, #2 add r2, r2, #1 cmp r2, r1 str r2, [r0] movhs r1, #0 strhs r1, [r0] ldr r0, _03805214 ; =_0380756C ldr r0, [r0] cmp r3, r0 beq _03805208 mov r0, #3 mov r1, #0x66 mov r2, #1 bl sub_03803B7C _03805208: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _03805210: .word _03809E80 _03805214: .word _0380756C _03805218: .word _03807570 arm_func_end sub_038050FC arm_func_start sub_0380521C sub_0380521C: ; 0x0380521C cmp r0, #0xf ldrle r1, _03805234 ; =_03809E80 movle r2, #0 strle r0, [r1, #4] strle r2, [r1] bx lr .align 2, 0 _03805234: .word _03809E80 arm_func_end sub_0380521C arm_func_start sub_03805238 sub_03805238: ; 0x03805238 ldr r0, _03805244 ; =_03809E80 ldr r0, [r0, #4] bx lr .align 2, 0 _03805244: .word _03809E80 arm_func_end sub_03805238 arm_func_start sub_03805248 sub_03805248: ; 0x03805248 stmdb sp!, {r4, lr} mov r4, r0 ldr r3, _03805284 ; =_03809E88 mov r1, #0 ldr r0, _03805288 ; =_03809E98 mov r2, #0xa4 stmib r3, {r1, r4} bl sub_037FE070 mov r0, r4 bl sub_038052BC ldr r0, _03805284 ; =_03809E88 mov r1, #3 strb r1, [r0] ldmia sp!, {r4, lr} bx lr .align 2, 0 _03805284: .word _03809E88 _03805288: .word _03809E98 arm_func_end sub_03805248 arm_func_start sub_0380528C sub_0380528C: ; 0x0380528C stmdb sp!, {r3, lr} ldr r2, _038052B8 ; =0x04000304 mov r0, #1 ldrh r1, [r2] bic r1, r1, #2 strh r1, [r2] bl sub_0380521C mov r0, #1 bl sub_03804EB4 ldmia sp!, {r3, lr} bx lr .align 2, 0 _038052B8: .word 0x04000304 arm_func_end sub_0380528C arm_func_start sub_038052BC sub_038052BC: ; 0x038052BC stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} sub sp, sp, #0x50 str r0, [sp, #0x44] ldr r0, _03805354 ; =_0380AAFC mov sb, #4 mov r7, #8 mov r4, #3 ldr r1, _03805358 ; =_0380AAFC ldr r6, _0380535C ; =_03809F3C mov sl, #0x600 mov r8, #0 mov r5, #0x1c0 mov lr, #0x40 mov ip, #5 mov r3, #7 mov r2, #9 str r0, [sp, #0x1c] str r1, [sp, #0x20] add r0, sp, #0x1c add r1, sp, #0 str sl, [sp, #0x24] str sb, [sp, #0x28] str r8, [sp, #0x3c] str r7, [sp, #0x40] str r6, [sp, #0x48] str r5, [sp, #0x4c] str r4, [sp] str lr, [sp, #0x38] str r4, [sp, #8] str sb, [sp, #0x18] str ip, [sp, #0x10] str r3, [sp, #4] str r7, [sp, #0x14] str r2, [sp, #0xc] bl sub_027E0000 add sp, sp, #0x50 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} bx lr .align 2, 0 _03805354: .word _0380AAFC _03805358: .word _0380AAFC _0380535C: .word _03809F3C arm_func_end sub_038052BC arm_func_start sub_03805360 sub_03805360: ; 0x03805360 ldr r0, _0380539C ; =_0380B1FC mov r3, #0 str r3, [r0, #0x20] ldr r0, _038053A0 ; =_0380B1FC mov r2, r3 _03805374: mov r1, r3, lsl #1 add r3, r3, #1 strh r2, [r0, r1] cmp r3, #0x10 blt _03805374 ldr r1, _038053A4 ; =0x0400010E ldrh r0, [r1] bic r0, r0, #0x80 strh r0, [r1] bx lr .align 2, 0 _0380539C: .word _0380B1FC _038053A0: .word _0380B1FC _038053A4: .word 0x0400010E arm_func_end sub_03805360 arm_func_start sub_038053A8 sub_038053A8: ; 0x038053A8 stmdb sp!, {r4, lr} tst r0, #0x2000000 beq _038053D4 ldr r1, _03805660 ; =_0380B1FC mov r4, #0 mov r3, r4 _038053C0: mov r2, r4, lsl #1 add r4, r4, #1 strh r3, [r1, r2] cmp r4, #0x10 blt _038053C0 _038053D4: ldr r1, _03805660 ; =_0380B1FC and r2, r0, #0xf0000 mov r2, r2, lsr #0x10 mov r2, r2, lsl #1 strh r0, [r1, r2] tst r0, #0x1000000 beq _03805658 ldr r1, _03805664 ; =_0380B1FC ldrh r2, [r1] and r0, r2, #0xff00 mov r0, r0, lsl #8 mov r4, r0, lsr #0x10 sub r0, r4, #0x40 cmp r0, #3 addls pc, pc, r0, lsl #2 b _0380564C _03805414: ; jump table b _03805424 ; case 0 b _03805460 ; case 1 b _03805564 ; case 2 b _038055C8 ; case 3 _03805424: mov r1, r4 and r3, r2, #0xff mov r0, #2 mov r2, #1 bl sub_03803B7C cmp r0, #0 bne _0380544C mov r0, r4 mov r1, #4 bl sub_03803A48 _0380544C: ldr r0, _03805668 ; =0x027FFF94 mov r1, #0 strh r1, [r0] str r1, [r0, #-4] b _03805658 _03805460: ldr r0, [r1, #0x20] cmp r0, #0 beq _0380547C mov r0, r4 mov r1, #3 bl sub_03803A48 b _03805658 _0380547C: and r0, r2, #0xff strh r0, [r1, #0x24] ldrh r2, [r1, #2] ldrh r0, [r1, #4] orr r3, r0, r2, lsl #16 cmp r3, #0x2000000 blo _038054A0 cmp r3, #0x2400000 blo _038054B0 _038054A0: mov r0, r4 mov r1, #2 bl sub_03803A48 b _03805658 _038054B0: str r3, [r1, #0x28] ldrh r2, [r1, #6] ldrh r0, [r1, #8] orr r2, r0, r2, lsl #16 add r0, r3, r2 cmp r0, #0x2400000 bls _038054DC mov r0, r4 mov r1, #2 bl sub_03803A48 b _03805658 _038054DC: str r2, [r1, #0x30] ldrh r2, [r1, #0xa] ldrh r0, [r1, #0xc] orr r0, r0, r2, lsl #16 bl sub_03805670 cmp r0, #0 bne _03805508 mov r0, r4 mov r1, #2 bl sub_03803A48 b _03805658 _03805508: ldr r3, _03805664 ; =_0380B1FC mov r2, #0 str r2, [r3, #0x2c] ldrh r0, [r3, #0x24] mov r1, r4 and ip, r0, #7 mov r0, #2 strh ip, [r3, #0x26] bl sub_03803B7C cmp r0, #0 bne _03805544 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03805658 _03805544: ldr r1, _03805668 ; =0x027FFF94 mov r2, #0 strh r2, [r1] ldr r0, _03805664 ; =_0380B1FC str r2, [r1, #-4] mov r1, #1 str r1, [r0, #0x20] b _03805658 _03805564: ldr r0, [r1, #0x20] cmp r0, #2 beq _03805580 mov r0, r4 mov r1, #3 bl sub_03803A48 b _03805658 _03805580: mov r1, r4 mov r0, #2 mov r2, #0 bl sub_03803B7C cmp r0, #0 bne _038055A8 mov r0, r4 mov r1, #4 bl sub_03803A48 b _03805658 _038055A8: ldr r0, _03805664 ; =_0380B1FC mov r2, #3 ldr r1, _0380566C ; =0x0400010E str r2, [r0, #0x20] ldrh r0, [r1] bic r0, r0, #0x80 strh r0, [r1] b _03805658 _038055C8: ldr r0, [r1, #0x20] cmp r0, #2 beq _038055E4 mov r0, r4 mov r1, #3 bl sub_03803A48 b _03805658 _038055E4: ldrh r2, [r1, #2] ldrh r0, [r1, #4] orr r0, r0, r2, lsl #16 bl sub_03805670 cmp r0, #0 bne _0380560C mov r0, r4 mov r1, #2 bl sub_03803A48 b _03805658 _0380560C: bl sub_037FDD00 ldr r3, _0380566C ; =0x0400010E ldr r1, _03805664 ; =_0380B1FC ldrh r2, [r3] bic r2, r2, #0x80 strh r2, [r3] ldrh r2, [r1, #0x34] strh r2, [r3, #-2] ldrh r1, [r1, #0x36] orr r1, r1, #0xc0 strh r1, [r3] bl sub_037FDD14 mov r0, r4 mov r1, #0 bl sub_03803A48 b _03805658 _0380564C: mov r0, r4 mov r1, #1 bl sub_03803A48 _03805658: ldmia sp!, {r4, lr} bx lr .align 2, 0 _03805660: .word _0380B1FC _03805664: .word _0380B1FC _03805668: .word 0x027FFF94 _0380566C: .word 0x0400010E arm_func_end sub_038053A8 arm_func_start sub_03805670 sub_03805670: ; 0x03805670 cmp r0, #0x10000 bhs _03805694 ldr r1, _03805710 ; =_0380B1FC mov r2, #0 strh r2, [r1, #0x36] rsb r0, r0, #0x10000 strh r0, [r1, #0x34] mov r0, #1 bx lr _03805694: cmp r0, #0x400000 bhs _038056BC ldr r1, _03805710 ; =_0380B1FC mov r3, #1 mov r0, r0, lsr #6 rsb r2, r0, #0x10000 strh r3, [r1, #0x36] mov r0, r3 strh r2, [r1, #0x34] bx lr _038056BC: cmp r0, #0x1000000 bhs _038056E4 ldr r1, _03805710 ; =_0380B1FC mov r2, #2 mov r0, r0, lsr #8 strh r2, [r1, #0x36] rsb r0, r0, #0x10000 strh r0, [r1, #0x34] mov r0, #1 bx lr _038056E4: cmp r0, #0x4000000 movhs r0, #0 bxhs lr ldr r1, _03805710 ; =_0380B1FC mov r2, #3 mov r0, r0, lsr #0xa strh r2, [r1, #0x36] rsb r0, r0, #0x10000 strh r0, [r1, #0x34] mov r0, #1 bx lr .align 2, 0 _03805710: .word _0380B1FC arm_func_end sub_03805670 arm_func_start sub_03805714 sub_03805714: ; 0x03805714 stmdb sp!, {r3, r4, r5, lr} mov r4, r0 ldr r2, [r4, #4] cmp r2, #0x40 beq _0380573C cmp r2, #0x41 beq _038057EC cmp r2, #0x42 beq _03805884 b _03805920 _0380573C: bl sub_037FDD00 mov r5, r0 mov r0, #2 bl sub_03803B0C cmp r0, #0 bne _03805774 mov r0, r5 bl sub_037FDD14 ldr r0, [r4, #4] mov r1, #4 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_03803A48 b _03805920 _03805774: mov r0, #2 bl sub_03803B28 mov r0, r5 bl sub_037FDD14 ldr r0, [r4, #8] and r0, r0, #1 cmp r0, #1 bne _038057A8 bl sub_03805C64 ldr r1, [r4, #8] tst r1, #2 eorne r0, r0, #0x8000 b _038057B8 _038057A8: bl sub_03805B10 ldr r1, [r4, #8] tst r1, #2 eorne r0, r0, #0x80 _038057B8: ldr r1, _03805928 ; =0x027FFF94 movne r0, r0, lsl #0x10 movne r0, r0, lsr #0x10 strh r0, [r1] str r1, [r1, #-4] ldr r0, [r4, #4] mov r1, #0 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_03803A48 mov r0, #2 bl sub_03803B40 b _03805920 _038057EC: ldr r0, _0380592C ; =_0380B1FC ldr r1, [r0, #0x20] cmp r1, #1 bne _03805870 mov r1, #0 strh r1, [r0, #0x3a] strh r1, [r0, #0x38] bl sub_037FDD00 mov r5, r0 mov r0, #0x40 bl sub_037FB8F0 ldr r1, _03805930 ; =sub_0380593C mov r0, #0x40 bl sub_03805D98 bl sub_03805DC0 ldr r1, _0380592C ; =_0380B1FC ldr r2, _03805934 ; =0x0400010C ldrh r3, [r1, #0x34] mov r0, r5 strh r3, [r2] ldrh r1, [r1, #0x36] orr r1, r1, #0xc0 strh r1, [r2, #2] bl sub_037FDD14 ldr r0, [r4, #4] mov r1, #0 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 bl sub_03803A48 ldr r0, _0380592C ; =_0380B1FC mov r1, #2 str r1, [r0, #0x20] b _03805920 _03805870: mov r0, r2, lsl #0x10 mov r0, r0, lsr #0x10 mov r1, #3 bl sub_03803A48 b _03805920 _03805884: ldr r0, _0380592C ; =_0380B1FC ldr r1, [r0, #0x20] sub r0, r1, #3 cmp r0, #1 bhi _03805900 ldr r1, _03805938 ; =0x0400010E ldrh r0, [r1] bic r0, r0, #0x80 strh r0, [r1] bl sub_037FDD00 mov r4, r0 mov r0, #0x40 mov r1, #0 bl sub_03805D98 bl sub_03805E20 mov r0, r4 bl sub_037FDD14 ldr r0, _0380592C ; =_0380B1FC mov r1, #0 ldr r0, [r0, #0x20] cmp r0, #3 bne _038058E8 mov r0, #0x42 bl sub_03803A48 b _038058F0 _038058E8: mov r0, #0x51 bl sub_03803A48 _038058F0: ldr r0, _0380592C ; =_0380B1FC mov r1, #0 str r1, [r0, #0x20] b _03805920 _03805900: cmp r1, #3 mov r1, #3 bne _03805918 mov r0, #0x42 bl sub_03803A48 b _03805920 _03805918: mov r0, #0x51 bl sub_03803A48 _03805920: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _03805928: .word 0x027FFF94 _0380592C: .word _0380B1FC _03805930: .word sub_0380593C _03805934: .word 0x0400010C _03805938: .word 0x0400010E arm_func_end sub_03805714 arm_func_start sub_0380593C sub_0380593C: ; 0x0380593C stmdb sp!, {r3, lr} bl sub_03805970 ldr r3, _03805968 ; =0x0380FFF8 ldr r0, _0380596C ; =0x04000214 ldr r2, [r3] mov r1, #0x40 orr r2, r2, #0x40 str r2, [r3] str r1, [r0] ldmia sp!, {r3, lr} bx lr .align 2, 0 _03805968: .word 0x0380FFF8 _0380596C: .word 0x04000214 arm_func_end sub_0380593C arm_func_start sub_03805970 sub_03805970: ; 0x03805970 stmdb sp!, {r4, r5, r6, r7, lr} ldr r4, _03805B00 ; =_0380B1FC ldrh r5, [r4, #0x26] and r0, r5, #4 cmp r0, #4 ldrh r6, [r4, #0x38] bne _03805990 b _03805994 _03805990: ldrh r7, [r4, #0x3a] _03805994: beq _0380599C b _038059A0 _0380599C: ldr r7, _03805B04 ; =0x0000FFFF _038059A0: bl sub_03803C5C cmp r0, #0 bne _03805A0C mov r0, #2 bl sub_03803B0C cmp r0, #0 beq _03805A0C and r0, r5, #1 cmp r0, #1 bne _038059EC bl sub_03805C64 tst r5, #2 beq _038059D8 b _038059DC _038059D8: mov r7, r0 _038059DC: bne _038059E4 b _038059E8 _038059E4: eor r7, r0, #0x8000 _038059E8: b _03805A0C _038059EC: bl sub_03805B10 tst r5, #2 beq _038059FC b _03805A00 _038059FC: mov r7, r0 _03805A00: bne _03805A08 b _03805A0C _03805A08: eor r7, r0, #0x80 _03805A0C: and r0, r5, #1 ldr r3, _03805B08 ; =0x027FFC00 ldr r1, [r4, #0x2c] cmp r0, #1 bne _03805A3C ldr r2, [r4, #0x28] strh r7, [r2, r1]! str r2, [r3, #0x390] add r3, r3, #0x394 strh r7, [r3] add r1, r1, #2 b _03805A74 _03805A3C: and r7, r7, #0xff tst r1, #1 bne _03805A54 mov r6, r7 add r1, r1, #1 b _03805A74 _03805A54: orr r0, r6, r7, lsl #8 ldr r2, [r4, #0x28] sub r1, r1, #1 strh r0, [r2, r1]! str r2, [r3, #0x390] add r3, r3, #0x394 strh r0, [r3] add r1, r1, #2 _03805A74: strh r6, [r4, #0x38] strh r7, [r4, #0x3a] ldr r0, [r4, #0x30] cmp r1, r0 bhs _03805A8C b _03805A90 _03805A8C: mov r1, #0 _03805A90: str r1, [r4, #0x2c] blo _03805AF8 ldrh r0, [r4, #0x24] and r0, r0, #0x10 cmp r0, #0x10 bne _03805AB8 mov r0, #0x51 mov r1, #0 bl sub_03803A48 b _03805AF8 _03805AB8: mov r0, #2 mov r1, #0x42 mov r2, #0 bl sub_03803B7C cmp r0, #0 bne _03805AE0 mov r0, #0x51 mov r1, #4 bl sub_03803A48 b _03805AF8 _03805AE0: mov r0, #4 str r0, [r4, #0x20] ldr r1, _03805B0C ; =0x0400010E ldrh r0, [r1] bic r0, r0, #0x80 strh r0, [r1] _03805AF8: ldmia sp!, {r4, r5, r6, r7, lr} bx lr .align 2, 0 _03805B00: .word _0380B1FC _03805B04: .word 0x0000FFFF _03805B08: .word 0x027FFC00 _03805B0C: .word 0x0400010E arm_func_end sub_03805970 arm_func_start sub_03805B10 sub_03805B10: ; 0x03805B10 stmdb sp!, {r4, lr} ldr r2, _03805C1C ; =0x040001C0 _03805B18: ldrh r0, [r2] tst r0, #0x80 bne _03805B18 ldr r1, _03805C20 ; =0x00008A01 ldr r0, _03805C24 ; =0x040001C2 strh r1, [r2] mov r1, #0xec strh r1, [r0] sub r1, r0, #2 _03805B3C: ldrh r0, [r1] tst r0, #0x80 bne _03805B3C bl sub_03805C34 ldr r2, _03805C28 ; =0x00008201 ldr r1, _03805C1C ; =0x040001C0 mov r4, r0, lsl #0x18 strh r2, [r1] bl sub_03805C34 ldr r2, _03805C2C ; =_0380B238 ldr r1, _03805C30 ; =0x00007F80 orr r0, r0, r4, lsr #16 and r1, r0, r1 ldr r0, [r2, #0x10] mov r1, r1, lsl #9 add r3, r0, r1, lsr #16 str r3, [r2, #0x10] ldr r0, [r2, #0xc] add r0, r0, #1 str r0, [r2, #0xc] cmp r0, #0x1000 blo _03805BEC ldrsb r4, [r2] mov r0, r3, lsr #0xc sub r0, r0, #0x80 mov r0, r0, lsl #0x18 cmp r4, r0, asr #24 mov r0, r0, asr #0x18 cmplt r4, #0xc addlt r0, r4, #1 strltb r0, [r2] blt _03805BDC cmp r0, r4 bge _03805BDC mvn r0, #0xb cmp r4, r0 ldrgt r0, _03805C2C ; =_0380B238 ldrgtsb r2, [r0] subgt r2, r2, #1 strgtb r2, [r0] _03805BDC: ldr r0, _03805C2C ; =_0380B238 mov r2, #0 str r2, [r0, #0xc] str r2, [r0, #0x10] _03805BEC: ldr r0, _03805C2C ; =_0380B238 ldrsb r0, [r0] rsb r0, r0, r1, lsr #16 cmp r0, #0xff movgt r0, #0xff bgt _03805C0C cmp r0, #0 movlt r0, #0 _03805C0C: mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 ldmia sp!, {r4, lr} bx lr .align 2, 0 _03805C1C: .word 0x040001C0 _03805C20: .word 0x00008A01 _03805C24: .word 0x040001C2 _03805C28: .word 0x00008201 _03805C2C: .word _0380B238 _03805C30: .word 0x00007F80 arm_func_end sub_03805B10 arm_func_start sub_03805C34 sub_03805C34: ; 0x03805C34 ldr r0, _03805C60 ; =0x040001C2 mov r1, #0 strh r1, [r0] sub r1, r0, #2 _03805C44: ldrh r0, [r1] tst r0, #0x80 bne _03805C44 ldr r0, _03805C60 ; =0x040001C2 ldrh r0, [r0] and r0, r0, #0xff bx lr .align 2, 0 _03805C60: .word 0x040001C2 arm_func_end sub_03805C34 arm_func_start sub_03805C64 sub_03805C64: ; 0x03805C64 stmdb sp!, {r4, lr} ldr r2, _03805D7C ; =0x040001C0 _03805C6C: ldrh r0, [r2] tst r0, #0x80 bne _03805C6C ldr r1, _03805D80 ; =0x00008A01 ldr r0, _03805D84 ; =0x040001C2 strh r1, [r2] mov r1, #0xe4 strh r1, [r0] sub r1, r0, #2 _03805C90: ldrh r0, [r1] tst r0, #0x80 bne _03805C90 bl sub_03805C34 ldr r2, _03805D88 ; =0x00008201 ldr r1, _03805D7C ; =0x040001C0 mov r4, r0, lsl #0x18 strh r2, [r1] bl sub_03805C34 ldr r3, _03805D8C ; =_0380B238 ldr r1, _03805D90 ; =0x00007FF8 orr r0, r0, r4, lsr #16 and r2, r0, r1 ldr r0, [r3, #4] mov r2, r2, lsl #0x11 add r4, r0, r2, lsr #16 str r4, [r3, #4] ldr r0, [r3, #8] add r0, r0, #1 str r0, [r3, #8] cmp r0, #0x100 blo _03805D48 mov r0, r1, lsl #1 and r0, r0, r4, lsr #8 ldrsh r4, [r3, #2] sub r0, r0, #0x8000 mov r0, r0, lsl #0x10 cmp r4, r0, asr #16 mov r1, r0, asr #0x10 cmplt r4, #0xc00 addlt r0, r4, #0x10 strlth r0, [r3, #2] blt _03805D38 cmp r1, r4 bge _03805D38 mov r0, #0xc00 rsb r0, r0, #0 cmp r4, r0 ldrgt r0, _03805D8C ; =_0380B238 ldrgtsh r1, [r0, #2] subgt r1, r1, #0x10 strgth r1, [r0, #2] _03805D38: ldr r0, _03805D8C ; =_0380B238 mov r1, #0 str r1, [r0, #8] str r1, [r0, #4] _03805D48: ldr r1, _03805D8C ; =_0380B238 ldr r0, _03805D94 ; =0x0000FFF0 ldrsh r1, [r1, #2] rsb r1, r1, r2, lsr #16 cmp r1, r0 movgt r1, r0 bgt _03805D6C cmp r1, #0 movlt r1, #0 _03805D6C: mov r0, r1, lsl #0x10 mov r0, r0, lsr #0x10 ldmia sp!, {r4, lr} bx lr .align 2, 0 _03805D7C: .word 0x040001C0 _03805D80: .word 0x00008A01 _03805D84: .word 0x040001C2 _03805D88: .word 0x00008201 _03805D8C: .word _0380B238 _03805D90: .word 0x00007FF8 _03805D94: .word 0x0000FFF0 arm_func_end sub_03805C64 arm_func_start sub_03805D98 sub_03805D98: ; 0x03805D98 ldr r2, _03805DBC ; =_038074F4 mov r3, #0 _03805DA0: tst r0, #1 strne r1, [r2, r3, lsl #2] add r3, r3, #1 cmp r3, #0x19 mov r0, r0, lsr #1 blt _03805DA0 bx lr .align 2, 0 _03805DBC: .word _038074F4 arm_func_end sub_03805D98 arm_func_start sub_03805DC0 sub_03805DC0: ; 0x03805DC0 stmdb sp!, {r3, lr} ldr r3, _03805E14 ; =0x0380FFFC ldr r0, _03805E18 ; =sub_03805E64 ldr r2, [r3] cmp r2, r0 beq _03805E0C ldr r0, _03805E1C ; =_0380B24C mov r1, #0 str r1, [r0] sub r1, r3, #0x17c str r1, [r0, #4] mov r1, #0x40 str r1, [r0, #8] str r2, [r0, #0xc] bl sub_037FDD00 ldr r2, _03805E18 ; =sub_03805E64 ldr r1, _03805E14 ; =0x0380FFFC str r2, [r1] bl sub_037FDD14 _03805E0C: ldmia sp!, {r3, lr} bx lr .align 2, 0 _03805E14: .word 0x0380FFFC _03805E18: .word sub_03805E64 _03805E1C: .word _0380B24C arm_func_end sub_03805DC0 arm_func_start sub_03805E20 sub_03805E20: ; 0x03805E20 stmdb sp!, {r3, lr} ldr r1, _03805E58 ; =0x0380FFFC ldr r0, _03805E5C ; =sub_03805E64 ldr r1, [r1] cmp r1, r0 bne _03805E50 bl sub_037FDD00 ldr r1, _03805E60 ; =_0380B24C ldr r2, _03805E58 ; =0x0380FFFC ldr r1, [r1, #0xc] str r1, [r2] bl sub_037FDD14 _03805E50: ldmia sp!, {r3, lr} bx lr .align 2, 0 _03805E58: .word 0x0380FFFC _03805E5C: .word sub_03805E64 _03805E60: .word _0380B24C arm_func_end sub_03805E20 arm_func_start sub_03805E64 sub_03805E64: ; 0x03805E64 mov ip, #0x4000000 add r1, ip, #0x208 ldrh r0, [r1] tst r0, r0 beq _03805E7C b _03805E80 _03805E7C: bx lr _03805E80: ldr r3, [ip, #0x210] ldr r1, [ip, #0x214] ands r2, r1, r3 beq _03805E94 b _03805E98 _03805E94: bx lr _03805E98: ldr r0, _03806080 ; =0x01DF3FFF tst r2, r0 beq _03805EA8 b _03805EAC _03805EA8: str r2, [ip, #0x214] _03805EAC: beq _03805EB4 b _03805EB8 _03805EB4: bx lr _03805EB8: stmdb sp!, {lr} mrs r0, spsr stmdb sp!, {r0} stmdb sp, {sp, lr} ^ sub sp, sp, #8 mov r0, #0x9f msr cpsr_c, r0 ldr r1, _03806084 ; =_038076A4 ldrh r0, [r1, #2] add r0, r0, #1 strh r0, [r1, #2] ldr r1, _03806088 ; =_0380B24C cmp r0, #1 beq _03805EF4 b _03805EF8 _03805EF4: mov r0, sp _03805EF8: beq _03805F00 b _03805F04 _03805F00: ldr sp, [r1, #4] _03805F04: beq _03805F0C b _03805F10 _03805F0C: str r0, [r1, #4] _03805F10: stmdb sp!, {r3} ldr r1, _0380608C ; =_03807210 ldr r0, [r1] tst r0, r2 bne _03805F28 b _03805F2C _03805F28: str r0, [ip, #0x214] _03805F2C: bne _03805F34 b _03805F38 _03805F34: ldr r0, [r1, #4] _03805F38: bne _03805F40 b _03805F44 _03805F40: ldr r3, _03806090 ; =_038074F4 _03805F44: bne _03805F4C b _03805F50 _03805F4C: ldr r0, [r3, r0, lsl #2] _03805F50: bne _03805FC0 mov r3, #1 _03805F58: ldr r0, [r1, r3, lsl #3] tst r0, r2 beq _03805F68 b _03805F6C _03805F68: add r3, r3, #1 _03805F6C: beq _03805F58 str r0, [ip, #0x214] add r0, r1, r3, lsl #3 ldr r2, [r0, #4] ldr r3, _03806090 ; =_038074F4 ldr r0, [r3, r2, lsl #2] ldr r2, _03806084 ; =_038076A4 ldrh r3, [r2, #2] cmp r3, #1 beq _03805F98 b _03805F9C _03805F98: ldr r2, [r1] _03805F9C: beq _03805FA4 b _03805FA8 _03805FA4: str r2, [ip, #0x210] _03805FA8: beq _03805FB0 b _03805FB4 _03805FB0: mov r2, #0x1f _03805FB4: beq _03805FBC b _03805FC0 _03805FBC: msr cpsr_c, r2 _03805FC0: ldr r1, [ip, #0x210] stmdb sp!, {r1} add lr, pc, #0x0 ; =sub_03805FD0 bx r0 arm_func_end sub_03805E64 arm_func_start sub_03805FD0 sub_03805FD0: ; 0x03805FD0 mov r0, #0x9f msr cpsr_c, r0 mov ip, #0x4000000 ldmia sp!, {r0} ldr r1, [ip, #0x210] eor r2, r0, r1 and r1, r2, r1 and r0, r2, r0 ldmia sp!, {r3} orr r3, r3, r1 bic r3, r3, r0 str r3, [ip, #0x210] ldr r2, _03806084 ; =_038076A4 ldr r3, _03806088 ; =_0380B24C ldrh r0, [r2, #2] subs r1, r0, #1 strh r1, [r2, #2] beq _0380601C b _03806020 _0380601C: mov r0, sp _03806020: beq _03806028 b _0380602C _03806028: ldr sp, [r3, #4] _0380602C: beq _03806034 b _03806038 _03806034: str r0, [r3, #4] _03806038: mov r0, #0x92 msr cpsr_c, r0 ldmia sp, {sp, lr} ^ mov r0, r0 add sp, sp, #8 ldmia sp!, {r0} msr spsr_fc, r0 tst r1, r1 beq _03806060 b _03806064 _03806060: ldr r0, _03806094 ; =sub_037FB4F4 _03806064: beq _0380606C b _03806070 _0380606C: add lr, pc, #0x0 ; =0x0200E25C _03806070: beq _03806078 b _0380607C _03806078: bx r0 _0380607C: ldmia sp!, {pc} .align 2, 0 _03806080: .word 0x01DF3FFF _03806084: .word _038076A4 _03806088: .word _0380B24C _0380608C: .word _03807210 _03806090: .word _038074F4 arm_func_end sub_03805FD0 _03806094: .word sub_037FB4F4 arm_func_start sub_03806098 sub_03806098: ; 0x03806098 stmdb sp!, {r3, lr} ldr r1, _038060C8 ; =_0380B260 mov r3, #0 ldr r2, _038060CC ; =0x05000001 add r0, sp, #0 str r3, [sp] bl sub_038060D4 bl sub_037FBBFC ldr r1, _038060D0 ; =_0380B25C strh r0, [r1, #6] ldmia sp!, {r3, lr} bx lr .align 2, 0 _038060C8: .word _0380B260 _038060CC: .word 0x05000001 _038060D0: .word _0380B25C arm_func_end sub_03806098 arm_func_start sub_038060D4 sub_038060D4: ; 0x038060D4 ldr ip, _038060DC ; =sub_038037F8 bx ip .align 2, 0 _038060DC: .word sub_038037F8 + 1 arm_func_end sub_038060D4 arm_func_start sub_038060E0 sub_038060E0: ; 0x038060E0 stmdb sp!, {r3, lr} ldr r2, _03806128 ; =0x027FFC30 ldr r0, _0380612C ; =0x0000FFFF ldrh r1, [r2] cmp r1, r0 moveq r0, #0 beq _03806120 ldrb r0, [r2, #5] mov r0, r0, lsl #0x1e movs r0, r0, lsr #0x1f bne _03806110 bl sub_03806130 _03806110: ldr r0, _03806128 ; =0x027FFC30 ldrb r0, [r0, #5] mov r0, r0, lsl #0x1e mov r0, r0, lsr #0x1f _03806120: ldmia sp!, {r3, lr} bx lr .align 2, 0 _03806128: .word 0x027FFC30 _0380612C: .word 0x0000FFFF arm_func_end sub_038060E0 arm_func_start sub_03806130 sub_03806130: ; 0x03806130 stmdb sp!, {r4, lr} sub sp, sp, #0x10 ldr r2, _03806248 ; =0x027FFC30 mov r4, #1 ldrh r1, [r2] rsb r0, r4, #0x10000 cmp r1, r0 moveq r0, #0 beq _0380623C ldrb r0, [r2, #5] mov r0, r0, lsl #0x1e mov r0, r0, lsr #0x1f cmp r0, #1 moveq r0, #0 beq _0380623C ldr r0, _0380624C ; =_0380B25C add r1, sp, #8 ldrh r0, [r0, #6] bl sub_038062D0 cmp r0, #0 bne _03806194 ldr r0, [sp, #0xc] bl sub_037FDD14 mov r0, r4 b _0380623C _03806194: add r0, sp, #0 bl sub_03806254 mov r0, #0x8000000 ldrb r2, [r0, #0xb2] cmp r2, #0x96 bne _038061C0 ldr r1, _03806248 ; =0x027FFC30 ldrh r0, [r0, #0xbe] ldrh r1, [r1] cmp r1, r0 bne _03806204 _038061C0: cmp r2, #0x96 ldrne r1, _03806248 ; =0x027FFC30 ldrne r0, _03806250 ; =0x0801FFFE ldrneh r1, [r1] ldrneh r0, [r0] cmpne r1, r0 bne _03806204 ldr r2, _03806248 ; =0x027FFC30 mov r0, #0x8000000 ldr r1, [r2, #8] ldr r0, [r0, #0xac] cmp r1, r0 beq _03806218 ldrb r0, [r2, #5] mov r0, r0, lsl #0x1f movs r0, r0, lsr #0x1f beq _03806218 _03806204: ldr r1, _03806248 ; =0x027FFC30 mov r4, #0 ldrb r0, [r1, #5] orr r0, r0, #2 strb r0, [r1, #5] _03806218: ldr r0, [sp] bl sub_03806298 ldr r0, [sp, #4] bl sub_038062B4 ldr r0, _0380624C ; =_0380B25C add r1, sp, #8 ldrh r0, [r0, #6] bl sub_03806320 mov r0, r4 _0380623C: add sp, sp, #0x10 ldmia sp!, {r4, lr} bx lr .align 2, 0 _03806248: .word 0x027FFC30 _0380624C: .word _0380B25C _03806250: .word 0x0801FFFE arm_func_end sub_03806130 arm_func_start sub_03806254 sub_03806254: ; 0x03806254 stmdb sp!, {r3, lr} ldr r2, _03806294 ; =0x04000204 ldrh r1, [r2] and r1, r1, #0xc mov r1, r1, asr #2 str r1, [r0] ldrh r1, [r2] and r1, r1, #0x10 mov r1, r1, asr #4 str r1, [r0, #4] mov r0, #3 bl sub_03806298 mov r0, #0 bl sub_038062B4 ldmia sp!, {r3, lr} bx lr .align 2, 0 _03806294: .word 0x04000204 arm_func_end sub_03806254 arm_func_start sub_03806298 sub_03806298: ; 0x03806298 ldr r2, _038062B0 ; =0x04000204 ldrh r1, [r2] bic r1, r1, #0xc orr r0, r1, r0, lsl #2 strh r0, [r2] bx lr .align 2, 0 _038062B0: .word 0x04000204 arm_func_end sub_03806298 arm_func_start sub_038062B4 sub_038062B4: ; 0x038062B4 ldr r2, _038062CC ; =0x04000204 ldrh r1, [r2] bic r1, r1, #0x10 orr r0, r1, r0, lsl #4 strh r0, [r2] bx lr .align 2, 0 _038062CC: .word 0x04000204 arm_func_end sub_038062B4 arm_func_start sub_038062D0 sub_038062D0: ; 0x038062D0 stmdb sp!, {r3, r4, r5, lr} mov r4, r1 mov r5, r0 bl sub_037FDD00 str r0, [r4, #4] ldr r0, _0380631C ; =0x027FFFE8 bl sub_037FBBF4 ands r0, r0, #0x80 str r0, [r4] bne _03806308 mov r0, r5 bl sub_037FBB84 cmp r0, #0 bne _03806310 _03806308: mov r0, #1 b _03806314 _03806310: mov r0, #0 _03806314: ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _0380631C: .word 0x027FFFE8 arm_func_end sub_038062D0 arm_func_start sub_03806320 sub_03806320: ; 0x03806320 stmdb sp!, {r4, lr} mov r4, r1 ldr r1, [r4] cmp r1, #0 bne _03806338 bl sub_037FBB78 _03806338: ldr r0, [r4, #4] bl sub_037FDD14 ldmia sp!, {r4, lr} bx lr arm_func_end sub_03806320 arm_func_start sub_03806348 sub_03806348: ; 0x03806348 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, #1 mov r5, #0xd mov r4, #0 b _03806368 _03806360: mov r0, r6 bl sub_037FBA0C _03806368: mov r0, r5 mov r1, r7 mov r2, r4 bl sub_037FE410 cmp r0, #0 bne _03806360 ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr arm_func_end sub_03806348 arm_func_start sub_03806388 sub_03806388: ; 0x03806388 stmdb sp!, {r3, lr} bl sub_037FD128 bl sub_037FD34C ldr r0, _03806410 ; =_0380B294 bl sub_037FD3A0 ldr r0, _03806414 ; =_0380B264 ldr r1, [r0, #0x14] cmp r1, #0 bne _03806408 mov r1, #1 str r1, [r0, #0x14] bl sub_03806098 bl sub_037FBBFC mvn r1, #2 cmp r0, r1 beq _03806408 ldr r1, _03806414 ; =_0380B264 strh r0, [r1] bl sub_037FE2B4 ldr r1, _03806418 ; =sub_0380659C mov r0, #0xd bl sub_037FE39C bl sub_03806428 ldr r1, _0380641C ; =sub_038065CC mov r0, #0xd bl sub_037FE39C ldr r1, _03806420 ; =sub_03806600 mov r0, #0x10 bl sub_037FE39C ldr r1, _03806424 ; =sub_03806944 mov r0, #0x11 bl sub_037FE39C _03806408: ldmia sp!, {r3, lr} bx lr .align 2, 0 _03806410: .word _0380B294 _03806414: .word _0380B264 _03806418: .word sub_0380659C _0380641C: .word sub_038065CC _03806420: .word sub_03806600 _03806424: .word sub_03806944 arm_func_end sub_03806388 arm_func_start sub_03806428 sub_03806428: ; 0x03806428 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} ldr r0, _03806584 ; =_0380B264 ldr r1, [r0, #8] cmp r1, #0 bne _0380657C ldr r1, _03806588 ; =0x04000300 mov r2, #1 ldrh r1, [r1] str r2, [r0, #8] tst r1, #1 beq _0380657C mov r0, #0x40000 bl sub_037FB8A4 ldr r2, _0380658C ; =0x04000208 mov r1, #1 ldrh sb, [r2] ldr r5, _03806584 ; =_0380B264 mov r4, r0 strh r1, [r2] mov r6, #0x100 b _03806484 _0380647C: mov r0, r6 bl sub_037FBA0C _03806484: ldr r0, [r5, #0x28] cmp r0, #1 bne _0380647C ldr r0, _03806584 ; =_0380B264 mov r1, #0x8000000 ldr r2, [r0, #0x18] ldr r0, _03806590 ; =0x01FFFFC0 add r8, r1, #4 and r0, r2, r0 mov r0, r0, lsr #6 mov r0, r0, lsl #5 add r5, r0, #0x2000000 mov r6, #1 bl sub_037FBBFC mov r0, r0, lsl #0x10 mov r7, r0, lsr #0x10 mov r0, r7 bl sub_037FBB08 ldr ip, _03806594 ; =0x0000FFFF mov sl, #0 eor r0, ip, #3 eor r1, ip, #0x84 mov r0, r0, lsl #0x10 mov r1, r1, lsl #0x10 mov r2, r0, lsr #0x10 mov r3, r1, lsr #0x10 b _0380652C _038064F0: mov lr, ip cmp sl, #0x4c moveq lr, r3 beq _03806508 cmp sl, #0x4d moveq lr, r2 _03806508: add r0, r5, sl, lsl #1 mov r1, sl, lsl #1 ldrh r0, [r0, #4] ldrh r1, [r8, r1] and r0, lr, r0 cmp r0, r1 movne r6, #0 bne _03806534 add sl, sl, #1 _0380652C: cmp sl, #0x4e blt _038064F0 _03806534: mov r0, r7 bl sub_037FBB78 mov r0, r7 bl sub_037FBCA4 ldr r2, _03806598 ; =0x027FFC30 and r0, r6, #0xff ldrb r1, [r2, #5] and r0, r0, #1 bic r1, r1, #1 orr r1, r1, r0 mov r0, #1 strb r1, [r2, #5] bl sub_03806348 ldr r2, _0380658C ; =0x04000208 mov r0, r4 ldrh r1, [r2] strh sb, [r2] bl sub_037FB8A4 _0380657C: ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} bx lr .align 2, 0 _03806584: .word _0380B264 _03806588: .word 0x04000300 _0380658C: .word 0x04000208 _03806590: .word 0x01FFFFC0 _03806594: .word 0x0000FFFF _03806598: .word 0x027FFC30 arm_func_end sub_03806428 arm_func_start sub_0380659C sub_0380659C: ; 0x0380659C stmdb sp!, {r3, lr} and r0, r1, #0x3f cmp r0, #1 ldreq r0, _038065C8 ; =_0380B264 moveq r2, #1 streq r1, [r0, #0x18] streq r2, [r0, #0x28] beq _038065C0 bl sub_037FDE70 _038065C0: ldmia sp!, {r3, lr} bx lr .align 2, 0 _038065C8: .word _0380B264 arm_func_end sub_0380659C arm_func_start sub_038065CC sub_038065CC: ; 0x038065CC stmdb sp!, {r3, lr} and r0, r1, #0x3f cmp r0, #2 bne _038065F4 mov r0, #0 bl sub_03806610 bl sub_037FE708 bl sub_0380528C bl sub_037FDE70 b _038065F8 _038065F4: bl sub_037FDE70 _038065F8: ldmia sp!, {r3, lr} bx lr arm_func_end sub_038065CC arm_func_start sub_03806600 sub_03806600: ; 0x03806600 ldr ip, _0380660C ; =sub_03806610 mov r0, r1 bx ip .align 2, 0 _0380660C: .word sub_03806610 arm_func_end sub_03806600 arm_func_start sub_03806610 sub_03806610: ; 0x03806610 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} movs r5, r0 beq _0380664C ldr r0, [r5] cmp r0, #0 bne _0380664C ldr r0, [r5, #0x44] add r0, r0, #1 str r0, [r5, #0x44] ldr r1, [r5, #0x40] cmp r1, #0 beq _0380664C ldr r0, [r5, #0x44] cmp r0, r1 movhi r5, #0 _0380664C: cmp r5, #0 ldrne r0, [r5, #0x3c] cmpne r0, #0 bne _038066F0 bl sub_037FDD00 ldr r4, _0380682C ; =_0380B264 mov sb, r0 ldr r0, [r4, #4] cmp r0, #2 bne _038066DC mov sl, #0 ldr r7, _03806830 ; =0x027FFFE8 ldr r5, _03806834 ; =0x08001000 mov r6, sl mov fp, #1 b _038066D4 _0380668C: mov r0, r7 bl sub_037FBBF4 ands r8, r0, #0x80 bne _038066AC ldrh r0, [r4] bl sub_037FBB84 cmp r0, #0 bne _038066CC _038066AC: str r6, [r4, #4] mov sl, fp strh r6, [r5] cmp r8, #0 bne _038066D4 ldrh r0, [r4] bl sub_037FBB58 b _038066D4 _038066CC: ldr r0, _03806838 ; =0x000080E8 bl sub_037FDD64 _038066D4: cmp sl, #0 beq _0380668C _038066DC: ldr r0, _0380683C ; =_0380B294 bl sub_037FD5C0 mov r0, sb bl sub_037FDD14 b _03806824 _038066F0: cmp r5, #0 beq _03806824 ldr r0, _03806830 ; =0x027FFFE8 bl sub_037FBBF4 ands r4, r0, #0x80 bne _0380671C ldr r0, _0380682C ; =_0380B264 ldrh r0, [r0] bl sub_037FBB84 cmp r0, #0 bne _0380680C _0380671C: ldr r1, [r5] ldr r0, [r5, #4] cmp r1, r0 bne _03806764 ldr r0, _0380682C ; =_0380B264 mov r2, #0 ldr r1, _03806834 ; =0x08001000 str r2, [r0, #4] strh r2, [r1] str r5, [sp] ldr r1, [r5, #8] ldr r0, _0380683C ; =_0380B294 ldr r3, _03806840 ; =sub_03806610 mov r2, #0 bl sub_037FD4DC mov r0, #0 str r0, [r5] b _038067F4 _03806764: tst r1, #1 ldr r1, _03806834 ; =0x08001000 beq _038067B4 ldr r0, _0380682C ; =_0380B264 mov r2, #0 str r2, [r0, #4] strh r2, [r1] str r5, [sp] ldr r1, [r5] ldr r0, _0380683C ; =_0380B294 mov r1, r1, lsr #1 add r1, r5, r1, lsl #2 ldr r1, [r1, #0x24] ldr r3, _03806840 ; =sub_03806610 mov r2, #0 bl sub_037FD4DC ldr r0, [r5] add r0, r0, #1 str r0, [r5] b _038067F4 _038067B4: ldr r0, _0380682C ; =_0380B264 mov r2, #2 str r2, [r0, #4] strh r2, [r1] str r5, [sp] ldr r1, [r5] ldr r0, _0380683C ; =_0380B294 mov r1, r1, lsr #1 add r1, r5, r1, lsl #2 ldr r1, [r1, #0xc] ldr r3, _03806840 ; =sub_03806610 mov r2, #0 bl sub_037FD4DC ldr r0, [r5] add r0, r0, #1 str r0, [r5] _038067F4: cmp r4, #0 bne _03806824 ldr r0, _0380682C ; =_0380B264 ldrh r0, [r0] bl sub_037FBB58 b _03806824 _0380680C: ldr r0, _0380683C ; =_0380B294 ldr r1, _03806844 ; =0x0000020B ldr r3, _03806840 ; =sub_03806610 mov r2, #0 str r5, [sp] bl sub_037FD4DC _03806824: ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} bx lr .align 2, 0 _0380682C: .word _0380B264 _03806830: .word 0x027FFFE8 _03806834: .word 0x08001000 _03806838: .word 0x000080E8 _0380683C: .word _0380B294 _03806840: .word sub_03806610 _03806844: .word 0x0000020B arm_func_end sub_03806610 arm_func_start sub_03806848 sub_03806848: ; 0x03806848 stmdb sp!, {r3, r4, r5, r6, r7, lr} ldr r1, _03806938 ; =_03807600 mvn r0, #0 ldr r3, [r1, #4] cmp r3, r0 ldreq r0, _0380693C ; =0x027FFC3C ldreq r0, [r0] addeq r0, r0, #0xa streq r0, [r1, #4] beq _03806930 ldr r0, _03806940 ; =_0380B264 ldr r2, [r0, #0x10] cmp r2, #0 ldreq r0, [r0, #0xc] cmpeq r0, #0 bne _03806930 ldr r2, _0380693C ; =0x027FFC3C ldr r0, [r2] cmp r0, r3 blo _03806930 ldr r0, [r2] add r0, r0, #0xa str r0, [r1, #4] bl sub_038060E0 ldr r1, _03806940 ; =_0380B264 str r0, [r1, #0xc] bl sub_03806130 cmp r0, #0 bne _038068E0 ldr r0, _03806938 ; =_03807600 mov r1, #1 ldr r0, [r0] cmp r0, #0 ldrne r0, _03806940 ; =_0380B264 strne r1, [r0, #0x10] bne _03806930 ldr r0, _03806940 ; =_0380B264 str r1, [r0, #0xc] _038068E0: ldr r0, _03806940 ; =_0380B264 ldr r1, _03806938 ; =_03807600 ldr r0, [r0, #0xc] mov r2, #0 str r2, [r1] cmp r0, #0 beq _03806930 mov r7, #0x64 mov r6, #0xd mov r5, #0x11 mov r4, r2 b _03806918 _03806910: mov r0, r7 bl sub_037FC468 _03806918: mov r0, r6 mov r1, r5 mov r2, r4 bl sub_037FE410 cmp r0, #0 bne _03806910 _03806930: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _03806938: .word _03807600 _0380693C: .word 0x027FFC3C _03806940: .word _0380B264 arm_func_end sub_03806848 arm_func_start sub_03806944 sub_03806944: ; 0x03806944 stmdb sp!, {r3, r4, r5, r6, r7, lr} and r0, r1, #0x3f cmp r0, #3 bne _038069AC ldr r3, _038069B8 ; =0x04000204 ldr r0, _038069BC ; =0x01FFFFC0 ldrh r2, [r3] and r0, r1, r0 mov r1, r0, lsr #6 bic r0, r2, #0x60 orr r0, r0, r1, lsl #5 strh r0, [r3] mov r7, #1 mov r6, #0x11 mov r5, #0x12 mov r4, #0 b _03806990 _03806988: mov r0, r7 bl sub_037FBA0C _03806990: mov r0, r6 mov r1, r5 mov r2, r4 bl sub_037FE410 cmp r0, #0 bne _03806988 b _038069B0 _038069AC: bl sub_037FDE70 _038069B0: ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _038069B8: .word 0x04000204 _038069BC: .word 0x01FFFFC0 arm_func_end sub_03806944 arm_func_start sub_038069C0 sub_038069C0: ; 0x038069C0 stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} mov r4, r1 orr r4, r4, #1 b _038069E0 arm_func_end sub_038069C0 arm_func_start sub_038069D0 sub_038069D0: ; 0x038069D0 stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} eor r4, r1, r3 mov r4, r4, asr #1 mov r4, r4, lsl #1 _038069E0: orrs r5, r3, r2 bne _038069F0 ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} bx lr _038069F0: mov r5, r0, lsr #0x1f add r5, r5, r1 mov r6, r2, lsr #0x1f add r6, r6, r3 orrs r6, r5, r6 bne _03806A24 mov r1, r2 bl sub_03806BC8 ands r4, r4, #1 movne r0, r1 mov r1, r0, asr #0x1f ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} bx lr _03806A24: cmp r1, #0 bge _03806A34 rsbs r0, r0, #0 rsc r1, r1, #0 _03806A34: cmp r3, #0 bge _03806A44 rsbs r2, r2, #0 rsc r3, r3, #0 _03806A44: orrs r5, r1, r0 beq _03806B68 mov r5, #0 mov r6, #1 cmp r3, #0 bmi _03806A70 _03806A5C: add r5, r5, #1 adds r2, r2, r2 adcs r3, r3, r3 bpl _03806A5C add r6, r6, r5 _03806A70: cmp r1, #0 blt _03806A90 _03806A78: cmp r6, #1 beq _03806A90 sub r6, r6, #1 adds r0, r0, r0 adcs r1, r1, r1 bpl _03806A78 _03806A90: mov r7, #0 mov ip, #0 mov fp, #0 b _03806AB8 _03806AA0: orr ip, ip, #1 subs r6, r6, #1 beq _03806B10 adds r0, r0, r0 adcs r1, r1, r1 adcs r7, r7, r7 _03806AB8: subs r0, r0, r2 sbcs r1, r1, r3 sbcs r7, r7, #0 adds ip, ip, ip adc fp, fp, fp cmp r7, #0 bge _03806AA0 _03806AD4: subs r6, r6, #1 beq _03806B08 adds r0, r0, r0 adcs r1, r1, r1 adc r7, r7, r7 adds r0, r0, r2 adcs r1, r1, r3 adc r7, r7, #0 adds ip, ip, ip adc fp, fp, fp cmp r7, #0 bge _03806AA0 b _03806AD4 _03806B08: adds r0, r0, r2 adc r1, r1, r3 _03806B10: ands r7, r4, #1 moveq r0, ip moveq r1, fp beq _03806B48 subs r7, r5, #0x20 movge r0, r1, lsr r7 bge _03806B6C rsb r7, r5, #0x20 mov r0, r0, lsr r5 orr r0, r0, r1, lsl r7 mov r1, r1, lsr r5 b _03806B48 _03806B40: mov r0, r1, lsr r7 mov r1, #0 _03806B48: cmp r4, #0 blt _03806B58 ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} bx lr _03806B58: rsbs r0, r0, #0 rsc r1, r1, #0 ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} bx lr _03806B68: mov r0, #0 _03806B6C: mov r1, #0 cmp r4, #0 blt _03806B58 ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} bx lr arm_func_end sub_038069D0 arm_func_start sub_03806B80 sub_03806B80: ; 0x03806B80 stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} mov r4, #0 b _03806B94 _03806B8C: stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} mov r4, #1 _03806B94: orrs r5, r3, r2 bne _03806BA4 ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} bx lr _03806BA4: orrs r5, r1, r3 bne _03806A44 mov r1, r2 bl sub_03806DDC cmp r4, #0 movne r0, r1 mov r1, #0 ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} bx lr arm_func_end sub_03806B80 arm_func_start sub_03806BC8 sub_03806BC8: ; 0x03806BC8 eor ip, r0, r1 and ip, ip, #0x80000000 cmp r0, #0 rsblt r0, r0, #0 addlt ip, ip, #1 cmp r1, #0 rsblt r1, r1, #0 beq _03806DC0 cmp r0, r1 movlo r1, r0 movlo r0, #0 blo _03806DC0 mov r2, #0x1c mov r3, r0, lsr #4 cmp r1, r3, lsr #12 suble r2, r2, #0x10 movle r3, r3, lsr #0x10 cmp r1, r3, lsr #4 suble r2, r2, #8 movle r3, r3, lsr #8 cmp r1, r3 suble r2, r2, #4 movle r3, r3, lsr #4 mov r0, r0, lsl r2 rsb r1, r1, #0 adds r0, r0, r0 add r2, r2, r2, lsl #1 add pc, pc, r2, lsl #2 mov r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 mov r1, r3 _03806DC0: ands r3, ip, #0x80000000 rsbne r0, r0, #0 ands r3, ip, #1 rsbne r1, r1, #0 bx lr arm_func_end sub_03806BC8 arm_func_start sub_03806DD4 sub_03806DD4: ; 0x03806DD4 cmp r1, #0 bxeq lr arm_func_end sub_03806DD4 arm_func_start sub_03806DDC sub_03806DDC: ; 0x03806DDC cmp r0, r1 movlo r1, r0 movlo r0, #0 bxlo lr mov r2, #0x1c mov r3, r0, lsr #4 cmp r1, r3, lsr #12 suble r2, r2, #0x10 movle r3, r3, lsr #0x10 cmp r1, r3, lsr #4 suble r2, r2, #8 movle r3, r3, lsr #8 cmp r1, r3 suble r2, r2, #4 movle r3, r3, lsr #4 mov r0, r0, lsl r2 rsb r1, r1, #0 adds r0, r0, r0 add r2, r2, r2, lsl #1 add pc, pc, r2, lsl #2 mov r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #1 sublo r3, r3, r1 adcs r0, r0, r0 mov r1, r3 bx lr arm_func_end sub_03806DDC _03806FB8: .byte 0x00, 0x06, 0x0C, 0x13, 0x19, 0x1F, 0x25, 0x2B, 0x31, 0x36, 0x3C, 0x41, 0x47, 0x4C, 0x51, 0x55 .byte 0x5A, 0x5E, 0x62, 0x66, 0x6A, 0x6D, 0x70, 0x73, 0x75, 0x78, 0x7A, 0x7B, 0x7D, 0x7E, 0x7E, 0x7F .byte 0x7F, 0x00, 0x00, 0x00 .global _03806FDC _03806FDC: .byte 0x00, 0x80, 0x2E, 0xFD, 0x2F, 0xFD, 0x75, 0xFD, 0xA7, 0xFD, 0xCE, 0xFD .byte 0xEE, 0xFD, 0x09, 0xFE, 0x20, 0xFE, 0x34, 0xFE, 0x46, 0xFE, 0x57, 0xFE, 0x66, 0xFE, 0x74, 0xFE .byte 0x81, 0xFE, 0x8D, 0xFE, 0x98, 0xFE, 0xA3, 0xFE, 0xAD, 0xFE, 0xB6, 0xFE, 0xBF, 0xFE, 0xC7, 0xFE .byte 0xCF, 0xFE, 0xD7, 0xFE, 0xDF, 0xFE, 0xE6, 0xFE, 0xEC, 0xFE, 0xF3, 0xFE, 0xF9, 0xFE, 0xFF, 0xFE .byte 0x05, 0xFF, 0x0B, 0xFF, 0x11, 0xFF, 0x16, 0xFF, 0x1B, 0xFF, 0x20, 0xFF, 0x25, 0xFF, 0x2A, 0xFF .byte 0x2E, 0xFF, 0x33, 0xFF, 0x37, 0xFF, 0x3C, 0xFF, 0x40, 0xFF, 0x44, 0xFF, 0x48, 0xFF, 0x4C, 0xFF .byte 0x50, 0xFF, 0x53, 0xFF, 0x57, 0xFF, 0x5B, 0xFF, 0x5E, 0xFF, 0x62, 0xFF, 0x65, 0xFF, 0x68, 0xFF .byte 0x6B, 0xFF, 0x6F, 0xFF, 0x72, 0xFF, 0x75, 0xFF, 0x78, 0xFF, 0x7B, 0xFF, 0x7E, 0xFF, 0x81, 0xFF .byte 0x83, 0xFF, 0x86, 0xFF, 0x89, 0xFF, 0x8C, 0xFF, 0x8E, 0xFF, 0x91, 0xFF, 0x93, 0xFF, 0x96, 0xFF .byte 0x99, 0xFF, 0x9B, 0xFF, 0x9D, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA5, 0xFF, 0xA7, 0xFF, 0xA9, 0xFF .byte 0xAB, 0xFF, 0xAE, 0xFF, 0xB0, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB8, 0xFF, 0xBA, 0xFF .byte 0xBC, 0xFF, 0xBE, 0xFF, 0xC0, 0xFF, 0xC2, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF .byte 0xCC, 0xFF, 0xCE, 0xFF, 0xCF, 0xFF, 0xD1, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD8, 0xFF .byte 0xDA, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, 0xDF, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF .byte 0xE7, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF2, 0xFF .byte 0xF3, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0x5B, 0xFE, 0x97, 0xFE, 0xBB, 0xFE, 0xD4, 0xFE, 0xE7, 0xFE .byte 0xF7, 0xFE, 0x04, 0xFF, 0x10, 0xFF, 0x1A, 0xFF, 0x23, 0xFF, 0x2C, 0xFF, 0x33, 0xFF, 0x3A, 0xFF .byte 0x40, 0xFF, 0x46, 0xFF, 0x4C, 0xFF, 0x51, 0xFF, 0x56, 0xFF, 0x5B, 0xFF, 0x5F, 0xFF, 0x64, 0xFF .byte 0x68, 0xFF, 0x6C, 0xFF, 0x6F, 0xFF, 0x73, 0xFF, 0x76, 0xFF, 0x7A, 0xFF, 0x7D, 0xFF, 0x80, 0xFF .byte 0x83, 0xFF, 0x86, 0xFF, 0x88, 0xFF, 0x8B, 0xFF, 0x8E, 0xFF, 0x90, 0xFF, 0x92, 0xFF, 0x95, 0xFF .byte 0x97, 0xFF, 0x99, 0xFF, 0x9C, 0xFF, 0x9E, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA4, 0xFF, 0xA6, 0xFF .byte 0xA8, 0xFF, 0xAA, 0xFF, 0xAB, 0xFF, 0xAD, 0xFF, 0xAF, 0xFF, 0xB1, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF .byte 0xB6, 0xFF, 0xB7, 0xFF, 0xB9, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF .byte 0xC2, 0xFF, 0xC3, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCB, 0xFF .byte 0xCC, 0xFF, 0xCD, 0xFF, 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF, 0xD2, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF .byte 0xD6, 0xFF, 0xD7, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF, 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF .byte 0xDE, 0xFF, 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF .byte 0xE6, 0xFF, 0xE7, 0xFF, 0xE8, 0xFF, 0xE9, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF .byte 0xED, 0xFF, 0xEE, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF .byte 0xF4, 0xFF, 0xF4, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF .byte 0xFA, 0xFF, 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF .byte 0xFF, 0xFF, 0x00, 0x00 .global _038071DC _038071DC: .byte 0x00, 0x01, 0x02, 0x04 .global _038071E0 _038071E0: .byte 0x04, 0x05, 0x06, 0x07, 0x02, 0x00, 0x03, 0x01 .byte 0x08, 0x09, 0x0A, 0x0B, 0x0E, 0x0C, 0x0F, 0x0D .global _038071F0 _038071F0: .byte 0x00, 0x01, 0x05, 0x0E, 0x1A, 0x26, 0x33, 0x3F .byte 0x49, 0x54, 0x5C, 0x64, 0x6D, 0x74, 0x7B, 0x7F, 0x84, 0x89, 0x8F, 0x00 .global _03807204 _03807204: .byte 0x06, 0x00, 0x00, 0x00 .global _03807208 _03807208: .byte 0xC7, 0x00, 0x00, 0x00 .global _0380720C _0380720C: .byte 0x05, 0x00, 0x00, 0x00 .global _03807210 _03807210: .byte 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x13, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00 .byte 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 .byte 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 .byte 0x00, 0x02, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 .byte 0x00, 0x08, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 .byte 0x00, 0x20, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 .byte 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x16, 0x00, 0x00, 0x00 .byte 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x80, 0x00, 0x17, 0x00, 0x00, 0x00 arm_func_start sub_038072C0 sub_038072C0: ; 0x038072C0 mov ip, #0x4000000 str ip, [ip, #0x208] ldr r1, _03807328 ; =0x0380FFFC mov r0, #0 str r0, [r1] ldr r1, _0380732C ; =0x04000180 mov r0, #0x100 strh r0, [r1] _038072E0: ldrh r0, [r1] and r0, r0, #0xf cmp r0, #1 bne _038072E0 ldr r1, _0380732C ; =0x04000180 mov r0, #0 strh r0, [r1] _038072FC: ldrh r0, [r1] cmp r0, #1 beq _038072FC ldr r3, _03807330 ; =0x027FFE00 ldr ip, [r3, #0x34] mov lr, ip mov r0, #0 mov r1, #0 mov r2, #0 mov r3, #0 bx ip .align 2, 0 _03807328: .word 0x0380FFFC _0380732C: .word 0x04000180 _03807330: .word 0x027FFE00 arm_func_end sub_038072C0 arm_func_start sub_03807334 sub_03807334: ; 0x03807334 stmdb sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, #0x100 mov r5, #0xa mov r4, #0 b _03807354 _0380734C: mov r0, r6 bl sub_037FBA0C _03807354: mov r0, r5 mov r1, r7 mov r2, r4 bl sub_037FE410 cmp r0, #0 blt _0380734C ldr r0, _0380737C ; =_027F8DA0 bl sub_037FC90C ldmia sp!, {r3, r4, r5, r6, r7, lr} bx lr .align 2, 0 _0380737C: .word _027F8DA0 arm_func_end sub_03807334 arm_func_start sub_03807380 sub_03807380: ; 0x03807380 stmdb sp!, {r3, r4, r5, lr} ldr r0, _038073C8 ; =_027F8DA0 bl sub_037FC888 ldr r4, _038073CC ; =0x027FFF96 mov r5, #0x100 b _038073A0 _03807398: mov r0, r5 bl sub_037FBA0C _038073A0: ldrh r1, [r4] tst r1, #1 bne _03807398 ldr r0, _038073D0 ; =_027F8878 orr r1, r1, #1 strh r1, [r4] ldr r0, [r0, #0x54c] ldr r0, [r0, #8] ldmia sp!, {r3, r4, r5, lr} bx lr .align 2, 0 _038073C8: .word _027F8DA0 _038073CC: .word 0x027FFF96 _038073D0: .word _027F8878 arm_func_end sub_03807380 arm_func_start sub_038073D4 sub_038073D4: ; 0x038073D4 stmdb sp!, {r4, r5, r6, lr} ldr r1, _038074DC ; =0x00001FFF and r0, r0, r1 mov r0, r0, lsl #0x10 movs r2, r0, lsr #0x10 moveq r0, #0 beq _038074D4 mov r1, #0 mov r0, #1 b _03807408 _038073FC: tst r2, r0, lsl r1 bne _03807410 add r1, r1, #1 _03807408: cmp r1, #0x10 blt _038073FC _03807410: mov r0, #0xf mov r3, #1 b _03807428 _0380741C: tst r2, r3, lsl r0 bne _03807430 sub r0, r0, #1 _03807428: cmp r0, #0 bne _0380741C _03807430: sub r6, r0, r1 cmp r6, #5 movlt r0, #1 movlt r0, r0, lsl r1 movlt r0, r0, lsl #0x10 movlt r0, r0, lsr #0x10 blt _038074D4 add r3, r0, r1 add r3, r3, r3, lsr #31 mov r4, r3, asr #1 mov r5, #0 mov lr, #1 b _03807488 _03807464: mov ip, r5, lsr #0x1f rsb r3, ip, r5, lsl #31 add r3, ip, r3, ror #31 mov r3, r3, lsl #1 sub r3, r3, #1 mla r4, r5, r3, r4 tst r2, lr, lsl r4 bne _03807490 add r5, r5, #1 _03807488: cmp r5, r6 blt _03807464 _03807490: sub r2, r0, r4 cmp r2, #5 subge r2, r4, r1 cmpge r2, #5 bge _038074BC mov r2, #1 mov r0, r2, lsl r0 orr r0, r0, r2, lsl r1 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 b _038074D4 _038074BC: mov r3, #1 mov r2, r3, lsl r4 orr r0, r2, r3, lsl r0 orr r0, r0, r3, lsl r1 mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 _038074D4: ldmia sp!, {r4, r5, r6, lr} bx lr .align 2, 0 _038074DC: .word 0x00001FFF arm_func_end sub_038073D4 _038074E0: .byte 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00 .byte 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 .global _038074F4 _038074F4: .word sub_037FB748 .word sub_037FB638 .word sub_037FB638 .word sub_037FB708 .word sub_037FB718 .word sub_037FB728 .word sub_037FB738 .word sub_037FB638 .word sub_037FB6C8 .word sub_037FB6D8 .word sub_037FB6E8 .word sub_037FB6F8 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .word sub_037FB638 .global _03807558 _03807558: .byte 0xFF, 0xFF, 0xFF, 0xFF .global _0380755C _0380755C: .byte 0x78, 0x56, 0x34, 0x12 .global _03807560 _03807560: .byte 0x00, 0xFE, 0x7F, 0x02 .global _03807564 _03807564: .byte 0xFF, 0xFF, 0xFF, 0xFF .byte 0x01, 0x00, 0x00, 0x00 .global _0380756C _0380756C: .byte 0x01, 0x00, 0x00, 0x00 .global _03807570 _03807570: .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA .byte 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x08, 0x00, 0x01, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE3, 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0xF0, 0xF0, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xF8 .byte 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x00, 0x01, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0xC0, 0xFF, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF .byte 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x20, 0x00, 0x01, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0xC3, 0x28, 0x00, 0x02, 0x00 .global _03807600 _03807600: .byte 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF .bss .global _03807608 _03807608: .space 0x8 .global _03807610 _03807610: .space 0x4 .global _03807614 _03807614: .space 0x4 .global _03807618 _03807618: .space 0x28 .global _03807640 _03807640: .space 0x4 .global _03807644 _03807644: .space 0x4 .global _03807648 _03807648: .space 0x28 .global _03807670 _03807670: .space 0xC .global _0380767C _0380767C: .space 0x4 .global _03807680 _03807680: .space 0x24 .global _038076A4 _038076A4: .space 0x4 .global _038076A8 _038076A8: .space 0xC .global _038076B4 _038076B4: .space 0xA4 .global _03807758 _03807758: .space 0xA4 .global _038077FC _038077FC: .space 0x4 .global _03807800 _03807800: .space 0x24 .global _03807824 _03807824: .space 0x4 .global _03807828 _03807828: .space 0x10 .global _03807838 _03807838: .space 0xC .global _03807844 _03807844: .space 0x14 .global _03807858 _03807858: .space 0x4 .global _0380785C _0380785C: .space 0x4 .global _03807860 _03807860: .space 0x80 .global _038078E0 _038078E0: .space 0x4 .global _038078E4 _038078E4: .space 0x2C .global _03807910 _03807910: .space 0x4 .global _03807914 _03807914: .space 0x10 .global _03807924 _03807924: .space 0x10 .global _03807934 _03807934: .space 0x4 .global _03807938 _03807938: .space 0x20 .global _03807958 _03807958: .space 0x20 .global _03807978 _03807978: .space 0x2C .global _038079A4 _038079A4: .space 0x4A4 .global _03807E48 _03807E48: .space 0x8 .global _03807E50 _03807E50: .space 0xC .global _03807E5C _03807E5C: .space 0x10 .global _03807E6C _03807E6C: .space 0x4 .global _03807E70 _03807E70: .space 0x540 .global _038083B0 _038083B0: .space 0x240 .global _038085F0 _038085F0: .space 0x800 .global _03808DF0 _03808DF0: .space 0x200 .global _03808FF0 _03808FF0: .space 0x20 .global _03809010 _03809010: .space 0x30 .global _03809040 _03809040: .space 0x20 .global _03809060 _03809060: .space 0x600 .global _03809660 _03809660: .space 0x4 .global _03809664 _03809664: .space 0x1C .global _03809680 _03809680: .space 0x240 .global _038098C0 _038098C0: .space 0x10 .global _038098D0 _038098D0: .space 0x4 .global _038098D4 _038098D4: .space 0x8 .global _038098DC _038098DC: .space 0x2A4 .global _03809B80 _03809B80: .space 0x20 .global _03809BA0 _03809BA0: .space 0x40 .global _03809BE0 _03809BE0: .space 0x4 .global _03809BE4 _03809BE4: .space 0x180 .global _03809D64 _03809D64: .space 0xC .global _03809D70 _03809D70: .space 0x4 .global _03809D74 _03809D74: .space 0x2C .global _03809DA0 _03809DA0: .space 0xA8 .global _03809E48 _03809E48: .space 0x4 .global _03809E4C _03809E4C: .space 0x2 .global _03809E4E _03809E4E: .space 0x2 .global _03809E50 _03809E50: .space 0x4 .global _03809E54 _03809E54: .space 0x2C .global _03809E80 _03809E80: .space 0x8 .global _03809E88 _03809E88: .space 0x10 .global _03809E98 _03809E98: .space 0xA4 .global _03809F3C _03809F3C: .space 0xBC0 .global _0380AAFC _0380AAFC: .space 0x700 .global _0380B1FC _0380B1FC: .space 0x3C .global _0380B238 _0380B238: .space 0x14 .global _0380B24C _0380B24C: .space 0x10 .global _0380B25C _0380B25C: .space 0x4 .global _0380B260 _0380B260: .space 0x4 .global _0380B264 _0380B264: .space 0x30 .global _0380B294 _0380B294: .space 0x2C .global _0380B2C0 _0380B2C0: .space 0xA4 .global _0380B364 _0380B364: .space 0xA4 .global _0380B408 _0380B408: .space 0x2C .global _0380B434 _0380B434: .space 0x2C .global _0380B460 _0380B460: .space 0x28