Function at 0x461850
Capabilities:
Check for unmoving mouse cursor
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push esi
sub esp, 0x80
push ecx
push edi
lea edi, [esp + 8]
mov eax, 0xcccccccc
mov ecx, 0x20
rep stosd dword es:[edi], eax
pop edi
pop ecx
mov dword [ebp - 0x18], 0
mov eax, dword [ebp + 8]
mov dword [0x518a64], eax
mov eax, dword [ebp + 0xc]
mov dword [0x518a68], eax
mov eax, dword [ebp + 0x10]
mov dword [0x518a6c], eax
mov eax, dword [ebp + 0x14]
mov dword [0x518a70], eax
call dword [sym.imp.USER32.dll_GetMessageTime]
mov dword [0x518a74], eax
call dword [sym.imp.USER32.dll_GetMessagePos]
mov dword [ebp - 0x50], eax
mov edx, dword [ebp - 0x50]
and edx, 0xffff
movsx edx, dx
mov dword [0x518a78], edx
mov edx, dword [ebp - 0x50]
shr edx, 0x10
movsx edx, dx
mov dword [0x518a78], edx
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.004615b0
add esp, 0x14
cmp eax, 0
je 0x4618f1
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
mov eax, dword [ebp + 0xc]
sub eax, 3
je 0x461fc4
sub eax, 2
je 0x4620a7
sub eax, 1
je 0x461ad2
sub eax, 9
je 0x461da3
sub eax, 1
je 0x462155
sub eax, 1
je 0x461a4b
sub eax, 3
je 0x461c05
sub eax, 8
je 0x461b55
sub eax, 4
je 0x462187
sub eax, 1
je 0x461aa5
sub eax, 1
je 0x4622a6
sub eax, 0x5c
je 0x462214
sub eax, 0x94
je 0x462049
sub eax, 4
je 0x461dd5
sub eax, 0xb
je 0x46220a
sub eax, 0x14
je 0x461c82
sub eax, 3
je 0x461c82
sub eax, 0xc8
je 0x461f5f
sub eax, 1
je 0x461de2
sub eax, 1
je 0x461f20
sub eax, 2
je 0x461de2
sub eax, 1
je 0x461f20
sub eax, 5
je 0x46221e
sub eax, 0xa
je 0x46206b
sub eax, 0xe
je 0x461b9b
sub eax, 0x10
je 0x462114
sub eax, 0x54
je 0x4619f3
sub eax, 0x89
je 0x461a68
jmp 0x4622a6
call fcn.004691a0
mov dword [ebp - 0x58], eax
cmp dword [ebp - 0x58], 0
je 0x461a1a
push 0
push dword [ebp + 0x14]
push dword [ebp + 0x10]
mov edx, dword [ebp - 0x58]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0xb0]
jmp 0x461a46
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0
je 0x461a46
push 0
push dword [ebp + 0x14]
push dword [ebp + 0x10]
mov edx, dword [ebp - 0x5c]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0xb0]
jmp 0x4622a6
call fcn.00412b90
cmp al, 0
jne 0x461a5d
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0x44], eax
push 0
call fcn.00464ae0
push eax
push dword [ebp - 0x44]
call dword [sym.imp.GDI32.dll_SelectPalette]
push dword [ebp - 0x44]
call dword [sym.imp.GDI32.dll_RealizePalette]
push dword [ebp - 0x44]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
push dword [ebp + 8]
call fcn.00464a30
pop ecx
cmp al, 0
je 0x4622a6
mov eax, dword [ebp + 0x18]
mov dword [eax], 4
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
mov byte [0x518a60], 1
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x461b2a
mov eax, dword [ebp + 0x10]
and eax, 0xffff
cmp ax, 0
je 0x461b14
mov eax, dword [ebp - 0x48]
mov byte [eax + 0x97], 1
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x70]
jmp 0x461b2a
mov eax, dword [ebp - 0x48]
mov byte [eax + 0x97], 0
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x74]
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
cmp dword [ebp - 0x48], 0
je 0x461b4a
mov eax, dword [ebp - 0x48]
cmp byte [eax + 0x40], 0
jne 0x461b4a
push 0
call fcn.00467950
pop ecx
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
cmp dword [ebp + 0x10], 0
je 0x461b6e
call fcn.004685b0
push dword [ebp + 8]
call fcn.00461040
pop ecx
jmp 0x4622a6
call fcn.004610e0
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
je 0x461b96
mov eax, dword [ebp - 0x60]
cmp byte [eax + 0x40], 0
jne 0x461b96
call fcn.004685f0
jmp 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
jne 0x461bbb
mov eax, 0
lea esp, [ebp - 4]
pop esi
pop ebp
ret
mov eax, dword [ebp + 8]
cmp dword [ebp + 0x14], eax
jne 0x461bde
mov eax, dword [ebp - 0x48]
mov byte [eax + 0x97], 1
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x70]
jmp 0x4622a6
mov eax, dword [ebp + 8]
cmp dword [ebp + 0x10], eax
jne 0x4622a6
mov eax, dword [ebp - 0x48]
mov byte [eax + 0x97], 0
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x74]
jmp 0x4622a6
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x14]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetClientRect]
push dword [ebp + 8]
call fcn.0040f3e0
pop ecx
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x68]
cmp byte [eax + 0x9b], 0
je 0x461c3e
mov eax, dword [ebp - 0x68]
mov ecx, dword [eax + 0x9c]
mov dword [ebp - 0x64], ecx
jmp 0x461c49
push 0xf
call dword [sym.imp.USER32.dll_GetSysColor]
mov dword [ebp - 0x64], eax
push dword [ebp - 0x64]
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [ebp - 0x54], eax
push dword [ebp - 0x54]
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x44]
call dword [sym.imp.USER32.dll_FillRect]
push dword [ebp - 0x54]
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [ebp + 0x18]
mov dword [eax], 1
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
push 0x518af8
push dword [ebp + 0x14]
call dword [sym.imp.USER32.dll_GetPropA]
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x6c], 0
je 0x461d9e
mov edx, dword [ebp - 0x6c]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x150]
cmp al, 0
je 0x461d3d
call fcn.00497af0
cmp eax, 0
je 0x461d9e
call fcn.00497dc0
cmp eax, 0
je 0x461d9e
push dword [ebp - 0x6c]
call fcn.00492c50
pop ecx
mov dword [ebp - 0x70], eax
cmp dword [ebp - 0x70], 0
je 0x461cf4
push 0
push dword [ebp + 0x10]
push dword [ebp - 0x70]
call fcn.00497e10
add esp, 0xc
jmp 0x461d07
push 0
push dword [ebp + 0x10]
mov eax, dword [ebp - 0x6c]
push dword [eax + 0x58]
call fcn.00497e10
add esp, 0xc
cmp dword [0x54862c], 0
je 0x461d1c
push dword [0x54862c]
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [ebp - 0x34], 1
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.GDI32.dll_CreateBrushIndirect]
mov dword [0x54862c], eax
mov eax, dword [0x54862c]
lea esp, [ebp - 4]
pop esi
pop ebp
ret
push dword [ebp - 0x6c]
call fcn.004849a0
pop ecx
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x74]
cmp byte [eax + 0x9b], 0
je 0x461d9e
mov eax, dword [ebp - 0x74]
mov ecx, dword [eax + 0x9c]
mov dword [ebp - 0x78], ecx
cmp dword [0x54862c], 0
je 0x461d76
push dword [0x54862c]
call dword [sym.imp.GDI32.dll_DeleteObject]
push dword [ebp - 0x78]
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [0x54862c], eax
push dword [0x54862c]
push dword [ebp + 0x10]
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [0x54862c]
lea esp, [ebp - 4]
pop esi
pop ebp
ret
jmp 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0xc8]
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
push 0
call fcn.00467950
pop ecx
jmp 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x461f0c
mov word [0x518f38], 0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
test eax, 0x8000
je 0x461e1f
or word [0x518f38], 0x1000
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
test eax, 0x8000
je 0x461e3a
or word [0x518f38], 0x200
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
test eax, 0x8000
je 0x461e55
or word [0x518f38], 0x800
mov byte [0x5291da], 0
cmp dword [ebp + 0xc], 0x201
jne 0x461e92
movsx eax, word [0x518f38]
push eax
mov edx, dword [ebp + 0x14]
shr edx, 0x10
movsx eax, dx
push eax
mov edx, dword [ebp + 0x14]
and edx, 0xffff
movsx eax, dx
push eax
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x20]
jmp 0x461ebd
movsx eax, word [0x518f38]
push eax
mov edx, dword [ebp + 0x14]
shr edx, 0x10
movsx eax, dx
push eax
mov edx, dword [ebp + 0x14]
and edx, 0xffff
movsx eax, dx
push eax
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x24]
call fcn.004691b0
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0
je 0x461f0c
cmp byte [0x5291da], 0
je 0x461f0c
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x3c]
push eax
mov eax, dword [ebp - 0x48]
push dword [eax + 0x58]
call dword [sym.imp.USER32.dll_ScreenToClient]
mov byte [0x5291da], 0
call fcn.00469220
push dword [ebp - 0x38]
push dword [ebp - 0x3c]
mov edx, dword [ebp - 0x4c]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x34]
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
mov eax, 0
lea esp, [ebp - 4]
pop esi
pop ebp
ret
call fcn.004691b0
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0
je 0x4622a6
call fcn.00469220
mov edx, dword [ebp + 0x14]
shr edx, 0x10
movsx eax, dx
push eax
mov edx, dword [ebp + 0x14]
and edx, 0xffff
movsx eax, dx
push eax
mov edx, dword [ebp - 0x4c]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x34]
jmp 0x4622a6
call fcn.00492600
cmp al, 0
je 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4622a6
mov edx, dword [ebp - 0x50]
and edx, 0xffff
movsx edx, dx
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0x50]
shr edx, 0x10
movsx edx, dx
mov dword [ebp - 0x1c], edx
lea eax, [ebp - 0x20]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x30]
jmp 0x4622a6
cmp byte [0x518a60], 0
je 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4622a6
mov ecx, dword [ebp - 0x48]
call fcn.0040fef0
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x1a4]
mov eax, fcn.0047f460
cmp eax, 0
je 0x4622a6
cmp dword [0x5291ec], 0
je 0x4622a6
mov eax, dword [0x5291ec]
mov dword [ebp - 0x7c], eax
jmp 0x46203a
mov eax, dword [ebp - 0x7c]
push dword [eax + 0x10]
call fcn.00480370
pop ecx
mov eax, dword [ebp - 0x7c]
mov ecx, dword [eax]
mov dword [ebp - 0x7c], ecx
cmp dword [ebp - 0x7c], 0
jne 0x462026
jmp 0x4622a6
cmp dword [ebp + 0x10], 0xf030
je 0x46205f
cmp dword [ebp + 0x10], 0xf120
jne 0x4622a6
mov byte [0x548629], 1
jmp 0x4622a6
cmp byte [0x518a60], 0
je 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4622a6
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp - 0x48]
call fcn.00464640
add esp, 0xc
jmp 0x4622a6
cmp byte [0x518a60], 0
je 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4622a6
mov ecx, dword [ebp - 0x48]
call fcn.0040fef0
cmp byte [0x548629], 0
je 0x4620f9
mov byte [0x548629], 0
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x1b8]
jmp 0x4622a6
mov byte [0x548628], 1
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x1a8]
jmp 0x4622a6
cmp byte [0x548628], 0
je 0x4622a6
mov byte [0x548628], 0
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], 0
je 0x4622a6
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x1b8]
jmp 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x1c0]
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
mov eax, dword [ebp + 0x14]
and eax, 0xffffffff
cmp ax, 1
je 0x46219e
mov eax, 0
lea esp, [ebp - 4]
pop esi
pop ebp
ret
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov edx, dword [ebp - 0x50]
and edx, 0xffff
movsx edx, dx
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x50]
shr edx, 0x10
movsx edx, dx
mov dword [ebp - 0x28], edx
push 0x7f00
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push dword [ebp - 0x48]
call fcn.004929f0
add esp, 0x10
mov byte [ebp - 0x7d], al
cmp byte [ebp - 0x7d], 0
je 0x462205
mov eax, dword [ebp + 0x18]
mov dword [eax], 1
mov eax, 1
lea esp, [ebp - 4]
pop esi
pop ebp
ret
jmp 0x4622a6
call fcn.004802a0
jmp 0x4622a6
call fcn.00412d70
jmp 0x4622a6
push 0
push dword [ebp + 8]
call fcn.00492fa0
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
push 0
lea eax, [ebp - 0x40]
push eax
push 0
push 0x68
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
cmp dword [ebp - 0x40], 0
je 0x4622a6
mov edx, dword [ebp + 0x10]
shr edx, 0x10
neg edx
mov dword [ebp - 0x84], edx
movsx edx, word [ebp - 0x84]
mov eax, 0x88888889
mov ecx, edx
imul edx
add edx, ecx
shr ecx, 0x1f
sar edx, 6
add ecx, edx
imul ecx, dword [ebp - 0x40]
mov dword [ebp - 0x40], ecx
push dword [ebp - 0x40]
mov edx, dword [ebp + 0x14]
shr edx, 0x10
movzx edx, dx
push edx
mov edx, dword [ebp + 0x14]
and edx, 0xffff
movzx edx, dx
push edx
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ecx]
mov ecx, edx
call dword [esi + 0x168]
movzx eax, al
mov eax, eax
lea esp, [ebp - 4]
pop esi
pop ebp
ret
mov eax, 0
lea esp, [ebp - 4]
pop esi
pop ebp
ret