Function at 0x313a8420
Capabilities:
Check for unmoving mouse cursor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc8
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov ebx, eax
mov esi, dword [ebp + 0x10]
add esi, 0xfffffffc
mov edx, ebx
mov eax, dword [esi]
call fcn.313a8c2c
mov edx, dword [ebx + 0x10]
sub edx, eax
mov dword [ebx + 8], edx
cmp byte [ebx + 0x18], 0
je 0x313a84f0
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
call fcn.31416e50
mov eax, dword [eax + 0x90]
cmp word [eax + 0x42], 1
jne 0x313a84f0
mov eax, dword [ebx + 0x24]
mov edx, dword [esi]
cmp eax, dword [edx + 0x14c]
je 0x313a84f0
mov eax, dword [esi]
cmp dword [eax + 0xac], 0
je 0x313a84ad
lea edx, [ebp - 0x1c]
mov eax, dword [esi]
call fcn.313aa8b8
mov edi, dword [ebp - 0x18]
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
call fcn.31416e50
mov eax, dword [eax + 0x90]
movsx eax, word [eax + 0x48]
add edi, eax
mov dword [ebx + 0xc], edi
jmp 0x313a84bd
lea edx, [ebp - 0x1c]
mov eax, dword [esi]
call fcn.313aa8b8
mov eax, dword [ebp - 0x18]
mov dword [ebx + 0xc], eax
mov eax, dword [esi]
cmp dword [eax + 0xac], 0
je 0x313a84db
mov eax, dword [esi]
mov eax, dword [eax + 0x4c]
push eax
call sub.user32.dll_GetCursorPos
test eax, eax
je 0x313a84db
add dword [ebx + 0xc], 3
mov edx, dword [ebx + 4]
mov eax, dword [esi]
call fcn.313a94b4
add eax, dword [ebx + 0xc]
mov dword [ebx + 0x14], eax
jmp 0x313a85b5
mov eax, dword [esi]
mov dl, 1
call fcn.313a6b64
mov edi, eax
mov edx, dword [ebx + 4]
mov eax, dword [esi]
call fcn.313a94b4
sub edi, eax
mov eax, dword [esi]
mov edx, dword [eax + 0xac]
mov eax, dword [esi]
mov eax, dword [eax + 0x4c]
mov cl, 1
call fcn.313fd51c
add edi, eax
sar edi, 1
jns 0x313a8524
adc edi, 0
lea edx, [ebp - 0x1c]
mov eax, dword [esi]
call fcn.313aa8b8
add edi, dword [ebp - 0x18]
mov dword [ebx + 0xc], edi
mov eax, dword [esi]
cmp dword [eax + 0xac], 0
je 0x313a856c
mov eax, dword [esi]
mov eax, dword [eax + 0x4c]
push eax
call sub.user32.dll_GetCursorPos
test eax, eax
je 0x313a856c
mov eax, dword [esi]
mov edx, dword [eax + 0xac]
mov eax, dword [esi]
mov eax, dword [eax + 0x4c]
xor ecx, ecx
call fcn.313fd4c8
sar eax, 1
jns 0x313a8569
adc eax, 0
add dword [ebx + 0xc], eax
mov eax, dword [esi]
cmp dword [eax + 0xac], 0
je 0x313a85a5
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
call fcn.31416e50
mov eax, dword [eax + 0x90]
cmp word [eax + 0x34], 1
jne 0x313a85a5
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
call fcn.31416e50
mov eax, dword [eax + 0x90]
movsx eax, word [eax + 0x32]
add dword [ebx + 0xc], eax
mov edx, dword [ebx + 4]
mov eax, dword [esi]
call fcn.313a94b4
add eax, dword [ebx + 0xc]
mov dword [ebx + 0x14], eax
cmp dword [ebp - 0xc], 0xffffffff
jle 0x313a8628
mov eax, dword [esi]
call fcn.313a6ef8
test al, al
je 0x313a85d0
cmp byte [ebp + 0xc], 0
je 0x313a85d0
xor eax, eax
jmp 0x313a85d2
mov al, 1
and eax, 0x7f
inc eax
push eax
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
call fcn.31416e50
mov eax, dword [eax + 0x94]
imul edx, dword [ebp - 0xc], 0xd
lea eax, [eax + edx*4]
push eax
lea eax, [ebp - 0x30]
push eax
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x38]
xor ecx, ecx
xor edx, edx
call fcn.3141480c
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x38]
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
call fcn.31263940
lea edx, [ebp - 0x38]
mov ecx, dword [ebx]
mov eax, dword [esi]
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 0x38]
call fcn.3141b580
mov eax, dword [ebp - 8]
inc dword [eax]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8