Function at 0x408cd0
Capabilities:
Check for unmoving mouse cursor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
push ebx
mov ebx, dword [sym.imp.USER32.dll_InvalidateRect]
push esi
push edi
mov edi, dword [ebp + 8]
cmp dword [edi + 4], 0x100
mov esi, ecx
jne 0x408db0
mov eax, dword [edi + 8]
cmp eax, 0x22
je 0x408da4
cmp eax, 0x20
je 0x408da4
cmp eax, 0x27
je 0x408da4
cmp eax, 0x28
je 0x408da4
cmp eax, 0x70
jne 0x408d2a
call fcn.00408000
jmp 0x408db0
cmp eax, 0x71
jne 0x408d36
call fcn.004098f0
jmp 0x408db0
cmp eax, 0x79
jne 0x408d42
call fcn.00409ee0
jmp 0x408db0
cmp eax, 0x21
je 0x408d9d
cmp eax, 0x25
je 0x408d9d
cmp eax, 0x26
je 0x408d9d
cmp eax, 0x24
jne 0x408d6c
mov eax, dword [esi + 0x20]
push 0
push 0
push eax
mov dword [esi + 0xdf0], 1
call ebx
jmp 0x408db0
cmp eax, 0x23
jne 0x408d8a
mov edx, esi
call fcn.004097a0
mov ecx, dword [esi + 0x20]
push 0
push 0
push ecx
mov dword [esi + 0xdf0], eax
call ebx
jmp 0x408db0
cmp eax, 0xd
jne 0x408db0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.004097f0
jmp 0x408db0
call fcn.004144d1
mov ecx, esi
call fcn.00409820
lea eax, [esi + 0xc2c]
test eax, eax
je 0x408dbd
mov eax, dword [eax + 0x20]
cmp dword [edi], eax
jne 0x408f90
mov eax, dword [edi + 4]
cmp eax, 0x201
jne 0x408e0b
lea edx, [esp + 0x18]
push edx
mov dword [esi + 0x12a4], 1
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [esi + 0xdf0]
mov eax, dword [esp + 0x18]
mov dword [esi + 0x12ac], ecx
push edi
mov ecx, esi
mov dword [esi + 0x12a8], eax
call fcn.004049f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 0x202
jne 0x408e2d
push edi
mov ecx, esi
mov dword [esi + 0x12a4], 0
call fcn.004049f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 0x200
jne 0x408f90
cmp dword [esi + 0x12a4], 0
je 0x408f90
lea edx, [esp + 0x20]
push edx
xor edi, edi
call dword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [esp + 0x20]
sub eax, dword [esi + 0x12a8]
mov dword [esp + 0x10], eax
jns 0x408e6d
neg eax
mov edi, 1
mov dword [esp + 0x10], eax
call fcn.00409780
mov ecx, dword [esi + 0x12b8]
sub ecx, eax
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
fild dword [esi + 0xdf0]
mov edx, esi
call fcn.004097a0
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fdivp st(1)
fmul qword [0x55ae90]
fsubp st(1)
fstp dword [esp + 0x18]
fild dword [esp + 0x10]
fstp qword [esp + 0x28]
fld dword [esp + 0x18]
fstp qword [esp + 0x10]
call fcn.00409780
mov edx, dword [esi + 0x12b8]
sub edx, eax
mov eax, dword [esi + 0xdf0]
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
mov edx, esi
call fcn.004097a0
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fdivp st(1)
fmul qword [0x55ae90]
fsubp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fsubr qword [esp + 0x10]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fadd qword [0x55ae88]
fdivr qword [esp + 0x28]
call fcn.0050df60
test eax, eax
je 0x408f8d
test edi, edi
je 0x408f2d
mov ecx, dword [esi + 0x12ac]
sub ecx, eax
mov dword [esi + 0xdf0], ecx
jmp 0x408f3b
mov edx, dword [esi + 0x12ac]
add edx, eax
mov dword [esi + 0xdf0], edx
mov edx, esi
call fcn.004097a0
cmp dword [esi + 0xdf0], eax
jle 0x408f57
mov edx, esi
call fcn.004097a0
mov dword [esi + 0xdf0], eax
mov eax, 1
cmp dword [esi + 0xdf0], eax
jge 0x408f7e
mov edi, dword [ebp + 8]
push edi
mov ecx, esi
mov dword [esi + 0xdf0], eax
call fcn.004049f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.00409660
mov eax, dword [esi + 0x20]
push 0
push 0
push eax
call ebx
mov edi, dword [ebp + 8]
push edi
mov ecx, esi
call fcn.004049f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4