.include "asm/macros.inc" .include "global.inc" .section .text arm_func_start FUN_037F8000 FUN_037F8000: ; 0x037F8000 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037F8028 ; =_03809F34 ldr r0, [r0] cmp r0, #0 beq _037F801C bl FUN_03802BEC _037F801C: add sp, sp, #4 ldmia sp!, {lr} bx lr _037F8028: .word _03809F34 arm_func_start FUN_037F802C FUN_037F802C: ; 0x037F802C stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov r8, #0 bl FUN_037F81E8 cmp r0, #0 beq _037F80F8 bl FUN_037F81C4 mov r7, r0 mov r9, r8 mov r4, #1 mov fp, #138 ; 0x8a mov r5, #112 ; 0x70 _037F8060: add r6, sl, r9, lsl #8 ldr r0, _037F81B4 ; =0x0000FFFF mov r1, r6 mov r2, r5 bl FUN_037F81B8 mov r2, r6 ldrh r1, [r2, #114] ; 0x72 cmp r0, r1 bne _037F80E0 ldrh r0, [r2, #112] ; 0x70 cmp r0, #128 ; 0x80 bcs _037F80E0 ldr r0, _037F81B4 ; =0x0000FFFF add r1, r6, #116 ; 0x74 mov r2, fp bl FUN_037F81B8 mov r3, r6 ldrh r1, [r3, #254] ; 0xfe cmp r0, r1 bne _037F80E0 ldrh r2, [r3, #118] ; 0x76 ldrb r0, [r3, #117] ; 0x75 mov r1, r4, lsl r0 ands r1, r1, r2 beq _037F80E0 ands r1, r7, r2 ldrneh r1, [r6, #100] ; 0x64 bicne r1, r1, #7 andne r0, r0, #7 orrne r0, r1, r0 strneh r0, [r6, #100] ; 0x64 orr r8, r8, r4, lsl r9 _037F80E0: add r0, r9, #1 mov r0, r0, lsl #16 mov r9, r0, lsr #16 cmp r9, #2 bcc _037F8060 b _037F8158 _037F80F8: bl FUN_037F81C4 cmp r0, #0 movne r0, #3 bne _037F81A8 mov r7, r8 mov r4, #1 ldr r6, _037F81B4 ; =0x0000FFFF mov r5, #112 ; 0x70 _037F8118: mov r0, r6 add r1, sl, r7, lsl #8 mov r2, r5 bl FUN_037F81B8 add r2, sl, r7, lsl #8 ldrh r1, [r2, #114] ; 0x72 cmp r0, r1 bne _037F8144 ldrh r0, [r2, #112] ; 0x70 cmp r0, #128 ; 0x80 orrcc r8, r8, r4, lsl r7 _037F8144: add r0, r7, #1 mov r0, r0, lsl #16 mov r7, r0, lsr #16 cmp r7, #2 bcc _037F8118 _037F8158: cmp r8, #1 beq _037F8174 cmp r8, #2 beq _037F8174 cmp r8, #3 beq _037F817C b _037F81A4 _037F8174: mov r0, r8 b _037F81A8 _037F817C: ldrh r0, [sl, #112] ; 0x70 add r0, r0, #1 and r0, r0, #127 ; 0x7f and r1, r0, #255 ; 0xff add r0, sl, #256 ; 0x100 ldrh r0, [r0, #112] ; 0x70 cmp r1, r0 moveq r0, #2 movne r0, #1 b _037F81A8 _037F81A4: mov r0, #0 _037F81A8: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037F81B4: .word 0x0000FFFF arm_func_start FUN_037F81B8 FUN_037F81B8: ; 0x037F81B8 ldr ip, _037F81C0 ; =SVC_GetCRC16 bx ip _037F81C0: .word SVC_GetCRC16 arm_func_start FUN_037F81C4 FUN_037F81C4: ; 0x037F81C4 mov r0, #0 ldr r1, _037F81E4 ; =0x027FFE1D ldrb r1, [r1] cmp r1, #128 ; 0x80 orreq r0, r0, #64 ; 0x40 moveq r0, r0, lsl #16 moveq r0, r0, lsr #16 bx lr _037F81E4: .word 0x027FFE1D arm_func_start FUN_037F81E8 FUN_037F81E8: ; 0x037F81E8 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #29 mov r1, #1 add r2, sp, #0 bl FUN_03804E50 ldrb r0, [sp] cmp r0, #255 ; 0xff moveq r0, #0 beq _037F821C ands r0, r0, #64 ; 0x40 movne r0, #1 moveq r0, #0 _037F821C: add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_037F8228 FUN_037F8228: ; 0x037F8228 stmdb sp!, {r4, lr} sub sp, sp, #528 ; 0x210 mov r0, #32 mov r1, #2 add r2, sp, #4 bl FUN_03804E50 ldr r0, [sp, #4] mov r0, r0, lsl #3 str r0, [sp, #4] mov r1, #256 ; 0x100 add r2, sp, #16 bl FUN_03804E50 ldr r0, [sp, #4] add r0, r0, #256 ; 0x100 mov r1, #256 ; 0x100 add r2, sp, #272 ; 0x110 bl FUN_03804E50 add r0, sp, #16 bl FUN_037F802C cmp r0, #3 blt _037F8290 mvn r0, #0 ldr r1, _037F83A4 ; =0x027FFC80 mov r2, #116 ; 0x74 bl FUN_037FB334 b _037F834C _037F8290: cmp r0, #0 beq _037F833C mov r2, r0, lsl #8 ldr r1, _037F83A8 ; =0xFFFFFF2A add r1, sp, r1 ldrb r1, [r1, r0, lsl #8] cmp r1, #10 bcs _037F82DC mov ip, #10 mov r3, #0 add r1, sp, #16 add r2, r1, r2 b _037F82D0 _037F82C4: add r1, r2, ip, lsl #1 strh r3, [r1, #-252] ; 0xffffff04 sub ip, ip, #1 _037F82D0: ldrb r1, [r2, #-230] ; 0xffffff1a cmp ip, r1 bgt _037F82C4 _037F82DC: mov r2, r0, lsl #8 ldr r1, _037F83AC ; =0xFFFFFF60 add r1, sp, r1 ldrb r1, [r1, r0, lsl #8] cmp r1, #26 bcs _037F8320 mov ip, #26 mov r3, #0 add r1, sp, #16 add r2, r1, r2 b _037F8314 _037F8308: add r1, r2, ip, lsl #1 strh r3, [r1, #-230] ; 0xffffff1a sub ip, ip, #1 _037F8314: ldrb r1, [r2, #-176] ; 0xffffff50 cmp ip, r1 bgt _037F8308 _037F8320: add r1, sp, #16 sub r0, r0, #1 add r0, r1, r0, lsl #8 ldr r1, _037F83A4 ; =0x027FFC80 mov r2, #116 ; 0x74 bl FUN_037FB348 b _037F834C _037F833C: mov r0, #0 ldr r1, _037F83A4 ; =0x027FFC80 mov r2, #116 ; 0x74 bl FUN_037FB334 _037F834C: mov r0, #54 ; 0x36 mov r1, #6 add r2, sp, #8 bl FUN_03804E50 ldr r0, _037F83A4 ; =0x027FFC80 add r4, r0, #116 ; 0x74 add r0, sp, #8 mov r1, r4 mov r2, #6 bl FUN_037FB478 mov r0, #60 ; 0x3c mov r1, #2 add r2, sp, #0 bl FUN_03804E50 ldrh r0, [sp] mov r0, r0, lsl #15 mov r0, r0, lsr #16 bl FUN_03807408 strh r0, [r4, #6] add sp, sp, #528 ; 0x210 ldmia sp!, {r4, lr} bx lr _037F83A4: .word 0x027FFC80 _037F83A8: .word 0xFFFFFF2A _037F83AC: .word 0xFFFFFF60 arm_func_start FUN_037F83B0 FUN_037F83B0: ; 0x037F83B0 stmdb sp!, {r4, lr} mov r0, #8 bl FUN_037F9CD0 mov r4, r0 mov r0, #8 bl FUN_037F9CBC mov r1, r0 mov r0, #8 mov r2, r4 mov r3, #1 bl FUN_037F9FE0 mov r4, r0 mov r0, #8 bl FUN_037F9CD0 mov r2, r0 mov r0, r4 mov r1, #0 sub r2, r2, r4 bl FUN_037FB3E4 mov r0, #8 mov r1, r4 bl FUN_037F9BBC mov r0, #8 bl FUN_037F9CD0 mov r4, r0 mov r0, #8 bl FUN_037F9CBC mov r1, r0 mov r0, #8 mov r2, r4 bl FUN_037F9F38 movs r4, r0 bpl _037F8438 bl FUN_037FB1F0 _037F8438: mov r0, #8 mov r1, r4 bl FUN_037FA088 mov r0, #8 mov r1, r4 bl FUN_037F9D88 cmp r0, #8448 ; 0x2100 bcs _037F845C bl FUN_037FB1F0 _037F845C: mov r0, r4 ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037F8468 FUN_037F8468: ; 0x037F8468 stmdb sp!, {r4, lr} bl FUN_027E0000 bl FUN_037F9B84 bl FUN_037F9354 bl FUN_037F8228 bl FUN_037FB5B0 bl FUN_037F83B0 mov r4, r0 mov r0, #6 bl FUN_037FC488 bl FUN_037FB96C mov r0, #1 ldr r1, _037F8524 ; =FUN_037F8000 bl FUN_037F894C mov r0, #1 bl FUN_037F8894 ldr r1, _037F8528 ; =0x04000004 ldrh r0, [r1] ldrh r0, [r1] orr r0, r0, #8 strh r0, [r1] ldr r1, _037F852C ; =0x04000208 ldrh r0, [r1] mov r0, #1 strh r0, [r1] bl FUN_037FB048 mvn r0, #0 bl FUN_037FFF14 mov r0, #15 bl FUN_037FFF2C mov r0, #12 bl FUN_03805954 mov r0, r4 bl FUN_03806AD0 mov r0, #2 bl FUN_03801544 mov r4, #0 _037F84FC: bl FUN_037F8530 bl FUN_037FB1A0 cmp r0, #0 beq _037F8518 mov r0, r4 bl FUN_03803E5C bl FUN_037FB0E0 _037F8518: bl FUN_03803C80 bl FUN_03800E7C b _037F84FC _037F8524: .word FUN_037F8000 _037F8528: .word 0x04000004 _037F852C: .word 0x04000208 arm_func_start FUN_037F8530 FUN_037F8530: ; 0x037F8530 ldr ip, _037F8538 ; =SVC_Halt bx ip _037F8538: .word SVC_Halt arm_func_start FUN_037F853C FUN_037F853C: ; 0x037F853C stmfd sp!, {lr} mov ip, #67108864 ; 0x4000000 add ip, ip, #528 ; 0x210 ldr r1, [ip, #-8] cmp r1, #0 ldmeqfd sp!, {pc} ldmia ip, {r1, r2} ands r1, r1, r2 ldmeqfd sp!, {pc} mov r3, #1 mov r0, #0 _037F8568: ands r2, r1, r3, lsl r0 addeq r0, r0, #1 beq _037F8568 str r2, [ip, #4] ldr r1, _037F8588 ; =_038075F8 ldr r0, [r1, r0, lsl #2] ldr lr, _037F858C ; =FUN_037F8590 bx r0 _037F8588: .word _038075F8 _037F858C: .word FUN_037F8590 arm_func_start FUN_037F8590 FUN_037F8590: ldr ip, _037F86AC ; =_0380770C mov r3, #0 ldr ip, [ip] mov r2, #1 cmp ip, #0 beq _037F85E0 _037F85A8: str r2, [ip, #72] ; 0x48 str r3, [ip, #92] ; 0x5c str r3, [ip, #96] ; 0x60 ldr r0, [ip, #100] ; 0x64 str r3, [ip, #100] ; 0x64 mov ip, r0 cmp ip, #0 bne _037F85A8 ldr ip, _037F86AC ; =_0380770C str r3, [ip] str r3, [ip, #4] ldr ip, _037F86B0 ; =_0380779C mov r1, #1 strh r1, [ip] _037F85E0: ldr ip, _037F86B0 ; =_0380779C ldrh r1, [ip] cmp r1, #0 ldreq pc, [sp], #4 ; (ldreq pc, [sp], #4) mov r1, #0 strh r1, [ip] mov r3, #210 ; 0xd2 msr CPSR_c, r3 add r2, ip, #8 ldr r1, [r2] _037F8608: cmp r1, #0 ldrneh r0, [r1, #72] ; 0x48 cmpne r0, #1 ldrne r1, [r1, #76] ; 0x4c bne _037F8608 cmp r1, #0 bne _037F8630 _037F8624: mov r3, #146 ; 0x92 msr CPSR_c, r3 ldr pc, [sp], #4 _037F8630: ldr r0, [ip, #4] cmp r1, r0 beq _037F8624 ldr r3, [ip, #12] cmp r3, #0 beq _037F8658 arm_func_start FUN_037F8648 FUN_037F8648: ; 0x037F8648 stmdb sp!, {r0, r1, ip} mov lr, pc bx r3 ldmia sp!, {r0, r1, ip} _037F8658: 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, r9, sl, fp, ip, sp, lr}^ stmib r0!, {lr} mov r3, #211 ; 0xd3 msr CPSR_c, r3 stmib r0!, {sp} ldr sp, [r1, #68] ; 0x44 mov r3, #210 ; 0xd2 msr CPSR_c, r3 ldr r2, [r1, #0]! msr SPSR_fc, r2 ldr lr, [r1, #64] ; 0x40 ldmib r1!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ nop ; (mov r0, r0) stmda sp!, {r0, r1, r2, r3, ip, lr} ldmia sp!, {pc} _037F86AC: .word _0380770C _037F86B0: .word _0380779C arm_func_start FUN_037F86B4 FUN_037F86B4: ; 0x037F86B4 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037F8700 ; =_03807714 ldr r2, [r0, #96] ; 0x60 ldr r1, _037F8704 ; =0x027FFC3C ldr r0, [r1] add r0, r0, #1 str r0, [r1] cmp r2, #0 beq _037F86E4 mov lr, pc bx r2 _037F86E4: ldr r1, _037F8708 ; =0x0380FFF8 ldr r0, [r1] orr r0, r0, #1 str r0, [r1] add sp, sp, #4 ldmia sp!, {lr} bx lr _037F8700: .word _03807714 _037F8704: .word 0x027FFC3C _037F8708: .word 0x0380FFF8 arm_func_start FUN_037F870C FUN_037F870C: ; 0x037F870C mov r0, #7 ldr ip, _037F8718 ; =FUN_037F878C bx ip _037F8718: .word FUN_037F878C arm_func_start FUN_037F871C FUN_037F871C: ; 0x037F871C mov r0, #6 ldr ip, _037F8728 ; =FUN_037F878C bx ip _037F8728: .word FUN_037F878C arm_func_start FUN_037F872C FUN_037F872C: ; 0x037F872C mov r0, #5 ldr ip, _037F8738 ; =FUN_037F878C bx ip _037F8738: .word FUN_037F878C arm_func_start FUN_037F873C FUN_037F873C: ; 0x037F873C mov r0, #4 ldr ip, _037F8748 ; =FUN_037F878C bx ip _037F8748: .word FUN_037F878C arm_func_start FUN_037F874C FUN_037F874C: ; 0x037F874C mov r0, #3 ldr ip, _037F8758 ; =FUN_037F878C bx ip _037F8758: .word FUN_037F878C arm_func_start FUN_037F875C FUN_037F875C: ; 0x037F875C mov r0, #2 ldr ip, _037F8768 ; =FUN_037F878C bx ip _037F8768: .word FUN_037F878C arm_func_start FUN_037F876C FUN_037F876C: ; 0x037F876C mov r0, #1 ldr ip, _037F8778 ; =FUN_037F878C bx ip _037F8778: .word FUN_037F878C arm_func_start FUN_037F877C FUN_037F877C: ; 0x037F877C mov r0, #0 ldr ip, _037F8788 ; =FUN_037F878C bx ip _037F8788: .word FUN_037F878C arm_func_start FUN_037F878C FUN_037F878C: ; 0x037F878C stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r3, #1 mov r2, r0, lsl #1 ldr r1, _037F880C ; =_038075E4 ldrh r1, [r1, r2] mov r5, r3, lsl r1 mov r1, #12 mul r4, r0, r1 ldr r2, _037F8810 ; =_03807714 ldr r1, [r2, r4] mov r0, #0 str r0, [r2, r4] cmp r1, #0 beq _037F87D8 ldr r0, _037F8814 ; =_0380771C ldr r0, [r0, r4] mov lr, pc bx r1 _037F87D8: ldr r1, _037F8818 ; =0x0380FFF8 ldr r0, [r1] orr r0, r0, r5 str r0, [r1] ldr r0, _037F881C ; =_03807718 ldr r0, [r0, r4] cmp r0, #0 bne _037F8800 mov r0, r5 bl FUN_037F8858 _037F8800: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037F880C: .word _038075E4 _037F8810: .word _03807714 _037F8814: .word _0380771C _037F8818: .word 0x0380FFF8 _037F881C: .word _03807718 arm_func_start FUN_037F8820 FUN_037F8820: ; 0x037F8820 bx lr arm_func_start FUN_037F8824 FUN_037F8824: ; 0x037F8824 ldr ip, _037F8850 ; =0x04000208 ldrh r3, [ip] mov r1, #0 strh r1, [ip] ldr r2, _037F8854 ; =0x04000214 ldr r1, [r2] str r0, [r2] ldrh r0, [ip] strh r3, [ip] mov r0, r1 bx lr _037F8850: .word 0x04000208 _037F8854: .word 0x04000214 arm_func_start FUN_037F8858 FUN_037F8858: ; 0x037F8858 ldr ip, _037F888C ; =0x04000208 ldrh r3, [ip] mov r1, #0 strh r1, [ip] ldr r2, _037F8890 ; =0x04000210 ldr r1, [r2] mvn r0, r0 and r0, r1, r0 str r0, [r2] ldrh r0, [ip] strh r3, [ip] mov r0, r1 bx lr _037F888C: .word 0x04000208 _037F8890: .word 0x04000210 arm_func_start FUN_037F8894 FUN_037F8894: ; 0x037F8894 ldr ip, _037F88C4 ; =0x04000208 ldrh r3, [ip] mov r1, #0 strh r1, [ip] ldr r2, _037F88C8 ; =0x04000210 ldr r1, [r2] orr r0, r1, r0 str r0, [r2] ldrh r0, [ip] strh r3, [ip] mov r0, r1 bx lr _037F88C4: .word 0x04000208 _037F88C8: .word 0x04000210 arm_func_start FUN_037F88CC FUN_037F88CC: ; 0x037F88CC ldr ip, _037F88F8 ; =0x04000208 ldrh r3, [ip] mov r1, #0 strh r1, [ip] ldr r2, _037F88FC ; =0x04000210 ldr r1, [r2] str r0, [r2] ldrh r0, [ip] strh r3, [ip] mov r0, r1 bx lr _037F88F8: .word 0x04000208 _037F88FC: .word 0x04000210 arm_func_start FUN_037F8900 FUN_037F8900: ; 0x037F8900 stmdb sp!, {r4, lr} mov r3, #12 mul r4, r0, r3 ldr r3, _037F8940 ; =_03807744 str r1, [r3, r4] ldr r1, _037F8944 ; =_0380774C str r2, [r1, r4] mov r1, #1 add r0, r0, #3 mov r0, r1, lsl r0 bl FUN_037F8894 mov r1, #1 ldr r0, _037F8948 ; =_03807748 str r1, [r0, r4] ldmia sp!, {r4, lr} bx lr _037F8940: .word _03807744 _037F8944: .word _0380774C _037F8948: .word _03807748 arm_func_start FUN_037F894C FUN_037F894C: ; 0x037F894C stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r9, #0 mov r7, r9 ldr lr, _037F89E8 ; =_038075F8 ldr r4, _037F89EC ; =_03807774 ldr r6, _037F89F0 ; =_03807714 mov ip, r9 mov r3, #1 mov r2, #12 _037F8974: ands r5, r0, #1 beq _037F89CC mov r8, r7 cmp r9, #8 blt _037F8998 cmp r9, #11 suble r5, r9, #8 mlale r8, r5, r2, r6 ble _037F89BC _037F8998: cmp r9, #3 blt _037F89B0 cmp r9, #6 addle r5, r9, #1 mlale r8, r5, r2, r6 ble _037F89BC _037F89B0: cmp r9, #0 moveq r8, r4 strne r1, [lr, r9, lsl #2] _037F89BC: cmp r8, #0 strne r1, [r8] strne ip, [r8, #8] strne r3, [r8, #4] _037F89CC: mov r0, r0, lsr #1 add r9, r9, #1 cmp r9, #25 blt _037F8974 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037F89E8: .word _038075F8 _037F89EC: .word _03807774 _037F89F0: .word _03807714 arm_func_start FUN_037F89F4 FUN_037F89F4: ; 0x037F89F4 mov r1, #0 ldr r0, _037F8A10 ; =_0380770C str r1, [r0, #4] str r1, [r0] ldr r0, _037F8A14 ; =0x027FFC3C str r1, [r0] bx lr _037F8A10: .word _0380770C _037F8A14: .word 0x027FFC3C arm_func_start FUN_037F8A18 FUN_037F8A18: ; 0x037F8A18 ldr r1, _037F8A20 ; =FUN_037F8B1C bx r1 _037F8A20: .word FUN_037F8B1C arm_func_start FUN_037F8A24 FUN_037F8A24: ; 0x037F8A24 ldr r3, _037F8AB4 ; =0x027FFFB8 ldr r1, [r3] mov r2, #0 mov r0, #-2147483648 ; 0x80000000 _037F8A34: tst r1, r0 bne _037F8A50 add r2, r2, #1 cmp r2, #32 beq _037F8A50 mov r0, r0, lsr #1 b _037F8A34 _037F8A50: cmp r2, #32 movne r0, #128 ; 0x80 bne _037F8A98 add r3, r3, #4 ldr r1, [r3] mov r2, #0 mov r0, #-2147483648 ; 0x80000000 _037F8A6C: tst r1, r0 bne _037F8A88 add r2, r2, #1 cmp r2, #32 beq _037F8A88 mov r0, r0, lsr #1 b _037F8A6C _037F8A88: cmp r2, #32 ldr r0, _037F8AB8 ; =0xFFFFFFFD bxeq lr mov r0, #160 ; 0xa0 _037F8A98: add r0, r0, r2 mov r1, #-2147483648 ; 0x80000000 mov r1, r1, lsr r2 ldr r2, [r3] bic r2, r2, r1 str r2, [r3] bx lr _037F8AB4: .word 0x027FFFB8 _037F8AB8: .word 0xFFFFFFFD arm_func_start FUN_037F8ABC FUN_037F8ABC: ; 0x037F8ABC ldr r3, _037F8AE8 ; =0x027FFFB8 cmp r0, #160 ; 0xa0 addpl r3, r3, #4 subpl r0, r0, #160 ; 0xa0 submi r0, r0, #128 ; 0x80 mov r1, #-2147483648 ; 0x80000000 mov r1, r1, lsr r0 ldr r2, [r3] orr r2, r2, r1 str r2, [r3] bx lr _037F8AE8: .word 0x027FFFB8 arm_func_start FUN_037F8AEC FUN_037F8AEC: ; 0x037F8AEC ldrh r0, [r0, #4] bx lr _037F8AF4: bx lr _037F8AF8: bx lr arm_func_start FUN_037F8AFC FUN_037F8AFC: ; 0x037F8AFC ldr r1, _037F8B10 ; =0x027FFFE8 ldr r2, _037F8B14 ; =_037F8AF8 mov r3, #1 ldr ip, _037F8B18 ; =FUN_037F8B5C bx ip _037F8B10: .word 0x027FFFE8 _037F8B14: .word _037F8AF8 _037F8B18: .word FUN_037F8B5C arm_func_start FUN_037F8B1C FUN_037F8B1C: ; 0x037F8B1C ldr r1, _037F8B30 ; =0x027FFFE8 ldr r2, _037F8B34 ; =_037F8AF4 mov r3, #1 ldr ip, _037F8B38 ; =FUN_037F8BE0 bx ip _037F8B30: .word 0x027FFFE8 _037F8B34: .word _037F8AF4 _037F8B38: .word FUN_037F8BE0 arm_func_start FUN_037F8B3C FUN_037F8B3C: ; 0x037F8B3C ldr r1, _037F8B50 ; =0x027FFFE8 ldr r2, _037F8B54 ; =_037F8AF8 mov r3, #1 ldr ip, _037F8B58 ; =FUN_037F8C6C bx ip _037F8B50: .word 0x027FFFE8 _037F8B54: .word _037F8AF8 _037F8B58: .word FUN_037F8C6C arm_func_start FUN_037F8B5C FUN_037F8B5C: ; 0x037F8B5C stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r9, r0 mov r8, r1 mov r7, r2 movs r6, r3 beq _037F8B84 bl FUN_037FB088 mov r5, r0 b _037F8B8C _037F8B84: bl FUN_037FB05C mov r5, r0 _037F8B8C: mov r0, r9 mov r1, r8 bl FUN_037FB5A8 movs r4, r0 bne _037F8BB4 cmp r7, #0 beq _037F8BB0 mov lr, pc bx r7 _037F8BB0: strh r9, [r8, #4] _037F8BB4: cmp r6, #0 beq _037F8BC8 mov r0, r5 bl FUN_037FB09C b _037F8BD0 _037F8BC8: mov r0, r5 bl FUN_037FB070 _037F8BD0: mov r0, r4 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr arm_func_start FUN_037F8BE0 FUN_037F8BE0: ; 0x037F8BE0 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r1 mov r6, r2 mov r5, r3 ldrh r1, [r7, #4] cmp r0, r1 mvnne r0, #1 bne _037F8C60 cmp r5, #0 beq _037F8C18 bl FUN_037FB088 mov r4, r0 b _037F8C20 _037F8C18: bl FUN_037FB05C mov r4, r0 _037F8C20: mov r0, #0 strh r0, [r7, #4] cmp r6, #0 beq _037F8C38 mov lr, pc bx r6 _037F8C38: mov r0, #0 str r0, [r7] cmp r5, #0 beq _037F8C54 mov r0, r4 bl FUN_037FB09C b _037F8C5C _037F8C54: mov r0, r4 bl FUN_037FB070 _037F8C5C: mov r0, #0 _037F8C60: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_037F8C6C FUN_037F8C6C: ; 0x037F8C6C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r0 mov r7, r1 mov r6, r2 mov r5, r3 mov r4, #1024 ; 0x400 b _037F8C90 _037F8C88: mov r0, r4 bl FUN_037F8CB4 _037F8C90: mov r0, r8 mov r1, r7 mov r2, r6 mov r3, r5 bl FUN_037F8B5C cmp r0, #0 bgt _037F8C88 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr arm_func_start FUN_037F8CB4 FUN_037F8CB4: ; 0x037F8CB4 ldr ip, _037F8CBC ; =SVC_WaitByLoop bx ip _037F8CBC: .word SVC_WaitByLoop arm_func_start FUN_037F8CC0 FUN_037F8CC0: ; 0x037F8CC0 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 ldr r0, _037F8D38 ; =_03807780 ldr r1, [r0] cmp r1, #0 bne _037F8D2C mov r1, #1 str r1, [r0] mov r0, #0 ldr r4, _037F8D3C ; =0x027FFFF0 strh r0, [r4, #6] mov r5, #1024 ; 0x400 b _037F8CFC _037F8CF4: mov r0, r5 bl FUN_037F8CB4 _037F8CFC: ldrh r0, [r4, #4] cmp r0, #127 ; 0x7f bne _037F8CF4 mvn r1, #0 ldr r0, _037F8D40 ; =0x027FFFB8 str r1, [r0] mov r0, #65536 ; 0x10000 rsb r1, r0, #0 ldr r0, _037F8D44 ; =0x027FFFBC str r1, [r0] mov r0, #191 ; 0xbf strh r0, [r4, #6] _037F8D2C: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037F8D38: .word _03807780 _037F8D3C: .word 0x027FFFF0 _037F8D40: .word 0x027FFFB8 _037F8D44: .word 0x027FFFBC arm_func_start FUN_037F8D48 FUN_037F8D48: ; 0x037F8D48 str r1, [r0, #152] ; 0x98 bx lr arm_func_start FUN_037F8D50 FUN_037F8D50: ; 0x037F8D50 stmdb sp!, {r4, lr} bl FUN_037FB05C mov r4, #0 ldr r1, _037F8D84 ; =_03807788 ldr r3, [r1] cmp r3, #0 subne r2, r3, #1 strne r2, [r1] movne r4, r3 bl FUN_037FB070 mov r0, r4 ldmia sp!, {r4, lr} bx lr _037F8D84: .word _03807788 arm_func_start FUN_037F8D88 FUN_037F8D88: ; 0x037F8D88 stmdb sp!, {r4, lr} bl FUN_037FB05C ldr r2, _037F8DBC ; =_03807788 ldr r3, [r2] mvn r1, #0 cmp r3, r1 addcc r1, r3, #1 strcc r1, [r2] movcc r4, r3 bl FUN_037FB070 mov r0, r4 ldmia sp!, {r4, lr} bx lr _037F8DBC: .word _03807788 arm_func_start FUN_037F8DC0 FUN_037F8DC0: ; 0x037F8DC0 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C ldr r1, _037F8DF0 ; =_0380779C ldr r4, [r1, #12] str r5, [r1, #12] bl FUN_037FB070 mov r0, r4 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037F8DF0: .word _0380779C _037F8DF4: ldr r2, [r0] mov r1, #0 str r1, [r0] str r1, [r2, #148] ; 0x94 mov r0, r2 ldr ip, _037F8E10 ; =FUN_037F8FB4 bx ip _037F8E10: .word FUN_037F8FB4 arm_func_start FUN_037F8E14 FUN_037F8E14: ; 0x037F8E14 stmdb sp!, {r4, r5, lr} sub sp, sp, #52 ; 0x34 mov r5, r0 add r0, sp, #8 bl FUN_037FA900 ldr r0, _037F8EAC ; =_03807794 ldr r0, [r0] ldr r0, [r0] str r0, [sp, #4] bl FUN_037FB05C mov r4, r0 add r0, sp, #8 ldr r1, [sp, #4] str r0, [r1, #148] ; 0x94 add r1, sp, #4 str r1, [sp] mov r2, #0 ldr r1, _037F8EB0 ; =0x000082EA umull ip, r3, r5, r1 mla r3, r5, r2, r3 mla r3, r2, r1, r3 mov r2, r3, lsr #6 mov r1, ip, lsr #6 orr r1, r1, r3, lsl #26 ldr r3, _037F8EB4 ; =_037F8DF4 bl FUN_037FA75C mov r5, #0 b _037F8E8C _037F8E84: mov r0, r5 bl FUN_037F9064 _037F8E8C: ldr r0, [sp, #4] cmp r0, #0 bne _037F8E84 mov r0, r4 bl FUN_037FB070 add sp, sp, #52 ; 0x34 ldmia sp!, {r4, r5, lr} bx lr _037F8EAC: .word _03807794 _037F8EB0: .word 0x000082EA _037F8EB4: .word _037F8DF4 arm_func_start FUN_037F8EB8 FUN_037F8EB8: ; 0x037F8EB8 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r6, r0 mov r5, r1 ldr r0, _037F8F60 ; =_0380779C ldr r8, [r0, #8] mov r7, #0 bl FUN_037FB05C mov r4, r0 b _037F8EE4 _037F8EDC: mov r7, r8 ldr r8, [r8, #76] ; 0x4c _037F8EE4: cmp r8, #0 beq _037F8EF4 cmp r8, r6 bne _037F8EDC _037F8EF4: cmp r8, #0 beq _037F8F08 ldr r0, _037F8F64 ; =_038077AC cmp r8, r0 bne _037F8F18 _037F8F08: mov r0, r4 bl FUN_037FB070 mov r0, #0 b _037F8F58 _037F8F18: ldr r0, [r8, #84] ; 0x54 cmp r0, r5 beq _037F8F4C cmp r7, #0 ldreq r1, [r6, #76] ; 0x4c ldreq r0, _037F8F60 ; =_0380779C streq r1, [r0, #8] ldrne r0, [r6, #76] ; 0x4c strne r0, [r7, #76] ; 0x4c str r5, [r6, #84] ; 0x54 mov r0, r6 bl FUN_037F9584 bl FUN_037F945C _037F8F4C: mov r0, r4 bl FUN_037FB070 mov r0, #1 _037F8F58: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037F8F60: .word _0380779C _037F8F64: .word _038077AC arm_func_start FUN_037F8F68 FUN_037F8F68: ; 0x037F8F68 stmdb sp!, {r4, lr} bl FUN_037FB05C mov r4, r0 bl FUN_037F945C mov r0, r4 bl FUN_037FB070 ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037F8F88 FUN_037F8F88: ; 0x037F8F88 ldr r0, _037F8FB0 ; =_0380779C ldr r0, [r0, #8] b _037F8F98 _037F8F94: ldr r0, [r0, #76] ; 0x4c _037F8F98: cmp r0, #0 bxeq lr ldr r1, [r0, #72] ; 0x48 cmp r1, #1 bne _037F8F94 bx lr _037F8FB0: .word _0380779C arm_func_start FUN_037F8FB4 FUN_037F8FB4: ; 0x037F8FB4 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C mov r4, r0 mov r0, #1 str r0, [r5, #72] ; 0x48 bl FUN_037F945C mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037F8FE8 FUN_037F8FE8: ; 0x037F8FE8 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C mov r4, r0 ldr r0, [r5] cmp r0, #0 beq _037F9050 mov r7, #1 mov r6, #0 b _037F9030 _037F9014: mov r0, r5 bl FUN_037F967C str r7, [r0, #72] ; 0x48 str r6, [r0, #92] ; 0x5c str r6, [r0, #100] ; 0x64 ldr r1, [r0, #100] ; 0x64 str r1, [r0, #96] ; 0x60 _037F9030: ldr r0, [r5] cmp r0, #0 bne _037F9014 mov r0, #0 str r0, [r5, #4] ldr r0, [r5, #4] str r0, [r5] bl FUN_037F945C _037F9050: mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_037F9064 FUN_037F9064: ; 0x037F9064 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 bl FUN_037FB05C mov r5, r0 ldr r0, _037F90B4 ; =_03807794 ldr r0, [r0] ldr r4, [r0] cmp r6, #0 beq _037F9098 str r6, [r4, #92] ; 0x5c mov r0, r6 mov r1, r4 bl FUN_037F96B0 _037F9098: mov r0, #0 str r0, [r4, #72] ; 0x48 bl FUN_037F945C mov r0, r5 bl FUN_037FB070 ldmia sp!, {r4, r5, r6, lr} bx lr _037F90B4: .word _03807794 arm_func_start FUN_037F90B8 FUN_037F90B8: ; 0x037F90B8 ldr r0, [r0, #72] ; 0x48 cmp r0, #2 moveq r0, #1 movne r0, #0 bx lr arm_func_start FUN_037F90CC FUN_037F90CC: ; 0x037F90CC stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C mov r4, r0 ldr r0, [r5, #72] ; 0x48 cmp r0, #2 beq _037F90F4 add r0, r5, #128 ; 0x80 bl FUN_037F9064 _037F90F4: mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037F9108 FUN_037F9108: ; 0x037F9108 stmdb sp!, {r4, lr} ldr r0, _037F9164 ; =_03807794 ldr r0, [r0] ldr r4, [r0] bl FUN_037F8D88 mov r0, r4 bl FUN_037F9A30 ldr r0, [r4, #92] ; 0x5c cmp r0, #0 beq _037F9138 mov r1, r4 bl FUN_037F961C _037F9138: mov r0, r4 bl FUN_037F953C mov r0, #2 str r0, [r4, #72] ; 0x48 add r0, r4, #128 ; 0x80 bl FUN_037F8FE8 bl FUN_037F8D50 bl FUN_037F8F68 bl FUN_037FB1F0 ldmia sp!, {r4, lr} bx lr _037F9164: .word _03807794 arm_func_start FUN_037F9168 FUN_037F9168: ; 0x037F9168 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037F91AC ; =_03807794 ldr r1, [r1] ldr r3, [r1] ldr r2, [r3, #152] ; 0x98 cmp r2, #0 beq _037F919C mov r1, #0 str r1, [r3, #152] ; 0x98 mov lr, pc bx r2 bl FUN_037FB05C _037F919C: bl FUN_037F9108 add sp, sp, #4 ldmia sp!, {lr} bx lr _037F91AC: .word _03807794 arm_func_start FUN_037F91B0 FUN_037F91B0: ; 0x037F91B0 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 mov r4, r1 ldr r1, _037F9210 ; =_03807784 ldr r2, [r1] cmp r2, #0 beq _037F91FC ldr r1, _037F9214 ; =FUN_037F9168 bl FUN_037F9740 str r4, [r5, #4] ldr r0, [r5] orr r0, r0, #128 ; 0x80 str r0, [r5] mov r0, #1 str r0, [r5, #72] ; 0x48 mov r0, r5 bl FUN_037F97E0 b _037F9204 _037F91FC: mov r0, r4 bl FUN_037F9168 _037F9204: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037F9210: .word _03807784 _037F9214: .word FUN_037F9168 arm_func_start FUN_037F9218 FUN_037F9218: ; 0x037F9218 stmfd sp!, {lr} sub sp, sp, #4 bl FUN_037FB05C ldr r0, _037F9240 ; =_0380779C ldr r0, [r0, #4] mov r1, #0 bl FUN_037F91B0 add sp, sp, #4 ldmia sp!, {lr} bx lr _037F9240: .word _0380779C arm_func_start FUN_037F9244 FUN_037F9244: ; 0x037F9244 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r9, r0 mov r8, r1 mov r7, r2 mov r6, r3 bl FUN_037FB05C mov r4, r0 bl FUN_037F9728 ldr r1, [sp, #36] ; 0x24 str r1, [r9, #84] ; 0x54 str r0, [r9, #80] ; 0x50 mov r0, #0 str r0, [r9, #72] ; 0x48 str r0, [r9, #88] ; 0x58 mov r0, r9 bl FUN_037F9584 str r6, [r9, #120] ; 0x78 ldr r0, [sp, #32] sub r5, r6, r0 str r5, [r9, #116] ; 0x74 mov r2, #0 str r2, [r9, #124] ; 0x7c ldr r1, _037F9348 ; =0xD73BFDF7 ldr r0, [r9, #120] ; 0x78 str r1, [r0, #-4] ldr r1, _037F934C ; =0xFBDD37BB ldr r0, [r9, #116] ; 0x74 str r1, [r0] str r2, [r9, #132] ; 0x84 ldr r0, [r9, #132] ; 0x84 str r0, [r9, #128] ; 0x80 mov r0, r9 mov r1, r8 sub r2, r6, #4 bl FUN_037F9740 str r7, [r9, #4] ldr r0, _037F9350 ; =FUN_037F9218 str r0, [r9, #60] ; 0x3c mov r0, #0 add r1, r5, #4 ldr r2, [sp, #32] sub r2, r2, #8 bl FUN_037FB334 mov r1, #0 str r1, [r9, #104] ; 0x68 str r1, [r9, #108] ; 0x6c str r1, [r9, #112] ; 0x70 mov r0, r9 bl FUN_037F8D48 mov r0, #0 str r0, [r9, #92] ; 0x5c str r0, [r9, #100] ; 0x64 ldr r1, [r9, #100] ; 0x64 str r1, [r9, #96] ; 0x60 add r1, r9, #136 ; 0x88 mov r2, #12 bl FUN_037FB334 mov r0, #0 str r0, [r9, #148] ; 0x94 mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037F9348: .word 0xD73BFDF7 _037F934C: .word 0xFBDD37BB _037F9350: .word FUN_037F9218 arm_func_start FUN_037F9354 FUN_037F9354: ; 0x037F9354 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037F942C ; =_03807798 ldr r1, [r0] cmp r1, #0 bne _037F9420 mov r2, #1 str r2, [r0] ldr r1, _037F9430 ; =_038077A0 ldr r0, _037F9434 ; =_03807794 str r1, [r0] mov r0, #16 ldr r1, _037F9438 ; =_03807850 str r0, [r1, #84] ; 0x54 mov r0, #0 str r0, [r1, #80] ; 0x50 str r2, [r1, #72] ; 0x48 str r0, [r1, #76] ; 0x4c str r0, [r1, #88] ; 0x58 ldr r0, _037F943C ; =_0380779C str r1, [r0, #8] str r1, [r0, #4] ldr r2, _037F9440 ; =0x00000400 cmp r2, #0 ldrle r0, _037F9444 ; =FUN_037F8000 suble r2, r0, r2 ldrgt r1, _037F9448 ; =0x00000400 ldrgt r0, _037F944C ; =0x0380FF80 subgt r0, r0, r1 subgt r2, r0, r2 ldr r1, _037F9448 ; =0x00000400 ldr r0, _037F944C ; =0x0380FF80 sub r3, r0, r1 ldr r1, _037F9438 ; =_03807850 str r3, [r1, #120] ; 0x78 str r2, [r1, #116] ; 0x74 mov r0, #0 str r0, [r1, #124] ; 0x7c ldr r2, _037F9450 ; =0xD73BFDF7 str r2, [r3, #-4] ldr r3, _037F9454 ; =0xFBDD37BB ldr r2, [r1, #116] ; 0x74 str r3, [r2] str r0, [r1, #132] ; 0x84 str r0, [r1, #128] ; 0x80 ldr r1, _037F943C ; =_0380779C strh r0, [r1] strh r0, [r1, #2] ldr r2, _037F9458 ; =0x027FFFA4 str r1, [r2] bl FUN_037F8DC0 _037F9420: add sp, sp, #4 ldmia sp!, {lr} bx lr _037F942C: .word _03807798 _037F9430: .word _038077A0 _037F9434: .word _03807794 _037F9438: .word _03807850 _037F943C: .word _0380779C _037F9440: .word 0x00000400 _037F9444: .word FUN_037F8000 _037F9448: .word 0x00000400 _037F944C: .word 0x0380FF80 _037F9450: .word 0xD73BFDF7 _037F9454: .word 0xFBDD37BB _037F9458: .word 0x027FFFA4 arm_func_start FUN_037F945C FUN_037F945C: ; 0x037F945C stmdb sp!, {r4, r5, r6, lr} ldr r0, _037F952C ; =_03807788 ldr r0, [r0] cmp r0, #0 bne _037F9524 ldr r4, _037F9530 ; =_0380779C ldrh r0, [r4, #2] cmp r0, #0 bne _037F948C bl FUN_037FB0B4 cmp r0, #18 bne _037F9498 _037F948C: mov r0, #1 strh r0, [r4] b _037F9524 _037F9498: ldr r0, _037F9534 ; =_03807794 ldr r0, [r0] ldr r6, [r0] bl FUN_037F8F88 mov r5, r0 cmp r6, r5 beq _037F9524 cmp r5, #0 beq _037F9524 ldr r0, [r6, #72] ; 0x48 cmp r0, #2 beq _037F94D8 mov r0, r6 bl FUN_037F97AC cmp r0, #0 bne _037F9524 _037F94D8: ldr r0, _037F9538 ; =_03807790 ldr r2, [r0] cmp r2, #0 beq _037F94F8 mov r0, r6 mov r1, r5 mov lr, pc bx r2 _037F94F8: ldr r2, [r4, #12] cmp r2, #0 beq _037F9514 mov r0, r6 mov r1, r5 mov lr, pc bx r2 _037F9514: ldr r0, _037F9530 ; =_0380779C str r5, [r0, #4] mov r0, r5 bl FUN_037F97E0 _037F9524: ldmia sp!, {r4, r5, r6, lr} bx lr _037F952C: .word _03807788 _037F9530: .word _0380779C _037F9534: .word _03807794 _037F9538: .word _03807790 arm_func_start FUN_037F953C FUN_037F953C: ; 0x037F953C ldr r1, _037F9580 ; =_0380779C ldr r2, [r1, #8] mov r1, #0 b _037F9554 _037F954C: mov r1, r2 ldr r2, [r2, #76] ; 0x4c _037F9554: cmp r2, #0 beq _037F9564 cmp r2, r0 bne _037F954C _037F9564: cmp r1, #0 ldreq r1, [r0, #76] ; 0x4c ldreq r0, _037F9580 ; =_0380779C streq r1, [r0, #8] ldrne r0, [r0, #76] ; 0x4c strne r0, [r1, #76] ; 0x4c bx lr _037F9580: .word _0380779C arm_func_start FUN_037F9584 FUN_037F9584: ; 0x037F9584 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037F95E8 ; =_0380779C ldr r3, [r1, #8] mov lr, r3 mov ip, #0 b _037F95A8 _037F95A0: mov ip, lr ldr lr, [lr, #76] ; 0x4c _037F95A8: cmp lr, #0 beq _037F95C0 ldr r2, [lr, #84] ; 0x54 ldr r1, [r0, #84] ; 0x54 cmp r2, r1 bcc _037F95A0 _037F95C0: cmp ip, #0 streq r3, [r0, #76] ; 0x4c ldreq r1, _037F95E8 ; =_0380779C streq r0, [r1, #8] ldrne r1, [ip, #76] ; 0x4c strne r1, [r0, #76] ; 0x4c strne r0, [ip, #76] ; 0x4c add sp, sp, #4 ldmia sp!, {lr} bx lr _037F95E8: .word _0380779C arm_func_start FUN_037F95EC FUN_037F95EC: ; 0x037F95EC ldr r2, [r0] cmp r2, #0 beq _037F9614 ldr r1, [r2, #16] str r1, [r0] cmp r1, #0 movne r0, #0 strne r0, [r1, #20] moveq r1, #0 streq r1, [r0, #4] _037F9614: mov r0, r2 bx lr arm_func_start FUN_037F961C FUN_037F961C: ; 0x037F961C stmfd sp!, {lr} sub sp, sp, #4 ldr r2, [r0] mov lr, r2 b _037F9664 _037F9630: ldr ip, [lr, #100] ; 0x64 cmp lr, r1 bne _037F9660 ldr r3, [lr, #96] ; 0x60 cmp r2, lr streq ip, [r0] strne ip, [r3, #100] ; 0x64 ldr r1, [r0, #4] cmp r1, lr streq r3, [r0, #4] strne r3, [ip, #96] ; 0x60 b _037F966C _037F9660: mov lr, ip _037F9664: cmp lr, #0 bne _037F9630 _037F966C: mov r0, lr add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_037F967C FUN_037F967C: ; 0x037F967C ldr r2, [r0] cmp r2, #0 beq _037F96A8 ldr r1, [r2, #100] ; 0x64 str r1, [r0] cmp r1, #0 movne r0, #0 strne r0, [r1, #96] ; 0x60 moveq r1, #0 streq r1, [r0, #4] streq r1, [r2, #92] ; 0x5c _037F96A8: mov r0, r2 bx lr arm_func_start FUN_037F96B0 FUN_037F96B0: ; 0x037F96B0 ldr ip, [r0] b _037F96C4 _037F96B8: cmp ip, r1 bxeq lr ldr ip, [ip, #100] ; 0x64 _037F96C4: cmp ip, #0 beq _037F96DC ldr r3, [ip, #84] ; 0x54 ldr r2, [r1, #84] ; 0x54 cmp r3, r2 bls _037F96B8 _037F96DC: cmp ip, #0 bne _037F9708 ldr r2, [r0, #4] cmp r2, #0 streq r1, [r0] strne r1, [r2, #100] ; 0x64 str r2, [r1, #96] ; 0x60 mov r2, #0 str r2, [r1, #100] ; 0x64 str r1, [r0, #4] bx lr _037F9708: ldr r2, [ip, #96] ; 0x60 cmp r2, #0 streq r1, [r0] strne r1, [r2, #100] ; 0x64 str r2, [r1, #96] ; 0x60 str ip, [r1, #100] ; 0x64 str r1, [ip, #96] ; 0x60 bx lr arm_func_start FUN_037F9728 FUN_037F9728: ; 0x037F9728 ldr r1, _037F973C ; =_0380778C ldr r0, [r1] add r0, r0, #1 str r0, [r1] bx lr _037F973C: .word _0380778C arm_func_start FUN_037F9740 FUN_037F9740: ; 0x037F9740 add r1, r1, #4 str r1, [r0, #64] ; 0x40 str r2, [r0, #68] ; 0x44 sub r2, r2, #64 ; 0x40 tst r2, #4 subne r2, r2, #4 str r2, [r0, #56] ; 0x38 ands r1, r1, #1 movne r1, #63 ; 0x3f moveq r1, #31 str r1, [r0] mov r1, #0 str r1, [r0, #4] str r1, [r0, #8] str r1, [r0, #12] str r1, [r0, #16] str r1, [r0, #20] str r1, [r0, #24] str r1, [r0, #28] str r1, [r0, #32] str r1, [r0, #36] ; 0x24 str r1, [r0, #40] ; 0x28 str r1, [r0, #44] ; 0x2c str r1, [r0, #48] ; 0x30 str r1, [r0, #52] ; 0x34 str r1, [r0, #60] ; 0x3c bx lr arm_func_start FUN_037F97AC FUN_037F97AC: ; 0x037F97AC add r1, r0, #0 mrs r2, CPSR str r2, [r1], #4 mov r0, #211 ; 0xd3 msr CPSR_c, r0 str sp, [r1, #64] ; 0x40 msr CPSR_c, r2 mov r0, #1 stmia r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr} adr r0, FUN_037F97E0 str r0, [r1, #60] ; 0x3c mov r0, #0 bx lr arm_func_start FUN_037F97E0 FUN_037F97E0: ; 0x037F97E0 mrs r1, CPSR bic r1, r1, #31 orr r1, r1, #211 ; 0xd3 msr CPSR_c, r1 ldr r1, [r0], #4 msr SPSR_fsxc, r1 ldr sp, [r0, #64] ; 0x40 ldr lr, [r0, #60] ; 0x3c ldmia r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ nop ; (mov r0, r0) subs pc, lr, #4 arm_func_start FUN_037F980C FUN_037F980C: ; 0x037F980C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r6, r0 mov r5, r1 mov r7, r2 bl FUN_037FB05C mov r4, r0 and r8, r7, #1 add r7, r6, #8 b _037F9850 _037F9830: cmp r8, #0 bne _037F9848 mov r0, r4 bl FUN_037FB070 mov r0, #0 b _037F987C _037F9848: mov r0, r7 bl FUN_037F9064 _037F9850: ldr r0, [r6, #28] cmp r0, #0 beq _037F9830 cmp r5, #0 ldrne r1, [r6, #16] ldrne r0, [r6, #24] ldrne r0, [r1, r0, lsl #2] strne r0, [r5] mov r0, r4 bl FUN_037FB070 mov r0, #1 _037F987C: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr arm_func_start FUN_037F9884 FUN_037F9884: ; 0x037F9884 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r6, r0 mov r5, r1 mov r7, r2 bl FUN_037FB05C mov r4, r0 and r8, r7, #1 add r7, r6, #8 b _037F98C8 _037F98A8: cmp r8, #0 bne _037F98C0 mov r0, r4 bl FUN_037FB070 mov r0, #0 b _037F991C _037F98C0: mov r0, r7 bl FUN_037F9064 _037F98C8: ldr r0, [r6, #28] cmp r0, #0 beq _037F98A8 cmp r5, #0 ldrne r1, [r6, #16] ldrne r0, [r6, #24] ldrne r0, [r1, r0, lsl #2] strne r0, [r5] ldr r0, [r6, #24] add r0, r0, #1 ldr r1, [r6, #20] bl _s32_div_f str r1, [r6, #24] ldr r0, [r6, #28] sub r0, r0, #1 str r0, [r6, #28] mov r0, r6 bl FUN_037F8FE8 mov r0, r4 bl FUN_037FB070 mov r0, #1 _037F991C: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr arm_func_start FUN_037F9924 FUN_037F9924: ; 0x037F9924 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r6, r0 mov r5, r1 mov r7, r2 bl FUN_037FB05C mov r4, r0 and r7, r7, #1 b _037F9968 _037F9948: cmp r7, #0 bne _037F9960 mov r0, r4 bl FUN_037FB070 mov r0, #0 b _037F99AC _037F9960: mov r0, r6 bl FUN_037F9064 _037F9968: ldr r2, [r6, #28] ldr r1, [r6, #20] cmp r1, r2 ble _037F9948 ldr r0, [r6, #24] add r0, r0, r2 bl _s32_div_f ldr r0, [r6, #16] str r5, [r0, r1, lsl #2] ldr r0, [r6, #28] add r0, r0, #1 str r0, [r6, #28] add r0, r6, #8 bl FUN_037F8FE8 mov r0, r4 bl FUN_037FB070 mov r0, #1 _037F99AC: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_037F99B8 FUN_037F99B8: ; 0x037F99B8 mov ip, #0 str ip, [r0, #4] ldr r3, [r0, #4] str r3, [r0] str ip, [r0, #12] ldr r3, [r0, #12] str r3, [r0, #8] str r1, [r0, #16] str r2, [r0, #20] str ip, [r0, #24] str ip, [r0, #28] bx lr arm_func_start FUN_037F99E8 FUN_037F99E8: ; 0x037F99E8 ldr r2, [r1, #16] ldr r1, [r1, #20] cmp r2, #0 streq r1, [r0, #112] ; 0x70 strne r1, [r2, #20] cmp r1, #0 streq r2, [r0, #108] ; 0x6c strne r2, [r1, #16] bx lr arm_func_start FUN_037F9A0C FUN_037F9A0C: ; 0x037F9A0C ldr r2, [r0, #112] ; 0x70 cmp r2, #0 streq r1, [r0, #108] ; 0x6c strne r1, [r2, #16] str r2, [r1, #20] mov r2, #0 str r2, [r1, #16] str r1, [r0, #112] ; 0x70 bx lr arm_func_start FUN_037F9A30 FUN_037F9A30: ; 0x037F9A30 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 add r5, r6, #108 ; 0x6c mov r4, #0 b _037F9A58 _037F9A44: mov r0, r5 bl FUN_037F95EC str r4, [r0, #12] str r4, [r0, #8] bl FUN_037F8FE8 _037F9A58: ldr r0, [r6, #108] ; 0x6c cmp r0, #0 bne _037F9A44 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037F9A6C FUN_037F9A6C: ; 0x037F9A6C stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C mov r4, r0 ldr r0, _037F9AD8 ; =_0380779C ldr r0, [r0, #4] ldr r1, [r5, #8] cmp r1, r0 bne _037F9AC4 ldr r1, [r5, #12] sub r1, r1, #1 str r1, [r5, #12] ldr r1, [r5, #12] cmp r1, #0 bne _037F9AC4 mov r1, r5 bl FUN_037F99E8 mov r0, #0 str r0, [r5, #8] mov r0, r5 bl FUN_037F8FE8 _037F9AC4: mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037F9AD8: .word _0380779C arm_func_start FUN_037F9ADC FUN_037F9ADC: ; 0x037F9ADC stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C mov r4, r0 ldr r0, _037F9B64 ; =_0380779C ldr r7, [r0, #4] mov r6, #0 _037F9AFC: ldr r0, [r5, #8] cmp r0, #0 bne _037F9B28 str r7, [r5, #8] ldr r0, [r5, #12] add r0, r0, #1 str r0, [r5, #12] mov r0, r7 mov r1, r5 bl FUN_037F9A0C b _037F9B50 _037F9B28: cmp r0, r7 ldreq r0, [r5, #12] addeq r0, r0, #1 streq r0, [r5, #12] beq _037F9B50 str r5, [r7, #104] ; 0x68 mov r0, r5 bl FUN_037F9064 str r6, [r7, #104] ; 0x68 b _037F9AFC _037F9B50: mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037F9B64: .word _0380779C arm_func_start FUN_037F9B68 FUN_037F9B68: ; 0x037F9B68 mov r2, #0 str r2, [r0, #4] ldr r1, [r0, #4] str r1, [r0] str r2, [r0, #8] str r2, [r0, #12] bx lr arm_func_start FUN_037F9B84 FUN_037F9B84: ; 0x037F9B84 stmfd sp!, {lr} sub sp, sp, #4 bl FUN_037F9CE4 bl FUN_037FB5B0 bl FUN_037F8CC0 bl FUN_037F89F4 bl FUN_037FA4AC bl FUN_037FA920 bl FUN_037F9354 bl FUN_037FB1B0 bl FUN_038041E0 add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_037F9BBC FUN_037F9BBC: ; 0x037F9BBC mov r0, r0, lsl #2 add r0, r0, #40894464 ; 0x2700000 add r0, r0, #1044480 ; 0xff000 str r1, [r0, #3488] ; 0xda0 bx lr arm_func_start FUN_037F9BD0 FUN_037F9BD0: ; 0x037F9BD0 mov r0, r0, lsl #2 add r0, r0, #40894464 ; 0x2700000 add r0, r0, #1044480 ; 0xff000 str r1, [r0, #3524] ; 0xdc4 bx lr arm_func_start FUN_037F9BE4 FUN_037F9BE4: ; 0x037F9BE4 cmp r0, #1 beq _037F9C00 cmp r0, #7 beq _037F9C08 cmp r0, #8 beq _037F9C18 b _037F9C2C _037F9C00: ldr r0, _037F9C34 ; =0x027FAFCC bx lr _037F9C08: ldr r0, _037F9C38 ; =0x0380B92C cmp r0, #58720256 ; 0x03800000 movhi r0, #58720256 ; 0x03800000 bx lr _037F9C18: mov r0, #58720256 ; 0x03800000 ldr r1, _037F9C38 ; =0x0380B92C cmp r1, #58720256 ; 0x03800000 movhi r0, r1 bx lr _037F9C2C: mov r0, #0 bx lr _037F9C34: .word 0x027FAFCC _037F9C38: .word 0x0380B92C arm_func_start FUN_037F9C3C FUN_037F9C3C: ; 0x037F9C3C cmp r0, #1 beq _037F9C58 cmp r0, #7 beq _037F9C60 cmp r0, #8 beq _037F9C68 b _037F9CA0 _037F9C58: ldr r0, _037F9CA8 ; =0x027FF000 bx lr _037F9C60: mov r0, #58720256 ; 0x03800000 bx lr _037F9C68: ldr r1, _037F9CAC ; =0x00000400 ldr r0, _037F9CB0 ; =0x0380FF80 sub r2, r0, r1 mov r0, #58720256 ; 0x03800000 ldr r1, _037F9CB4 ; =0x0380B92C cmp r1, #58720256 ; 0x03800000 movhi r0, r1 ldr r1, _037F9CB8 ; =0x00000400 cmp r1, #0 bxeq lr cmp r1, #0 sublt r0, r0, r1 subge r0, r2, r1 bx lr _037F9CA0: mov r0, #0 bx lr _037F9CA8: .word 0x027FF000 _037F9CAC: .word 0x00000400 _037F9CB0: .word 0x0380FF80 _037F9CB4: .word 0x0380B92C _037F9CB8: .word 0x00000400 arm_func_start FUN_037F9CBC FUN_037F9CBC: ; 0x037F9CBC mov r0, r0, lsl #2 add r0, r0, #40894464 ; 0x2700000 add r0, r0, #1044480 ; 0xff000 ldr r0, [r0, #3488] ; 0xda0 bx lr arm_func_start FUN_037F9CD0 FUN_037F9CD0: ; 0x037F9CD0 mov r0, r0, lsl #2 add r0, r0, #40894464 ; 0x2700000 add r0, r0, #1044480 ; 0xff000 ldr r0, [r0, #3524] ; 0xdc4 bx lr arm_func_start FUN_037F9CE4 FUN_037F9CE4: ; 0x037F9CE4 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037F9D84 ; =_038078F4 ldr r0, [r1] cmp r0, #0 bne _037F9D78 mov r0, #1 str r0, [r1] bl FUN_037F9C3C mov r1, r0 mov r0, #1 bl FUN_037F9BD0 mov r0, #1 bl FUN_037F9BE4 mov r1, r0 mov r0, #1 bl FUN_037F9BBC mov r0, #7 bl FUN_037F9C3C mov r1, r0 mov r0, #7 bl FUN_037F9BD0 mov r0, #7 bl FUN_037F9BE4 mov r1, r0 mov r0, #7 bl FUN_037F9BBC mov r0, #8 bl FUN_037F9C3C mov r1, r0 mov r0, #8 bl FUN_037F9BD0 mov r0, #8 bl FUN_037F9BE4 mov r1, r0 mov r0, #8 bl FUN_037F9BBC _037F9D78: add sp, sp, #4 ldmia sp!, {lr} bx lr _037F9D84: .word _038078F4 arm_func_start FUN_037F9D88 FUN_037F9D88: ; 0x037F9D88 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r0 mov r7, r1 mov r6, #0 mov r5, r6 mvn r4, #0 bl FUN_037FB05C ldr r1, _037F9F34 ; =_038078F8 ldr ip, [r1, r8, lsl #2] mov r1, r4 cmp r7, r1 ldreq r7, [ip] ldr r2, [ip, #16] cmp r2, #0 beq _037F9F24 cmp r7, #0 blt _037F9F24 ldr r1, [ip, #4] cmp r7, r1 bge _037F9F24 mov r1, #12 mul r1, r7, r1 add r3, r2, r1 ldr r2, [r2, r1] cmp r2, #0 blt _037F9F24 ldr r1, [r3, #8] cmp r1, #0 beq _037F9E70 ldr r7, [r1] cmp r7, #0 bne _037F9F24 b _037F9E70 _037F9E0C: ldr r7, [ip, #8] cmp r7, r1 bhi _037F9F24 ldr r7, [ip, #12] cmp r1, r7 bcs _037F9F24 ands r7, r1, #31 bne _037F9F24 ldr lr, [r1, #4] cmp lr, #0 beq _037F9E44 ldr r7, [lr] cmp r7, r1 bne _037F9F24 _037F9E44: ldr r7, [r1, #8] cmp r7, #64 ; 0x40 bcc _037F9F24 ands r1, r7, #31 bne _037F9F24 add r6, r6, r7 cmp r6, #0 ble _037F9F24 cmp r6, r2 bgt _037F9F24 mov r1, lr _037F9E70: cmp r1, #0 bne _037F9E0C ldr r1, [r3, #4] cmp r1, #0 beq _037F9F14 ldr r3, [r1] cmp r3, #0 bne _037F9F24 b _037F9F14 _037F9E94: ldr r3, [ip, #8] cmp r3, r1 bhi _037F9F24 ldr r3, [ip, #12] cmp r1, r3 bcs _037F9F24 ands r3, r1, #31 bne _037F9F24 ldr lr, [r1, #4] cmp lr, #0 beq _037F9ECC ldr r3, [lr] cmp r3, r1 bne _037F9F24 _037F9ECC: ldr r7, [r1, #8] cmp r7, #64 ; 0x40 bcc _037F9F24 ands r3, r7, #31 bne _037F9F24 cmp lr, #0 beq _037F9EF4 add r1, r1, r7 cmp r1, lr bcs _037F9F24 _037F9EF4: add r6, r6, r7 sub r1, r7, #32 add r5, r5, r1 cmp r6, #0 ble _037F9F24 cmp r6, r2 bgt _037F9F24 mov r1, lr _037F9F14: cmp r1, #0 bne _037F9E94 cmp r6, r2 moveq r4, r5 _037F9F24: bl FUN_037FB070 mov r0, r4 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037F9F34: .word _038078F8 arm_func_start FUN_037F9F38 FUN_037F9F38: ; 0x037F9F38 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r4, r0 mov r6, r1 mov r5, r2 bl FUN_037FB05C ldr r1, _037F9FDC ; =_038078F8 ldr r7, [r1, r4, lsl #2] add r1, r6, #31 bic r6, r1, #31 bic r5, r5, #31 mov r4, #0 ldr lr, [r7, #4] mov r1, #12 b _037F9FC0 _037F9F74: ldr r3, [r7, #16] mul r2, r4, r1 add ip, r3, r2 ldr r2, [r3, r2] cmp r2, #0 bge _037F9FBC sub r1, r5, r6 str r1, [ip] mov r2, #0 str r2, [r6] str r2, [r6, #4] ldr r1, [ip] str r1, [r6, #8] str r6, [ip, #4] str r2, [ip, #8] bl FUN_037FB070 mov r0, r4 b _037F9FD0 _037F9FBC: add r4, r4, #1 _037F9FC0: cmp r4, lr blt _037F9F74 bl FUN_037FB070 mvn r0, #0 _037F9FD0: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037F9FDC: .word _038078F8 arm_func_start FUN_037F9FE0 FUN_037F9FE0: ; 0x037F9FE0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r7, r0 mov r5, r1 mov r4, r2 mov r6, r3 bl FUN_037FB05C ldr r1, _037FA084 ; =_038078F8 str r5, [r1, r7, lsl #2] mov r2, #12 mul r1, r6, r2 add r3, r5, #20 str r3, [r5, #16] str r6, [r5, #4] mov r8, #0 mvn lr, #0 mov ip, r8 b _037FA044 _037FA024: ldr r6, [r5, #16] mul r3, r8, r2 add r7, r6, r3 str lr, [r6, r3] str ip, [r7, #8] ldr r3, [r7, #8] str r3, [r7, #4] add r8, r8, #1 _037FA044: ldr r3, [r5, #4] cmp r8, r3 blt _037FA024 mvn r2, #0 str r2, [r5] ldr r2, [r5, #16] add r1, r2, r1 add r1, r1, #31 bic r1, r1, #31 str r1, [r5, #8] bic r1, r4, #31 str r1, [r5, #12] bl FUN_037FB070 ldr r0, [r5, #8] ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FA084: .word _038078F8 arm_func_start FUN_037FA088 FUN_037FA088: ; 0x037FA088 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r4, r0 mov r5, r1 bl FUN_037FB05C ldr r1, _037FA0C0 ; =_038078F8 ldr r1, [r1, r4, lsl #2] ldr r4, [r1] str r5, [r1] bl FUN_037FB070 mov r0, r4 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FA0C0: .word _038078F8 arm_func_start FUN_037FA0C4 FUN_037FA0C4: ; 0x037FA0C4 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 mov r4, r1 mov r6, r2 bl FUN_037FB05C mov r5, r0 ldr r0, _037FA134 ; =_038078F8 ldr r0, [r0, r7, lsl #2] cmp r4, #0 ldrlt r4, [r0] sub r6, r6, #32 ldr r1, [r0, #16] mov r0, #12 mla r7, r4, r0, r1 ldr r0, [r7, #8] mov r1, r6 bl FUN_037FA304 str r0, [r7, #8] ldr r0, [r7, #4] mov r1, r6 bl FUN_037FA250 str r0, [r7, #4] mov r0, r5 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FA134: .word _038078F8 arm_func_start FUN_037FA138 FUN_037FA138: ; 0x037FA138 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r6, r0 mov r5, r1 mov r7, r2 bl FUN_037FB05C mov r4, r0 ldr r1, _037FA24C ; =_038078F8 ldr r1, [r1, r6, lsl #2] cmp r1, #0 bne _037FA170 bl FUN_037FB070 mov r0, #0 b _037FA240 _037FA170: cmp r5, #0 ldrlt r5, [r1] ldr r1, [r1, #16] mov r0, #12 mla r6, r5, r0, r1 add r0, r7, #32 add r0, r0, #31 bic r7, r0, #31 ldr r0, [r6, #4] mov r5, r0 b _037FA1AC _037FA19C: ldr r1, [r5, #8] cmp r7, r1 ble _037FA1B4 ldr r5, [r5, #4] _037FA1AC: cmp r5, #0 bne _037FA19C _037FA1B4: cmp r5, #0 bne _037FA1CC mov r0, r4 bl FUN_037FB070 mov r0, #0 b _037FA240 _037FA1CC: ldr r1, [r5, #8] sub r1, r1, r7 cmp r1, #64 ; 0x40 bcs _037FA1EC mov r1, r5 bl FUN_037FA304 str r0, [r6, #4] b _037FA224 _037FA1EC: 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] ldr r0, [r2, #4] cmp r0, #0 strne r2, [r0] ldr r0, [r2] cmp r0, #0 strne r2, [r0, #4] streq r2, [r6, #4] _037FA224: ldr r0, [r6, #8] mov r1, r5 bl FUN_037FA32C str r0, [r6, #8] mov r0, r4 bl FUN_037FB070 add r0, r5, #32 _037FA240: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FA24C: .word _038078F8 arm_func_start FUN_037FA250 FUN_037FA250: ; 0x037FA250 stmfd sp!, {lr} sub sp, sp, #4 mov ip, r0 mov lr, #0 b _037FA274 _037FA264: cmp r1, ip bls _037FA27C mov lr, ip ldr ip, [ip, #4] _037FA274: cmp ip, #0 bne _037FA264 _037FA27C: str ip, [r1, #4] str lr, [r1] cmp ip, #0 beq _037FA2BC str r1, [ip] ldr r3, [r1, #8] add r2, r1, r3 cmp r2, ip bne _037FA2BC ldr r2, [ip, #8] add r2, r3, r2 str r2, [r1, #8] ldr ip, [ip, #4] str ip, [r1, #4] cmp ip, #0 strne r1, [ip] _037FA2BC: cmp lr, #0 beq _037FA2F4 str r1, [lr, #4] ldr r2, [lr, #8] add r3, lr, r2 cmp r3, r1 bne _037FA2F8 ldr r1, [r1, #8] add r1, r2, r1 str r1, [lr, #8] str ip, [lr, #4] cmp ip, #0 strne lr, [ip] b _037FA2F8 _037FA2F4: mov r0, r1 _037FA2F8: add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_037FA304 FUN_037FA304: ; 0x037FA304 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_start FUN_037FA32C FUN_037FA32C: ; 0x037FA32C str r0, [r1, #4] mov r2, #0 str r2, [r1] cmp r0, #0 strne r1, [r0] mov r0, r1 bx lr arm_func_start FUN_037FA348 FUN_037FA348: ; 0x037FA348 ldr r1, _037FA360 ; =_0380791C ldrh r3, [r1] mov r2, #1 orr r0, r3, r2, lsl r0 strh r0, [r1] bx lr _037FA360: .word _0380791C arm_func_start FUN_037FA364 FUN_037FA364: ; 0x037FA364 stmfd sp!, {lr} sub sp, sp, #12 bl FUN_037FB05C ldr r1, _037FA404 ; =0x04000100 ldrh r1, [r1] strh r1, [sp] ldr r1, _037FA408 ; =_03807928 ldr ip, [r1] ldr r3, [r1, #4] ldr r2, _037FA40C ; =0x0000FFFF mvn r1, #0 and r2, r3, r2 and r1, ip, r1 str r1, [sp, #4] str r2, [sp, #8] ldr r1, _037FA410 ; =0x04000214 ldr r1, [r1] ands r1, r1, #8 beq _037FA3D8 ldrh r1, [sp] ands r1, r1, #32768 ; 0x8000 bne _037FA3D8 ldr r3, [sp, #4] ldr r2, [sp, #8] mov r1, #1 adds r3, r3, r1 adc r1, r2, #0 str r3, [sp, #4] str r1, [sp, #8] _037FA3D8: bl FUN_037FB070 ldr r2, [sp, #4] ldr r0, [sp, #8] mov r1, r0, lsl #16 orr r1, r1, r2, lsr #16 ldrh r0, [sp] orr r1, r1, r0, asr #31 orr r0, r0, r2, lsl #16 add sp, sp, #12 ldmia sp!, {lr} bx lr _037FA404: .word 0x04000100 _037FA408: .word _03807928 _037FA40C: .word 0x0000FFFF _037FA410: .word 0x04000214 arm_func_start FUN_037FA414 FUN_037FA414: ; 0x037FA414 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037FA488 ; =_03807928 ldr ip, [r1] ldr r2, [r1, #4] mov r3, #0 mov r0, #1 adds ip, ip, r0 adc r0, r2, #0 str ip, [r1] str r0, [r1, #4] ldr r0, _037FA48C ; =_03807924 ldr r1, [r0] cmp r1, #0 beq _037FA46C ldr r2, _037FA490 ; =0x04000102 strh r3, [r2] ldr r1, _037FA494 ; =0x04000100 strh r3, [r1] mov r1, #193 ; 0xc1 strh r1, [r2] str r3, [r0] _037FA46C: mov r0, #0 ldr r1, _037FA498 ; =FUN_037FA414 mov r2, r0 bl FUN_037F8900 add sp, sp, #4 ldmia sp!, {lr} bx lr _037FA488: .word _03807928 _037FA48C: .word _03807924 _037FA490: .word 0x04000102 _037FA494: .word 0x04000100 _037FA498: .word FUN_037FA414 arm_func_start FUN_037FA49C FUN_037FA49C: ; 0x037FA49C ldr r0, _037FA4A8 ; =_03807920 ldrh r0, [r0] bx lr _037FA4A8: .word _03807920 arm_func_start FUN_037FA4AC FUN_037FA4AC: ; 0x037FA4AC stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037FA528 ; =_03807920 ldrh r1, [r0] cmp r1, #0 bne _037FA51C mov r1, #1 strh r1, [r0] mov r0, #0 bl FUN_037FA348 mov r2, #0 ldr r0, _037FA52C ; =_03807928 str r2, [r0] str r2, [r0, #4] ldr r1, _037FA530 ; =0x04000102 strh r2, [r1] ldr r0, _037FA534 ; =0x04000100 strh r2, [r0] mov r0, #193 ; 0xc1 strh r0, [r1] mov r0, #8 ldr r1, _037FA538 ; =FUN_037FA414 bl FUN_037F894C mov r0, #8 bl FUN_037F8894 mov r1, #0 ldr r0, _037FA53C ; =_03807924 str r1, [r0] _037FA51C: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FA528: .word _03807920 _037FA52C: .word _03807928 _037FA530: .word 0x04000102 _037FA534: .word 0x04000100 _037FA538: .word FUN_037FA414 _037FA53C: .word _03807924 arm_func_start FUN_037FA540 FUN_037FA540: ; 0x037FA540 stmdb sp!, {r0, lr} bl FUN_037FA550 ldmia sp!, {r0, lr} bx lr arm_func_start FUN_037FA550 FUN_037FA550: ; 0x037FA550 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r1, #0 ldr r0, _037FA644 ; =0x04000106 strh r1, [r0] mov r0, #16 bl FUN_037F8858 ldr r1, _037FA648 ; =0x0380FFF8 ldr r0, [r1] orr r0, r0, #16 str r0, [r1] bl FUN_037FA364 ldr r2, _037FA64C ; =_03807934 ldr r4, [r2] cmp r4, #0 beq _037FA638 ldr ip, [r4, #12] ldr r3, [r4, #16] cmp r1, r3 cmpeq r0, ip bcs _037FA5B0 mov r0, r4 bl FUN_037FA970 b _037FA638 _037FA5B0: ldr r1, [r4, #24] str r1, [r2] cmp r1, #0 moveq r0, #0 streq r0, [r2, #4] movne r0, #0 strne r0, [r1, #20] ldr r5, [r4] ldr r2, [r4, #28] ldr r1, [r4, #32] mov r0, #0 cmp r1, r0 cmpeq r2, r0 streq r0, [r4] cmp r5, #0 beq _037FA5FC ldr r0, [r4, #4] mov lr, pc bx r5 _037FA5FC: ldr r2, [r4, #28] ldr r0, [r4, #32] mov r1, #0 cmp r0, r1 cmpeq r2, r1 beq _037FA624 str r5, [r4] mov r0, r4 mov r2, r1 bl FUN_037FA7D0 _037FA624: ldr r0, _037FA64C ; =_03807934 ldr r0, [r0] cmp r0, #0 beq _037FA638 bl FUN_037FA970 _037FA638: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FA644: .word 0x04000106 _037FA648: .word 0x0380FFF8 _037FA64C: .word _03807934 arm_func_start FUN_037FA650 FUN_037FA650: ; 0x037FA650 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C mov r4, r0 ldr r1, [r5] cmp r1, #0 bne _037FA678 bl FUN_037FB070 b _037FA6D0 _037FA678: ldr r0, [r5, #24] cmp r0, #0 ldreq r2, [r5, #20] ldreq r1, _037FA6DC ; =_03807934 streq r2, [r1, #4] ldrne r1, [r5, #20] strne r1, [r0, #20] ldr r1, [r5, #20] cmp r1, #0 strne r0, [r1, #24] bne _037FA6B8 ldr r1, _037FA6DC ; =_03807934 str r0, [r1] cmp r0, #0 beq _037FA6B8 bl FUN_037FA970 _037FA6B8: mov r0, #0 str r0, [r5] str r0, [r5, #28] str r0, [r5, #32] mov r0, r4 bl FUN_037FB070 _037FA6D0: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FA6DC: .word _03807934 arm_func_start FUN_037FA6E0 FUN_037FA6E0: ; 0x037FA6E0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 movs r4, r0 mov r9, r1 mov r8, r2 mov r7, r3 ldr r6, [sp, #32] beq _037FA70C ldr r0, [r4] cmp r0, #0 beq _037FA710 _037FA70C: bl FUN_037FB1F0 _037FA710: bl FUN_037FB05C mov r5, r0 str r7, [r4, #28] str r6, [r4, #32] str r9, [r4, #36] ; 0x24 str r8, [r4, #40] ; 0x28 ldr r0, [sp, #36] ; 0x24 str r0, [r4] ldr r0, [sp, #40] ; 0x28 str r0, [r4, #4] mov r0, r4 mov r1, #0 mov r2, r1 bl FUN_037FA7D0 mov r0, r5 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr arm_func_start FUN_037FA75C FUN_037FA75C: ; 0x037FA75C stmdb sp!, {r4, r5, r6, r7, r8, lr} movs r7, r0 mov r6, r1 mov r5, r2 mov r8, r3 beq _037FA780 ldr r0, [r7] cmp r0, #0 beq _037FA784 _037FA780: bl FUN_037FB1F0 _037FA784: bl FUN_037FB05C mov r4, r0 mov r0, #0 str r0, [r7, #28] str r0, [r7, #32] str r8, [r7] ldr r0, [sp, #24] str r0, [r7, #4] bl FUN_037FA364 mov r2, r0 mov r0, r7 adds r3, r6, r2 adc r2, r5, r1 mov r1, r3 bl FUN_037FA7D0 mov r0, r4 bl FUN_037FB070 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr arm_func_start FUN_037FA7D0 FUN_037FA7D0: ; 0x037FA7D0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r0 mov r7, r1 mov r6, r2 ldr r2, [r8, #28] ldr r1, [r8, #32] mov r0, #0 cmp r1, r0 cmpeq r2, r0 beq _037FA84C bl FUN_037FA364 ldr r7, [r8, #36] ; 0x24 ldr r6, [r8, #40] ; 0x28 cmp r6, r1 cmpeq r7, r0 bcs _037FA84C ldr r5, [r8, #28] ldr r4, [r8, #32] subs r0, r0, r7 sbc r1, r1, r6 mov r2, r5 mov r3, r4 bl _ll_udiv mov r2, #1 adds r2, r0, r2 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 _037FA84C: str r7, [r8, #12] str r6, [r8, #16] ldr r0, _037FA8FC ; =_03807934 ldr r4, [r0] mov r1, #0 b _037FA8B8 _037FA864: ldr r2, [r4, #12] ldr r0, [r4, #16] subs r3, r7, r2 sbc r2, r6, r0 subs r0, r3, r1 sbcs r0, r2, r1 bge _037FA8B4 ldr r0, [r4, #20] str r0, [r8, #20] str r8, [r4, #20] str r4, [r8, #24] ldr r0, [r8, #20] cmp r0, #0 strne r8, [r0, #24] bne _037FA8F4 ldr r0, _037FA8FC ; =_03807934 str r8, [r0] mov r0, r8 bl FUN_037FA970 b _037FA8F4 _037FA8B4: ldr r4, [r4, #24] _037FA8B8: cmp r4, #0 bne _037FA864 mov r0, #0 str r0, [r8, #24] ldr r0, _037FA8FC ; =_03807934 ldr r1, [r0, #4] str r8, [r0, #4] str r1, [r8, #20] cmp r1, #0 strne r8, [r1, #24] bne _037FA8F4 str r8, [r0, #4] str r8, [r0] mov r0, r8 bl FUN_037FA970 _037FA8F4: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FA8FC: .word _03807934 arm_func_start FUN_037FA900 FUN_037FA900: ; 0x037FA900 mov r1, #0 str r1, [r0] str r1, [r0, #8] bx lr arm_func_start FUN_037FA910 FUN_037FA910: ; 0x037FA910 ldr r0, _037FA91C ; =_03807930 ldrh r0, [r0] bx lr _037FA91C: .word _03807930 arm_func_start FUN_037FA920 FUN_037FA920: ; 0x037FA920 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037FA968 ; =_03807930 ldrh r0, [r1] cmp r0, #0 bne _037FA95C mov r0, #1 strh r0, [r1] bl FUN_037FA348 mov r1, #0 ldr r0, _037FA96C ; =_03807934 str r1, [r0] str r1, [r0, #4] mov r0, #16 bl FUN_037F8858 _037FA95C: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FA968: .word _03807930 _037FA96C: .word _03807934 arm_func_start FUN_037FA970 FUN_037FA970: ; 0x037FA970 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r4, r0 bl FUN_037FA364 mov r2, #0 ldr r3, _037FA9FC ; =0x04000106 strh r2, [r3] ldr ip, [r4, #12] ldr r3, [r4, #16] subs r5, ip, r0 sbc r4, r3, r1 mov r0, #1 ldr r1, _037FAA00 ; =FUN_037FA540 bl FUN_037F8900 mov r1, #0 subs r0, r5, r1 sbcs r0, r4, r1 ldrlt r1, _037FAA04 ; =0x0000FFFE blt _037FA9D4 mov r0, #65536 ; 0x10000 subs r0, r5, r0 sbcs r0, r4, r1 mvnlt r0, r5 movlt r0, r0, lsl #16 movlt r1, r0, lsr #16 _037FA9D4: ldr r0, _037FAA08 ; =0x04000104 strh r1, [r0] mov r1, #193 ; 0xc1 ldr r0, _037FA9FC ; =0x04000106 strh r1, [r0] mov r0, #16 bl FUN_037F8894 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FA9FC: .word 0x04000106 _037FAA00: .word FUN_037FA540 _037FAA04: .word 0x0000FFFE _037FAA08: .word 0x04000104 arm_func_start FUN_037FAA0C FUN_037FAA0C: ; 0x037FAA0C stmdb sp!, {r4, lr} mov r4, r0 bl FUN_037FB05C ldr r1, _037FAA50 ; =_03807940 ldr r1, [r1] cmp r4, r1 ldrlt r1, _037FAA54 ; =_03807944 ldrlt r2, [r1] addlt r2, r2, #1 strlt r2, [r1] ldr r1, _037FAA50 ; =_03807940 str r4, [r1] bl FUN_037FB070 ldr r0, _037FAA54 ; =_03807944 ldr r0, [r0] ldmia sp!, {r4, lr} bx lr _037FAA50: .word _03807940 _037FAA54: .word _03807944 arm_func_start FUN_037FAA58 FUN_037FAA58: ; 0x037FAA58 ldr r3, [r0, #12] subs r3, r1, r3 ldrsh r1, [r0, #16] sub r2, r2, r1 bmi _037FAA7C cmp r3, #0 bne _037FAA84 cmp r2, #0 bge _037FAA84 _037FAA7C: mov r0, #0 bx lr _037FAA84: cmp r2, #0 ldrlt r1, _037FAAA4 ; =0x00000107 addlt r2, r2, r1 ldrsh r0, [r0, #18] cmp r2, r0 movle r0, #1 movgt r0, #2 bx lr _037FAAA4: .word 0x00000107 arm_func_start FUN_037FAAA8 FUN_037FAAA8: ; 0x037FAAA8 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov r0, #4 bl FUN_037F8858 ldr r2, _037FAC1C ; =0x04000004 ldrh r0, [r2] bic r0, r0, #32 strh r0, [r2] ldr r1, _037FAC20 ; =0x0380FFF8 ldr r0, [r1] orr r0, r0, #4 str r0, [r1] ldrh r2, [r2] mov r0, r2, asr #8 and r1, r0, #255 ; 0xff mov r0, r2, lsl #1 and r0, r0, #256 ; 0x100 orr r0, r1, r0 sub r0, r0, #1 bl FUN_037FAA0C ldr r9, _037FAC24 ; =0x04000006 mov r6, #4 ldr r5, _037FAC1C ; =0x04000004 mov r4, #0 ldr fp, _037FAC28 ; =_03807944 b _037FAC00 _037FAB10: ldrh r8, [r9] mov r0, r8 bl FUN_037FAA0C mov r7, r0 mov r0, sl mov r1, r7 mov r2, r8 bl FUN_037FAA58 cmp r0, #0 beq _037FAB4C cmp r0, #1 beq _037FAB8C cmp r0, #2 beq _037FABE4 b _037FAC00 _037FAB4C: mov r0, sl bl FUN_037FAD2C ldrh r1, [r9] ldrsh r0, [sl, #16] cmp r0, r1 bne _037FAC10 ldr r0, [sl, #12] cmp r0, r7 bne _037FAC10 mov r0, r6 bl FUN_037F8858 ldrh r0, [r5] bic r0, r0, #32 strh r0, [r5] mov r0, r6 bl FUN_037F8824 _037FAB8C: ldr r7, [sl] mov r0, sl bl FUN_037FAECC str r4, [sl] cmp r7, #0 beq _037FABB0 ldr r0, [sl, #4] mov lr, pc bx r7 _037FABB0: ldr r0, [sl, #28] cmp r0, #0 beq _037FAC00 ldr r0, [sl, #36] ; 0x24 cmp r0, #0 bne _037FAC00 str r7, [sl] ldr r0, [fp] add r0, r0, #1 str r0, [sl, #12] mov r0, sl bl FUN_037FAF04 b _037FAC00 _037FABE4: mov r0, sl bl FUN_037FAECC mov r0, sl bl FUN_037FAF04 ldr r0, [fp] add r0, r0, #1 str r0, [sl, #12] _037FAC00: ldr r0, _037FAC2C ; =_03807948 ldr sl, [r0] cmp sl, #0 bne _037FAB10 _037FAC10: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FAC1C: .word 0x04000004 _037FAC20: .word 0x0380FFF8 _037FAC24: .word 0x04000006 _037FAC28: .word _03807944 _037FAC2C: .word _03807948 arm_func_start FUN_037FAC30 FUN_037FAC30: ; 0x037FAC30 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 bl FUN_037FB05C mov r5, r0 cmp r7, #0 bne _037FAC50 bl FUN_037FB1F0 _037FAC50: ldr r0, _037FACA8 ; =_03807948 ldr r0, [r0] cmp r0, #0 ldrne r6, [r0, #24] moveq r6, #0 mov r4, #0 b _037FAC8C _037FAC6C: ldr r1, [r0, #8] cmp r1, r7 bne _037FAC7C bl FUN_037FACAC _037FAC7C: mov r0, r6 cmp r6, #0 ldrne r6, [r6, #24] moveq r6, r4 _037FAC8C: cmp r0, #0 bne _037FAC6C mov r0, r5 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FACA8: .word _03807948 arm_func_start FUN_037FACAC FUN_037FACAC: ; 0x037FACAC stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 bl FUN_037FB05C mov r4, r0 mov r1, #1 str r1, [r5, #36] ; 0x24 ldr r1, [r5] cmp r1, #0 bne _037FACDC bl FUN_037FB070 b _037FACF4 _037FACDC: mov r0, r5 bl FUN_037FAECC mov r0, #0 str r0, [r5] mov r0, r4 bl FUN_037FB070 _037FACF4: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FAD00 FUN_037FAD00: ; 0x037FAD00 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 movs r4, r1 bne _037FAD18 bl FUN_037FB1F0 _037FAD18: cmp r5, #0 strne r4, [r5, #8] add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FAD2C FUN_037FAD2C: ; 0x037FAD2C stmdb sp!, {r4, lr} mov r4, r0 mov r0, #4 ldr r1, _037FAD80 ; =FUN_037FAAA8 bl FUN_037F894C ldrsh ip, [r4, #16] and r3, ip, #256 ; 0x100 ldr r1, _037FAD84 ; =0x04000004 ldrh r0, [r1] and r2, r0, #63 ; 0x3f and r0, ip, #255 ; 0xff orr r0, r2, r0, lsl #8 orr r0, r0, r3, asr #1 strh r0, [r1] ldrh r0, [r1] orr r0, r0, #32 strh r0, [r1] mov r0, #4 bl FUN_037F8894 ldmia sp!, {r4, lr} bx lr _037FAD80: .word FUN_037FAAA8 _037FAD84: .word 0x04000004 arm_func_start FUN_037FAD88 FUN_037FAD88: ; 0x037FAD88 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r8, r0 mov r7, r1 mov r6, r2 mov r5, r3 bl FUN_037FB05C mov r4, r0 cmp r8, #0 beq _037FADBC ldr r0, [r8] cmp r0, #0 beq _037FADC0 _037FADBC: bl FUN_037FB1F0 _037FADC0: ldr r0, _037FAE1C ; =0x04000006 ldrh r9, [r0] mov r0, r9 bl FUN_037FAA0C mov r1, #1 str r1, [r8, #28] strh r7, [r8, #16] cmp r7, r9 addle r0, r0, #1 str r0, [r8, #12] strh r6, [r8, #18] str r5, [r8] ldr r0, [sp, #32] str r0, [r8, #4] mov r0, #0 str r0, [r8, #36] ; 0x24 mov r0, r8 bl FUN_037FAF48 mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037FAE1C: .word 0x04000006 arm_func_start FUN_037FAE20 FUN_037FAE20: ; 0x037FAE20 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r8, r0 mov r7, r1 mov r6, r2 mov r5, r3 bl FUN_037FB05C mov r4, r0 cmp r8, #0 beq _037FAE54 ldr r0, [r8] cmp r0, #0 beq _037FAE58 _037FAE54: bl FUN_037FB1F0 _037FAE58: ldr r0, _037FAEB4 ; =0x04000006 ldrh r9, [r0] mov r0, r9 bl FUN_037FAA0C mov r1, #0 str r1, [r8, #28] strh r7, [r8, #16] cmp r7, r9 addle r0, r0, #1 str r0, [r8, #12] strh r6, [r8, #18] str r5, [r8] ldr r0, [sp, #32] str r0, [r8, #4] mov r0, #0 str r0, [r8, #36] ; 0x24 mov r0, r8 bl FUN_037FAF48 mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037FAEB4: .word 0x04000006 arm_func_start FUN_037FAEB8 FUN_037FAEB8: ; 0x037FAEB8 mov r1, #0 str r1, [r0] str r1, [r0, #8] str r1, [r0, #32] bx lr arm_func_start FUN_037FAECC FUN_037FAECC: ; 0x037FAECC cmp r0, #0 bxeq lr ldr r2, [r0, #20] ldr r1, [r0, #24] cmp r1, #0 strne r2, [r1, #20] ldreq r0, _037FAF00 ; =_03807948 streq r2, [r0, #4] cmp r2, #0 strne r1, [r2, #24] ldreq r0, _037FAF00 ; =_03807948 streq r1, [r0] bx lr _037FAF00: .word _03807948 arm_func_start FUN_037FAF04 FUN_037FAF04: ; 0x037FAF04 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037FAF44 ; =_03807948 ldr r3, [r1, #4] str r3, [r0, #20] mov r2, #0 str r2, [r0, #24] str r0, [r1, #4] cmp r3, #0 strne r0, [r3, #24] bne _037FAF38 str r0, [r1] bl FUN_037FAD2C _037FAF38: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FAF44: .word _03807948 arm_func_start FUN_037FAF48 FUN_037FAF48: ; 0x037FAF48 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037FAFCC ; =_03807948 ldr r3, [r1] b _037FAFB4 _037FAF5C: ldr r2, [r0, #12] ldr r1, [r3, #12] cmp r1, r2 bcc _037FAFB0 cmp r1, r2 bne _037FAF84 ldrsh r2, [r3, #16] ldrsh r1, [r0, #16] cmp r2, r1 ble _037FAFB0 _037FAF84: ldr r1, [r3, #20] str r1, [r0, #20] str r3, [r0, #24] str r0, [r3, #20] cmp r1, #0 strne r0, [r1, #24] bne _037FAFC0 ldr r1, _037FAFCC ; =_03807948 str r0, [r1] bl FUN_037FAD2C b _037FAFC0 _037FAFB0: ldr r3, [r3, #24] _037FAFB4: cmp r3, #0 bne _037FAF5C bl FUN_037FAF04 _037FAFC0: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FAFCC: .word _03807948 arm_func_start FUN_037FAFD0 FUN_037FAFD0: ; 0x037FAFD0 ldr r0, _037FAFDC ; =_0380793C ldrh r0, [r0] bx lr _037FAFDC: .word _0380793C arm_func_start FUN_037FAFE0 FUN_037FAFE0: ; 0x037FAFE0 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037FB038 ; =_0380793C ldrh r1, [r0] cmp r1, #0 bne _037FB02C mov r1, #1 strh r1, [r0] mov r1, #0 ldr r0, _037FB03C ; =_03807948 str r1, [r0] str r1, [r0, #4] mov r0, #4 bl FUN_037F8858 mov r1, #0 ldr r0, _037FB040 ; =_03807944 str r1, [r0] ldr r0, _037FB044 ; =_03807940 str r1, [r0] _037FB02C: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FB038: .word _0380793C _037FB03C: .word _03807948 _037FB040: .word _03807944 _037FB044: .word _03807940 arm_func_start FUN_037FB048 FUN_037FB048: ; 0x037FB048 mrs r0, CPSR bic r1, r0, #128 ; 0x80 msr CPSR_c, r1 and r0, r0, #128 ; 0x80 bx lr arm_func_start FUN_037FB05C FUN_037FB05C: ; 0x037FB05C mrs r0, CPSR orr r1, r0, #128 ; 0x80 msr CPSR_c, r1 and r0, r0, #128 ; 0x80 bx lr arm_func_start FUN_037FB070 FUN_037FB070: ; 0x037FB070 mrs r1, CPSR bic r2, r1, #128 ; 0x80 orr r2, r2, r0 msr CPSR_c, r2 and r0, r1, #128 ; 0x80 bx lr arm_func_start FUN_037FB088 FUN_037FB088: ; 0x037FB088 mrs r0, CPSR orr r1, r0, #192 ; 0xc0 msr CPSR_c, r1 and r0, r0, #192 ; 0xc0 bx lr arm_func_start FUN_037FB09C FUN_037FB09C: ; 0x037FB09C mrs r1, CPSR bic r2, r1, #192 ; 0xc0 orr r2, r2, r0 msr CPSR_c, r2 and r0, r1, #192 ; 0xc0 bx lr arm_func_start FUN_037FB0B4 FUN_037FB0B4: ; 0x037FB0B4 mrs r0, CPSR and r0, r0, #31 bx lr arm_func_start FUN_037FB0C0 FUN_037FB0C0: ; 0x037FB0C0 stmfd sp!, {lr} sub sp, sp, #4 mov r1, #4 bl _s32_div_f bl FUN_037F8CB4 add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_037FB0E0 FUN_037FB0E0: ; 0x037FB0E0 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #0 bl FUN_037FB20C mov r0, #1 bl FUN_037FB20C mov r0, #2 bl FUN_037FB20C mov r0, #3 bl FUN_037FB20C mov r0, #262144 ; 0x40000 bl FUN_037F88CC mvn r0, #0 bl FUN_037F8824 bl FUN_037FBAF8 mov r0, #16 bl FUN_037FB134 bl FUN_038073EC add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_037FB134 FUN_037FB134: ; 0x037FB134 stmdb sp!, {r4, r5, r6, lr} mov r6, r0, lsl #8 mov r5, #12 mov r4, #0 _037FB144: mov r0, r5 mov r1, r6 mov r2, r4 bl FUN_037FB6DC cmp r0, #0 bne _037FB144 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FB164 FUN_037FB164: ; 0x037FB164 stmfd sp!, {lr} sub sp, sp, #4 and r0, r1, #32512 ; 0x7f00 mov r0, r0, lsl #8 mov r0, r0, lsr #16 cmp r0, #16 moveq r1, #1 ldreq r0, _037FB19C ; =_03807954 streqh r1, [r0] beq _037FB190 bl FUN_037FB1F0 _037FB190: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FB19C: .word _03807954 arm_func_start FUN_037FB1A0 FUN_037FB1A0: ; 0x037FB1A0 ldr r0, _037FB1AC ; =_03807954 ldrh r0, [r0] bx lr _037FB1AC: .word _03807954 arm_func_start FUN_037FB1B0 FUN_037FB1B0: ; 0x037FB1B0 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037FB1E8 ; =_03807950 ldrh r1, [r0] cmp r1, #0 bne _037FB1DC mov r1, #1 strh r1, [r0] mov r0, #12 ldr r1, _037FB1EC ; =FUN_037FB164 bl FUN_037FB7A8 _037FB1DC: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FB1E8: .word _03807950 _037FB1EC: .word FUN_037FB164 arm_func_start FUN_037FB1F0 FUN_037FB1F0: ; 0x037FB1F0 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #0 bl FUN_03803E5C _037FB200: bl FUN_037FB05C bl FUN_037F8530 b _037FB200 arm_func_start FUN_037FB20C FUN_037FB20C: ; 0x037FB20C stmdb sp!, {r4, lr} mov r4, r0 bl FUN_037FB05C mov r1, #6 mul r1, r4, r1 add r1, r1, #5 mov r1, r1, lsl #1 add r1, r1, #67108864 ; 0x4000000 ldrh r2, [r1, #176] ; 0xb0 bic r2, r2, #12800 ; 0x3200 strh r2, [r1, #176] ; 0xb0 ldrh r2, [r1, #176] ; 0xb0 bic r2, r2, #32768 ; 0x8000 strh r2, [r1, #176] ; 0xb0 ldrh r2, [r1, #176] ; 0xb0 ldrh r1, [r1, #176] ; 0xb0 cmp r4, #0 bne _037FB27C mov r1, #12 mul r3, r4, r1 ldr r1, _037FB288 ; =0x040000B0 add r4, r3, r1 mov r2, #0 add r1, r3, #67108864 ; 0x4000000 str r2, [r1, #176] ; 0xb0 str r2, [r4, #4] ldr r1, _037FB28C ; =0x81400001 str r1, [r4, #8] _037FB27C: bl FUN_037FB070 ldmia sp!, {r4, lr} bx lr _037FB288: .word 0x040000B0 _037FB28C: .word 0x81400001 arm_func_start FUN_037FB290 FUN_037FB290: ; 0x037FB290 stmdb sp!, {r4, lr} mov r4, r0 bl FUN_037FB05C mov r1, #3 mul r1, r4, r1 add r2, r1, #2 ldr r1, _037FB2F8 ; =0x040000B0 add r2, r1, r2, lsl #2 _037FB2B0: ldr r1, [r2] ands r1, r1, #-2147483648 ; 0x80000000 bne _037FB2B0 cmp r4, #0 bne _037FB2EC mov r1, #12 mul r3, r4, r1 ldr r1, _037FB2F8 ; =0x040000B0 add r4, r3, r1 mov r2, #0 add r1, r3, #67108864 ; 0x4000000 str r2, [r1, #176] ; 0xb0 str r2, [r4, #4] ldr r1, _037FB2FC ; =0x81400001 str r1, [r4, #8] _037FB2EC: bl FUN_037FB070 ldmia sp!, {r4, lr} bx lr _037FB2F8: .word 0x040000B0 _037FB2FC: .word 0x81400001 arm_func_start FUN_037FB300 FUN_037FB300: ; 0x037FB300 mov r3, #0 _037FB304: cmp r3, r2 strlth r0, [r1, r3] addlt r3, r3, #2 blt _037FB304 bx lr arm_func_start FUN_037FB318 FUN_037FB318: ; 0x037FB318 mov ip, #0 _037FB31C: cmp ip, r2 ldrlth r3, [r0, ip] strlth r3, [r1, ip] addlt ip, ip, #2 blt _037FB31C bx lr arm_func_start FUN_037FB334 FUN_037FB334: ; 0x037FB334 add ip, r1, r2 _037FB338: cmp r1, ip stmltia r1!, {r0} blt _037FB338 bx lr arm_func_start FUN_037FB348 FUN_037FB348: ; 0x037FB348 add ip, r1, r2 _037FB34C: cmp r1, ip ldmltia r0!, {r2} stmltia r1!, {r2} blt _037FB34C bx lr arm_func_start FUN_037FB360 FUN_037FB360: ; 0x037FB360 stmdb sp!, {r4, r5, r6, r7, r8, r9} add r9, 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 _037FB38C: cmp r1, ip stmltia r1!, {r0, r2, r3, r4, r5, r6, r7, r8} blt _037FB38C _037FB398: cmp r1, r9 stmltia r1!, {r0} blt _037FB398 ldmia sp!, {r4, r5, r6, r7, r8, r9} bx lr arm_func_start FUN_037FB3AC FUN_037FB3AC: ; 0x037FB3AC stmdb sp!, {r4, r5, r6, r7, r8, r9, sl} add sl, r1, r2 mov ip, r2, lsr #5 add ip, r1, ip, lsl #5 _037FB3BC: cmp r1, ip ldmltia r0!, {r2, r3, r4, r5, r6, r7, r8, r9} stmltia r1!, {r2, r3, r4, r5, r6, r7, r8, r9} blt _037FB3BC _037FB3CC: cmp r1, sl ldmltia r0!, {r2} stmltia r1!, {r2} blt _037FB3CC ldmia sp!, {r4, r5, r6, r7, r8, r9, sl} bx lr arm_func_start FUN_037FB3E4 FUN_037FB3E4: ; 0x037FB3E4 cmp r2, #0 bxeq lr tst r0, #1 beq _037FB410 ldrh ip, [r0, #-1] and ip, ip, #255 ; 0xff orr r3, ip, r1, lsl #8 strh r3, [r0, #-1] add r0, r0, #1 subs r2, r2, #1 bxeq lr _037FB410: cmp r2, #2 bcc _037FB458 orr r1, r1, r1, lsl #8 tst r0, #2 beq _037FB430 strh r1, [r0], #2 subs r2, r2, #2 bxeq lr _037FB430: orr r1, r1, r1, lsl #16 bics r3, r2, #3 beq _037FB450 sub r2, r2, r3 add ip, r3, r0 _037FB444: str r1, [r0], #4 cmp r0, ip bcc _037FB444 _037FB450: tst r2, #2 strneh r1, [r0], #2 _037FB458: tst r2, #1 bxeq lr ldrh r3, [r0] and r3, r3, #65280 ; 0xff00 and r1, r1, #255 ; 0xff orr r1, r1, r3 strh r1, [r0] bx lr arm_func_start FUN_037FB478 FUN_037FB478: ; 0x037FB478 cmp r2, #0 bxeq lr tst r1, #1 beq _037FB4B8 ldrh ip, [r1, #-1] and ip, ip, #255 ; 0xff tst r0, #1 ldrneh r3, [r0, #-1] movne r3, r3, lsr #8 ldreqh r3, [r0] orr r3, ip, r3, lsl #8 strh r3, [r1, #-1] add r0, r0, #1 add r1, r1, #1 subs r2, r2, #1 bxeq lr _037FB4B8: eor ip, r1, r0 tst ip, #1 beq _037FB50C bic r0, r0, #1 ldrh ip, [r0], #2 mov r3, ip, lsr #8 subs r2, r2, #2 bcc _037FB4F0 _037FB4D8: ldrh ip, [r0], #2 orr ip, r3, ip, lsl #8 strh ip, [r1], #2 mov r3, ip, lsr #16 subs r2, r2, #2 bcs _037FB4D8 _037FB4F0: tst r2, #1 bxeq lr ldrh ip, [r1] and ip, ip, #65280 ; 0xff00 orr ip, ip, r3 strh ip, [r1] bx lr _037FB50C: tst ip, #2 beq _037FB538 bics r3, r2, #1 beq _037FB584 sub r2, r2, r3 add ip, r3, r1 _037FB524: ldrh r3, [r0], #2 strh r3, [r1], #2 cmp r1, ip bcc _037FB524 b _037FB584 _037FB538: cmp r2, #2 bcc _037FB584 tst r1, #2 beq _037FB558 ldrh r3, [r0], #2 strh r3, [r1], #2 subs r2, r2, #2 bxeq lr _037FB558: bics r3, r2, #3 beq _037FB578 sub r2, r2, r3 add ip, r3, r1 _037FB568: ldr r3, [r0], #4 str r3, [r1], #4 cmp r1, ip bcc _037FB568 _037FB578: tst r2, #2 ldrneh r3, [r0], #2 strneh r3, [r1], #2 _037FB584: tst r2, #1 bxeq lr ldrh r2, [r1] ldrh r0, [r0] and r2, r2, #65280 ; 0xff00 and r0, r0, #255 ; 0xff orr r0, r2, r0 strh r0, [r1] bx lr arm_func_start FUN_037FB5A8 FUN_037FB5A8: ; 0x037FB5A8 swp r0, r0, [r1] bx lr arm_func_start FUN_037FB5B0 FUN_037FB5B0: ; 0x037FB5B0 ldr ip, _037FB5B8 ; =FUN_037FB814 bx ip _037FB5B8: .word FUN_037FB814 arm_func_start FUN_037FB5BC FUN_037FB5BC: ; 0x037FB5BC stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} sub sp, sp, #8 ldr sl, _037FB6D0 ; =0x04000184 ldr r5, _037FB6D4 ; =_0380795C mov r7, #68157440 ; 0x4100000 mov r6, #0 mvn r8, #3 mvn r9, #2 ldr r4, _037FB6D8 ; =0x04000188 _037FB5E0: ldrh r0, [sl] ands r0, r0, #16384 ; 0x4000 ldrneh r0, [sl] orrne r0, r0, #49152 ; 0xc000 strneh r0, [sl] movne r1, r9 bne _037FB628 bl FUN_037FB05C ldrh r1, [sl] ands r1, r1, #256 ; 0x100 beq _037FB618 bl FUN_037FB070 mov r1, r8 b _037FB628 _037FB618: ldr r1, [r7] str r1, [sp] bl FUN_037FB070 mov r1, r6 _037FB628: cmp r1, r8 beq _037FB6C4 mvn r0, #2 cmp r1, r0 beq _037FB5E0 ldr r2, [sp] mov r0, r2, lsl #27 movs r0, r0, lsr #27 beq _037FB5E0 ldr r3, [r5, r0, lsl #2] cmp r3, #0 beq _037FB670 mov r1, r2, lsr #6 mov r2, r2, lsl #26 mov r2, r2, lsr #31 mov lr, pc bx r3 b _037FB5E0 _037FB670: mov r0, r2, lsl #26 movs r0, r0, lsr #31 bne _037FB5E0 orr r0, r2, #32 str r0, [sp] ldrh r0, [sl] ands r0, r0, #16384 ; 0x4000 ldrneh r0, [sl] orrne r0, r0, #49152 ; 0xc000 strneh r0, [sl] bne _037FB5E0 bl FUN_037FB05C ldrh r1, [sl] ands r1, r1, #2 beq _037FB6B4 bl FUN_037FB070 b _037FB5E0 _037FB6B4: ldr r1, [sp] str r1, [r4] bl FUN_037FB070 b _037FB5E0 _037FB6C4: add sp, sp, #8 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr} bx lr _037FB6D0: .word 0x04000184 _037FB6D4: .word _0380795C _037FB6D8: .word 0x04000188 arm_func_start FUN_037FB6DC FUN_037FB6DC: ; 0x037FB6DC stmfd sp!, {lr} sub sp, sp, #4 ldr r3, [sp] bic r3, r3, #31 and r0, r0, #31 orr r0, r3, r0 str r0, [sp] bic r3, r0, #32 and r0, r2, #1 orr r0, r3, r0, lsl #5 str r0, [sp] and r2, r0, #63 ; 0x3f bic r0, r1, #-67108864 ; 0xfc000000 orr r0, r2, r0, lsl #6 str r0, [sp] ldr r1, _037FB778 ; =0x04000184 ldrh r0, [r1] ands r0, r0, #16384 ; 0x4000 ldrneh r0, [r1] orrne r0, r0, #49152 ; 0xc000 strneh r0, [r1] mvnne r0, #0 bne _037FB76C bl FUN_037FB05C ldr r1, _037FB778 ; =0x04000184 ldrh r1, [r1] ands r1, r1, #2 beq _037FB758 bl FUN_037FB070 mvn r0, #1 b _037FB76C _037FB758: ldr r2, [sp] ldr r1, _037FB77C ; =0x04000188 str r2, [r1] bl FUN_037FB070 mov r0, #0 _037FB76C: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FB778: .word 0x04000184 _037FB77C: .word 0x04000188 arm_func_start FUN_037FB780 FUN_037FB780: ; 0x037FB780 mov r3, #1 mov r2, r3, lsl r0 ldr r0, _037FB7A4 ; =0x027FFC00 add r0, r0, r1, lsl #2 ldr r0, [r0, #904] ; 0x388 ands r0, r2, r0 moveq r3, #0 mov r0, r3 bx lr _037FB7A4: .word 0x027FFC00 arm_func_start FUN_037FB7A8 FUN_037FB7A8: ; 0x037FB7A8 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r4, r0 mov r5, r1 bl FUN_037FB05C ldr r1, _037FB80C ; =_0380795C str r5, [r1, r4, lsl #2] cmp r5, #0 beq _037FB7E4 ldr r3, _037FB810 ; =0x027FFC00 ldr r2, [r3, #908] ; 0x38c mov r1, #1 orr r1, r2, r1, lsl r4 str r1, [r3, #908] ; 0x38c b _037FB7FC _037FB7E4: ldr r3, _037FB810 ; =0x027FFC00 ldr r2, [r3, #908] ; 0x38c mov r1, #1 mvn r1, r1, lsl r4 and r1, r2, r1 str r1, [r3, #908] ; 0x38c _037FB7FC: bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FB80C: .word _0380795C _037FB810: .word 0x027FFC00 arm_func_start FUN_037FB814 FUN_037FB814: ; 0x037FB814 stmdb sp!, {r4, r5, r6, r7, r8, lr} bl FUN_037FB05C mov r5, r0 ldr r0, _037FB8D4 ; =_03807958 ldrh r1, [r0] cmp r1, #0 bne _037FB8C4 mov r1, #1 strh r1, [r0] mov r2, #0 ldr r0, _037FB8D8 ; =0x027FFC00 str r2, [r0, #908] ; 0x38c mov r1, r2 ldr r0, _037FB8DC ; =_0380795C _037FB84C: str r1, [r0, r2, lsl #2] add r2, r2, #1 cmp r2, #32 blt _037FB84C ldr r1, _037FB8E0 ; =0x0000C408 ldr r0, _037FB8E4 ; =0x04000184 strh r1, [r0] mov r0, #262144 ; 0x40000 bl FUN_037F8824 mov r0, #262144 ; 0x40000 ldr r1, _037FB8E8 ; =FUN_037FB5BC bl FUN_037F894C mov r0, #262144 ; 0x40000 bl FUN_037F8894 mov r4, #8 mov r6, r4 ldr r8, _037FB8EC ; =0x04000180 mov r7, #1000 ; 0x3e8 b _037FB8BC _037FB898: mov r0, r4, lsl #8 strh r0, [r8] mov r0, r7 bl FUN_037FB0C0 ldrh r0, [r8] and r0, r0, #15 cmp r0, r4 movne r4, r6 sub r4, r4, #1 _037FB8BC: cmp r4, #0 bge _037FB898 _037FB8C4: mov r0, r5 bl FUN_037FB070 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FB8D4: .word _03807958 _037FB8D8: .word 0x027FFC00 _037FB8DC: .word _0380795C _037FB8E0: .word 0x0000C408 _037FB8E4: .word 0x04000184 _037FB8E8: .word FUN_037FB5BC _037FB8EC: .word 0x04000180 arm_func_start FUN_037FB8F0 FUN_037FB8F0: ; 0x037FB8F0 mov r1, r0 mov r0, #49152 ; 0xc000 mov r1, r1, lsl #16 mov r1, r1, lsr #16 ldr ip, _037FB908 ; =FUN_037FB90C bx ip _037FB908: .word FUN_037FB90C arm_func_start FUN_037FB90C FUN_037FB90C: ; 0x037FB90C mvn r3, r0 ldr r2, _037FB928 ; =0x04000134 ldrh r0, [r2] and r0, r3, r0 orr r0, r1, r0 strh r0, [r2] bx lr _037FB928: .word 0x04000134 arm_func_start FUN_037FB92C FUN_037FB92C: ; 0x037FB92C stmdb sp!, {r4, lr} mov r4, #0 mov r0, #32768 ; 0x8000 bl FUN_037FB8F0 ldr r0, _037FB964 ; =0x04000136 ldrh r1, [r0] ands r0, r1, #128 ; 0x80 movne r4, #32768 ; 0x8000 and r0, r1, #11 orr r1, r4, r0, lsl #10 ldr r0, _037FB968 ; =0x027FFFA8 strh r1, [r0] ldmia sp!, {r4, lr} bx lr _037FB964: .word 0x04000136 _037FB968: .word 0x027FFFA8 arm_func_start FUN_037FB96C FUN_037FB96C: ; 0x037FB96C stmfd sp!, {lr} sub sp, sp, #12 bl FUN_037FA49C cmp r0, #0 beq _037FB98C bl FUN_037FA910 cmp r0, #0 bne _037FB994 _037FB98C: mov r0, #0 b _037FB9F0 _037FB994: ldr r0, _037FB9FC ; =_038079DC ldr r0, [r0] cmp r0, #0 movne r0, #0 bne _037FB9F0 ldr r0, _037FBA00 ; =_038079E0 bl FUN_037FA900 bl FUN_037FA364 mov r2, r0 ldr r0, _037FBA04 ; =FUN_037FB92C str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] ldr r3, _037FBA08 ; =0x0000082E str r0, [sp] ldr r0, _037FBA00 ; =_038079E0 adds ip, r2, r3 adc r2, r1, #0 mov r1, ip bl FUN_037FA6E0 mov r0, #1 ldr r1, _037FB9FC ; =_038079DC str r0, [r1] _037FB9F0: add sp, sp, #12 ldmia sp!, {lr} bx lr _037FB9FC: .word _038079DC _037FBA00: .word _038079E0 _037FBA04: .word FUN_037FB92C _037FBA08: .word 0x0000082E arm_func_start FUN_037FBA0C FUN_037FBA0C: ; 0x037FBA0C ldr ip, _037FBA40 ; =0x04000501 ldrb ip, [ip] ands ip, ip, #128 ; 0x80 movne ip, #1 moveq ip, #0 mov ip, ip, lsl #7 orr r3, ip, r3, lsl #5 orr r2, r3, r2, lsl #4 orr r1, r2, r1, lsl #2 orr r1, r0, r1 ldr r0, _037FBA40 ; =0x04000501 strb r1, [r0] bx lr _037FBA40: .word 0x04000501 arm_func_start FUN_037FBA44 FUN_037FBA44: ; 0x037FBA44 ldr r1, _037FBA50 ; =0x04000500 strb r0, [r1] bx lr _037FBA50: .word 0x04000500 arm_func_start FUN_037FBA54 FUN_037FBA54: ; 0x037FBA54 stmfd sp!, {lr} sub sp, sp, #4 ldr r1, _037FBA94 ; =0x04000304 ldrh r0, [r1] orr r0, r0, #1 strh r0, [r1] mov r0, #1 bl FUN_038026DC mov r0, #256 ; 0x100 bl FUN_037FBA9C ldr r0, _037FBA98 ; =0x0007AB80 bl FUN_037FB0C0 bl FUN_037FBB64 add sp, sp, #4 ldmia sp!, {lr} bx lr _037FBA94: .word 0x04000304 _037FBA98: .word 0x0007AB80 arm_func_start FUN_037FBA9C FUN_037FBA9C: ; 0x037FBA9C ldr ip, _037FBAA4 ; =SVC_SoundBiasSet bx ip _037FBAA4: .word SVC_SoundBiasSet arm_func_start FUN_037FBAA8 FUN_037FBAA8: ; 0x037FBAA8 stmfd sp!, {lr} sub sp, sp, #4 bl FUN_037FBB4C mov r0, #128 ; 0x80 bl FUN_037FBAEC mov r0, #262144 ; 0x40000 bl FUN_037FB0C0 mov r0, #1 bl FUN_038026B0 ldr r1, _037FBAE8 ; =0x04000304 ldrh r0, [r1] bic r0, r0, #1 strh r0, [r1] add sp, sp, #4 ldmia sp!, {lr} bx lr _037FBAE8: .word 0x04000304 arm_func_start FUN_037FBAEC FUN_037FBAEC: ; 0x037FBAEC ldr ip, _037FBAF4 ; =SVC_SoundBiasReset bx ip _037FBAF4: .word SVC_SoundBiasReset arm_func_start FUN_037FBAF8 FUN_037FBAF8: ; 0x037FBAF8 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 bl FUN_037FBB4C mov r5, #0 mov r4, #1 _037FBB0C: mov r0, r5 mov r1, r4 bl FUN_037FBDF4 add r5, r5, #1 cmp r5, #16 blt _037FBB0C mov r1, #0 ldr r0, _037FBB44 ; =0x04000508 strb r1, [r0] ldr r0, _037FBB48 ; =0x04000509 strb r1, [r0] add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FBB44: .word 0x04000508 _037FBB48: .word 0x04000509 arm_func_start FUN_037FBB4C FUN_037FBB4C: ; 0x037FBB4C ldr r1, _037FBB60 ; =0x04000501 ldrb r0, [r1] bic r0, r0, #128 ; 0x80 strb r0, [r1] bx lr _037FBB60: .word 0x04000501 arm_func_start FUN_037FBB64 FUN_037FBB64: ; 0x037FBB64 ldr r1, _037FBB78 ; =0x04000501 ldrb r0, [r1] orr r0, r0, #128 ; 0x80 strb r0, [r1] bx lr _037FBB78: .word 0x04000501 arm_func_start FUN_037FBB7C FUN_037FBB7C: ; 0x037FBB7C cmp r1, #24 bge _037FBBAC ldr r2, _037FBBE0 ; =_03807A0C ldr r3, [r2] ldr r2, _037FBBE4 ; =0x00007FFF sub r2, r2, r3 add r1, r1, #40 ; 0x28 mul r1, r3, r1 add r1, r1, r2, lsl #6 mul r1, r0, r1 mov r0, r1, asr #21 bx lr _037FBBAC: cmp r1, #104 ; 0x68 bxle lr ldr r2, _037FBBE0 ; =_03807A0C ldr ip, [r2] ldr r2, _037FBBE4 ; =0x00007FFF add r3, ip, r2 rsb r2, ip, #0 sub r1, r1, #40 ; 0x28 mul r1, r2, r1 add r1, r1, r3, lsl #6 mul r1, r0, r1 mov r0, r1, asr #21 bx lr _037FBBE0: .word _03807A0C _037FBBE4: .word 0x00007FFF arm_func_start FUN_037FBBE8 FUN_037FBBE8: ; 0x037FBBE8 stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r1, _037FBC40 ; =_03807A0C str r0, [r1] mov r4, #0 ldr r6, _037FBC44 ; =_03807A20 mov r7, #1 ldr r5, _037FBC48 ; =0x0000FFF5 _037FBC04: mov r0, r7, lsl r4 ands r0, r0, r5 beq _037FBC2C mov r8, r4, lsl #4 add r0, r8, #67108864 ; 0x4000000 ldrb r1, [r0, #1026] ; 0x402 ldrb r0, [r6, r4] bl FUN_037FBB7C add r1, r8, #67108864 ; 0x4000000 strb r0, [r1, #1024] ; 0x400 _037FBC2C: add r4, r4, #1 cmp r4, #16 blt _037FBC04 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FBC40: .word _03807A0C _037FBC44: .word _03807A20 _037FBC48: .word 0x0000FFF5 arm_func_start FUN_037FBC4C FUN_037FBC4C: ; 0x037FBC4C mov r0, r0, lsl #4 add r0, r0, #67108864 ; 0x4000000 ldr r0, [r0, #1024] ; 0x400 bx lr arm_func_start FUN_037FBC5C FUN_037FBC5C: ; 0x037FBC5C ldr r1, _037FBCB8 ; =_0380765C str r0, [r1] cmp r0, #0 blt _037FBC90 mov r2, #0 and r1, r0, #255 ; 0xff _037FBC74: mov r0, r2, lsl #4 add r0, r0, #67108864 ; 0x4000000 strb r1, [r0, #1026] ; 0x402 add r2, r2, #1 cmp r2, #16 blt _037FBC74 bx lr _037FBC90: mov r3, #0 ldr r2, _037FBCBC ; =_03807A10 _037FBC98: ldrb r1, [r2, r3] mov r0, r3, lsl #4 add r0, r0, #67108864 ; 0x4000000 strb r1, [r0, #1026] ; 0x402 add r3, r3, #1 cmp r3, #16 blt _037FBC98 bx lr _037FBCB8: .word _0380765C _037FBCBC: .word _03807A10 arm_func_start FUN_037FBCC0 FUN_037FBCC0: ; 0x037FBCC0 mov r0, r0, lsl #4 add r0, r0, #67108864 ; 0x4000000 ldrb r0, [r0, #1027] ; 0x403 ands r0, r0, #128 ; 0x80 movne r0, #1 moveq r0, #0 bx lr arm_func_start FUN_037FBCDC FUN_037FBCDC: ; 0x037FBCDC stmdb sp!, {r4, lr} ldr r2, _037FBD44 ; =_03807A10 strb r1, [r2, r0] ldr r2, _037FBD48 ; =_0380765C ldr r2, [r2] cmp r2, #0 movge r1, r2 mov r4, r0, lsl #4 add r2, r4, #67108864 ; 0x4000000 strb r1, [r2, #1026] ; 0x402 ldr r2, _037FBD4C ; =_03807A0C ldr r2, [r2] cmp r2, #0 ble _037FBD3C mov r2, #1 mov r3, r2, lsl r0 ldr r2, _037FBD50 ; =0x0000FFF5 ands r2, r3, r2 beq _037FBD3C ldr r2, _037FBD54 ; =_03807A20 ldrb r0, [r2, r0] bl FUN_037FBB7C add r1, r4, #67108864 ; 0x4000000 strb r0, [r1, #1024] ; 0x400 _037FBD3C: ldmia sp!, {r4, lr} bx lr _037FBD44: .word _03807A10 _037FBD48: .word _0380765C _037FBD4C: .word _03807A0C _037FBD50: .word 0x0000FFF5 _037FBD54: .word _03807A20 arm_func_start FUN_037FBD58 FUN_037FBD58: ; 0x037FBD58 rsb r1, r1, #65536 ; 0x10000 mov r0, r0, lsl #4 add r0, r0, #67108864 ; 0x4000000 add r0, r0, #1024 ; 0x400 strh r1, [r0, #8] bx lr arm_func_start FUN_037FBD70 FUN_037FBD70: ; 0x037FBD70 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 mov r4, r2 ldr r0, _037FBDE8 ; =_03807A20 strb r1, [r0, r5] ldr r0, _037FBDEC ; =_03807A0C ldr r0, [r0] cmp r0, #0 ble _037FBDC8 mov r0, #1 mov r2, r0, lsl r5 ldr r0, _037FBDF0 ; =0x0000FFF5 ands r0, r2, r0 beq _037FBDC8 mov r0, r5, lsl #4 add r0, r0, #67108864 ; 0x4000000 ldrb r2, [r0, #1026] ; 0x402 mov r0, r1 mov r1, r2 bl FUN_037FBB7C mov r1, r0 _037FBDC8: orr r1, r1, r4, lsl #8 mov r0, r5, lsl #4 add r0, r0, #67108864 ; 0x4000000 add r0, r0, #1024 ; 0x400 strh r1, [r0] add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FBDE8: .word _03807A20 _037FBDEC: .word _03807A0C _037FBDF0: .word 0x0000FFF5 arm_func_start FUN_037FBDF4 FUN_037FBDF4: ; 0x037FBDF4 mov r3, r0, lsl #4 ldr r2, _037FBE1C ; =0x04000400 add ip, r2, r0, lsl #4 add r0, r3, #67108864 ; 0x4000000 ldr r0, [r0, #1024] ; 0x400 bic r2, r0, #-2147483648 ; 0x80000000 ands r0, r1, #1 orrne r2, r2, #32768 ; 0x8000 str r2, [ip] bx lr _037FBE1C: .word 0x04000400 arm_func_start FUN_037FBE20 FUN_037FBE20: ; 0x037FBE20 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r2 mov r6, r3 ldr r5, [sp, #24] mov r4, r0, lsl #4 ldr r2, _037FBEBC ; =_03807A10 strb r5, [r2, r0] ldr r2, _037FBEC0 ; =_0380765C ldr r2, [r2] cmp r2, #0 movge r5, r2 ldr r2, _037FBEC4 ; =_03807A20 strb r1, [r2, r0] ldr r2, _037FBEC8 ; =_03807A0C ldr r2, [r2] cmp r2, #0 ble _037FBE8C mov r2, #1 mov r2, r2, lsl r0 ldr r0, _037FBECC ; =0x0000FFF5 ands r0, r2, r0 beq _037FBE8C mov r0, r1 mov r1, r5 bl FUN_037FBB7C mov r1, r0 _037FBE8C: mov r0, r5, lsl #16 orr r0, r0, #1610612736 ; 0x60000000 orr r0, r0, r7, lsl #8 orr r1, r1, r0 add r0, r4, #67108864 ; 0x4000000 str r1, [r0, #1024] ; 0x400 rsb r1, r6, #65536 ; 0x10000 add r0, r0, #1024 ; 0x400 strh r1, [r0, #8] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FBEBC: .word _03807A10 _037FBEC0: .word _0380765C _037FBEC4: .word _03807A20 _037FBEC8: .word _03807A0C _037FBECC: .word 0x0000FFF5 arm_func_start FUN_037FBED0 FUN_037FBED0: ; 0x037FBED0 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r1 mov r6, r3 ldr r5, [sp, #28] mov r4, r0, lsl #4 ldr r1, _037FBF74 ; =_03807A10 strb r5, [r1, r0] ldr r1, _037FBF78 ; =_0380765C ldr r1, [r1] cmp r1, #0 movge r5, r1 ldr r1, _037FBF7C ; =_03807A20 strb r2, [r1, r0] ldr r1, _037FBF80 ; =_03807A0C ldr r1, [r1] cmp r1, #0 ble _037FBF3C mov r1, #1 mov r1, r1, lsl r0 ldr r0, _037FBF84 ; =0x0000FFF5 ands r0, r1, r0 beq _037FBF3C mov r0, r2 mov r1, r5 bl FUN_037FBB7C mov r2, r0 _037FBF3C: mov r0, r7, lsl #24 orr r0, r0, #1610612736 ; 0x60000000 orr r0, r0, r5, lsl #16 orr r0, r0, r6, lsl #8 orr r1, r2, r0 add r0, r4, #67108864 ; 0x4000000 str r1, [r0, #1024] ; 0x400 ldr r1, [sp, #24] rsb r1, r1, #65536 ; 0x10000 add r0, r0, #1024 ; 0x400 strh r1, [r0, #8] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FBF74: .word _03807A10 _037FBF78: .word _0380765C _037FBF7C: .word _03807A20 _037FBF80: .word _03807A0C _037FBF84: .word 0x0000FFF5 arm_func_start FUN_037FBF88 FUN_037FBF88: ; 0x037FBF88 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r1 mov r7, r2 mov r6, r3 ldr r1, [sp, #32] ldr r5, [sp, #44] ; 0x2c mov r4, r0, lsl #4 ldr r2, _037FC044 ; =_03807A10 strb r5, [r2, r0] ldr r2, _037FC048 ; =_0380765C ldr r2, [r2] cmp r2, #0 movge r5, r2 ldr r2, _037FC04C ; =_03807A20 strb r1, [r2, r0] ldr r2, _037FC050 ; =_03807A0C ldr r2, [r2] cmp r2, #0 ble _037FBFF8 mov r2, #1 mov r2, r2, lsl r0 ldr r0, _037FC054 ; =0x0000FFF5 ands r0, r2, r0 beq _037FBFF8 mov r0, r1 mov r1, r5 bl FUN_037FBB7C mov r1, r0 _037FBFF8: ldr r2, [sp, #36] ; 0x24 mov r0, r7, lsl #29 orr r0, r0, r6, lsl #27 orr r0, r0, r5, lsl #16 orr r0, r0, r2, lsl #8 orr r0, r1, r0 add r1, r4, #67108864 ; 0x4000000 str r0, [r1, #1024] ; 0x400 ldr r0, [sp, #40] ; 0x28 rsb r2, r0, #65536 ; 0x10000 add r0, r1, #1024 ; 0x400 strh r2, [r0, #8] ldr r2, [sp, #24] strh r2, [r0, #10] ldr r0, [sp, #28] str r0, [r1, #1036] ; 0x40c str r8, [r1, #1028] ; 0x404 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FC044: .word _03807A10 _037FC048: .word _0380765C _037FC04C: .word _03807A20 _037FC050: .word _03807A0C _037FC054: .word 0x0000FFF5 arm_func_start FUN_037FC058 FUN_037FC058: ; 0x037FC058 ldr r2, _037FC080 ; =_03807660 ldr r3, [r2] ldr r0, _037FC084 ; =0x0019660D ldr r1, _037FC088 ; =0x3C6EF35F mla r0, r3, r0, r1 str r0, [r2] mov r0, r0, lsr #16 mov r0, r0, lsl #16 mov r0, r0, lsr #16 bx lr _037FC080: .word _03807660 _037FC084: .word 0x0019660D _037FC088: .word 0x3C6EF35F arm_func_start FUN_037FC08C FUN_037FC08C: ; 0x037FC08C cmp r0, #32 ldrlt r1, _037FC0F4 ; =_03807170 ldrltsb r0, [r1, r0] bxlt lr cmp r0, #64 ; 0x40 rsblt r1, r0, #64 ; 0x40 ldrlt r0, _037FC0F4 ; =_03807170 ldrltsb r0, [r0, r1] bxlt lr cmp r0, #96 ; 0x60 bge _037FC0D4 sub r1, r0, #64 ; 0x40 ldr r0, _037FC0F4 ; =_03807170 ldrsb r0, [r0, r1] rsb r0, r0, #0 mov r0, r0, lsl #24 mov r0, r0, asr #24 bx lr _037FC0D4: sub r0, r0, #96 ; 0x60 rsb r1, r0, #32 ldr r0, _037FC0F4 ; =_03807170 ldrsb r0, [r0, r1] rsb r0, r0, #0 mov r0, r0, lsl #24 mov r0, r0, asr #24 bx lr _037FC0F4: .word _03807170 arm_func_start FUN_037FC0F8 FUN_037FC0F8: ; 0x037FC0F8 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, _037FC168 ; =0xFFFFFD2D cmp r4, r0 movlt r4, r0 blt _037FC118 cmp r4, #0 movgt r4, #0 _037FC118: ldr r0, _037FC16C ; =0x000002D3 add r0, r4, r0 bl FUN_037FC170 mvn r1, #239 ; 0xef cmp r4, r1 movlt r1, #3 blt _037FC154 mvn r1, #119 ; 0x77 cmp r4, r1 movlt r1, #2 blt _037FC154 mvn r1, #59 ; 0x3b cmp r4, r1 movlt r1, #1 movge r1, #0 _037FC154: orr r0, r0, r1, lsl #8 mov r0, r0, lsl #16 mov r0, r0, lsr #16 ldmia sp!, {r4, lr} bx lr _037FC168: .word 0xFFFFFD2D _037FC16C: .word 0x000002D3 arm_func_start FUN_037FC170 FUN_037FC170: ; 0x037FC170 ldr ip, _037FC178 ; =SVC_GetVolumeTable bx ip _037FC178: .word SVC_GetVolumeTable arm_func_start FUN_037FC17C FUN_037FC17C: ; 0x037FC17C stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 mov r4, #0 rsb r0, r1, #0 b _037FC19C _037FC194: sub r4, r4, #1 add r0, r0, #768 ; 0x300 _037FC19C: cmp r0, #0 blt _037FC194 b _037FC1B0 _037FC1A8: add r4, r4, #1 sub r0, r0, #768 ; 0x300 _037FC1B0: cmp r0, #768 ; 0x300 bge _037FC1A8 bl FUN_037FC2A4 mov r2, #0 mov r1, #65536 ; 0x10000 adds lr, r0, r1 adc ip, r2, #0 mov r3, r5, asr #31 umull r1, r0, lr, r5 mla r0, lr, r3, r0 mla r0, ip, r5, r0 sub lr, r4, #16 cmp lr, #0 bgt _037FC208 rsb r2, lr, #0 mov r3, r0, lsr r2 mov r5, r1, lsr r2 rsb r1, r2, #32 orr r5, r5, r0, lsl r1 sub r1, r2, #32 orr r5, r5, r0, lsr r1 b _037FC264 _037FC208: cmp lr, #32 bge _037FC25C mvn r5, #0 rsb r4, lr, #32 mov ip, r5, lsl r4 rsb r3, r4, #32 orr ip, ip, r5, lsr r3 sub r3, r4, #32 orr ip, ip, r5, lsl r3 and r3, r0, ip and r5, r1, r5, lsl r4 cmp r3, r2 cmpeq r5, r2 ldrne r0, _037FC2A0 ; =0x0000FFFF bne _037FC294 mov r5, r1, lsl lr mov r3, r0, lsl lr orr r3, r3, r1, lsr r4 sub r0, lr, #32 orr r3, r3, r1, lsl r0 b _037FC264 _037FC25C: ldr r0, _037FC2A0 ; =0x0000FFFF b _037FC294 _037FC264: mov r1, #0 mov r0, #16 cmp r3, r1 cmpeq r5, r0 movcc r5, r0 bcc _037FC28C ldr r0, _037FC2A0 ; =0x0000FFFF cmp r3, r1 cmpeq r5, r0 movhi r5, r0 _037FC28C: mov r0, r5, lsl #16 mov r0, r0, lsr #16 _037FC294: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FC2A0: .word 0x0000FFFF arm_func_start FUN_037FC2A4 FUN_037FC2A4: ; 0x037FC2A4 ldr ip, _037FC2AC ; =SVC_GetPitchTable bx ip _037FC2AC: .word SVC_GetPitchTable arm_func_start FUN_037FC2B0 FUN_037FC2B0: ; 0x037FC2B0 stmdb sp!, {r4, r5, r6, lr} bl FUN_037FC408 bl FUN_037FD3E0 bl FUN_037FF0A8 bl FUN_037FF6B8 bl FUN_037FBB64 mov r0, #0 mov r1, r0 mov r2, r0 mov r3, r0 bl FUN_037FBA0C mov r0, #127 ; 0x7f bl FUN_037FBA44 bl FUN_037FC3B0 mov r4, #1 mov r5, #0 _037FC2F0: mov r6, r5 bl FUN_037FC370 cmp r0, #1 beq _037FC308 cmp r0, #2 b _037FC30C _037FC308: mov r6, r4 _037FC30C: bl FUN_037FD1F4 bl FUN_037FFA5C mov r0, r6 bl FUN_037FF008 mov r0, r6 bl FUN_037FCEDC bl FUN_037FF448 bl FUN_037FC058 b _037FC2F0 _037FC330: ldr r0, _037FC344 ; =_03807A54 mov r1, #1 mov r2, #0 ldr ip, _037FC348 ; =FUN_037F9924 bx ip _037FC344: .word _03807A54 _037FC348: .word FUN_037F9924 arm_func_start FUN_037FC34C FUN_037FC34C: ; 0x037FC34C bx lr arm_func_start FUN_037FC350 FUN_037FC350: ; 0x037FC350 bx lr arm_func_start FUN_037FC354 FUN_037FC354: ; 0x037FC354 ldr r0, _037FC368 ; =_03807A54 mov r1, #2 mov r2, #0 ldr ip, _037FC36C ; =FUN_037F9924 bx ip _037FC368: .word _03807A54 _037FC36C: .word FUN_037F9924 arm_func_start FUN_037FC370 FUN_037FC370: ; 0x037FC370 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037FC398 ; =_03807A54 add r1, sp, #0 mov r2, #1 bl FUN_037F9884 ldr r0, [sp] add sp, sp, #4 ldmia sp!, {lr} bx lr _037FC398: .word _03807A54 arm_func_start FUN_037FC39C FUN_037FC39C: ; 0x037FC39C ldr r0, _037FC3A8 ; =_03807A74 ldr ip, _037FC3AC ; =FUN_037FA650 bx ip _037FC3A8: .word _03807A74 _037FC3AC: .word FUN_037FA650 arm_func_start FUN_037FC3B0 FUN_037FC3B0: ; 0x037FC3B0 stmfd sp!, {lr} sub sp, sp, #12 bl FUN_037FA364 mov ip, r0 ldr r0, _037FC3FC ; =_037FC330 str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] ldr r3, _037FC400 ; =0x00000AA8 str r0, [sp] ldr r0, _037FC404 ; =_03807A74 mov r2, #65536 ; 0x10000 adds ip, ip, r2 adc r2, r1, #0 mov r1, ip bl FUN_037FA6E0 add sp, sp, #12 ldmia sp!, {lr} bx lr _037FC3FC: .word _037FC330 _037FC400: .word 0x00000AA8 _037FC404: .word _03807A74 arm_func_start FUN_037FC408 FUN_037FC408: ; 0x037FC408 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037FC434 ; =_03807A54 ldr r1, _037FC438 ; =_03807A34 mov r2, #8 bl FUN_037F99B8 ldr r0, _037FC43C ; =_03807A74 bl FUN_037FA900 add sp, sp, #4 ldmia sp!, {lr} bx lr _037FC434: .word _03807A54 _037FC438: .word _03807A34 _037FC43C: .word _03807A74 arm_func_start FUN_037FC440 FUN_037FC440: ; 0x037FC440 stmfd sp!, {lr} sub sp, sp, #12 mov r1, #1024 ; 0x400 str r1, [sp] str r0, [sp, #4] ldr r0, _037FC47C ; =_03807AA0 ldr r1, _037FC480 ; =FUN_037FC2B0 mov r2, #0 ldr r3, _037FC484 ; =_03807F44 bl FUN_037F9244 ldr r0, _037FC47C ; =_03807AA0 bl FUN_037F8FB4 add sp, sp, #12 ldmia sp!, {lr} bx lr _037FC47C: .word _03807AA0 _037FC480: .word FUN_037FC2B0 _037FC484: .word _03807F44 arm_func_start FUN_037FC488 FUN_037FC488: ; 0x037FC488 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, _037FC4BC ; =_03807A30 ldr r1, [r0] cmp r1, #0 bne _037FC4B4 mov r1, #1 str r1, [r0] bl FUN_037FFED4 mov r0, r4 bl FUN_037FC440 _037FC4B4: ldmia sp!, {r4, lr} bx lr _037FC4BC: .word _03807A30 arm_func_start FUN_037FC4C0 FUN_037FC4C0: ; 0x037FC4C0 add r0, r0, #67108864 ; 0x4000000 ldrb r0, [r0, #1288] ; 0x508 ands r0, r0, #128 ; 0x80 movne r0, #1 moveq r0, #0 bx lr arm_func_start FUN_037FC4D8 FUN_037FC4D8: ; 0x037FC4D8 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r4, r0, lsl #3 ldr ip, [sp, #16] cmp ip, #0 movne r5, #0 moveq r5, #1 ldr lr, [sp, #24] ldr ip, [sp, #20] mov r1, r1, lsl #3 orr r1, r1, r5, lsl #2 orr r1, r1, ip, lsl #1 orr r1, lr, r1 add r0, r0, #67108864 ; 0x4000000 strb r1, [r0, #1288] ; 0x508 add r0, r4, #67108864 ; 0x4000000 str r2, [r0, #1296] ; 0x510 add r0, r0, #1280 ; 0x500 strh r3, [r0, #20] add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FC530 FUN_037FC530: ; 0x037FC530 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, r1 add r0, r6, #40 ; 0x28 bl FUN_037FC7F4 mov r4, r0 mov ip, r0, asr #31 mov r3, #0 cmp ip, r3 cmpeq r0, r3 beq _037FC5B0 ldrb r1, [r6, #40] ; 0x28 cmp r1, #0 beq _037FC59C cmp r1, #1 beq _037FC584 cmp r1, #2 moveq ip, ip, lsl #6 orreq ip, ip, r0, lsr #26 moveq r4, r0, lsl #6 b _037FC5A8 _037FC584: mov r2, #60 ; 0x3c umull r4, r1, r0, r2 mla r1, r0, r3, r1 mla r1, ip, r2, r1 mov ip, r1 b _037FC5A8 _037FC59C: mov ip, ip, lsl #6 orr ip, ip, r0, lsr #26 mov r4, r0, lsl #6 _037FC5A8: mov r4, r4, lsr #14 orr r4, r4, ip, lsl #18 _037FC5B0: cmp r5, #0 beq _037FC5C0 add r0, r6, #40 ; 0x28 bl FUN_037FC844 _037FC5C0: mov r0, r4 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FC5CC FUN_037FC5CC: ; 0x037FC5CC stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r4, r0 mov r5, r1 ldrsh r3, [r4, #50] ; 0x32 cmp r3, #0 moveq r0, #0 beq _037FC630 ldr r0, [r4, #20] ldr r2, [r4, #24] cmp r0, r2 movge r0, #0 bge _037FC630 sub r0, r2, r0 smull r0, r1, r3, r0 mov r3, r2, asr #31 bl _ll_sdiv cmp r5, #0 beq _037FC630 ldrb r1, [r4, #3] mov r1, r1, lsl #29 movs r1, r1, lsr #31 ldrne r1, [r4, #20] addne r1, r1, #1 strne r1, [r4, #20] _037FC630: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FC63C FUN_037FC63C: ; 0x037FC63C stmfd sp!, {lr} sub sp, sp, #4 ldrh lr, [r0, #36] ; 0x24 and r2, lr, #255 ; 0xff ldrh ip, [r1, #36] ; 0x24 and r0, ip, #255 ; 0xff mov r2, r2, lsl #4 mov r3, r0, lsl #4 ldr r1, _037FC698 ; =_03807294 ldrb r0, [r1, lr, asr #8] mov r2, r2, asr r0 ldrb r0, [r1, ip, asr #8] mov r0, r3, asr r0 cmp r2, r0 beq _037FC688 cmp r2, r0 movlt r0, #1 mvnge r0, #0 b _037FC68C _037FC688: mov r0, #0 _037FC68C: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FC698: .word _03807294 arm_func_start FUN_037FC69C FUN_037FC69C: ; 0x037FC69C stmdb sp!, {r4, lr} mov r4, r0 ldr r0, _037FC6E4 ; =0xFFFE9680 str r0, [r4, #16] mov r0, #0 strb r0, [r4, #2] str r1, [r4, #52] ; 0x34 add r0, r4, #40 ; 0x28 bl FUN_037FC8A8 ldrb r0, [r4, #3] orr r0, r0, #2 strb r0, [r4, #3] ldrb r0, [r4, #3] bic r0, r0, #1 orr r0, r0, #1 strb r0, [r4, #3] ldmia sp!, {r4, lr} bx lr _037FC6E4: .word 0xFFFE9680 arm_func_start FUN_037FC6E8 FUN_037FC6E8: ; 0x037FC6E8 stmdb sp!, {r4, lr} mov r4, r0 mov ip, #0 str ip, [r4, #80] ; 0x50 str r1, [r4, #72] ; 0x48 str r2, [r4, #76] ; 0x4c str ip, [r4, #52] ; 0x34 strb r3, [r4, #34] ; 0x22 mov r1, #127 ; 0x7f strh r1, [r4, #36] ; 0x24 ldrb r2, [r4, #3] bic r2, r2, #2 strb r2, [r4, #3] ldrb r2, [r4, #3] orr r2, r2, #4 strb r2, [r4, #3] mov r2, #60 ; 0x3c strb r2, [r4, #8] strb r2, [r4, #5] strb r1, [r4, #9] strb ip, [r4, #10] strh ip, [r4, #12] strh ip, [r4, #6] strh ip, [r4, #14] strb ip, [r4, #11] strb r1, [r4, #4] strh ip, [r4, #50] ; 0x32 str ip, [r4, #24] str ip, [r4, #20] bl FUN_037FCD28 mov r0, r4 mov r1, #127 ; 0x7f bl FUN_037FCD0C mov r0, r4 mov r1, #127 ; 0x7f bl FUN_037FCD04 mov r0, r4 mov r1, #127 ; 0x7f bl FUN_037FCCE8 add r0, r4, #40 ; 0x28 bl FUN_037FC8B8 ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FC794 FUN_037FC794: ; 0x037FC794 stmfd sp!, {lr} sub sp, sp, #4 mov r1, r0 cmp r1, #127 ; 0x7f ldreq r0, _037FC7F0 ; =0x0000FFFF beq _037FC7E4 cmp r1, #126 ; 0x7e moveq r0, #15360 ; 0x3c00 beq _037FC7E4 cmp r1, #50 ; 0x32 movlt r0, r1, lsl #1 addlt r0, r0, #1 movlt r0, r0, lsl #16 movlt r0, r0, lsr #16 blt _037FC7E4 mov r0, #7680 ; 0x1e00 rsb r1, r1, #126 ; 0x7e bl _s32_div_f mov r0, r0, lsl #16 mov r0, r0, lsr #16 _037FC7E4: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FC7F0: .word 0x0000FFFF arm_func_start FUN_037FC7F4 FUN_037FC7F4: ; 0x037FC7F4 stmdb sp!, {r4, lr} mov r4, r0 ldrb r0, [r4, #2] cmp r0, #0 moveq r0, #0 beq _037FC83C ldrh r1, [r4, #6] ldrh r0, [r4, #4] cmp r1, r0 movcc r0, #0 bcc _037FC83C ldrh r0, [r4, #8] mov r0, r0, lsr #8 bl FUN_037FC08C ldrb r2, [r4, #3] ldrb r1, [r4, #2] mul r0, r1, r0 mul r0, r2, r0 _037FC83C: ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FC844 FUN_037FC844: ; 0x037FC844 ldrh r2, [r0, #6] ldrh r1, [r0, #4] cmp r2, r1 addcc r1, r2, #1 strcch r1, [r0, #6] bxcc lr ldrh r2, [r0, #8] ldrb r1, [r0, #1] mov r3, r1, lsl #6 add r1, r2, r1, lsl #6 mov r2, r1, lsr #8 b _037FC878 _037FC874: sub r2, r2, #128 ; 0x80 _037FC878: cmp r2, #128 ; 0x80 bcs _037FC874 ldrh r1, [r0, #8] add r1, r1, r3 strh r1, [r0, #8] ldrh r1, [r0, #8] and r1, r1, #255 ; 0xff strh r1, [r0, #8] ldrh r1, [r0, #8] orr r1, r1, r2, lsl #8 strh r1, [r0, #8] bx lr arm_func_start FUN_037FC8A8 FUN_037FC8A8: ; 0x037FC8A8 mov r1, #0 strh r1, [r0, #8] strh r1, [r0, #6] bx lr arm_func_start FUN_037FC8B8 FUN_037FC8B8: ; 0x037FC8B8 mov r2, #0 strb r2, [r0] strb r2, [r0, #2] mov r1, #1 strb r1, [r0, #3] mov r1, #16 strb r1, [r0, #1] strh r2, [r0, #4] bx lr arm_func_start FUN_037FC8DC FUN_037FC8DC: ; 0x037FC8DC stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r7, r0 mov r6, r1 mov r5, #0 mov r9, r5 ldr r4, _037FC960 ; =_03807F6C mov r8, #84 ; 0x54 _037FC8FC: mla r2, r5, r8, r4 ldrb r1, [r2, #3] mov r0, r1, lsl #31 movs r0, r0, lsr #31 beq _037FC944 ldrb r0, [r2, #1] cmp r0, #0 bne _037FC944 ldr r0, [r2, #68] ; 0x44 cmp r7, r0 bhi _037FC944 cmp r0, r6 bhi _037FC944 bic r0, r1, #2 strb r0, [r2, #3] mov r0, r5 mov r1, r9 bl FUN_037FBDF4 _037FC944: add r0, r5, #1 and r5, r0, #255 ; 0xff cmp r5, #16 bcc _037FC8FC add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037FC960: .word _03807F6C arm_func_start FUN_037FC964 FUN_037FC964: ; 0x037FC964 ands r0, r0, #1 ldrne r0, _037FC97C ; =_03807F44 ldrne r0, [r0] ldreq r0, _037FC980 ; =_03807F48 ldreq r0, [r0] bx lr _037FC97C: .word _03807F44 _037FC980: .word _03807F48 arm_func_start FUN_037FC984 FUN_037FC984: ; 0x037FC984 ands r1, r1, #1 ldreq r1, _037FC9B8 ; =_03807F48 ldreq r2, [r1] mvneq r0, r0 andeq r0, r2, r0 streq r0, [r1] bxeq lr ldr r1, _037FC9BC ; =_03807F44 ldr r2, [r1] mvn r0, r0 and r0, r2, r0 str r0, [r1] bx lr _037FC9B8: .word _03807F48 _037FC9BC: .word _03807F44 arm_func_start FUN_037FC9C0 FUN_037FC9C0: ; 0x037FC9C0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov r9, r1 mov r7, sl mov r6, #0 mov fp, r6 str r6, [sp] mov r4, r6 mov r5, #1 b _037FCA6C _037FC9EC: ands r0, r7, #1 beq _037FCA64 mov r1, #84 ; 0x54 ldr r0, _037FCAAC ; =_03807F6C mla r8, r6, r1, r0 ldr r0, _037FCAB0 ; =_03807F48 ldr r1, [r0] mov r0, r5, lsl r6 ands r0, r1, r0 bne _037FCA64 ldr r3, [r8, #72] ; 0x48 cmp r3, #0 beq _037FCA34 mov r0, r8 mov r1, fp ldr r2, [r8, #76] ; 0x4c mov lr, pc bx r3 _037FCA34: mov r0, r6 ldr r1, [sp] bl FUN_037FBDF4 strb r4, [r8, #34] ; 0x22 mov r0, r8 bl FUN_037FCB80 ldrb r0, [r8, #3] bic r0, r0, #248 ; 0xf8 strb r0, [r8, #3] ldrb r0, [r8, #3] bic r0, r0, #1 strb r0, [r8, #3] _037FCA64: add r6, r6, #1 mov r7, r7, lsr #1 _037FCA6C: cmp r6, #16 bge _037FCA7C cmp r7, #0 bne _037FC9EC _037FCA7C: ands r0, r9, #1 ldrne r0, _037FCAB4 ; =_03807F44 ldrne r1, [r0] orrne r1, r1, sl strne r1, [r0] ldreq r0, _037FCAB0 ; =_03807F48 ldreq r1, [r0] orreq r1, r1, sl streq r1, [r0] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FCAAC: .word _03807F6C _037FCAB0: .word _03807F48 _037FCAB4: .word _03807F44 arm_func_start FUN_037FCAB8 FUN_037FCAB8: ; 0x037FCAB8 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov r8, #0 mov r6, r8 mov r5, r8 mov r4, r8 ldr fp, _037FCB78 ; =_03807F6C mov r7, #1 b _037FCB5C _037FCAE0: ands r0, sl, #1 beq _037FCB54 mov r0, #84 ; 0x54 mla r9, r8, r0, fp ldr r0, _037FCB7C ; =_03807F48 ldr r1, [r0] mov r0, r7, lsl r8 ands r0, r1, r0 bne _037FCB54 ldr r3, [r9, #72] ; 0x48 cmp r3, #0 beq _037FCB24 mov r0, r9 mov r1, r6 ldr r2, [r9, #76] ; 0x4c mov lr, pc bx r3 _037FCB24: mov r0, r8 mov r1, r5 bl FUN_037FBDF4 strb r4, [r9, #34] ; 0x22 mov r0, r9 bl FUN_037FCB80 ldrb r0, [r9, #3] bic r0, r0, #248 ; 0xf8 strb r0, [r9, #3] ldrb r0, [r9, #3] bic r0, r0, #1 strb r0, [r9, #3] _037FCB54: add r8, r8, #1 mov sl, sl, lsr #1 _037FCB5C: cmp r8, #16 bge _037FCB6C cmp sl, #0 bne _037FCAE0 _037FCB6C: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FCB78: .word _03807F6C _037FCB7C: .word _03807F48 arm_func_start FUN_037FCB80 FUN_037FCB80: ; 0x037FCB80 cmp r0, #0 movne r1, #0 strne r1, [r0, #72] ; 0x48 strne r1, [r0, #76] ; 0x4c bx lr arm_func_start FUN_037FCB94 FUN_037FCB94: ; 0x037FCB94 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov r9, r1 mov fp, r3 ldr r0, _037FCCBC ; =_03807F48 ldr r0, [r0] mvn r0, r0 and sl, sl, r0 cmp r2, #0 ldreq r0, _037FCCC0 ; =_03807F44 ldreq r0, [r0] mvneq r0, r0 andeq sl, sl, r0 mov r8, #0 mov r7, r8 mov r5, #1 mov r4, #84 ; 0x54 _037FCBDC: ldr r0, _037FCCC4 ; =_03807298 ldrb r1, [r0, r7] mov r0, r5, lsl r1 ands r0, sl, r0 beq _037FCC34 ldr r0, _037FCCC8 ; =_03807F6C mla r6, r1, r4, r0 cmp r8, #0 moveq r8, r6 beq _037FCC34 ldrb r1, [r8, #34] ; 0x22 ldrb r0, [r6, #34] ; 0x22 cmp r0, r1 bhi _037FCC34 cmp r0, r1 bne _037FCC30 mov r0, r8 mov r1, r6 bl FUN_037FC63C cmp r0, #0 bge _037FCC34 _037FCC30: mov r8, r6 _037FCC34: add r7, r7, #1 cmp r7, #16 blt _037FCBDC cmp r8, #0 moveq r0, #0 beq _037FCCB0 ldrb r0, [r8, #34] ; 0x22 cmp r9, r0 movlt r0, #0 blt _037FCCB0 ldr r3, [r8, #72] ; 0x48 cmp r3, #0 beq _037FCC7C mov r0, r8 mov r1, #0 ldr r2, [r8, #76] ; 0x4c mov lr, pc bx r3 _037FCC7C: ldrb r0, [r8, #3] bic r0, r0, #248 ; 0xf8 orr r0, r0, #16 strb r0, [r8, #3] ldrb r0, [r8, #3] bic r0, r0, #1 strb r0, [r8, #3] mov r0, r8 mov r1, fp ldr r2, [sp, #40] ; 0x28 mov r3, r9 bl FUN_037FC6E8 mov r0, r8 _037FCCB0: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FCCBC: .word _03807F48 _037FCCC0: .word _03807F44 _037FCCC4: .word _03807298 _037FCCC8: .word _03807F6C arm_func_start FUN_037FCCCC FUN_037FCCCC: ; 0x037FCCCC ldrb r0, [r0, #3] mov r0, r0, lsl #31 mov r0, r0, lsr #31 bx lr arm_func_start FUN_037FCCDC FUN_037FCCDC: ; 0x037FCCDC mov r1, #3 strb r1, [r0, #2] bx lr arm_func_start FUN_037FCCE8 FUN_037FCCE8: ; 0x037FCCE8 stmdb sp!, {r4, lr} mov r4, r0 mov r0, r1 bl FUN_037FC794 strh r0, [r4, #32] ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FCD04 FUN_037FCD04: ; 0x037FCD04 strb r1, [r0, #29] bx lr arm_func_start FUN_037FCD0C FUN_037FCD0C: ; 0x037FCD0C stmdb sp!, {r4, lr} mov r4, r0 mov r0, r1 bl FUN_037FC794 strh r0, [r4, #30] ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FCD28 FUN_037FCD28: ; 0x037FCD28 cmp r1, #109 ; 0x6d rsblt r1, r1, #255 ; 0xff strltb r1, [r0, #28] rsbge r2, r1, #127 ; 0x7f ldrge r1, _037FCD48 ; =_038072A8 ldrgeb r1, [r1, r2] strgeb r1, [r0, #28] bx lr _037FCD48: .word _038072A8 arm_func_start FUN_037FCD4C FUN_037FCD4C: ; 0x037FCD4C cmp r1, #0 beq _037FCDF0 ldrb r1, [r0, #2] cmp r1, #3 addls pc, pc, r1, lsl #2 b _037FCDF0 b _037FCD74 b _037FCDA4 b _037FCDF0 b _037FCDE0 _037FCD74: ldr r1, [r0, #16] rsb r2, r1, #0 ldrb r1, [r0, #28] mul r1, r2, r1 mov r1, r1, asr #8 rsb r1, r1, #0 str r1, [r0, #16] ldr r1, [r0, #16] cmp r1, #0 moveq r1, #1 streqb r1, [r0, #2] b _037FCDF0 _037FCDA4: ldrb r1, [r0, #29] mov r2, r1, lsl #1 ldr r1, _037FCDFC ; =_03807194 ldrsh r1, [r1, r2] mov r3, r1, lsl #7 ldr r2, [r0, #16] ldrh r1, [r0, #30] sub r1, r2, r1 str r1, [r0, #16] ldr r1, [r0, #16] cmp r1, r3 strle r3, [r0, #16] movle r1, #2 strleb r1, [r0, #2] b _037FCDF0 _037FCDE0: ldr r2, [r0, #16] ldrh r1, [r0, #32] sub r1, r2, r1 str r1, [r0, #16] _037FCDF0: ldr r0, [r0, #16] mov r0, r0, asr #7 bx lr _037FCDFC: .word _03807194 arm_func_start FUN_037FCE00 FUN_037FCE00: ; 0x037FCE00 stmfd sp!, {lr} sub sp, sp, #4 ldrb r2, [r0] cmp r2, #14 movcc r0, #0 bcc _037FCE3C cmp r2, #15 movhi r0, #0 bhi _037FCE3C mov r2, #2 strb r2, [r0, #1] ldr r2, _037FCE48 ; =0x00001F46 strh r2, [r0, #60] ; 0x3c bl FUN_037FC69C mov r0, #1 _037FCE3C: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FCE48: .word 0x00001F46 arm_func_start FUN_037FCE4C FUN_037FCE4C: ; 0x037FCE4C stmfd sp!, {lr} sub sp, sp, #4 ldrb r3, [r0] cmp r3, #8 movcc r0, #0 bcc _037FCE90 cmp r3, #13 movhi r0, #0 bhi _037FCE90 mov r3, #1 strb r3, [r0, #1] str r1, [r0, #68] ; 0x44 ldr r1, _037FCE9C ; =0x00001F46 strh r1, [r0, #60] ; 0x3c mov r1, r2 bl FUN_037FC69C mov r0, #1 _037FCE90: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FCE9C: .word 0x00001F46 arm_func_start FUN_037FCEA0 FUN_037FCEA0: ; 0x037FCEA0 stmdb sp!, {r4, lr} mov r4, r0 mov lr, r2 mov r0, #0 strb r0, [r4, #1] add ip, r4, #56 ; 0x38 ldmia r1, {r0, r1, r2} stmia ip, {r0, r1, r2} str lr, [r4, #68] ; 0x44 mov r0, r4 mov r1, r3 bl FUN_037FC69C mov r0, #1 ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FCEDC FUN_037FCEDC: ; 0x037FCEDC stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #28 mov r6, r0 mov r4, #0 mov fp, r4 mov r7, #1 str r4, [sp, #8] mov r0, #127 ; 0x7f str r0, [sp, #20] str r4, [sp, #16] str r4, [sp, #12] str r4, [sp, #4] str r4, [sp] _037FCF10: ldr r8, [sp] mov sl, r8 mov r9, r8 mov r1, #84 ; 0x54 ldr r0, _037FD1E4 ; =_03807F6C mla r5, r4, r1, r0 ldrb r1, [r5, #3] mov r0, r1, lsl #31 movs r0, r0, lsr #31 beq _037FD1CC mov r0, r1, lsl #30 movs r0, r0, lsr #31 beq _037FCF74 bic r0, r1, #248 ; 0xf8 mov r1, r1, lsl #24 mov r1, r1, lsr #27 orr r1, r1, #1 and r1, r1, #255 ; 0xff and r1, r1, #31 orr r0, r0, r1, lsl #3 strb r0, [r5, #3] ldrb r0, [r5, #3] bic r0, r0, #2 strb r0, [r5, #3] b _037FCFC0 _037FCF74: mov r0, r4 bl FUN_037FBCC0 cmp r0, #0 bne _037FCFC0 ldr r3, [r5, #72] ; 0x48 cmp r3, #0 streqb fp, [r5, #34] ; 0x22 beq _037FCFA8 mov r0, r5 mov r1, r7 ldr r2, [r5, #76] ; 0x4c mov lr, pc bx r3 _037FCFA8: ldr r0, [sp, #4] strh r0, [r5, #36] ; 0x24 ldrb r0, [r5, #3] bic r0, r0, #1 strb r0, [r5, #3] b _037FD1CC _037FCFC0: ldrb r0, [r5, #9] mov r1, r0, lsl #1 ldr r0, _037FD1E8 ; =_03807194 ldrsh r0, [r0, r1] add r8, r8, r0 ldrb r1, [r5, #8] ldrb r0, [r5, #5] sub r0, r1, r0 add sl, sl, r0, lsl #6 mov r0, r5 mov r1, r6 bl FUN_037FCD4C add r8, r8, r0 mov r0, r5 mov r1, r6 bl FUN_037FC5CC add r2, sl, r0 ldrsh r0, [r5, #12] add r1, r8, r0 ldrsh r0, [r5, #6] add r8, r1, r0 ldrsh r0, [r5, #14] add sl, r2, r0 mov r0, r5 mov r1, r6 bl FUN_037FC530 ldrb r1, [r5, #40] ; 0x28 cmp r1, #0 beq _037FD05C cmp r1, #1 beq _037FD048 cmp r1, #2 addeq r9, r9, r0 b _037FD060 _037FD048: mov r1, #32768 ; 0x8000 rsb r1, r1, #0 cmp r8, r1 addgt r8, r8, r0 b _037FD060 _037FD05C: add sl, sl, r0 _037FD060: ldrsb r0, [r5, #10] add r9, r9, r0 ldrb r0, [r5, #4] cmp r0, #127 ; 0x7f mulne r0, r9, r0 addne r0, r0, #64 ; 0x40 movne r9, r0, asr #7 ldrsb r0, [r5, #11] add r9, r9, r0 ldrb r0, [r5, #2] cmp r0, #3 bne _037FD0EC ldr r0, _037FD1EC ; =0xFFFFFD2D cmp r8, r0 bgt _037FD0EC ldrb r0, [r5, #3] bic r0, r0, #248 ; 0xf8 orr r0, r0, #16 strb r0, [r5, #3] ldr r3, [r5, #72] ; 0x48 cmp r3, #0 ldreq r0, [sp, #8] streqb r0, [r5, #34] ; 0x22 beq _037FD0D4 mov r0, r5 mov r1, r7 ldr r2, [r5, #76] ; 0x4c mov lr, pc bx r3 _037FD0D4: ldr r0, [sp, #12] strh r0, [r5, #36] ; 0x24 ldrb r0, [r5, #3] bic r0, r0, #1 strb r0, [r5, #3] b _037FD1CC _037FD0EC: mov r0, r8 bl FUN_037FC0F8 mov r8, r0 ldrh r0, [r5, #60] ; 0x3c mov r1, sl bl FUN_037FC17C ldrb r1, [r5, #1] cmp r1, #1 ldreq r1, _037FD1F0 ; =0x0000FFFC andeq r0, r0, r1 moveq r0, r0, lsl #16 moveq r0, r0, lsr #16 adds r9, r9, #64 ; 0x40 ldrmi r9, [sp, #16] bmi _037FD130 cmp r9, #127 ; 0x7f ldrgt r9, [sp, #20] _037FD130: ldrh r1, [r5, #36] ; 0x24 cmp r8, r1 beq _037FD164 strh r8, [r5, #36] ; 0x24 ldrb r2, [r5, #3] bic r1, r2, #248 ; 0xf8 mov r2, r2, lsl #24 mov r2, r2, lsr #27 orr r2, r2, #8 and r2, r2, #255 ; 0xff and r2, r2, #31 orr r1, r1, r2, lsl #3 strb r1, [r5, #3] _037FD164: ldrh r1, [r5, #38] ; 0x26 cmp r0, r1 beq _037FD198 strh r0, [r5, #38] ; 0x26 ldrb r0, [r5, #3] bic r1, r0, #248 ; 0xf8 mov r0, r0, lsl #24 mov r0, r0, lsr #27 orr r0, r0, #4 and r0, r0, #255 ; 0xff and r0, r0, #31 orr r0, r1, r0, lsl #3 strb r0, [r5, #3] _037FD198: ldrb r0, [r5, #35] ; 0x23 cmp r9, r0 beq _037FD1CC strb r9, [r5, #35] ; 0x23 ldrb r0, [r5, #3] bic r1, r0, #248 ; 0xf8 mov r0, r0, lsl #24 mov r0, r0, lsr #27 orr r0, r0, #16 and r0, r0, #255 ; 0xff and r0, r0, #31 orr r0, r1, r0, lsl #3 strb r0, [r5, #3] _037FD1CC: add r4, r4, #1 cmp r4, #16 blt _037FCF10 add sp, sp, #28 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FD1E4: .word _03807F6C _037FD1E8: .word _03807194 _037FD1EC: .word 0xFFFFFD2D _037FD1F0: .word 0x0000FFFC arm_func_start FUN_037FD1F4 FUN_037FD1F4: ; 0x037FD1F4 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} sub sp, sp, #24 mov r8, #0 mov r4, #2 mov r5, #1 mov r6, r8 ldr r7, _037FD3DC ; =_03807F6C mov sl, #84 ; 0x54 _037FD214: mla r9, r8, sl, r7 ldrb r0, [r9, #3] mov r0, r0, lsl #24 movs r0, r0, lsr #27 beq _037FD374 ands r0, r0, #2 beq _037FD23C mov r0, r8 mov r1, r6 bl FUN_037FBDF4 _037FD23C: ldrb r0, [r9, #3] mov r0, r0, lsl #24 mov r1, r0, lsr #27 ands r0, r1, #1 beq _037FD318 ldrb r0, [r9, #1] cmp r0, #0 beq _037FD270 cmp r0, #1 beq _037FD2C8 cmp r0, #2 beq _037FD2F4 b _037FD374 _037FD270: ldrb r0, [r9, #57] ; 0x39 cmp r0, #0 movne r3, r5 moveq r3, r4 ldrh r1, [r9, #36] ; 0x24 ldrh r0, [r9, #62] ; 0x3e str r0, [sp] ldr r0, [r9, #64] ; 0x40 str r0, [sp, #4] and r0, r1, #255 ; 0xff str r0, [sp, #8] mov r0, r1, asr #8 str r0, [sp, #12] ldrh r0, [r9, #38] ; 0x26 str r0, [sp, #16] ldrb r0, [r9, #35] ; 0x23 str r0, [sp, #20] mov r0, r8 ldr r1, [r9, #68] ; 0x44 ldrb r2, [r9, #56] ; 0x38 bl FUN_037FBF88 b _037FD374 _037FD2C8: ldrh r3, [r9, #36] ; 0x24 ldrh r0, [r9, #38] ; 0x26 str r0, [sp] ldrb r0, [r9, #35] ; 0x23 str r0, [sp, #4] mov r0, r8 ldr r1, [r9, #68] ; 0x44 and r2, r3, #255 ; 0xff mov r3, r3, asr #8 bl FUN_037FBED0 b _037FD374 _037FD2F4: ldrh r2, [r9, #36] ; 0x24 ldrb r0, [r9, #35] ; 0x23 str r0, [sp] mov r0, r8 and r1, r2, #255 ; 0xff mov r2, r2, asr #8 ldrh r3, [r9, #38] ; 0x26 bl FUN_037FBE20 b _037FD374 _037FD318: ands r0, r1, #4 beq _037FD32C mov r0, r8 ldrh r1, [r9, #38] ; 0x26 bl FUN_037FBD58 _037FD32C: ldrb r0, [r9, #3] mov r0, r0, lsl #24 mov r0, r0, lsr #27 ands r0, r0, #8 beq _037FD354 ldrh r2, [r9, #36] ; 0x24 mov r0, r8 and r1, r2, #255 ; 0xff mov r2, r2, asr #8 bl FUN_037FBD70 _037FD354: ldrb r0, [r9, #3] mov r0, r0, lsl #24 mov r0, r0, lsr #27 ands r0, r0, #16 beq _037FD374 mov r0, r8 ldrb r1, [r9, #35] ; 0x23 bl FUN_037FBCDC _037FD374: add r8, r8, #1 cmp r8, #16 blt _037FD214 mov r5, #0 ldr r3, _037FD3DC ; =_03807F6C mov r1, #84 ; 0x54 _037FD38C: mla r4, r5, r1, r3 ldrb r0, [r4, #3] mov r0, r0, lsl #24 movs r0, r0, lsr #27 beq _037FD3C4 ands r0, r0, #1 movne r0, r5, lsl #4 addne r0, r0, #67108864 ; 0x4000000 ldrneb r2, [r0, #1027] ; 0x403 orrne r2, r2, #128 ; 0x80 strneb r2, [r0, #1027] ; 0x403 ldrb r0, [r4, #3] bic r0, r0, #248 ; 0xf8 strb r0, [r4, #3] _037FD3C4: add r5, r5, #1 cmp r5, #16 blt _037FD38C add sp, sp, #24 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr} bx lr _037FD3DC: .word _03807F6C arm_func_start FUN_037FD3E0 FUN_037FD3E0: ; 0x037FD3E0 mov ip, #0 ldr r2, _037FD434 ; =_03807F6C mov r0, #84 ; 0x54 _037FD3EC: mul r1, ip, r0 add r3, r2, r1 strb ip, [r2, r1] ldrb r1, [r3, #3] bic r1, r1, #248 ; 0xf8 strb r1, [r3, #3] ldrb r1, [r3, #3] bic r1, r1, #1 strb r1, [r3, #3] add ip, ip, #1 cmp ip, #16 blt _037FD3EC mov r1, #0 ldr r0, _037FD438 ; =_03807F48 str r1, [r0] ldr r0, _037FD43C ; =_03807F44 str r1, [r0] bx lr _037FD434: .word _03807F6C _037FD438: .word _03807F48 _037FD43C: .word _03807F44 arm_func_start FUN_037FD440 FUN_037FD440: ; 0x037FD440 stmdb sp!, {r4, lr} mov r4, r0 cmp r2, #3 addls pc, pc, r2, lsl #2 b _037FD4B8 b _037FD464 b _037FD474 b _037FD484 b _037FD49C _037FD464: ldrb r0, [r4] bic r0, r0, #4 strb r0, [r4] b _037FD4B8 _037FD474: ldrb r0, [r4] orr r0, r0, #4 strb r0, [r4] b _037FD4B8 _037FD484: ldrb r2, [r4] orr r2, r2, #4 strb r2, [r4] mvn r2, #0 bl FUN_037FE588 b _037FD4B8 _037FD49C: ldrb r2, [r4] orr r2, r2, #4 strb r2, [r4] mov r2, #127 ; 0x7f bl FUN_037FE588 mov r0, r4 bl FUN_037FE54C _037FD4B8: ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FD4C0 FUN_037FD4C0: ; 0x037FD4C0 mov r0, #0 ldr r3, _037FD500 ; =_038086EC b _037FD4F0 _037FD4CC: add ip, r3, r0, lsl #6 ldrb r1, [r3, r0, lsl #6] mov r2, r1, lsl #31 movs r2, r2, lsr #31 biceq r1, r1, #1 orreq r1, r1, #1 streqb r1, [ip] bxeq lr add r0, r0, #1 _037FD4F0: cmp r0, #32 blt _037FD4CC mvn r0, #0 bx lr _037FD500: .word _038086EC arm_func_start FUN_037FD504 FUN_037FD504: ; 0x037FD504 ldr r2, _037FD544 ; =_03807F68 ldr r2, [r2] cmp r2, #0 moveq r0, #0 bxeq lr cmp r1, #16 addge r2, r2, #608 ; 0x260 subge r0, r1, #16 addge r0, r2, r0, lsl #1 bxge lr add r3, r2, #32 ldrb r2, [r0, #1] mov r0, #36 ; 0x24 mla r0, r2, r0, r3 add r0, r0, r1, lsl #1 bx lr _037FD544: .word _03807F68 arm_func_start FUN_037FD548 FUN_037FD548: ; 0x037FD548 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r0 mov r7, r1 mov r6, #0 mov r5, r6 mov r4, #1 _037FD560: mov r0, r8 mov r1, r5 bl FUN_037FE460 cmp r0, #0 beq _037FD5A8 ldr r1, [r0, #40] ; 0x28 cmp r1, #0 beq _037FD5A8 mov r1, r8 mov r2, r5 mov r3, r7 bl FUN_037FD5C8 cmp r0, #0 moveq r6, r4 beq _037FD5A8 mov r0, r8 mov r1, r5 bl FUN_037FE3EC _037FD5A8: add r5, r5, #1 cmp r5, #16 blt _037FD560 cmp r6, #0 moveq r0, #1 movne r0, #0 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr arm_func_start FUN_037FD5C8 FUN_037FD5C8: ; 0x037FD5C8 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #52 ; 0x34 mov r9, r0 mov r8, r1 str r3, [sp, #4] ldr r2, [r9, #60] ; 0x3c b _037FD61C _037FD5E4: ldr r0, [r2, #52] ; 0x34 cmp r0, #0 subgt r0, r0, #1 strgt r0, [r2, #52] ; 0x34 ldrb r0, [r2, #3] mov r0, r0, lsl #29 movs r0, r0, lsr #31 bne _037FD618 ldr r1, [r2, #20] ldr r0, [r2, #24] cmp r1, r0 addlt r0, r1, #1 strlt r0, [r2, #20] _037FD618: ldr r2, [r2, #80] ; 0x50 _037FD61C: cmp r2, #0 bne _037FD5E4 ldrb r1, [r9] mov r0, r1, lsl #27 movs r0, r0, lsr #31 beq _037FD64C ldr r0, [r9, #60] ; 0x3c cmp r0, #0 movne r0, #0 bne _037FDF84 bic r0, r1, #16 strb r0, [r9] _037FD64C: ldr r0, [r9, #32] cmp r0, #0 ble _037FD670 sub r0, r0, #1 str r0, [r9, #32] ldr r0, [r9, #32] cmp r0, #0 movgt r0, #0 bgt _037FDF84 _037FD670: ldr r0, [r9, #40] ; 0x28 bl FUN_037FE9B8 add r0, r9, #40 ; 0x28 str r0, [sp, #28] mov r0, #2 str r0, [sp, #32] mov r0, #127 ; 0x7f str r0, [sp, #36] ; 0x24 mov fp, #0 mvn r0, #0 str r0, [sp, #40] ; 0x28 mov sl, #1 mov r0, #3 str r0, [sp, #20] mov r0, #4 str r0, [sp, #24] b _037FDF64 _037FD6B4: mov r4, fp mov r6, sl ldr r0, [r9, #40] ; 0x28 bl FUN_037FE968 mov r7, r0 ldr r0, [r9, #40] ; 0x28 add r0, r0, #1 str r0, [r9, #40] ; 0x28 cmp r7, #162 ; 0xa2 bne _037FD700 ldr r0, [r9, #40] ; 0x28 bl FUN_037FE968 mov r7, r0 ldr r0, [r9, #40] ; 0x28 add r0, r0, #1 str r0, [r9, #40] ; 0x28 ldrb r0, [r9] mov r0, r0, lsl #25 mov r6, r0, lsr #31 _037FD700: cmp r7, #160 ; 0xa0 bne _037FD72C ldr r0, [r9, #40] ; 0x28 bl FUN_037FE968 mov r7, r0 ldr r0, [r9, #40] ; 0x28 add r0, r0, #1 str r0, [r9, #40] ; 0x28 ldr r0, [sp, #20] str r0, [sp, #8] mov r4, sl _037FD72C: cmp r7, #161 ; 0xa1 bne _037FD758 ldr r0, [r9, #40] ; 0x28 bl FUN_037FE968 mov r7, r0 ldr r0, [r9, #40] ; 0x28 add r0, r0, #1 str r0, [r9, #40] ; 0x28 ldr r0, [sp, #24] str r0, [sp, #8] mov r4, sl _037FD758: ands r0, r7, #128 ; 0x80 bne _037FD82C ldr r0, [r9, #40] ; 0x28 bl FUN_037FE968 str r0, [sp, #12] ldr r0, [sp, #28] ldr r0, [r0] add r1, r0, #1 ldr r0, [sp, #28] str r1, [r0] cmp r4, #0 ldrne r2, [sp, #8] ldreq r2, [sp, #32] mov r0, r9 mov r1, r8 bl FUN_037FE7B0 mov r5, r0 ldrsb r0, [r9, #19] add r4, r7, r0 cmp r6, #0 beq _037FDF64 cmp r4, #0 movlt r4, fp blt _037FD7C0 cmp r4, #127 ; 0x7f ldrgt r4, [sp, #36] ; 0x24 _037FD7C0: ldrb r0, [r9] mov r0, r0, lsl #29 movs r0, r0, lsr #31 bne _037FD800 ldr r0, [sp, #4] cmp r0, #0 beq _037FD800 cmp r5, #0 movgt r0, r5 ldrle r0, [sp, #40] ; 0x28 str r0, [sp] mov r0, r9 mov r1, r8 mov r2, r4 ldr r3, [sp, #12] bl FUN_037FDF94 _037FD800: strb r4, [r9, #20] ldrb r0, [r9] mov r0, r0, lsl #30 movs r0, r0, lsr #31 beq _037FDF64 str r5, [r9, #32] cmp r5, #0 ldreqb r0, [r9] orreq r0, r0, #16 streqb r0, [r9] b _037FDF64 _037FD82C: and r0, r7, #240 ; 0xf0 cmp r0, #192 ; 0xc0 bgt _037FD868 cmp r0, #192 ; 0xc0 bge _037FD9B8 cmp r0, #144 ; 0x90 bgt _037FD85C cmp r0, #144 ; 0x90 bge _037FD8D8 cmp r0, #128 ; 0x80 beq _037FD890 b _037FDF64 _037FD85C: cmp r0, #176 ; 0xb0 beq _037FDC68 b _037FDF64 _037FD868: cmp r0, #224 ; 0xe0 bgt _037FD884 cmp r0, #224 ; 0xe0 bge _037FDC14 cmp r0, #208 ; 0xd0 beq _037FD9B8 b _037FDF64 _037FD884: cmp r0, #240 ; 0xf0 beq _037FDEC0 b _037FDF64 _037FD890: cmp r4, #0 ldrne r2, [sp, #8] ldreq r2, [sp, #32] mov r0, r9 mov r1, r8 bl FUN_037FE7B0 cmp r6, #0 beq _037FDF64 cmp r7, #128 ; 0x80 beq _037FD8C4 cmp r7, #129 ; 0x81 beq _037FD8CC b _037FDF64 _037FD8C4: str r0, [r9, #32] b _037FDF64 _037FD8CC: cmp r0, #65536 ; 0x10000 strlth r0, [r9, #2] b _037FDF64 _037FD8D8: cmp r7, #147 ; 0x93 beq _037FD8F4 cmp r7, #148 ; 0x94 beq _037FD958 cmp r7, #149 ; 0x95 beq _037FD974 b _037FDF64 _037FD8F4: ldr r0, [r9, #40] ; 0x28 bl FUN_037FE968 mov r4, r0 ldr r0, [r9, #40] ; 0x28 add r0, r0, #1 str r0, [r9, #40] ; 0x28 mov r0, r9 bl FUN_037FE8B8 mov r5, r0 cmp r6, #0 beq _037FDF64 mov r0, r8 mov r1, r4 bl FUN_037FE460 movs r4, r0 beq _037FDF64 cmp r4, r9 beq _037FDF64 mov r1, r8 bl FUN_037FE440 mov r0, r4 ldr r1, [r9, #36] ; 0x24 mov r2, r5 bl FUN_037FE6A8 b _037FDF64 _037FD958: mov r0, r9 bl FUN_037FE8B8 cmp r6, #0 ldrne r1, [r9, #36] ; 0x24 addne r0, r1, r0 strne r0, [r9, #40] ; 0x28 b _037FDF64 _037FD974: mov r0, r9 bl FUN_037FE8B8 cmp r6, #0 beq _037FDF64 ldrb r1, [r9, #59] ; 0x3b cmp r1, #3 bcs _037FDF64 ldr r2, [r9, #40] ; 0x28 add r1, r9, r1, lsl #2 str r2, [r1, #44] ; 0x2c ldrb r1, [r9, #59] ; 0x3b add r1, r1, #1 strb r1, [r9, #59] ; 0x3b ldr r1, [r9, #36] ; 0x24 add r0, r1, r0 str r0, [r9, #40] ; 0x28 b _037FDF64 _037FD9B8: cmp r4, #0 ldrne r2, [sp, #8] moveq r2, fp mov r0, r9 mov r1, r8 bl FUN_037FE7B0 strb r0, [sp, #44] ; 0x2c cmp r6, #0 beq _037FDF64 sub r0, r7, #192 ; 0xc0 cmp r0, #23 addls pc, pc, r0, lsl #2 b _037FDF64 b _037FDBE4 b _037FDA4C b _037FDA64 b _037FDBCC b _037FDBD8 b _037FDA70 b _037FDA7C b _037FDA88 b _037FDB48 b _037FDB90 b _037FDAB0 b _037FDABC b _037FDAC8 b _037FDAD4 b _037FDBB0 b _037FDAA4 b _037FDAE0 b _037FDAEC b _037FDAF8 b _037FDB04 b _037FDB10 b _037FDA58 b _037FDBF4 b _037FDB7C _037FDA4C: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #4] b _037FDF64 _037FDA58: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #5] b _037FDF64 _037FDA64: ldrb r0, [sp, #44] ; 0x2c strb r0, [r8, #5] b _037FDF64 _037FDA70: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #7] b _037FDF64 _037FDA7C: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #18] b _037FDF64 _037FDA88: ldrb r0, [r9] bic r1, r0, #2 ldrb r0, [sp, #44] ; 0x2c and r0, r0, #1 orr r0, r1, r0, lsl #1 strb r0, [r9] b _037FDF64 _037FDAA4: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #21] b _037FDF64 _037FDAB0: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #26] b _037FDF64 _037FDABC: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #25] b _037FDF64 _037FDAC8: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #24] b _037FDF64 _037FDAD4: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #27] b _037FDF64 _037FDAE0: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #14] b _037FDF64 _037FDAEC: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #15] b _037FDF64 _037FDAF8: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #16] b _037FDF64 _037FDB04: ldrb r0, [sp, #44] ; 0x2c strb r0, [r9, #17] b _037FDF64 _037FDB10: ldrb r0, [r9, #59] ; 0x3b cmp r0, #3 bcs _037FDF64 ldr r1, [r9, #40] ; 0x28 add r0, r9, r0, lsl #2 str r1, [r0, #44] ; 0x2c ldrb r1, [sp, #44] ; 0x2c ldrb r0, [r9, #59] ; 0x3b add r0, r9, r0 strb r1, [r0, #56] ; 0x38 ldrb r0, [r9, #59] ; 0x3b add r0, r0, #1 strb r0, [r9, #59] ; 0x3b b _037FDF64 _037FDB48: ldrb r0, [r9] bic r1, r0, #8 ldrb r0, [sp, #44] ; 0x2c and r0, r0, #1 orr r0, r1, r0, lsl #3 strb r0, [r9] mov r0, r9 mov r1, r8 ldr r2, [sp, #40] ; 0x28 bl FUN_037FE588 mov r0, r9 bl FUN_037FE54C b _037FDF64 _037FDB7C: mov r0, r9 mov r1, r8 ldrb r2, [sp, #44] ; 0x2c bl FUN_037FD440 b _037FDF64 _037FDB90: ldrb r1, [sp, #44] ; 0x2c ldrsb r0, [r9, #19] add r0, r1, r0 strb r0, [r9, #20] ldrb r0, [r9] orr r0, r0, #32 strb r0, [r9] b _037FDF64 _037FDBB0: ldrb r0, [r9] bic r1, r0, #32 ldrb r0, [sp, #44] ; 0x2c and r0, r0, #1 orr r0, r1, r0, lsl #5 strb r0, [r9] b _037FDF64 _037FDBCC: ldrsb r0, [sp, #44] ; 0x2c strb r0, [r9, #19] b _037FDF64 _037FDBD8: ldrsb r0, [sp, #44] ; 0x2c strb r0, [r9, #6] b _037FDF64 _037FDBE4: ldrb r0, [sp, #44] ; 0x2c sub r0, r0, #64 ; 0x40 strb r0, [r9, #8] b _037FDF64 _037FDBF4: ldr r0, _037FDF90 ; =_03807F4C ldr r0, [r0] cmp r0, #0 beq _037FDF64 mov r0, r8 ldrb r1, [sp, #44] ; 0x2c bl FUN_037FD504 b _037FDF64 _037FDC14: cmp r4, #0 ldrne r2, [sp, #8] moveq r2, sl mov r0, r9 mov r1, r8 bl FUN_037FE7B0 mov r0, r0, lsl #16 mov r0, r0, asr #16 cmp r6, #0 beq _037FDF64 cmp r7, #224 ; 0xe0 beq _037FDC60 cmp r7, #225 ; 0xe1 beq _037FDC58 cmp r7, #227 ; 0xe3 streqh r0, [r9, #22] b _037FDF64 _037FDC58: strh r0, [r8, #24] b _037FDF64 _037FDC60: strh r0, [r9, #28] b _037FDF64 _037FDC68: ldr r0, [r9, #40] ; 0x28 bl FUN_037FE968 str r0, [sp, #16] ldr r0, [r9, #40] ; 0x28 add r0, r0, #1 str r0, [r9, #40] ; 0x28 cmp r4, #0 ldrne r2, [sp, #8] moveq r2, sl mov r0, r9 mov r1, r8 bl FUN_037FE7B0 mov r0, r0, lsl #16 mov r5, r0, asr #16 mov r0, r8 ldr r1, [sp, #16] bl FUN_037FD504 mov r4, r0 cmp r6, #0 beq _037FDF64 cmp r4, #0 beq _037FDF64 sub r0, r7, #176 ; 0xb0 cmp r0, #13 addls pc, pc, r0, lsl #2 b _037FDF64 b _037FDD08 b _037FDD10 b _037FDD20 b _037FDD30 b _037FDD40 b _037FDD5C b _037FDD80 b _037FDF64 b _037FDDB8 b _037FDDE4 b _037FDE10 b _037FDE3C b _037FDE68 b _037FDE94 _037FDD08: strh r5, [r4] b _037FDF64 _037FDD10: ldrsh r0, [r4] add r0, r0, r5 strh r0, [r4] b _037FDF64 _037FDD20: ldrsh r0, [r4] sub r0, r0, r5 strh r0, [r4] b _037FDF64 _037FDD30: ldrsh r0, [r4] mul r1, r0, r5 strh r1, [r4] b _037FDF64 _037FDD40: cmp r5, #0 beq _037FDF64 ldrsh r0, [r4] mov r1, r5 bl _s32_div_f strh r0, [r4] b _037FDF64 _037FDD5C: cmp r5, #0 ldrgesh r0, [r4] movge r0, r0, lsl r5 strgeh r0, [r4] ldrltsh r1, [r4] rsblt r0, r5, #0 movlt r0, r1, asr r0 strlth r0, [r4] b _037FDF64 _037FDD80: mov r6, fp cmp r5, #0 movlt r6, sl rsblt r0, r5, #0 movlt r0, r0, lsl #16 movlt r5, r0, asr #16 bl FUN_037FC058 add r1, r5, #1 mul r1, r0, r1 mov r0, r1, asr #16 cmp r6, #0 rsbne r0, r0, #0 strh r0, [r4] b _037FDF64 _037FDDB8: ldrsh r0, [r4] cmp r0, r5 moveq r2, sl movne r2, fp ldrb r0, [r9] bic r1, r0, #64 ; 0x40 and r0, r2, #255 ; 0xff and r0, r0, #1 orr r0, r1, r0, lsl #6 strb r0, [r9] b _037FDF64 _037FDDE4: ldrsh r0, [r4] cmp r0, r5 movge r2, sl movlt r2, fp ldrb r0, [r9] bic r1, r0, #64 ; 0x40 and r0, r2, #255 ; 0xff and r0, r0, #1 orr r0, r1, r0, lsl #6 strb r0, [r9] b _037FDF64 _037FDE10: ldrsh r0, [r4] cmp r0, r5 movgt r2, sl movle r2, fp ldrb r0, [r9] bic r1, r0, #64 ; 0x40 and r0, r2, #255 ; 0xff and r0, r0, #1 orr r0, r1, r0, lsl #6 strb r0, [r9] b _037FDF64 _037FDE3C: ldrsh r0, [r4] cmp r0, r5 movle r2, sl movgt r2, fp ldrb r0, [r9] bic r1, r0, #64 ; 0x40 and r0, r2, #255 ; 0xff and r0, r0, #1 orr r0, r1, r0, lsl #6 strb r0, [r9] b _037FDF64 _037FDE68: ldrsh r0, [r4] cmp r0, r5 movlt r2, sl movge r2, fp ldrb r0, [r9] bic r1, r0, #64 ; 0x40 and r0, r2, #255 ; 0xff and r0, r0, #1 orr r0, r1, r0, lsl #6 strb r0, [r9] b _037FDF64 _037FDE94: ldrsh r0, [r4] cmp r0, r5 movne r2, sl moveq r2, fp ldrb r0, [r9] bic r1, r0, #64 ; 0x40 and r0, r2, #255 ; 0xff and r0, r0, #1 orr r0, r1, r0, lsl #6 strb r0, [r9] b _037FDF64 _037FDEC0: cmp r6, #0 beq _037FDF64 sub r0, r7, #252 ; 0xfc cmp r0, #3 addls pc, pc, r0, lsl #2 b _037FDF64 b _037FDF10 b _037FDEE8 b _037FDF64 b _037FDF5C _037FDEE8: ldrb r0, [r9, #59] ; 0x3b cmp r0, #0 beq _037FDF64 sub r0, r0, #1 strb r0, [r9, #59] ; 0x3b ldrb r0, [r9, #59] ; 0x3b add r0, r9, r0, lsl #2 ldr r0, [r0, #44] ; 0x2c str r0, [r9, #40] ; 0x28 b _037FDF64 _037FDF10: ldrb r0, [r9, #59] ; 0x3b cmp r0, #0 beq _037FDF64 sub r1, r0, #1 add r2, r9, r1 ldrb r0, [r2, #56] ; 0x38 cmp r0, #0 beq _037FDF40 sub r0, r0, #1 ands r0, r0, #255 ; 0xff streqb r1, [r9, #59] ; 0x3b beq _037FDF64 _037FDF40: strb r0, [r2, #56] ; 0x38 ldrb r0, [r9, #59] ; 0x3b sub r0, r0, #1 add r0, r9, r0, lsl #2 ldr r0, [r0, #44] ; 0x2c str r0, [r9, #40] ; 0x28 b _037FDF64 _037FDF5C: mvn r0, #0 b _037FDF84 _037FDF64: ldr r0, [r9, #32] cmp r0, #0 bne _037FDF80 ldrb r0, [r9] mov r0, r0, lsl #27 movs r0, r0, lsr #31 beq _037FD6B4 _037FDF80: mov r0, #0 _037FDF84: add sp, sp, #52 ; 0x34 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FDF90: .word _03807F4C arm_func_start FUN_037FDF94 FUN_037FDF94: ; 0x037FDF94 stmdb sp!, {r4, r5, r6, r7, r8, lr} sub sp, sp, #24 mov r8, r0 mov r7, r1 mov r6, r2 mov r5, r3 mov r4, #0 ldrb r0, [r8] mov r0, r0, lsl #28 movs r0, r0, lsr #31 beq _037FDFD0 ldr r4, [r8, #60] ; 0x3c cmp r4, #0 strneb r6, [r4, #8] strneb r5, [r4, #9] _037FDFD0: cmp r4, #0 bne _037FE0C4 ldr r0, [r7, #32] ldrh r1, [r8, #2] mov r2, r6 add r3, sp, #8 bl FUN_037FF2C4 cmp r0, #0 beq _037FE18C ldrb r0, [sp, #8] cmp r0, #4 addls pc, pc, r0, lsl #2 b _037FE030 b _037FE030 b _037FE018 b _037FE020 b _037FE028 b _037FE018 _037FE018: ldr r1, _037FE198 ; =0x0000FFFF b _037FE034 _037FE020: mov r1, #16128 ; 0x3f00 b _037FE034 _037FE028: mov r1, #49152 ; 0xc000 b _037FE034 _037FE030: b _037FE18C _037FE034: ldrh r0, [r8, #30] and r0, r1, r0 str r8, [sp] ldrb r2, [r7, #4] ldrb r1, [r8, #18] add r1, r2, r1 ldrb r2, [r8] mov r2, r2, lsl #24 mov r2, r2, lsr #31 ldr r3, _037FE19C ; =FUN_037FE344 bl FUN_037FCB94 movs r4, r0 beq _037FE18C ldrb r0, [r8] mov r0, r0, lsl #28 movs r0, r0, lsr #31 mvnne r3, #0 ldreq r3, [sp, #48] ; 0x30 ldr r0, [r7, #32] str r0, [sp] add r0, sp, #8 str r0, [sp, #4] mov r0, r4 mov r1, r6 mov r2, r5 bl FUN_037FF154 cmp r0, #0 bne _037FE0B8 mov r0, #0 strb r0, [r4, #34] ; 0x22 mov r0, r4 bl FUN_037FCB80 b _037FE18C _037FE0B8: ldr r0, [r8, #60] ; 0x3c str r0, [r4, #80] ; 0x50 str r4, [r8, #60] ; 0x3c _037FE0C4: ldrb r1, [r8, #14] cmp r1, #255 ; 0xff beq _037FE0D8 mov r0, r4 bl FUN_037FCD28 _037FE0D8: ldrb r1, [r8, #15] cmp r1, #255 ; 0xff beq _037FE0EC mov r0, r4 bl FUN_037FCD0C _037FE0EC: ldrb r1, [r8, #16] cmp r1, #255 ; 0xff beq _037FE100 mov r0, r4 bl FUN_037FCD04 _037FE100: ldrb r1, [r8, #17] cmp r1, #255 ; 0xff beq _037FE114 mov r0, r4 bl FUN_037FCCE8 _037FE114: ldrsh r0, [r8, #22] strh r0, [r4, #50] ; 0x32 ldrb r0, [r8] mov r0, r0, lsl #26 movs r0, r0, lsr #31 beq _037FE144 ldrsh r1, [r4, #50] ; 0x32 ldrb r0, [r8, #20] sub r0, r0, r6 mov r0, r0, lsl #22 add r0, r1, r0, asr #16 strh r0, [r4, #50] ; 0x32 _037FE144: ldrb r0, [r8, #21] cmp r0, #0 bne _037FE168 ldr r0, [sp, #48] ; 0x30 str r0, [r4, #24] ldrb r0, [r4, #3] bic r0, r0, #4 strb r0, [r4, #3] b _037FE184 _037FE168: mul r1, r0, r0 ldrsh r0, [r4, #50] ; 0x32 cmp r0, #0 rsblt r0, r0, #0 mul r0, r1, r0 mov r0, r0, asr #11 str r0, [r4, #24] _037FE184: mov r0, #0 str r0, [r4, #20] _037FE18C: add sp, sp, #24 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FE198: .word 0x0000FFFF _037FE19C: .word FUN_037FE344 arm_func_start FUN_037FE1A0 FUN_037FE1A0: ; 0x037FE1A0 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, #0 mov r4, #1 _037FE1B0: mov r0, r6 mov r1, r5 bl FUN_037FE460 cmp r0, #0 beq _037FE1D0 mov r1, r6 mov r2, r4 bl FUN_037FE1E4 _037FE1D0: add r5, r5, #1 cmp r5, #16 blt _037FE1B0 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FE1E4 FUN_037FE1E4: ; 0x037FE1E4 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov fp, r2 ldrb r0, [r1, #5] mov r0, r0, lsl #1 ldr r4, _037FE340 ; =_03807194 ldrsh r3, [r4, r0] ldrb r0, [sl, #4] mov r0, r0, lsl #1 ldrsh r2, [r4, r0] ldrb r0, [sl, #5] mov r0, r0, lsl #1 ldrsh r0, [r4, r0] add r0, r2, r0 add r3, r3, r0 ldrsh r2, [sl, #10] ldrsh r0, [r1, #6] add r2, r2, r0 ldrsb r4, [sl, #6] ldrb r0, [sl, #7] mov r0, r0, lsl #6 mul r1, r4, r0 ldrsh r0, [sl, #12] add r0, r0, r1, asr #7 ldrsb r1, [sl, #8] ldrb r4, [sl, #1] cmp r4, #127 ; 0x7f mulne r4, r1, r4 addne r1, r4, #64 ; 0x40 movne r1, r1, asr #7 ldrsb r4, [sl, #9] add r1, r1, r4 mov r4, #32768 ; 0x8000 rsb r4, r4, #0 cmp r3, r4 movlt r3, r4 mov r4, #32768 ; 0x8000 rsb r4, r4, #0 cmp r2, r4 movlt r2, r4 mvn r4, #127 ; 0x7f cmp r1, r4 movlt r1, r4 blt _037FE2A0 cmp r1, #127 ; 0x7f movgt r1, #127 ; 0x7f _037FE2A0: ldr r9, [sl, #60] ; 0x3c mov r4, #1 mov r3, r3, lsl #16 mov r7, r3, asr #16 mov r0, r0, lsl #16 mov r6, r0, asr #16 mov r0, r1, lsl #24 mov r5, r0, asr #24 mov r0, r2, lsl #16 mov r8, r0, asr #16 b _037FE32C _037FE2CC: strh r8, [r9, #6] ldrb r0, [r9, #2] cmp r0, #3 beq _037FE328 strh r7, [r9, #12] strh r6, [r9, #14] strb r5, [r9, #11] ldrb r0, [sl, #1] strb r0, [r9, #4] ldrh r0, [sl, #24] strh r0, [r9, #40] ; 0x28 ldrh r0, [sl, #26] strh r0, [r9, #42] ; 0x2a ldrh r0, [sl, #28] strh r0, [r9, #44] ; 0x2c ldr r0, [r9, #52] ; 0x34 cmp r0, #0 bne _037FE328 cmp fp, #0 beq _037FE328 strb r4, [r9, #34] ; 0x22 mov r0, r9 bl FUN_037FCCDC _037FE328: ldr r9, [r9, #80] ; 0x50 _037FE32C: cmp r9, #0 bne _037FE2CC add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FE340: .word _03807194 arm_func_start FUN_037FE344 FUN_037FE344: ; 0x037FE344 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 mov r4, r2 cmp r1, #1 bne _037FE368 mov r1, #0 strb r1, [r5, #34] ; 0x22 bl FUN_037FCB80 _037FE368: ldr r1, [r4, #60] ; 0x3c cmp r1, r5 ldreq r0, [r5, #80] ; 0x50 streq r0, [r4, #60] ; 0x3c beq _037FE3A0 b _037FE394 _037FE380: cmp r0, r5 ldreq r0, [r5, #80] ; 0x50 streq r0, [r1, #80] ; 0x50 beq _037FE3A0 mov r1, r0 _037FE394: ldr r0, [r1, #80] ; 0x50 cmp r0, #0 bne _037FE380 _037FE3A0: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FE3AC FUN_037FE3AC: ; 0x037FE3AC stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 mov r4, #0 _037FE3BC: mov r0, r5 mov r1, r4 bl FUN_037FE3EC add r4, r4, #1 cmp r4, #16 blt _037FE3BC ldrb r0, [r5] bic r0, r0, #1 strb r0, [r5] add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FE3EC FUN_037FE3EC: ; 0x037FE3EC stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 mov r4, r1 bl FUN_037FE460 cmp r0, #0 beq _037FE430 mov r1, r5 bl FUN_037FE440 add r3, r5, #8 ldr r2, _037FE43C ; =_038086EC ldrb r1, [r3, r4] ldrb r0, [r2, r1, lsl #6] bic r0, r0, #1 strb r0, [r2, r1, lsl #6] mov r0, #255 ; 0xff strb r0, [r3, r4] _037FE430: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FE43C: .word _038086EC arm_func_start FUN_037FE440 FUN_037FE440: ; 0x037FE440 stmdb sp!, {r4, lr} mov r4, r0 mvn r2, #0 bl FUN_037FE588 mov r0, r4 bl FUN_037FE54C ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FE460 FUN_037FE460: ; 0x037FE460 cmp r1, #15 movgt r0, #0 bxgt lr add r0, r0, r1 ldrb r1, [r0, #8] cmp r1, #255 ; 0xff moveq r0, #0 ldrne r0, _037FE488 ; =_038086EC addne r0, r0, r1, lsl #6 bx lr _037FE488: .word _038086EC arm_func_start FUN_037FE48C FUN_037FE48C: ; 0x037FE48C stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r6, r0 mov r5, #0 add r1, r6, #28 b _037FE4B4 _037FE4A4: ldrh r0, [r1] sub r0, r0, #240 ; 0xf0 strh r0, [r1] add r5, r5, #1 _037FE4B4: ldrh r0, [r6, #28] cmp r0, #240 ; 0xf0 bcs _037FE4A4 mov r4, #0 mov r7, #1 b _037FE4F0 _037FE4CC: mov r0, r6 mov r1, r7 bl FUN_037FD548 cmp r0, #0 beq _037FE4EC mov r0, r6 bl FUN_037FE3AC b _037FE4F8 _037FE4EC: add r4, r4, #1 _037FE4F0: cmp r4, r5 blt _037FE4CC _037FE4F8: ldr r0, _037FE548 ; =_03807F68 ldr r0, [r0] cmp r0, #0 beq _037FE524 add r3, r0, #64 ; 0x40 ldrb r1, [r6, #1] mov r0, #36 ; 0x24 mul r2, r1, r0 ldr r0, [r3, r2] add r0, r0, r4 str r0, [r3, r2] _037FE524: ldrh r2, [r6, #24] ldrh r0, [r6, #26] mul r1, r2, r0 ldrh r0, [r6, #28] add r0, r0, r1, asr #8 strh r0, [r6, #28] add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FE548: .word _03807F68 arm_func_start FUN_037FE54C FUN_037FE54C: ; 0x037FE54C stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 ldr r4, [r5, #60] ; 0x3c b _037FE56C _037FE560: mov r0, r4 bl FUN_037FCB80 ldr r4, [r4, #80] ; 0x50 _037FE56C: cmp r4, #0 bne _037FE560 mov r0, #0 str r0, [r5, #60] ; 0x3c add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FE588 FUN_037FE588: ; 0x037FE588 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r4, r0 mov r7, r2 mov r2, #0 bl FUN_037FE1E4 ldr r6, [r4, #60] ; 0x3c and r5, r7, #255 ; 0xff mov r4, #1 b _037FE5E4 _037FE5B0: mov r0, r6 bl FUN_037FCCCC cmp r0, #0 beq _037FE5E0 cmp r7, #0 blt _037FE5D4 mov r0, r6 mov r1, r5 bl FUN_037FCCE8 _037FE5D4: strb r4, [r6, #34] ; 0x22 mov r0, r6 bl FUN_037FCCDC _037FE5E0: ldr r6, [r6, #80] ; 0x50 _037FE5E4: cmp r6, #0 bne _037FE5B0 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_037FE5F8 FUN_037FE5F8: ; 0x037FE5F8 stmdb sp!, {r4, lr} ldrb r2, [r0] bic r2, r2, #4 strb r2, [r0] str r1, [r0, #32] mov r1, #120 ; 0x78 strh r1, [r0, #24] mov r1, #256 ; 0x100 strh r1, [r0, #26] mov r1, #240 ; 0xf0 strh r1, [r0, #28] mov r1, #127 ; 0x7f strb r1, [r0, #5] mov r3, #0 strh r3, [r0, #6] mov r1, #64 ; 0x40 strb r1, [r0, #4] mov r2, #255 ; 0xff _037FE640: add r1, r0, r3 strb r2, [r1, #8] add r3, r3, #1 cmp r3, #16 blt _037FE640 ldr r2, _037FE6A4 ; =_03807F68 ldr r3, [r2] cmp r3, #0 beq _037FE69C mov r4, #0 ldrb ip, [r0, #1] mov r1, #36 ; 0x24 mla r3, ip, r1, r3 str r4, [r3, #64] ; 0x40 mvn lr, #0 _037FE67C: ldr r3, [r2] ldrb ip, [r0, #1] mla r3, ip, r1, r3 add r3, r3, r4, lsl #1 strh lr, [r3, #32] add r4, r4, #1 cmp r4, #16 blt _037FE67C _037FE69C: ldmia sp!, {r4, lr} bx lr _037FE6A4: .word _03807F68 arm_func_start FUN_037FE6A8 FUN_037FE6A8: ; 0x037FE6A8 str r1, [r0, #36] ; 0x24 ldr r1, [r0, #36] ; 0x24 add r1, r1, r2 str r1, [r0, #40] ; 0x28 bx lr arm_func_start FUN_037FE6BC FUN_037FE6BC: ; 0x037FE6BC stmdb sp!, {r4, lr} mov r4, r0 mov r0, #0 str r0, [r4, #36] ; 0x24 str r0, [r4, #40] ; 0x28 ldrb r1, [r4] orr r1, r1, #2 strb r1, [r4] ldrb r1, [r4] bic r1, r1, #4 strb r1, [r4] ldrb r1, [r4] bic r1, r1, #8 strb r1, [r4] ldrb r1, [r4] bic r1, r1, #16 strb r1, [r4] ldrb r1, [r4] bic r1, r1, #32 strb r1, [r4] ldrb r1, [r4] orr r1, r1, #64 ; 0x40 strb r1, [r4] ldrb r1, [r4] bic r1, r1, #128 ; 0x80 strb r1, [r4] strb r0, [r4, #59] ; 0x3b strh r0, [r4, #2] mov r1, #64 ; 0x40 strb r1, [r4, #18] mov r2, #127 ; 0x7f strb r2, [r4, #4] strb r2, [r4, #5] strh r0, [r4, #10] strb r0, [r4, #8] strb r0, [r4, #9] strb r0, [r4, #6] strh r0, [r4, #12] mov r1, #255 ; 0xff strb r1, [r4, #14] strb r1, [r4, #15] strb r1, [r4, #16] strb r1, [r4, #17] strb r2, [r4, #1] mov r1, #2 strb r1, [r4, #7] mov r1, #60 ; 0x3c strb r1, [r4, #20] strb r0, [r4, #21] strh r0, [r4, #22] strb r0, [r4, #19] ldr r0, _037FE7AC ; =0x0000FFFF strh r0, [r4, #30] add r0, r4, #24 bl FUN_037FC8B8 mov r0, #0 str r0, [r4, #32] str r0, [r4, #60] ; 0x3c ldmia sp!, {r4, lr} bx lr _037FE7AC: .word 0x0000FFFF arm_func_start FUN_037FE7B0 FUN_037FE7B0: ; 0x037FE7B0 stmdb sp!, {r4, r5, r6, lr} mov r4, r0 mov r6, r1 cmp r2, #4 addls pc, pc, r2, lsl #2 b _037FE86C b _037FE7DC b _037FE7F8 b _037FE804 b _037FE83C b _037FE810 _037FE7DC: ldr r0, [r4, #40] ; 0x28 bl FUN_037FE968 mov r5, r0 ldr r0, [r4, #40] ; 0x28 add r0, r0, #1 str r0, [r4, #40] ; 0x28 b _037FE86C _037FE7F8: bl FUN_037FE918 mov r5, r0 b _037FE86C _037FE804: bl FUN_037FE878 mov r5, r0 b _037FE86C _037FE810: ldr r0, [r4, #40] ; 0x28 bl FUN_037FE968 mov r1, r0 ldr r0, [r4, #40] ; 0x28 add r0, r0, #1 str r0, [r4, #40] ; 0x28 mov r0, r6 bl FUN_037FD504 cmp r0, #0 ldrnesh r5, [r0] b _037FE86C _037FE83C: bl FUN_037FE918 mov r5, r0, lsl #16 mov r0, r4 bl FUN_037FE918 mov r0, r0, lsl #16 mov r4, r0, asr #16 bl FUN_037FC058 sub r1, r4, r5, asr #16 add r1, r1, #1 mul r1, r0, r1 mov r0, r1, asr #16 add r5, r0, r5, asr #16 _037FE86C: mov r0, r5 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FE878 FUN_037FE878: ; 0x037FE878 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, #0 add r4, r6, #40 ; 0x28 _037FE888: ldr r0, [r6, #40] ; 0x28 bl FUN_037FE968 ldr r1, [r4] add r1, r1, #1 str r1, [r4] and r1, r0, #127 ; 0x7f orr r5, r1, r5, lsl #7 ands r0, r0, #128 ; 0x80 bne _037FE888 mov r0, r5 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FE8B8 FUN_037FE8B8: ; 0x037FE8B8 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r4, r0 ldr r0, [r4, #40] ; 0x28 bl FUN_037FE968 mov r5, r0 ldr r0, [r4, #40] ; 0x28 add r0, r0, #1 str r0, [r4, #40] ; 0x28 ldr r0, [r4, #40] ; 0x28 bl FUN_037FE968 ldr r1, [r4, #40] ; 0x28 add r1, r1, #1 str r1, [r4, #40] ; 0x28 orr r5, r5, r0, lsl #8 ldr r0, [r4, #40] ; 0x28 bl FUN_037FE968 ldr r1, [r4, #40] ; 0x28 add r1, r1, #1 str r1, [r4, #40] ; 0x28 orr r0, r5, r0, lsl #16 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FE918 FUN_037FE918: ; 0x037FE918 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 ldr r0, [r5, #40] ; 0x28 bl FUN_037FE968 mov r4, r0 ldr r0, [r5, #40] ; 0x28 add r0, r0, #1 str r0, [r5, #40] ; 0x28 ldr r0, [r5, #40] ; 0x28 bl FUN_037FE968 ldr r1, [r5, #40] ; 0x28 add r1, r1, #1 str r1, [r5, #40] ; 0x28 orr r0, r4, r0, lsl #8 mov r0, r0, lsl #16 mov r0, r0, lsr #16 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FE968 FUN_037FE968: ; 0x037FE968 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, _037FE9B0 ; =_03807F50 ldr r1, [r0] cmp r4, r1 bcc _037FE98C ldr r0, [r0, #4] cmp r4, r0 bcc _037FE994 _037FE98C: mov r0, r4 bl FUN_037FE9B8 _037FE994: ldr r0, _037FE9B0 ; =_03807F50 ldr r0, [r0] sub r1, r4, r0 ldr r0, _037FE9B4 ; =_03807F58 ldrb r0, [r0, r1] ldmia sp!, {r4, lr} bx lr _037FE9B0: .word _03807F50 _037FE9B4: .word _03807F58 arm_func_start FUN_037FE9B8 FUN_037FE9B8: ; 0x037FE9B8 bic r2, r0, #3 ldr r0, _037FE9F0 ; =_03807F50 str r2, [r0] add r1, r2, #16 str r1, [r0, #4] ldr r1, [r2] str r1, [r0, #8] ldr r1, [r2, #4] str r1, [r0, #12] ldr r1, [r2, #8] str r1, [r0, #16] ldr r1, [r2, #12] str r1, [r0, #20] bx lr _037FE9F0: .word _03807F50 arm_func_start FUN_037FE9F4 FUN_037FE9F4: ; 0x037FE9F4 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r1 mov r9, r2 mov r8, r3 ldr r7, [sp, #40] ; 0x28 ldr r2, _037FEA94 ; =_038084AC mov r1, #36 ; 0x24 mla fp, r0, r1, r2 mov r6, #0 mov r0, r8, lsl #16 mov r4, r0, lsr #16 and r5, r8, #255 ; 0xff b _037FEA78 _037FEA2C: ands r0, sl, #1 beq _037FEA70 mov r0, fp mov r1, r6 bl FUN_037FE460 cmp r0, #0 beq _037FEA70 cmp r7, #1 beq _037FEA64 cmp r7, #2 beq _037FEA6C cmp r7, #4 streq r8, [r0, r9] b _037FEA70 _037FEA64: strb r5, [r0, r9] b _037FEA70 _037FEA6C: strh r4, [r0, r9] _037FEA70: add r6, r6, #1 mov sl, sl, lsr #1 _037FEA78: cmp r6, #16 bge _037FEA88 cmp sl, #0 bne _037FEA2C _037FEA88: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FEA94: .word _038084AC arm_func_start FUN_037FEA98 FUN_037FEA98: ; 0x037FEA98 stmfd sp!, {lr} sub sp, sp, #4 ldr lr, _037FEAE0 ; =_038084AC mov ip, #36 ; 0x24 mla ip, r0, ip, lr cmp r3, #1 beq _037FEAC8 cmp r3, #2 beq _037FEAD0 cmp r3, #4 streq r2, [ip, r1] b _037FEAD4 _037FEAC8: strb r2, [ip, r1] b _037FEAD4 _037FEAD0: strh r2, [ip, r1] _037FEAD4: add sp, sp, #4 ldmia sp!, {lr} bx lr _037FEAE0: .word _038084AC arm_func_start FUN_037FEAE4 FUN_037FEAE4: ; 0x037FEAE4 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r7, r0 mov r6, r1 mov r5, #0 ldr r4, _037FEB40 ; =_038084AC mov r8, #36 ; 0x24 _037FEAFC: mul r1, r5, r8 add r0, r4, r1 ldrb r1, [r4, r1] mov r1, r1, lsl #31 movs r1, r1, lsr #31 beq _037FEB2C ldr r1, [r0, #32] cmp r7, r1 bhi _037FEB2C cmp r1, r6 bhi _037FEB2C bl FUN_037FE3AC _037FEB2C: add r5, r5, #1 cmp r5, #16 blt _037FEAFC ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FEB40: .word _038084AC arm_func_start FUN_037FEB44 FUN_037FEB44: ; 0x037FEB44 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov r9, r1 mov r7, #0 mov r5, r7 ldr fp, _037FEBDC ; =_038084AC mov r4, #36 ; 0x24 _037FEB64: mul r0, r7, r4 add r8, fp, r0 ldrb r0, [fp, r0] mov r0, r0, lsl #31 movs r0, r0, lsr #31 beq _037FEBC4 mov r6, r5 b _037FEBBC _037FEB84: mov r0, r8 mov r1, r6 bl FUN_037FE460 cmp r0, #0 beq _037FEBB8 ldr r0, [r0, #40] ; 0x28 cmp sl, r0 bhi _037FEBB8 cmp r0, r9 bhi _037FEBB8 mov r0, r8 bl FUN_037FE3AC b _037FEBC4 _037FEBB8: add r6, r6, #1 _037FEBBC: cmp r6, #16 blt _037FEB84 _037FEBC4: add r7, r7, #1 cmp r7, #16 blt _037FEB64 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _037FEBDC: .word _038084AC arm_func_start FUN_037FEBE0 FUN_037FEBE0: ; 0x037FEBE0 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r6, r1 ldr r3, _037FEC54 ; =_038084AC mov r1, #36 ; 0x24 mla r5, r0, r1, r3 mov r4, #0 mov r0, r2, lsl #16 mov r7, r0, lsr #16 b _037FEC38 _037FEC08: ands r0, r6, #1 beq _037FEC30 mov r0, r5 mov r1, r4 bl FUN_037FE460 cmp r0, #0 strneh r7, [r0, #30] ldrneb r1, [r0] orrne r1, r1, #128 ; 0x80 strneb r1, [r0] _037FEC30: add r4, r4, #1 mov r6, r6, lsr #1 _037FEC38: cmp r4, #16 bge _037FEC48 cmp r6, #0 bne _037FEC08 _037FEC48: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FEC54: .word _038084AC arm_func_start FUN_037FEC58 FUN_037FEC58: ; 0x037FEC58 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r1 mov r6, r2 ldr r2, _037FECC8 ; =_038084AC mov r1, #36 ; 0x24 mla r5, r0, r1, r2 mov r4, #0 b _037FECAC _037FEC7C: ands r0, r7, #1 beq _037FECA4 mov r0, r5 mov r1, r4 bl FUN_037FE460 cmp r0, #0 beq _037FECA4 mov r1, r5 mov r2, r6 bl FUN_037FD440 _037FECA4: add r4, r4, #1 mov r7, r7, lsr #1 _037FECAC: cmp r4, #16 bge _037FECBC cmp r7, #0 bne _037FEC7C _037FECBC: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FECC8: .word _038084AC arm_func_start FUN_037FECCC FUN_037FECCC: ; 0x037FECCC stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r6, r1 ldr r2, _037FED90 ; =_038084AC mov r1, #36 ; 0x24 mla r5, r0, r1, r2 mov r8, #0 mov r4, #127 ; 0x7f _037FECE8: mov r0, r5 mov r1, r8 bl FUN_037FE460 movs r7, r0 beq _037FED10 mov r1, r5 mov r2, r4 bl FUN_037FE588 mov r0, r7 bl FUN_037FE54C _037FED10: add r8, r8, #1 cmp r8, #16 blt _037FECE8 bl FUN_037FC39C mov r4, #0 mov r7, r4 b _037FED50 _037FED2C: mov r0, r5 mov r1, r7 bl FUN_037FD548 cmp r0, #0 beq _037FED4C mov r0, r5 bl FUN_037FE3AC b _037FED58 _037FED4C: add r4, r4, #1 _037FED50: cmp r4, r6 bcc _037FED2C _037FED58: bl FUN_037FC3B0 ldr r0, _037FED94 ; =_03807F68 ldr r0, [r0] cmp r0, #0 beq _037FED88 add r3, r0, #64 ; 0x40 ldrb r1, [r5, #1] mov r0, #36 ; 0x24 mul r2, r1, r0 ldr r0, [r3, r2] add r0, r0, r4 str r0, [r3, r2] _037FED88: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FED90: .word _038084AC _037FED94: .word _03807F68 arm_func_start FUN_037FED98 FUN_037FED98: ; 0x037FED98 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 ldr r5, _037FEE18 ; =_038084AC mov r2, #36 ; 0x24 mul r3, r0, r2 add r4, r5, r3 ldrb r0, [r5, r3] bic r2, r0, #4 and r0, r1, #255 ; 0xff and r0, r0, #1 orr r0, r2, r0, lsl #2 strb r0, [r5, r3] cmp r1, #0 beq _037FEE0C mov r7, #0 mov r5, #127 ; 0x7f _037FEDD8: mov r0, r4 mov r1, r7 bl FUN_037FE460 movs r6, r0 beq _037FEE00 mov r1, r4 mov r2, r5 bl FUN_037FE588 mov r0, r6 bl FUN_037FE54C _037FEE00: add r7, r7, #1 cmp r7, #16 blt _037FEDD8 _037FEE0C: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FEE18: .word _038084AC arm_func_start FUN_037FEE1C FUN_037FEE1C: ; 0x037FEE1C stmdb sp!, {r4, lr} mov r4, r0 ldr r2, _037FEE70 ; =_038084AC mov r0, #36 ; 0x24 mul r1, r4, r0 add r0, r2, r1 ldrb r1, [r2, r1] mov r1, r1, lsl #31 movs r1, r1, lsr #31 beq _037FEE68 bl FUN_037FE3AC ldr r0, _037FEE74 ; =_03807F68 ldr r2, [r0] cmp r2, #0 ldrne r1, [r2, #4] movne r0, #1 mvnne r0, r0, lsl r4 andne r0, r1, r0 strne r0, [r2, #4] _037FEE68: ldmia sp!, {r4, lr} bx lr _037FEE70: .word _038084AC _037FEE74: .word _03807F68 arm_func_start FUN_037FEE78 FUN_037FEE78: ; 0x037FEE78 stmdb sp!, {r4, lr} mov r4, r0 bl FUN_037FEEB4 mov r0, r4 bl FUN_037FEE94 ldmia sp!, {r4, lr} bx lr arm_func_start FUN_037FEE94 FUN_037FEE94: ; 0x037FEE94 ldr r2, _037FEEB0 ; =_038084AC mov r1, #36 ; 0x24 mul r1, r0, r1 ldrb r0, [r2, r1] orr r0, r0, #2 strb r0, [r2, r1] bx lr _037FEEB0: .word _038084AC arm_func_start FUN_037FEEB4 FUN_037FEEB4: ; 0x037FEEB4 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r4, r0 mov r8, r1 mov r6, r2 mov r5, r3 ldr r1, _037FEFFC ; =_038084AC mov r0, #36 ; 0x24 mul r0, r4, r0 add r7, r1, r0 ldrb r0, [r1, r0] mov r0, r0, lsl #31 movs r0, r0, lsr #31 beq _037FEEF4 mov r0, r7 bl FUN_037FE3AC _037FEEF4: mov r0, r7 mov r1, r5 bl FUN_037FE5F8 bl FUN_037FD4C0 movs r9, r0 bmi _037FEFF0 ldr r0, _037FF000 ; =_038086EC add r5, r0, r9, lsl #6 mov r0, r5 bl FUN_037FE6BC mov r0, r5 mov r1, r8 mov r2, r6 bl FUN_037FE6A8 strb r9, [r7, #8] ldr r0, [r5, #40] ; 0x28 bl FUN_037FE9B8 ldr r0, [r5, #40] ; 0x28 bl FUN_037FE968 add r2, r5, #40 ; 0x28 ldr r1, [r5, #40] ; 0x28 add r1, r1, #1 str r1, [r5, #40] ; 0x28 cmp r0, #254 ; 0xfe ldrne r0, [r2] subne r0, r0, #1 strne r0, [r2] bne _037FEFB8 mov r0, r5 bl FUN_037FE918 mov r0, r0, lsl #15 mov r5, r0, lsr #16 mov r6, #1 ldr r8, _037FF000 ; =_038086EC b _037FEFB0 _037FEF80: ands r0, r5, #1 beq _037FEFA4 bl FUN_037FD4C0 movs r9, r0 bmi _037FEFB8 add r0, r8, r9, lsl #6 bl FUN_037FE6BC add r0, r7, r6 strb r9, [r0, #8] _037FEFA4: add r6, r6, #1 mov r0, r5, lsl #15 mov r5, r0, lsr #16 _037FEFB0: cmp r5, #0 bne _037FEF80 _037FEFB8: ldrb r0, [r7] bic r0, r0, #1 orr r0, r0, #1 strb r0, [r7] ldrb r0, [r7] bic r0, r0, #2 strb r0, [r7] ldr r0, _037FF004 ; =_03807F68 ldr r2, [r0] cmp r2, #0 ldrne r1, [r2, #4] movne r0, #1 orrne r0, r1, r0, lsl r4 strne r0, [r2, #4] _037FEFF0: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037FEFFC: .word _038084AC _037FF000: .word _038086EC _037FF004: .word _03807F68 arm_func_start FUN_037FF008 FUN_037FF008: ; 0x037FF008 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} mov r8, r0 mov r5, #0 mov r6, r5 mov sl, #1 ldr r4, _037FF0A0 ; =_038084AC mov r9, #36 ; 0x24 _037FF024: mul r0, r6, r9 add r7, r4, r0 ldrb r1, [r4, r0] mov r0, r1, lsl #31 movs r0, r0, lsr #31 beq _037FF07C mov r0, r1, lsl #30 movs r0, r0, lsr #31 beq _037FF06C cmp r8, #0 beq _037FF064 mov r0, r1, lsl #29 movs r0, r0, lsr #31 bne _037FF064 mov r0, r7 bl FUN_037FE48C _037FF064: mov r0, r7 bl FUN_037FE1A0 _037FF06C: ldrb r0, [r7] mov r0, r0, lsl #31 movs r0, r0, lsr #31 orrne r5, r5, sl, lsl r6 _037FF07C: add r6, r6, #1 cmp r6, #16 blt _037FF024 ldr r0, _037FF0A4 ; =_03807F68 ldr r0, [r0] cmp r0, #0 strne r5, [r0, #4] ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr} bx lr _037FF0A0: .word _038084AC _037FF0A4: .word _03807F68 arm_func_start FUN_037FF0A8 FUN_037FF0A8: ; 0x037FF0A8 stmfd sp!, {lr} sub sp, sp, #4 mov lr, #0 ldr r3, _037FF10C ; =_038084AC mov r0, #36 ; 0x24 _037FF0BC: mul r2, lr, r0 add ip, r3, r2 ldrb r1, [r3, r2] bic r1, r1, #1 strb r1, [r3, r2] strb lr, [ip, #1] add lr, lr, #1 cmp lr, #16 blt _037FF0BC mov r2, #0 ldr r1, _037FF110 ; =_038086EC _037FF0E8: ldrb r0, [r1, r2, lsl #6] bic r0, r0, #1 strb r0, [r1, r2, lsl #6] add r2, r2, #1 cmp r2, #32 blt _037FF0E8 add sp, sp, #4 ldmia sp!, {lr} bx lr _037FF10C: .word _038084AC _037FF110: .word _038086EC arm_func_start FUN_037FF114 FUN_037FF114: ; 0x037FF114 stmfd sp!, {lr} sub sp, sp, #4 add r0, r0, r1, lsl #3 ldr r0, [r0, #24] cmp r0, #0 moveq r0, #0 beq _037FF148 ldr r1, [r0, #56] ; 0x38 cmp r2, r1 movcs r0, #0 bcs _037FF148 mov r1, r2 bl FUN_037FF27C _037FF148: add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_037FF154 FUN_037FF154: ; 0x037FF154 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r9, r0 mov r8, r1 mov r7, r2 mov r6, r3 ldr r5, [sp, #36] ; 0x24 ldrb r4, [r5, #10] cmp r4, #255 ; 0xff mvneq r6, #0 moveq r4, #0 ldrb r0, [r5] cmp r0, #4 addls pc, pc, r0, lsl #2 b _037FF210 b _037FF210 b _037FF1A4 b _037FF1EC b _037FF200 b _037FF1A4 _037FF1A4: cmp r0, #1 ldrneh r1, [r5, #4] ldrneh r0, [r5, #2] orrne r1, r0, r1, lsl #16 bne _037FF1CC ldr r0, [sp, #32] ldrh r1, [r5, #4] ldrh r2, [r5, #2] bl FUN_037FF114 mov r1, r0 _037FF1CC: cmp r1, #0 moveq r0, #0 beq _037FF214 mov r0, r9 add r2, r1, #12 mov r3, r6 bl FUN_037FCEA0 b _037FF214 _037FF1EC: mov r0, r9 ldrh r1, [r5, #2] mov r2, r6 bl FUN_037FCE4C b _037FF214 _037FF200: mov r0, r9 mov r1, r6 bl FUN_037FCE00 b _037FF214 _037FF210: mov r0, #0 _037FF214: cmp r0, #0 moveq r0, #0 beq _037FF270 strb r8, [r9, #8] ldrb r0, [r5, #6] strb r0, [r9, #5] strb r7, [r9, #9] mov r0, r9 ldrb r1, [r5, #7] bl FUN_037FCD28 mov r0, r9 ldrb r1, [r5, #8] bl FUN_037FCD0C mov r0, r9 ldrb r1, [r5, #9] bl FUN_037FCD04 mov r0, r9 mov r1, r4 bl FUN_037FCCE8 ldrb r0, [r5, #11] sub r0, r0, #64 ; 0x40 strb r0, [r9, #10] mov r0, #1 _037FF270: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr arm_func_start FUN_037FF27C FUN_037FF27C: ; 0x037FF27C stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 mov r4, r1 bl FUN_037FC350 add r0, r5, r4, lsl #2 ldr r4, [r0, #60] ; 0x3c cmp r4, #0 beq _037FF2AC cmp r4, #33554432 ; 0x2000000 addcc r4, r5, r4 b _037FF2B0 _037FF2AC: mov r4, #0 _037FF2B0: bl FUN_037FC34C mov r0, r4 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr arm_func_start FUN_037FF2C4 FUN_037FF2C4: ; 0x037FF2C4 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r6, r0 movs r7, r1 mov r5, r2 mov r4, r3 movmi r0, #0 bmi _037FF43C bl FUN_037FC350 ldr r0, [r6, #56] ; 0x38 cmp r7, r0 bcc _037FF300 bl FUN_037FC34C mov r0, #0 b _037FF43C _037FF300: add r0, r6, r7, lsl #2 ldr r3, [r0, #60] ; 0x3c strb r3, [r4] ldrb r0, [r4] cmp r0, #17 addls pc, pc, r0, lsl #2 b _037FF428 b _037FF428 b _037FF364 b _037FF364 b _037FF364 b _037FF364 b _037FF364 b _037FF428 b _037FF428 b _037FF428 b _037FF428 b _037FF428 b _037FF428 b _037FF428 b _037FF428 b _037FF428 b _037FF428 b _037FF384 b _037FF3D4 _037FF364: add r3, r6, r3, lsr #8 add r2, r4, #2 mov r1, #5 _037FF370: ldrh r0, [r3], #2 strh r0, [r2], #2 subs r1, r1, #1 bne _037FF370 b _037FF434 _037FF384: add r2, r6, r3, lsr #8 ldrb r1, [r2, #1] ldrb r0, [r6, r3, lsr #8] cmp r5, r0 blt _037FF3A0 cmp r5, r1 ble _037FF3AC _037FF3A0: bl FUN_037FC34C mov r0, #0 b _037FF43C _037FF3AC: sub r1, r5, r0 mov r0, #12 mla r0, r1, r0, r2 add r2, r0, #2 mov r1, #6 _037FF3C0: ldrh r0, [r2], #2 strh r0, [r4], #2 subs r1, r1, #1 bne _037FF3C0 b _037FF434 _037FF3D4: mov r2, #0 add r1, r6, r3, lsr #8 b _037FF3F8 _037FF3E0: add r2, r2, #1 cmp r2, #8 blt _037FF3F8 bl FUN_037FC34C mov r0, #0 b _037FF43C _037FF3F8: ldrb r0, [r1, r2] cmp r5, r0 bgt _037FF3E0 mov r0, #12 mla r0, r2, r0, r1 add r2, r0, #8 mov r1, #6 _037FF414: ldrh r0, [r2], #2 strh r0, [r4], #2 subs r1, r1, #1 bne _037FF414 b _037FF434 _037FF428: bl FUN_037FC34C mov r0, #0 b _037FF43C _037FF434: bl FUN_037FC34C mov r0, #1 _037FF43C: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_037FF448 FUN_037FF448: ; 0x037FF448 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r5, #0 mov r4, r5 ldr r0, _037FF4E4 ; =_03807F68 ldr r0, [r0] cmp r0, #0 beq _037FF4D8 mov r7, r5 mov r6, #1 _037FF470: mov r0, r7 bl FUN_037FBCC0 cmp r0, #0 orrne r0, r5, r6, lsl r7 movne r0, r0, lsl #16 movne r5, r0, lsr #16 add r7, r7, #1 cmp r7, #16 blt _037FF470 mov r0, #0 bl FUN_037FC4C0 cmp r0, #0 orrne r0, r4, #1 movne r0, r0, lsl #16 movne r4, r0, lsr #16 mov r0, #1 bl FUN_037FC4C0 cmp r0, #0 orrne r0, r4, #2 movne r0, r0, lsl #16 movne r4, r0, lsr #16 ldr r0, _037FF4E4 ; =_03807F68 ldr r1, [r0] strh r5, [r1, #8] ldr r0, [r0] strh r4, [r0, #10] _037FF4D8: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FF4E4: .word _03807F68 arm_func_start FUN_037FF4E8 FUN_037FF4E8: ; 0x037FF4E8 ldr r2, _037FF500 ; =_03807F68 ldr r2, [r2] add r0, r2, r0, lsl #1 add r0, r0, #512 ; 0x200 strh r1, [r0, #96] ; 0x60 bx lr _037FF500: .word _03807F68 arm_func_start FUN_037FF504 FUN_037FF504: ; 0x037FF504 ldr r3, _037FF520 ; =_03807F68 ldr ip, [r3] mov r3, #36 ; 0x24 mla r3, r0, r3, ip add r0, r3, r1, lsl #1 strh r2, [r0, #32] bx lr _037FF520: .word _03807F68 arm_func_start FUN_037FF524 FUN_037FF524: ; 0x037FF524 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, #7 mov r4, #0 _037FF534: mov r0, r5 mov r1, r6 mov r2, r4 bl FUN_037FB6DC cmp r0, #0 blt _037FF534 ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FF554 FUN_037FF554: ; 0x037FF554 stmdb sp!, {r4, lr} ldr r1, _037FF590 ; =_03808EEC add r4, r1, r0, lsl #6 ldrb r0, [r1, r0, lsl #6] cmp r0, #0 beq _037FF588 add r0, r4, #20 bl FUN_037FA650 ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] mov r0, #0 strb r0, [r4] _037FF588: ldmia sp!, {r4, lr} bx lr _037FF590: .word _03808EEC arm_func_start FUN_037FF594 FUN_037FF594: ; 0x037FF594 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #12 mov r4, r0 ldr r0, _037FF654 ; =_03808EEC add r5, r0, r4, lsl #6 ldrb r0, [r0, r4, lsl #6] cmp r0, #0 beq _037FF5C4 add r0, r5, #20 bl FUN_037FA650 mov r0, #0 strb r0, [r5] _037FF5C4: ldr r9, [r5, #4] ldr r8, [r5, #8] ldr r7, [r5, #12] ldr r6, [r5, #16] ldrb r0, [r5, #1] orr r4, r4, r0, lsl #8 add r0, r5, #20 bl FUN_037FA900 mov r0, #0 cmp r6, r0 cmpeq r7, r0 bne _037FF610 str r4, [sp] add r0, r5, #20 mov r1, r9 mov r2, r8 ldr r3, _037FF658 ; =FUN_037FF524 bl FUN_037FA75C b _037FF640 _037FF610: bl FUN_037FA364 mov r2, r0 ldr r0, _037FF658 ; =FUN_037FF524 str r0, [sp, #4] str r4, [sp, #8] mov r3, r7 str r6, [sp] add r0, r5, #20 adds r4, r9, r2 adc r2, r8, r1 mov r1, r4 bl FUN_037FA6E0 _037FF640: mov r0, #1 strb r0, [r5] add sp, sp, #12 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037FF654: .word _03808EEC _037FF658: .word FUN_037FF524 arm_func_start FUN_037FF65C FUN_037FF65C: ; 0x037FF65C stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r8, r1 mov r7, r2 mov r6, r3 ldr r5, [sp, #24] ldr r1, _037FF6B4 ; =_03808EEC add r4, r1, r0, lsl #6 ldrb r0, [r1, r0, lsl #6] cmp r0, #0 beq _037FF694 add r0, r4, #20 bl FUN_037FA650 mov r0, #0 strb r0, [r4] _037FF694: str r8, [r4, #4] str r7, [r4, #8] str r6, [r4, #12] str r5, [r4, #16] ldr r0, [sp, #28] strb r0, [r4, #1] ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _037FF6B4: .word _03808EEC arm_func_start FUN_037FF6B8 FUN_037FF6B8: ; 0x037FF6B8 mov r3, #0 mov r2, r3 ldr r1, _037FF6E0 ; =_03807F6C _037FF6C4: add r0, r1, r3, lsl #6 strb r2, [r0, #3968] ; 0xf80 strb r2, [r0, #3969] ; 0xf81 add r3, r3, #1 cmp r3, #8 blt _037FF6C4 bx lr _037FF6E0: .word _03807F6C arm_func_start FUN_037FF6E4 FUN_037FF6E4: ; 0x037FF6E4 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r0 ldr r0, _037FF74C ; =_03807F6C mov r1, r5 mov r2, #4480 ; 0x1180 bl FUN_037FB348 ldr r1, _037FF74C ; =_03807F6C add r0, r5, #4096 ; 0x1000 str r1, [r0, #448] ; 0x1c0 mov r4, #0 _037FF710: mov r0, r4 bl FUN_037FBC4C add r1, r5, r4, lsl #2 add r1, r1, #4096 ; 0x1000 str r0, [r1, #384] ; 0x180 add r4, r4, #1 cmp r4, #16 blt _037FF710 mov r0, #0 bl FUN_037FC964 add r1, r5, #4096 ; 0x1000 str r0, [r1, #452] ; 0x1c4 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FF74C: .word _03807F6C arm_func_start FUN_037FF750 FUN_037FF750: ; 0x037FF750 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #4 mov r7, r0 mov r6, r1 mov r9, r2 mov r5, r3 bl FUN_037FB05C mov r4, r0 mov r8, #0 b _037FF790 _037FF778: ands r0, r9, #1 beq _037FF788 mov r0, r8 bl FUN_037FF554 _037FF788: add r8, r8, #1 mov r9, r9, lsr #1 _037FF790: cmp r8, #8 bge _037FF7A0 cmp r9, #0 bne _037FF778 _037FF7A0: mov r8, #0 b _037FF7C4 _037FF7A8: ands r0, r7, #1 beq _037FF7BC mov r0, r8 mov r1, r5 bl FUN_037FBDF4 _037FF7BC: add r8, r8, #1 mov r7, r7, lsr #1 _037FF7C4: cmp r8, #16 bge _037FF7D4 cmp r7, #0 bne _037FF7A8 _037FF7D4: ands r0, r6, #1 movne r1, #0 ldrne r0, _037FF80C ; =0x04000508 strneb r1, [r0] ands r0, r6, #2 movne r1, #0 ldrne r0, _037FF810 ; =0x04000509 strneb r1, [r0] mov r0, r4 bl FUN_037FB070 bl FUN_037FF448 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037FF80C: .word 0x04000508 _037FF810: .word 0x04000509 arm_func_start FUN_037FF814 FUN_037FF814: ; 0x037FF814 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 mov r6, r1 mov r5, r2 bl FUN_037FB05C mov r4, r0 mov r2, #0 b _037FF858 _037FF838: ands r0, r7, #1 movne r0, r2, lsl #4 addne r0, r0, #67108864 ; 0x4000000 ldrneb r1, [r0, #1027] ; 0x403 orrne r1, r1, #128 ; 0x80 strneb r1, [r0, #1027] ; 0x403 add r2, r2, #1 mov r7, r7, lsr #1 _037FF858: cmp r2, #16 bge _037FF868 cmp r7, #0 bne _037FF838 _037FF868: ands r0, r6, #1 beq _037FF8A0 ands r0, r6, #2 ldreq r1, _037FF8FC ; =0x04000508 ldreqb r0, [r1] orreq r0, r0, #128 ; 0x80 streqb r0, [r1] beq _037FF8B4 ldr r2, _037FF8FC ; =0x04000508 ldrh r1, [r2] ldr r0, _037FF900 ; =0x00008080 orr r0, r1, r0 strh r0, [r2] b _037FF8B4 _037FF8A0: ands r0, r6, #2 ldrne r1, _037FF904 ; =0x04000509 ldrneb r0, [r1] orrne r0, r0, #128 ; 0x80 strneb r0, [r1] _037FF8B4: mov r6, #0 b _037FF8D4 _037FF8BC: ands r0, r5, #1 beq _037FF8CC mov r0, r6 bl FUN_037FF594 _037FF8CC: add r6, r6, #1 mov r5, r5, lsr #1 _037FF8D4: cmp r6, #8 bge _037FF8E4 cmp r5, #0 bne _037FF8BC _037FF8E4: mov r0, r4 bl FUN_037FB070 bl FUN_037FF448 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FF8FC: .word 0x04000508 _037FF900: .word 0x00008080 _037FF904: .word 0x04000509 arm_func_start FUN_037FF908 FUN_037FF908: ; 0x037FF908 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, r1 mov r4, #0 b _037FF938 _037FF91C: ands r0, r6, #1 beq _037FF930 mov r0, r4 mov r1, r5 bl FUN_037FBCDC _037FF930: add r4, r4, #1 mov r6, r6, lsr #1 _037FF938: cmp r4, #16 bge _037FF948 cmp r6, #0 bne _037FF91C _037FF948: ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FF950 FUN_037FF950: ; 0x037FF950 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 mov r6, r1 mov r5, r2 mov r4, #0 b _037FF98C _037FF96C: ands r0, r7, #1 beq _037FF984 mov r0, r4 mov r1, r6 mov r2, r5 bl FUN_037FBD70 _037FF984: add r4, r4, #1 mov r7, r7, lsr #1 _037FF98C: cmp r4, #16 bge _037FF99C cmp r7, #0 bne _037FF96C _037FF99C: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_037FF9A8 FUN_037FF9A8: ; 0x037FF9A8 stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, r1 mov r4, #0 b _037FF9D8 _037FF9BC: ands r0, r6, #1 beq _037FF9D0 mov r0, r4 mov r1, r5 bl FUN_037FBD58 _037FF9D0: add r4, r4, #1 mov r6, r6, lsr #1 _037FF9D8: cmp r4, #16 bge _037FF9E8 cmp r6, #0 bne _037FF9BC _037FF9E8: ldmia sp!, {r4, r5, r6, lr} bx lr arm_func_start FUN_037FF9F0 FUN_037FF9F0: ; 0x037FF9F0 mov r0, #7 ldr r1, _037FFA00 ; =FUN_037FFA08 ldr ip, _037FFA04 ; =FUN_037FB7A8 bx ip _037FFA00: .word FUN_037FFA08 _037FFA04: .word FUN_037FB7A8 arm_func_start FUN_037FFA08 FUN_037FFA08: ; 0x037FFA08 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 mov r5, r1 bl FUN_037FB05C mov r4, r0 cmp r5, #33554432 ; 0x2000000 bcc _037FFA38 ldr r0, _037FFA58 ; =_038090EC mov r1, r5 mov r2, #0 bl FUN_037F9924 b _037FFA44 _037FFA38: cmp r5, #0 bne _037FFA44 bl FUN_037FC354 _037FFA44: mov r0, r4 bl FUN_037FB070 add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _037FFA58: .word _038090EC arm_func_start FUN_037FFA5C FUN_037FFA5C: ; 0x037FFA5C stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} sub sp, sp, #52 ; 0x34 ldr r7, _037FFEC4 ; =_03807F68 ldr r9, _037FFEC8 ; =_038090EC add r8, sp, #24 mov r4, #0 ldr r6, _037FFECC ; =0x0000FFFF ldr r5, _037FFED0 ; =0x003FFFFF b _037FFEA0 _037FFA80: ldr lr, [sp, #24] b _037FFE88 _037FFA88: add ip, sp, #28 ldmia lr!, {r0, r1, r2, r3} stmia ip!, {r0, r1, r2, r3} ldmia lr, {r0, r1} stmia ip, {r0, r1} ldr r0, [sp, #32] cmp r0, #33 ; 0x21 addls pc, pc, r0, lsl #2 b _037FFE84 b _037FFB34 b _037FFB4C b _037FFB58 b _037FFB70 b _037FFB7C b _037FFB8C b _037FFB9C b _037FFBB4 b _037FFBDC b _037FFBF0 b _037FFC04 b _037FFC20 b _037FFC38 b _037FFC50 b _037FFD08 b _037FFD74 b _037FFDA8 b _037FFC68 b _037FFCB0 b _037FFCD4 b _037FFCE4 b _037FFCF8 b _037FFDD4 b _037FFDE0 b _037FFDEC b _037FFDF8 b _037FFE10 b _037FFE20 b _037FFE30 b _037FFE70 b _037FFE40 b _037FFE50 b _037FFE60 b _037FFE7C _037FFB34: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c ldr r3, [sp, #48] ; 0x30 bl FUN_037FEE78 b _037FFE84 _037FFB4C: ldr r0, [sp, #36] ; 0x24 bl FUN_037FEE1C b _037FFE84 _037FFB58: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c ldr r3, [sp, #48] ; 0x30 bl FUN_037FEEB4 b _037FFE84 _037FFB70: ldr r0, [sp, #36] ; 0x24 bl FUN_037FEE94 b _037FFE84 _037FFB7C: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FED98 b _037FFE84 _037FFB8C: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FECCC b _037FFE84 _037FFB9C: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c ldr r3, [sp, #48] ; 0x30 bl FUN_037FEA98 b _037FFE84 _037FFBB4: ldr r1, [sp, #36] ; 0x24 mov r0, r1, lsr #24 and r0, r0, #255 ; 0xff str r0, [sp] bic r0, r1, #-16777216 ; 0xff000000 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c ldr r3, [sp, #48] ; 0x30 bl FUN_037FE9F4 b _037FFE84 _037FFBDC: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c bl FUN_037FEC58 b _037FFE84 _037FFBF0: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c bl FUN_037FEBE0 b _037FFE84 _037FFC04: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c mov r2, r2, lsl #16 mov r2, r2, asr #16 bl FUN_037FF504 b _037FFE84 _037FFC20: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 mov r1, r1, lsl #16 mov r1, r1, asr #16 bl FUN_037FF4E8 b _037FFE84 _037FFC38: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c ldr r3, [sp, #48] ; 0x30 bl FUN_037FF814 b _037FFE84 _037FFC50: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c ldr r3, [sp, #48] ; 0x30 bl FUN_037FF750 b _037FFE84 _037FFC68: ldr r1, [sp, #44] ; 0x2c mov r0, r1, lsr #29 and r0, r0, #1 str r0, [sp] mov r0, r1, lsr #28 and r0, r0, #1 str r0, [sp, #4] mov r0, r1, lsr #27 and r0, r0, #1 str r0, [sp, #8] mov r0, r1, lsr #31 and r0, r0, #1 mov r1, r1, lsr #30 and r1, r1, #1 ldr r2, [sp, #36] ; 0x24 ldr r3, [sp, #40] ; 0x28 bl FUN_037FC4D8 b _037FFE84 _037FFCB0: ldr r0, [sp, #48] ; 0x30 str r0, [sp, #4] ldr r3, [sp, #44] ; 0x2c str r4, [sp] ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 mov r2, #0 bl FUN_037FF65C b _037FFE84 _037FFCD4: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FF9A8 b _037FFE84 _037FFCE4: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c bl FUN_037FF950 b _037FFE84 _037FFCF8: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FF908 b _037FFE84 _037FFD08: ldr r3, [sp, #48] ; 0x30 ldr r1, [sp, #36] ; 0x24 ldr r0, [sp, #44] ; 0x2c and r2, r3, r6 str r2, [sp] and r2, r0, r5 str r2, [sp, #4] mov r2, r0, lsr #24 and r2, r2, #127 ; 0x7f str r2, [sp, #8] mov r0, r0, lsr #22 and r0, r0, #3 str r0, [sp, #12] and r0, r6, r1, lsr #16 str r0, [sp, #16] mov r0, r3, lsr #16 and r0, r0, #127 ; 0x7f str r0, [sp, #20] and r0, r1, r6 ldr r1, [sp, #40] ; 0x28 bic r1, r1, #-134217728 ; 0xf8000000 mov r2, r3, lsr #24 and r2, r2, #3 mov r3, r3, lsr #26 and r3, r3, #3 bl FUN_037FBF88 b _037FFE84 _037FFD74: ldr r1, [sp, #44] ; 0x2c ldr r3, [sp, #40] ; 0x28 and r0, r6, r1, lsr #8 str r0, [sp] and r0, r1, #127 ; 0x7f str r0, [sp, #4] ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #48] ; 0x30 and r2, r3, #127 ; 0x7f mov r3, r3, lsr #8 and r3, r3, #3 bl FUN_037FBED0 b _037FFE84 _037FFDA8: ldr r3, [sp, #44] ; 0x2c ldr r2, [sp, #40] ; 0x28 and r0, r3, #127 ; 0x7f str r0, [sp] ldr r0, [sp, #36] ; 0x24 and r1, r2, #127 ; 0x7f mov r2, r2, lsr #8 and r2, r2, #3 and r3, r6, r3, lsr #8 bl FUN_037FBE20 b _037FFE84 _037FFDD4: ldr r0, [sp, #36] ; 0x24 bl FUN_037FBBE8 b _037FFE84 _037FFDE0: ldr r0, [sp, #36] ; 0x24 bl FUN_037FBA44 b _037FFE84 _037FFDEC: ldr r0, [sp, #36] ; 0x24 bl FUN_037FBC5C b _037FFE84 _037FFDF8: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 ldr r2, [sp, #44] ; 0x2c ldr r3, [sp, #48] ; 0x30 bl FUN_037FBA0C b _037FFE84 _037FFE10: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FC9C0 b _037FFE84 _037FFE20: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FC984 b _037FFE84 _037FFE30: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FCAB8 b _037FFE84 _037FFE40: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FEB44 b _037FFE84 _037FFE50: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FEAE4 b _037FFE84 _037FFE60: ldr r0, [sp, #36] ; 0x24 ldr r1, [sp, #40] ; 0x28 bl FUN_037FC8DC b _037FFE84 _037FFE70: ldr r0, [sp, #36] ; 0x24 str r0, [r7] b _037FFE84 _037FFE7C: ldr r0, [sp, #36] ; 0x24 bl FUN_037FF6E4 _037FFE84: ldr lr, [sp, #28] _037FFE88: cmp lr, #0 bne _037FFA88 ldr r1, [r7] ldr r0, [r1] add r0, r0, #1 str r0, [r1] _037FFEA0: mov r0, r9 mov r1, r8 mov r2, r4 bl FUN_037F9884 cmp r0, #0 bne _037FFA80 add sp, sp, #52 ; 0x34 ldmia sp!, {r4, r5, r6, r7, r8, r9, lr} bx lr _037FFEC4: .word _03807F68 _037FFEC8: .word _038090EC _037FFECC: .word 0x0000FFFF _037FFED0: .word 0x003FFFFF arm_func_start FUN_037FFED4 FUN_037FFED4: ; 0x037FFED4 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _037FFF08 ; =_038090EC ldr r1, _037FFF0C ; =_0380910C mov r2, #8 bl FUN_037F99B8 bl FUN_037FF9F0 mov r1, #0 ldr r0, _037FFF10 ; =_03807F68 str r1, [r0] add sp, sp, #4 ldmia sp!, {lr} bx lr _037FFF08: .word _038090EC _037FFF0C: .word _0380910C _037FFF10: .word _03807F68 arm_func_start FUN_037FFF14 FUN_037FFF14: ; 0x037FFF14 ldr ip, _037FFF1C ; =FUN_038008D0 bx ip _037FFF1C: .word FUN_038008D0 arm_func_start FUN_037FFF20 FUN_037FFF20: ; 0x037FFF20 ldr r0, _037FFF28 ; =0x027FFA80 bx lr _037FFF28: .word 0x027FFA80 arm_func_start FUN_037FFF2C FUN_037FFF2C: ; 0x037FFF2C stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 ldr r6, _037FFF70 ; =_03809140 bl FUN_037FB05C mov r4, r0 ldr r5, [r6, #240] ; 0xf0 str r7, [r6, #240] ; 0xf0 add r0, r6, #72 ; 0x48 ldr r1, [r6, #240] ; 0xf0 bl FUN_037F8EB8 mov r0, r4 bl FUN_037FB070 mov r0, r5 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _037FFF70: .word _03809140 arm_func_start FUN_037FFF74 FUN_037FFF74: ; 0x037FFF74 ldr r1, _037FFF80 ; =_0380912C str r0, [r1] bx lr _037FFF80: .word _0380912C arm_func_start FUN_037FFF84 FUN_037FFF84: ; 0x037FFF84 stmfd sp!, {lr} sub sp, sp, #12 mvn r1, #2 ldr r0, _0380001C ; =_03809140 str r1, [r0, #12] mov r2, #0 str r2, [r0, #16] str r2, [r0, #28] str r2, [r0] str r2, [r0, #8] str r2, [r0, #24] str r2, [r0, #20] str r2, [r0, #248] ; 0xf8 str r2, [r0, #244] ; 0xf4 mov r1, #4 str r1, [r0, #240] ; 0xf0 mov r1, #1024 ; 0x400 str r1, [sp] ldr r0, [r0, #240] ; 0xf0 str r0, [sp, #4] ldr r0, _03800020 ; =_03809188 ldr r1, _03800024 ; =FUN_03800B20 ldr r3, _03800028 ; =_03809760 bl FUN_037F9244 ldr r0, _03800020 ; =_03809188 bl FUN_037F8FB4 mov r0, #11 ldr r1, _0380002C ; =FUN_03800D2C bl FUN_037FB7A8 ldr r0, _03800030 ; =0x027FFC40 ldrh r0, [r0] _03800000: cmp r0, #2 beq _03800010 mov r0, #1 bl FUN_037FFF74 _03800010: add sp, sp, #12 ldmia sp!, {lr} bx lr _0380001C: .word _03809140 _03800020: .word _03809188 _03800024: .word FUN_03800B20 _03800028: .word _03809760 _0380002C: .word FUN_03800D2C _03800030: .word 0x027FFC40 arm_func_start FUN_03800034 FUN_03800034: ; 0x03800034 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} sub sp, sp, #8 mov r4, r0 bl FUN_03800780 cmp r0, #0 beq _038000BC ldr r0, _038000C8 ; =_03809140 ldr sl, [r0] mov r9, #10 mov r0, #1 strb r0, [sp] strb r4, [sp, #1] mov r8, #2 add r7, sp, #0 mov r6, #0 ldr r5, _038000CC ; =_03800660 mov r4, #5 _03800078: bl FUN_038005B4 mov r0, r8 bl FUN_038008B4 mov r0, r7 mov r1, r6 mov r2, r8 mov r3, r5 bl FUN_038006F0 mov r0, r4 mov r1, r6 bl FUN_03800830 ldr r0, [sl] cmp r0, #4 bne _038000BC sub r9, r9, #1 cmp r9, #0 bgt _03800078 _038000BC: add sp, sp, #8 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, lr} bx lr _038000C8: .word _03809140 _038000CC: .word _03800660 arm_func_start FUN_038000D0 FUN_038000D0: ; 0x038000D0 stmdb sp!, {r4, lr} bl FUN_03800780 cmp r0, #0 beq _03800114 ldr r0, _0380011C ; =_03809140 ldr r4, [r0] bl FUN_038005B4 mov r0, #1 bl FUN_038008B4 ldr r0, _03800120 ; =_038072BC mov r1, #0 mov r2, #1 ldr r3, _03800124 ; =_03800660 bl FUN_038006F0 ldr r0, [r4, #52] ; 0x34 ldr r1, [r4, #56] ; 0x38 bl FUN_03800830 _03800114: ldmia sp!, {r4, lr} bx lr _0380011C: .word _03809140 _03800120: .word _038072BC _03800124: .word _03800660 arm_func_start FUN_03800128 FUN_03800128: ; 0x03800128 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r7, r0 mov r6, r1 ldr r0, _038001B8 ; =_03809140 ldr r5, [r0] ldr r4, [r5, #28] sub r1, r4, #1 orr r0, r7, r6 ands r0, r1, r0 movne r0, #2 strne r0, [r5] bne _038001B0 bl FUN_03800780 cmp r0, #0 beq _038001B0 mov r8, #216 ; 0xd8 b _038001A8 _0380016C: bl FUN_038005B4 ldr r0, [r5, #36] ; 0x24 add r0, r0, #1 bl FUN_038008B4 mov r0, r7 mov r1, r8 bl FUN_03800508 ldr r0, [r5, #60] ; 0x3c ldr r1, [r5, #64] ; 0x40 bl FUN_03800830 ldr r0, [r5] cmp r0, #0 bne _038001B0 add r7, r7, r4 sub r6, r6, r4 _038001A8: cmp r6, #0 bne _0380016C _038001B0: ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _038001B8: .word _03809140 arm_func_start FUN_038001BC FUN_038001BC: ; 0x038001BC stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 mov r6, r1 mov r5, r2 bl FUN_03800780 cmp r0, #0 beq _0380024C ldr r0, _03800258 ; =_03809140 ldr r4, [r0] mov r1, #1 ldr r0, _0380025C ; =_03809764 str r1, [r0, #12] ldr r0, [r4, #36] ; 0x24 add r0, r0, #1 add r0, r0, r5 bl FUN_038008B4 mov r0, r7 mov r1, #3 bl FUN_03800508 mov r0, r6 mov r1, #0 mov r2, r5 ldr r3, _03800260 ; =_038005F8 bl FUN_038006F0 mov r0, #0 mov r1, r0 bl FUN_03800830 ldr r0, [r4] cmp r0, #0 bne _0380024C ldr r0, _0380025C ; =_03809764 ldr r0, [r0, #12] cmp r0, #0 moveq r0, #1 streq r0, [r4] _0380024C: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr _03800258: .word _03809140 _0380025C: .word _03809764 _03800260: .word _038005F8 arm_func_start FUN_03800264 FUN_03800264: ; 0x03800264 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov r9, r1 mov r8, r2 bl FUN_03800780 cmp r0, #0 beq _03800314 ldr r0, _03800320 ; =_03809140 ldr r7, [r0] ldr r6, [r7, #32] sub r4, r6, #1 mov fp, #10 mov r0, #0 str r0, [sp] b _0380030C _038002A4: and r0, sl, r4 sub r5, r6, r0 cmp r5, r8 movhi r5, r8 bl FUN_038005B4 ldr r0, [r7, #36] ; 0x24 add r0, r0, #1 add r0, r0, r5 bl FUN_038008B4 mov r0, sl mov r1, fp bl FUN_03800508 mov r0, r9 ldr r1, [sp] mov r2, r5 ldr r3, _03800324 ; =_03800660 bl FUN_038006F0 ldr r0, [r7, #44] ; 0x2c ldr r1, [r7, #48] ; 0x30 bl FUN_03800830 ldr r0, [r7] cmp r0, #0 bne _03800314 add r9, r9, r5 add sl, sl, r5 sub r8, r8, r5 _0380030C: cmp r8, #0 bne _038002A4 _03800314: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _03800320: .word _03809140 _03800324: .word _03800660 arm_func_start FUN_03800328 FUN_03800328: ; 0x03800328 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 mov sl, r0 mov r9, r1 mov r8, r2 bl FUN_03800780 cmp r0, #0 beq _038003D8 ldr r0, _038003E4 ; =_03809140 ldr r7, [r0] ldr r6, [r7, #32] sub r4, r6, #1 mov r0, #2 str r0, [sp] mov fp, #0 b _038003D0 _03800368: and r0, sl, r4 sub r5, r6, r0 cmp r5, r8 movhi r5, r8 bl FUN_038005B4 ldr r0, [r7, #36] ; 0x24 add r0, r0, #1 add r0, r0, r5 bl FUN_038008B4 mov r0, sl ldr r1, [sp] bl FUN_03800508 mov r0, r9 mov r1, fp mov r2, r5 ldr r3, _038003E8 ; =_03800660 bl FUN_038006F0 ldr r0, [r7, #40] ; 0x28 mov r1, fp bl FUN_03800830 ldr r0, [r7] cmp r0, #0 bne _038003D8 add r9, r9, r5 add sl, sl, r5 sub r8, r8, r5 _038003D0: cmp r8, #0 bne _03800368 _038003D8: add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} bx lr _038003E4: .word _03809140 _038003E8: .word _03800660 arm_func_start FUN_038003EC FUN_038003EC: ; 0x038003EC stmdb sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, r1 mov r4, r2 bl FUN_03800780 cmp r0, #0 beq _0380044C ldr r0, _03800454 ; =_03809140 ldr r0, [r0] ldr r0, [r0, #36] ; 0x24 add r0, r0, #1 add r0, r0, r4 bl FUN_038008B4 mov r0, r6 mov r1, #3 bl FUN_03800508 mov r0, #0 mov r1, r5 mov r2, r4 ldr r3, _03800458 ; =_038006AC bl FUN_038006F0 mov r0, #0 mov r1, r0 bl FUN_03800830 _0380044C: ldmia sp!, {r4, r5, r6, lr} bx lr _03800454: .word _03809140 _03800458: .word _038006AC arm_func_start FUN_0380045C FUN_0380045C: ; 0x0380045C stmdb sp!, {r4, lr} sub sp, sp, #8 ldr r0, _038004F8 ; =_03809140 ldr r0, [r0] ldrb r4, [r0, #72] ; 0x48 cmp r4, #255 ; 0xff beq _038004EC ldr r0, _038004FC ; =_03809760 ldr r0, [r0] cmp r0, #0 bne _038004EC mov r0, #5 strb r0, [sp] mov r0, #2 bl FUN_038008B4 add r0, sp, #0 mov r1, #0 mov r2, #1 ldr r3, _03800500 ; =_03800660 bl FUN_038006F0 mov r0, #0 add r1, sp, #1 mov r2, #1 ldr r3, _03800504 ; =_038006AC bl FUN_038006F0 mov r0, #0 mov r1, r0 bl FUN_03800830 ldrb r0, [sp, #1] cmp r0, r4 beq _038004E0 mov r0, r4 bl FUN_03800034 _038004E0: mov r1, #1 ldr r0, _038004FC ; =_03809760 str r1, [r0] _038004EC: add sp, sp, #8 ldmia sp!, {r4, lr} bx lr _038004F8: .word _03809140 _038004FC: .word _03809760 _03800500: .word _03800660 _03800504: .word _038006AC arm_func_start FUN_03800508 FUN_03800508: ; 0x03800508 stmfd sp!, {lr} sub sp, sp, #4 ldr r2, _038005AC ; =_03809140 ldr r2, [r2] ldr r2, [r2, #36] ; 0x24 cmp r2, #1 beq _03800538 cmp r2, #2 beq _03800554 cmp r2, #3 beq _0380056C b _0380058C _03800538: and r3, r0, #255 ; 0xff mov r0, r0, lsr #5 and r0, r0, #8 orr r0, r1, r0 orr r0, r0, r3, lsl #8 str r0, [sp] b _0380058C _03800554: and r3, r0, #255 ; 0xff and r0, r0, #65280 ; 0xff00 orr r0, r1, r0 orr r0, r0, r3, lsl #16 str r0, [sp] b _0380058C _0380056C: and ip, r0, #255 ; 0xff and r3, r0, #65280 ; 0xff00 mov r0, r0, lsr #8 and r0, r0, #65280 ; 0xff00 orr r0, r1, r0 orr r0, r0, r3, lsl #8 orr r0, r0, ip, lsl #24 str r0, [sp] _0380058C: add r0, sp, #0 mov r1, #0 add r2, r2, #1 ldr r3, _038005B0 ; =_03800660 bl FUN_038006F0 add sp, sp, #4 ldmia sp!, {lr} bx lr _038005AC: .word _03809140 _038005B0: .word _03800660 arm_func_start FUN_038005B4 FUN_038005B4: ; 0x038005B4 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #1 bl FUN_038008B4 ldr r0, _038005F0 ; =_038072C0 mov r1, #0 mov r2, #1 ldr r3, _038005F4 ; =_03800660 bl FUN_038006F0 mov r0, #0 mov r1, r0 bl FUN_03800830 add sp, sp, #4 ldmia sp!, {lr} bx lr _038005F0: .word _038072C0 _038005F4: .word _03800660 _038005F8: mov r2, #0 ldr r1, _03800658 ; =0x040001A2 strh r2, [r1] ldr r2, _0380065C ; =0x040001A0 _03800608: ldrh r1, [r2] ands r1, r1, #128 ; 0x80 bne _03800608 ldr r1, _03800658 ; =0x040001A2 ldrh r1, [r1] and r2, r1, #255 ; 0xff ldr r1, [r0, #4] ldrb r1, [r1] cmp r2, r1 beq _03800648 mov r1, #0 str r1, [r0, #12] ldr r1, [r0] cmp r1, #1 movhi r1, #1 strhi r1, [r0] _03800648: ldr r1, [r0, #4] add r1, r1, #1 str r1, [r0, #4] bx lr _03800658: .word 0x040001A2 _0380065C: .word 0x040001A0 _03800660: sub sp, sp, #8 ldr r1, [r0, #4] ldrb r2, [r1] ldr r1, _038006A4 ; =0x040001A2 strh r2, [r1] ldr r1, [r0, #4] add r1, r1, #1 str r1, [r0, #4] ldr r1, _038006A8 ; =0x040001A0 _03800684: ldrh r0, [r1] ands r0, r0, #128 ; 0x80 bne _03800684 ldr r0, _038006A4 ; =0x040001A2 ldrh r0, [r0] strh r0, [sp] add sp, sp, #8 bx lr _038006A4: .word 0x040001A2 _038006A8: .word 0x040001A0 _038006AC: mov r2, #0 ldr r1, _038006E8 ; =0x040001A2 strh r2, [r1] ldr r2, _038006EC ; =0x040001A0 _038006BC: ldrh r1, [r2] ands r1, r1, #128 ; 0x80 bne _038006BC ldr r1, _038006E8 ; =0x040001A2 ldrh r2, [r1] ldr r1, [r0, #8] strb r2, [r1] ldr r1, [r0, #8] add r1, r1, #1 str r1, [r0, #8] bx lr _038006E8: .word 0x040001A2 _038006EC: .word 0x040001A0 arm_func_start FUN_038006F0 FUN_038006F0: ; 0x038006F0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mov r7, r2 mov r6, r3 ldr r5, _03800774 ; =_03809764 str r0, [r5, #4] str r1, [r5, #8] ldr r0, _03800778 ; =0x0000A040 ldr r4, _0380077C ; =0x040001A0 strh r0, [r4] mov r8, #40960 ; 0xa000 b _03800750 _0380071C: ldr r0, [r5] sub r0, r0, #1 str r0, [r5] ldr r0, [r5] cmp r0, #0 streqh r8, [r4] _03800734: ldrh r0, [r4] ands r0, r0, #128 ; 0x80 bne _03800734 mov r0, r5 mov lr, pc bx r6 sub r7, r7, #1 _03800750: cmp r7, #0 bne _0380071C ldr r0, [r5] cmp r0, #0 moveq r1, #0 ldreq r0, _0380077C ; =0x040001A0 streqh r1, [r0] ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _03800774: .word _03809764 _03800778: .word 0x0000A040 _0380077C: .word 0x040001A0 arm_func_start FUN_03800780 FUN_03800780: ; 0x03800780 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #0 mov r1, #50 ; 0x32 bl FUN_03800830 ldr r0, _038007C0 ; =_03809140 ldr r1, [r0] ldr r0, [r1] cmp r0, #4 moveq r0, #6 streq r0, [r1] moveq r0, #0 movne r0, #1 add sp, sp, #4 ldmia sp!, {lr} bx lr _038007C0: .word _03809140 arm_func_start FUN_038007C4 FUN_038007C4: ; 0x038007C4 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #2 bl FUN_038008B4 ldr r0, _03800824 ; =_038072C4 mov r1, #0 mov r2, #1 ldr r3, _03800828 ; =_03800660 bl FUN_038006F0 mov r0, #0 add r1, sp, #0 mov r2, #1 ldr r3, _0380082C ; =_038006AC bl FUN_038006F0 mov r0, #0 mov r1, r0 bl FUN_03800830 ldrb r0, [sp] ands r0, r0, #1 moveq r0, #1 movne r0, #0 add sp, sp, #4 ldmia sp!, {lr} bx lr _03800824: .word _038072C4 _03800828: .word _03800660 _0380082C: .word _038006AC arm_func_start FUN_03800830 FUN_03800830: ; 0x03800830 stmdb sp!, {r4, r5, r6, lr} mov r5, r0 mov r4, r1 adds r1, r5, r4 beq _038008A8 cmp r5, #0 beq _03800850 bl FUN_037F8E14 _03800850: cmp r4, #0 beq _03800890 sub r6, r4, r5 mov r4, #5 b _0380087C _03800864: cmp r6, #5 movlt r5, r6 movge r5, r4 mov r0, r5 bl FUN_037F8E14 sub r6, r6, r5 _0380087C: bl FUN_038007C4 cmp r0, #0 bne _03800890 cmp r6, #0 bgt _03800864 _03800890: bl FUN_038007C4 cmp r0, #0 moveq r1, #4 ldreq r0, _038008B0 ; =_03809140 ldreq r0, [r0] streq r1, [r0] _038008A8: ldmia sp!, {r4, r5, r6, lr} bx lr _038008B0: .word _03809140 arm_func_start FUN_038008B4 FUN_038008B4: ; 0x038008B4 ldr r1, _038008C0 ; =_03809764 str r0, [r1] bx lr _038008C0: .word _03809764 arm_func_start FUN_038008C4 FUN_038008C4: ; 0x038008C4 ldr r0, _038008CC ; =_03800A7C bx lr _038008CC: .word _03800A7C arm_func_start FUN_038008D0 FUN_038008D0: ; 0x038008D0 stmfd sp!, {lr} sub sp, sp, #4 ldr r2, _03800940 ; =_03809140 ldr r0, [r2, #252] ; 0xfc cmp r0, #0 bne _03800934 mov r0, #1 str r0, [r2, #252] ; 0xfc mov r1, #0 str r1, [r2, #40] ; 0x28 ldr r0, [r2, #40] ; 0x28 str r0, [r2, #36] ; 0x24 ldr r0, [r2, #36] ; 0x24 str r0, [r2, #32] mvn r0, #0 str r0, [r2, #44] ; 0x2c str r1, [r2, #60] ; 0x3c str r1, [r2, #64] ; 0x40 ldr r0, _03800944 ; =_03809774 str r1, [r0] bl FUN_037FFF84 bl FUN_038008C4 ldr r1, _03800948 ; =_03809780 str r0, [r1] bl FUN_03801074 _03800934: add sp, sp, #4 ldmia sp!, {lr} bx lr _03800940: .word _03809140 _03800944: .word _03809774 _03800948: .word _03809780 arm_func_start FUN_0380094C FUN_0380094C: ; 0x0380094C stmdb sp!, {r4, r5, r6, r7, r8, lr} ldr r5, _03800A10 ; =_03809140 bl FUN_037FB05C mov r4, r0 add r6, r5, #244 ; 0xf4 b _0380096C _03800964: mov r0, r6 bl FUN_037F9064 _0380096C: ldr r0, [r5, #252] ; 0xfc ands r0, r0, #4 bne _03800964 ldr r0, [r5, #252] ; 0xfc orr r0, r0, #4 str r0, [r5, #252] ; 0xfc mov r0, #0 str r0, [r5, #60] ; 0x3c str r0, [r5, #64] ; 0x40 mov r0, r4 bl FUN_037FB070 bl FUN_03800A14 mov r8, r0 ldr r7, _03800A10 ; =_03809140 mov r1, #0 ldr r0, [r7] str r1, [r0] ldr r6, [r7, #60] ; 0x3c ldr r5, [r7, #64] ; 0x40 bl FUN_037FB05C mov r4, r0 ldr r0, [r7, #252] ; 0xfc bic r0, r0, #76 ; 0x4c str r0, [r7, #252] ; 0xfc add r0, r7, #244 ; 0xf4 bl FUN_037F8FE8 ldr r0, [r7, #252] ; 0xfc ands r0, r0, #16 beq _038009E8 add r0, r7, #72 ; 0x48 bl FUN_037F8FB4 _038009E8: mov r0, r4 bl FUN_037FB070 cmp r6, #0 beq _03800A04 mov r0, r5 mov lr, pc bx r6 _03800A04: mov r0, r8 ldmia sp!, {r4, r5, r6, r7, r8, lr} bx lr _03800A10: .word _03809140 arm_func_start FUN_03800A14 FUN_03800A14: ; 0x03800A14 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #-1207959552 ; 0xb8000000 mov r1, #0 bl FUN_03800A80 ldr r0, _03800A70 ; =_03807664 ldr r0, [r0] ldr r0, [r0, #96] ; 0x60 bic r0, r0, #117440512 ; 0x7000000 orr r1, r0, #-1493172224 ; 0xa7000000 mov r0, #8192 ; 0x2000 rsb r0, r0, #0 and r0, r1, r0 ldr r1, _03800A74 ; =0x040001A4 str r0, [r1] _03800A50: ldr r0, [r1] ands r0, r0, #8388608 ; 0x800000 beq _03800A50 ldr r0, _03800A78 ; =0x04100010 ldr r0, [r0] add sp, sp, #4 ldmia sp!, {lr} bx lr _03800A70: .word _03807664 _03800A74: .word 0x040001A4 _03800A78: .word 0x04100010 _03800A7C: bx lr arm_func_start FUN_03800A80 FUN_03800A80: ; 0x03800A80 ldr r3, _03800AF8 ; =0x040001A4 _03800A84: ldr r2, [r3] ands r2, r2, #-2147483648 ; 0x80000000 bne _03800A84 mov r3, #192 ; 0xc0 ldr r2, _03800AFC ; =0x040001A1 strb r3, [r2] mov r3, r0, lsr #24 ldr r2, _03800B00 ; =0x040001A8 strb r3, [r2] mov r3, r0, lsr #16 ldr r2, _03800B04 ; =0x040001A9 strb r3, [r2] mov r3, r0, lsr #8 ldr r2, _03800B08 ; =0x040001AA strb r3, [r2] ldr r2, _03800B0C ; =0x040001AB strb r0, [r2] mov r2, r1, lsr #24 ldr r0, _03800B10 ; =0x040001AC strb r2, [r0] mov r2, r1, lsr #16 ldr r0, _03800B14 ; =0x040001AD strb r2, [r0] mov r2, r1, lsr #8 ldr r0, _03800B18 ; =0x040001AE strb r2, [r0] ldr r0, _03800B1C ; =0x040001AF strb r1, [r0] bx lr _03800AF8: .word 0x040001A4 _03800AFC: .word 0x040001A1 _03800B00: .word 0x040001A8 _03800B04: .word 0x040001A9 _03800B08: .word 0x040001AA _03800B0C: .word 0x040001AB _03800B10: .word 0x040001AC _03800B14: .word 0x040001AD _03800B18: .word 0x040001AE _03800B1C: .word 0x040001AF arm_func_start FUN_03800B20 FUN_03800B20: ; 0x03800B20 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sub sp, sp, #4 ldr r9, _03800D28 ; =_03809140 add r5, r9, #72 ; 0x48 mov r8, #0 add r7, r9, #252 ; 0xfc mov r6, #1 mov r4, #3 mov fp, #11 _03800B44: mov sl, r8 bl FUN_037FB05C str r0, [sp] _03800B50: ldr r0, [r9, #252] ; 0xfc ands r0, r0, #4 bne _03800B88 ldr r0, [r9, #252] ; 0xfc ands r0, r0, #16 beq _03800B94 ldr r0, [r7] orr r0, r0, #4 str r0, [r7] ldr r0, [r7] bic r0, r0, #16 str r0, [r7] mov sl, r6 b _03800BA4 _03800B88: ldr r0, [r9, #252] ; 0xfc ands r0, r0, #8 bne _03800BA4 _03800B94: str r5, [r9, #236] ; 0xec mov r0, r8 bl FUN_037F9064 b _03800B50 _03800BA4: ldr r0, [sp] bl FUN_037FB070 cmp sl, #0 beq _03800D14 ldr r0, [r9] str r8, [r0] ldr r2, [r9] ldr r1, [r2, #76] ; 0x4c ldr r0, [r9, #4] mov r0, r6, lsl r0 ands r0, r1, r0 streq r4, [r2] ldr r0, [r9, #4] cmp r0, #12 addls pc, pc, r0, lsl #2 b _03800CB8 b _03800CC0 b _03800CC0 b _03800C18 b _03800C20 b _03800C30 b _03800CB8 b _03800C3C b _03800C54 b _03800C6C b _03800C84 b _03800CB8 b _03800C9C b _03800CB0 _03800C18: bl FUN_0380045C b _03800CC0 _03800C20: bl FUN_03800A14 ldr r1, [r9] str r0, [r1, #8] b _03800CC0 _03800C30: ldr r0, [r9] str r4, [r0] b _03800CC0 _03800C3C: ldr r2, [r9] ldr r0, [r2, #12] ldr r1, [r2, #16] ldr r2, [r2, #20] bl FUN_038003EC b _03800CC0 _03800C54: ldr r2, [r9] ldr r0, [r2, #16] ldr r1, [r2, #12] ldr r2, [r2, #20] bl FUN_03800264 b _03800CC0 _03800C6C: ldr r2, [r9] ldr r0, [r2, #16] ldr r1, [r2, #12] ldr r2, [r2, #20] bl FUN_03800328 b _03800CC0 _03800C84: ldr r2, [r9] ldr r0, [r2, #16] ldr r1, [r2, #12] ldr r2, [r2, #20] bl FUN_038001BC b _03800CC0 _03800C9C: ldr r1, [r9] ldr r0, [r1, #16] ldr r1, [r1, #20] bl FUN_03800128 b _03800CC0 _03800CB0: bl FUN_038000D0 b _03800CC0 _03800CB8: ldr r0, [r9] str r4, [r0] _03800CC0: mov r0, fp mov r1, r6 mov r2, r6 bl FUN_037FB6DC cmp r0, #0 blt _03800CC0 bl FUN_037FB05C mov sl, r0 ldr r0, [r9, #252] ; 0xfc bic r0, r0, #76 ; 0x4c str r0, [r9, #252] ; 0xfc add r0, r9, #244 ; 0xf4 bl FUN_037F8FE8 ldr r0, [r9, #252] ; 0xfc ands r0, r0, #16 beq _03800D08 mov r0, r5 bl FUN_037F8FB4 _03800D08: mov r0, sl bl FUN_037FB070 b _03800B44 _03800D14: mov r0, r9 ldr r1, [r9, #68] ; 0x44 mov lr, pc bx r1 b _03800B44 _03800D28: .word _03809140 arm_func_start FUN_03800D2C FUN_03800D2C: ; 0x03800D2C stmfd sp!, {lr} sub sp, sp, #4 cmp r0, #11 bne _03800DFC cmp r2, #0 beq _03800DFC ldr r0, _03800E08 ; =_03809140 ldr r2, [r0, #8] cmp r2, #0 streq r1, [r0, #4] ldr r2, [r0, #4] cmp r2, #12 addls pc, pc, r2, lsl #2 b _03800DC8 b _03800D98 b _03800DC8 b _03800DBC b _03800DBC b _03800DBC b _03800DBC b _03800DBC b _03800DBC b _03800DBC b _03800DBC b _03800DBC b _03800DBC b _03800DBC _03800D98: ldr r2, [r0, #8] cmp r2, #0 beq _03800DC8 cmp r2, #1 streq r1, [r0] ldreq r1, [r0, #252] ; 0xfc orreq r1, r1, #16 streq r1, [r0, #252] ; 0xfc b _03800DC8 _03800DBC: ldr r1, [r0, #252] ; 0xfc orr r1, r1, #16 str r1, [r0, #252] ; 0xfc _03800DC8: ldr r1, [r0, #252] ; 0xfc ands r1, r1, #16 ldreq r1, [r0, #8] addeq r1, r1, #1 streq r1, [r0, #8] beq _03800DFC mov r1, #0 str r1, [r0, #8] ldr r1, [r0, #252] ; 0xfc ands r1, r1, #4 ldrne r0, [r0, #236] ; 0xec addeq r0, r0, #72 ; 0x48 bl FUN_037F8FB4 _03800DFC: add sp, sp, #4 ldmia sp!, {lr} bx lr _03800E08: .word _03809140 arm_func_start FUN_03800E0C FUN_03800E0C: ; 0x03800E0C stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #4 mov r7, r0 mov r6, r1 mov r5, #14 mov r4, #0 b _03800E30 _03800E28: mov r0, r6 bl FUN_037F8CB4 _03800E30: mov r0, r5 mov r1, r7 mov r2, r4 bl FUN_037FB6DC cmp r0, #0 bne _03800E28 add sp, sp, #4 ldmia sp!, {r4, r5, r6, r7, lr} bx lr arm_func_start FUN_03800E54 FUN_03800E54: ; 0x03800E54 stmfd sp!, {lr} sub sp, sp, #4 mov r0, #0 bl FUN_03803E5C bl FUN_037FBAA8 bl FUN_03806A98 bl FUN_037FB1F0 add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_03800E7C FUN_03800E7C: ; 0x03800E7C stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _03800F50 ; =_038099A0 ldr r0, [r0] cmp r0, #0 bne _03800F44 ldr r0, _03800F54 ; =0x027FFC40 ldrh r0, [r0] cmp r0, #2 beq _03800F44 ldr r1, _03800F58 ; =_03807668 ldr r3, [r1] mvn r0, #0 cmp r3, r0 ldreq r0, _03800F5C ; =0x027FFC3C ldreq r0, [r0] addeq r0, r0, #10 streq r0, [r1] beq _03800F44 ldr r2, _03800F5C ; =0x027FFC3C ldr r0, [r2] cmp r0, r3 bcc _03800F44 ldr r0, [r2] add r0, r0, #10 str r0, [r1] bl FUN_03800FF8 cmp r0, #0 beq _03800F1C mov r1, #1 ldr r0, _03800F50 ; =_038099A0 str r1, [r0] bl FUN_037FFF20 ldr r0, [r0, #12] cmp r0, #0 bne _03800F1C ldr r0, _03800F60 ; =_0380766C ldr r0, [r0] cmp r0, #0 bne _03800F44 _03800F1C: mov r1, #0 ldr r0, _03800F60 ; =_0380766C str r1, [r0] ldr r0, _03800F50 ; =_038099A0 ldr r0, [r0] cmp r0, #0 beq _03800F44 mov r0, #17 mov r1, #100 ; 0x64 bl FUN_03800E0C _03800F44: add sp, sp, #4 ldmia sp!, {lr} bx lr _03800F50: .word _038099A0 _03800F54: .word 0x027FFC40 _03800F58: .word _03807668 _03800F5C: .word 0x027FFC3C _03800F60: .word _0380766C arm_func_start FUN_03800F64 FUN_03800F64: ; 0x03800F64 mov r2, #1 mov r0, r2 ldr r1, _03800F88 ; =0x04000214 ldr r1, [r1] ands r1, r1, #1048576 ; 0x100000 movne r0, #0 ldrne r1, _03800F8C ; =_038099A8 strne r2, [r1] bx lr _03800F88: .word 0x04000214 _03800F8C: .word _038099A8 arm_func_start FUN_03800F90 FUN_03800F90: ; 0x03800F90 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _03800FE8 ; =0x027FFC10 ldrh r0, [r0] cmp r0, #0 ldreq r0, _03800FEC ; =0x027FF800 ldrne r0, _03800FF0 ; =0x027FFC00 ldr r0, [r0] str r0, [sp] bl FUN_0380094C ldr r1, [sp] cmp r0, r1 moveq r0, #1 movne r0, #0 cmp r0, #0 moveq r2, #1 movne r2, #0 ldr r1, _03800FF4 ; =_038099A8 str r2, [r1] add sp, sp, #4 ldmia sp!, {lr} bx lr _03800FE8: .word 0x027FFC10 _03800FEC: .word 0x027FF800 _03800FF0: .word 0x027FFC00 _03800FF4: .word _038099A8 arm_func_start FUN_03800FF8 FUN_03800FF8: ; 0x03800FF8 stmfd sp!, {lr} sub sp, sp, #4 ldr r0, _03801040 ; =_038099A8 ldr r0, [r0] cmp r0, #0 bne _0380102C ldr r0, _03801044 ; =0x027FFC1F ldrb r0, [r0] ands r0, r0, #1 beq _03801028 bl FUN_03800F90 b _0380102C _03801028: bl FUN_03800F64 _0380102C: ldr r0, _03801040 ; =_038099A8 ldr r0, [r0] add sp, sp, #4 ldmia sp!, {lr} bx lr _03801040: .word _038099A8 _03801044: .word 0x027FFC1F arm_func_start FUN_03801048 FUN_03801048: ; 0x03801048 stmfd sp!, {lr} sub sp, sp, #4 and r0, r1, #63 ; 0x3f cmp r0, #1 bne _03801064 bl FUN_03800E54 b _03801068 _03801064: bl FUN_037FB1F0 _03801068: add sp, sp, #4 ldmia sp!, {lr} bx lr arm_func_start FUN_03801074 FUN_03801074: ; 0x03801074 stmdb sp!, {r4, r5, lr} sub sp, sp, #4 ldr r0, _038010CC ; =_038099A4 ldr r1, [r0] cmp r1, #0 bne _038010C0 mov r1, #1 str r1, [r0] bl FUN_037FB5B0 mov r5, #14 mov r4, #0 _038010A0: mov r0, r5 mov r1, r4 bl FUN_037FB780 cmp r0, #0 beq _038010A0 mov r0, #14 ldr r1, _038010D0 ; =FUN_03801048 bl FUN_037FB7A8 _038010C0: add sp, sp, #4 ldmia sp!, {r4, r5, lr} bx lr _038010CC: .word _038099A4 _038010D0: .word FUN_03801048 .balign 2, 0 ; Don't pad with nop