Function at 0x40a2f9
Capabilities:
Check for unmoving mouse cursor

Disassembly:
jmp 0x604a20
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x668728
push eax
mov al, byte [0x6be810]
mov dword fs:[0], esp
sub esp, 0x44
test al, 1
push ebx
push esi
push edi
mov edi, ecx
jne 0x604a5e
mov dl, al
push 0x604ec0
or dl, 1
mov byte [0x6be810], dl
call fcn.0063e660
add esp, 4
mov al, byte [0x6be810]
test al, 2
jne 0x604a7f
mov dl, al
push 0x604ea0
or dl, 2
mov byte [0x6be810], dl
call fcn.0063e660
add esp, 4
call fcn.0041093d
push edi
lea ecx, [esp + 0x40]
mov esi, eax
call sub.MFC42.DLL_CClientDC::CClientDC
lea ecx, [esp + 0x3c]
mov dword [esp + 0x58], 0
call sub.MFC42.DLL_CDC::SaveDC
lea eax, [esp + 0x3c]
mov ecx, edi
push eax
call fcn.00404d9f
mov ebx, dword [esp + 0x60]
cmp ebx, 2
jne 0x604ade
push ebx
push 0x6ae1e8
lea ecx, [esp + 0x44]
push 0x6be800
lea edx, [esp + 0x20]
push ecx
mov ecx, dword [esi + 0x50a]
push edx
call dword [sym.imp.zmathdll.dll_public:_class_CSize___thiscall_ZPiece::DrawToX_class_CDC___class_CPoint___unsigned_long_int__int_]
push 0x6be800
jmp 0x604b0a
cmp ebx, 4
jne 0x604b46
push 2
push 0x6ae1e8
lea eax, [esp + 0x44]
push 0x6be800
lea ecx, [esp + 0x20]
push eax
push ecx
mov ecx, dword [esi + 0x50a]
call dword [sym.imp.zmathdll.dll_public:_class_CSize___thiscall_ZPiece::DrawToX_class_CDC___class_CPoint___unsigned_long_int__int_]
mov edx, dword [esp + 0x64]
push edx
mov ecx, dword [esi + 0x50a]
call dword [sym.imp.zmathdll.dll_public:_void___thiscall_ZPiece::MoveTo_class_CPoint_const__]
push 0xffffffffffffffff
lea ecx, [esp + 0x40]
call sub.MFC42.DLL_CDC::RestoreDC
lea ecx, [esp + 0x3c]
mov dword [esp + 0x58], 0xffffffff
call fcn.0063d950
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x44]
mov dword fs:[0], ecx
add esp, 0x50
ret 0xc
test ebx, ebx
push ebp
jne 0x604c42
push 0x6be800
call dword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [edi + 0x20]
push 0x6be800
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push 0x6be800
mov ecx, edi
call fcn.004011e5
mov edx, dword [edi + 0x20]
lea ecx, [esp + 0x30]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetClientRect]
lea eax, [esp + 0x30]
mov ecx, edi
push eax
call fcn.004024cd
mov ecx, dword [0x6be804]
mov edx, dword [0x6be800]
push ecx
lea eax, [esp + 0x34]
push edx
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x604d98
mov ecx, dword [esi + 0x50a]
lea eax, [esp + 0x18]
push eax
mov edx, dword [ecx]
call dword [edx]
mov edx, dword [eax]
mov ebx, dword [eax + 4]
mov ebp, dword [eax + 8]
mov ecx, dword [eax + 0xc]
xor eax, eax
mov dword [esp + 0x3c], ecx
xor ecx, ecx
mov dword [0x6be818], eax
mov dword [0x6be81c], ecx
cmp dword [esi + 0x5c2], 2
jne 0x604c18
lea eax, [edx + ebp]
cdq
sub eax, edx
mov edx, dword [esp + 0x3c]
mov ecx, eax
lea eax, [edx + ebx]
mov ebx, dword [0x6be804]
cdq
sub eax, edx
mov edx, dword [0x6be800]
sar eax, 1
sar ecx, 1
sub eax, ebx
sub ecx, edx
mov dword [0x6be818], ecx
mov dword [0x6be81c], eax
mov ebx, dword [esp + 0x64]
mov eax, dword [edi + 0x80]
mov edx, dword [0x6be818]
mov ecx, dword [edi + 0x84]
sub edx, eax
mov eax, dword [0x6be81c]
mov dword [0x6be818], edx
sub eax, ecx
mov dword [0x6be81c], eax
lea eax, [esp + 0x18]
mov ecx, esi
push eax
call fcn.004037a6
mov ebp, dword [eax]
mov dword [esp + 0x10], ebp
mov ecx, dword [eax + 4]
lea eax, [esp + 0x30]
mov dword [esp + 0x14], ecx
mov ecx, dword [esi + 0x50a]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [eax]
test ebx, ebx
mov edx, dword [eax + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edx
je 0x604c9e
push 2
push 0x6ae1e8
lea eax, [esp + 0x48]
push 0x6be800
lea ecx, [esp + 0x3c]
push eax
push ecx
mov ecx, dword [esi + 0x50a]
call dword [sym.imp.zmathdll.dll_public:_class_CSize___thiscall_ZPiece::DrawToX_class_CDC___class_CPoint___unsigned_long_int__int_]
push 0x6be800
call dword [sym.imp.USER32.dll_GetCursorPos]
mov edx, dword [edi + 0x20]
push 0x6be800
push edx
call dword [sym.imp.USER32.dll_ScreenToClient]
push 0x6be800
mov ecx, edi
call fcn.004011e5
mov ecx, dword [0x6be800]
mov edi, dword [0x6be818]
mov edx, dword [0x6be81c]
add ecx, edi
mov edi, dword [0x6be804]
mov dword [0x6be800], ecx
add edi, edx
cmp ebx, 2
mov dword [0x6be804], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edi
jge 0x604d67
mov eax, dword [esi + 0x50a]
test byte [eax + 0x70], 1
je 0x604d1e
test ebp, ebp
jle 0x604d1e
mov edx, dword [esp + 0x18]
mov eax, ecx
sub eax, edx
cdq
idiv dword [esp + 0x10]
sub ecx, edx
mov dword [0x6be800], ecx
mov ecx, dword [esi + 0x50a]
test byte [ecx + 0x70], 2
je 0x604d45
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x604d45
mov edx, dword [esp + 0x1c]
mov eax, edi
sub eax, edx
cdq
idiv ecx
sub edi, edx
mov dword [0x6be804], edi
mov ecx, dword [esi + 0x50a]
push 2
push 0x6ae1e8
lea edx, [esp + 0x48]
push 0x6be800
lea eax, [esp + 0x3c]
push edx
push eax
call dword [sym.imp.zmathdll.dll_public:_class_CSize___thiscall_ZPiece::DrawToX_class_CDC___class_CPoint___unsigned_long_int__int_]
push 0xffffffffffffffff
lea ecx, [esp + 0x44]
call sub.MFC42.DLL_CDC::RestoreDC
lea ecx, [esp + 0x40]
mov dword [esp + 0x5c], 0xffffffff
call fcn.0063d950
mov ecx, dword [esp + 0x54]
pop ebp
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x50
ret 0xc
xor eax, eax
xor ecx, ecx
mov dword [0x6be818], eax
mov dword [0x6be81c], ecx
jmp 0x604c1c