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

Disassembly:
push ebp
mov ebp, esp
mov cl, byte [ebp + 8]
sub esp, 0x138
push ebx
push esi
push edi
mov edi, eax
movsx eax, word [edi]
dec eax
cmp eax, 0x1d
ja case.0x405997.24
jmp dword [eax*4 + 0x405ef1]
test cl, 1
je case.0x405997.24
xor eax, eax
inc eax
jmp 0x405eeb
test cl, 2
jmp 0x4059a1
test cl, 0x10
jmp 0x4059a1
test cl, 0x20
jmp 0x4059a1
test cl, 0x40
jmp 0x4059a1
test cl, 4
jmp 0x4059a1
push 0xa4
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns case.0x405997.24
jmp 0x4059a7
push 0xa5
jmp 0x4059cd
test cl, 4
je case.0x405997.24
test cl, 8
jmp 0x4059a1
test cl, 4
je case.0x405997.24
push 0x12
jmp 0x4059cd
test cl, 8
jmp 0x4059f6
cmp dword [edi + 0x34], 0
jmp 0x4059a1
test cl, 0x7f
jne case.0x405997.24
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa4
call esi
mov ebx, 0x8000
and ax, bx
push 0xa5
movzx edi, ax
call esi
and ax, bx
movzx eax, ax
push 0x12
mov dword [ebp - 8], eax
call esi
and ax, bx
xor ebx, ebx
cmp di, bx
movzx eax, ax
jne case.0x405997.24
cmp word [ebp - 8], bx
jne case.0x405997.24
cmp ax, bx
jne case.0x405997.24
jmp 0x4059a7
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call fcn.00401a6b
cmp eax, ebx
mov dword [ebp - 8], eax
je case.0x405997.24
mov esi, 0xff
push esi
lea eax, [ebp - 0x133]
push ebx
push eax
mov byte [ebp - 0x134], bl
call sub.msvcrt.dll_memset
add esp, 0xc
push esi
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_GetClassNameA]
cmp word [edi], 0xb
jne 0x405ad5
lea eax, [ebp - 0x134]
push str.wmplayerapp
push eax
call sub.msvcrt.dll__strcmpi
test eax, eax
pop ecx
pop ecx
je 0x4059a7
cmp word [edi], 0x11
jne 0x405af6
lea eax, [ebp - 0x134]
push str.ehome_render_window
push eax
call sub.msvcrt.dll__strcmpi
test eax, eax
pop ecx
pop ecx
je 0x4059a7
cmp word [edi], 0x12
jne 0x405b17
push str.itunes
lea eax, [ebp - 0x134]
push eax
call sub.msvcrt.dll__strcmpi
test eax, eax
pop ecx
pop ecx
je 0x4059a7
cmp word [edi + 0xa], bx
je case.0x405997.24
mov eax, dword [ebp - 8]
cmp eax, dword [0x410810]
jne case.0x405997.24
mov dword [0x4101f4], 1
jmp case.0x405997.24
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
push str.VLC_DirectX_video
jmp 0x405cb2
call fcn.00401a6b
cmp word [edi + 0xa], bx
je case.0x405997.24
jmp 0x405b24
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call dword [sym.imp.USER32.dll_GetForegroundWindow]
jmp 0x405ba3
cmp word [edi + 0xa], bx
je case.0x405997.24
cmp esi, dword [0x410810]
jmp 0x405b2a
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call fcn.00401a6b
mov esi, eax
cmp esi, ebx
je case.0x405997.24
push esi
call fcn.0040576e
test eax, eax
pop ecx
je 0x405b7e
jmp 0x4059a7
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call dword [sym.imp.USER32.dll_GetForegroundWindow]
cmp eax, ebx
mov dword [ebp - 8], eax
je case.0x405997.24
mov esi, 0xff
push esi
lea eax, [ebp - 0x133]
push ebx
push eax
mov byte [ebp - 0x134], bl
call sub.msvcrt.dll_memset
add esp, 0xc
push esi
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_GetClassNameA]
lea eax, [ebp - 0x134]
push str.gomplayer1.x
push eax
call sub.msvcrt.dll__strcmpi
test eax, eax
pop ecx
pop ecx
je 0x4059a7
push str.gomplayer2.x
jmp 0x405b01
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call dword [sym.imp.USER32.dll_GetForegroundWindow]
cmp eax, ebx
mov dword [ebp - 8], eax
je case.0x405997.24
mov esi, 0xff
push esi
lea eax, [ebp - 0x133]
push ebx
push eax
mov byte [ebp - 0x134], bl
call sub.msvcrt.dll_memset
add esp, 0xc
push esi
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_GetClassNameA]
lea eax, [ebp - 0x134]
push str.tbsform
push eax
call sub.msvcrt.dll__strcmpi
test eax, eax
pop ecx
pop ecx
je 0x4059a7
push str.bsplayer
jmp 0x405b01
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
push str.SideBar_AppBarWindow
call fcn.004019d4
test eax, eax
pop ecx
je 0x405b57
jmp 0x4059a7
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call fcn.00401a6b
cmp eax, ebx
mov dword [ebp - 8], eax
je case.0x405997.24
mov esi, 0xff
push esi
lea eax, [ebp - 0x133]
push ebx
push eax
mov byte [ebp - 0x134], bl
call sub.msvcrt.dll_memset
add esp, 0xc
push esi
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_GetClassNameA]
lea eax, [ebp - 0x134]
push str.Shell_TrayWnd
push eax
call sub.msvcrt.dll_strcmp
test eax, eax
pop ecx
pop ecx
je 0x4059a7
push str.Shell_SecondaryTrayWnd
jmp 0x405d82
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call fcn.00401a6b
cmp eax, ebx
mov dword [ebp - 8], eax
je case.0x405997.24
mov esi, 0xff
push esi
lea eax, [ebp - 0x133]
push ebx
push eax
mov byte [ebp - 0x134], bl
call sub.msvcrt.dll_memset
add esp, 0xc
push esi
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_GetClassNameA]
push str.Progman
lea eax, [ebp - 0x134]
push eax
call sub.msvcrt.dll_strcmp
jmp 0x405b0d
xor ebx, ebx
cmp dword [0x4101f4], ebx
jne case.0x405997.24
call fcn.00401a6b
mov esi, eax
cmp esi, ebx
je case.0x405997.24
lea eax, [ebp - 0x34]
push eax
push esi
call dword [sym.imp.USER32.dll_GetClientRect]
lea eax, [ebp - 0x1c]
push eax
push esi
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x30]
push 1
mov dword [ebp - 8], eax
lea eax, [ebp - 0xc]
push eax
push ebx
push esi
call dword [sym.imp.USER32.dll_MapWindowPoints]
lea eax, [ebp - 0x24]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 8]
jne 0x405e3b
push 0x88
lea eax, [ebp - 0xc0]
push ebx
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0xc4]
push eax
push ebx
push 0x33f
push esi
mov dword [ebp - 0xc4], 0x8c
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0xb4]
cmp ecx, eax
je 0x405e3b
mov dword [ebp - 0x18], ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x18]
jl 0x405b7e
cmp eax, dword [ebp - 8]
jg 0x405b7e
jmp 0x4059a7
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
xor ebx, ebx
cmp dword [ebp - 0xc], ebx
je 0x4059a7
cmp dword [ebp - 8], ebx
je 0x4059a7
mov eax, dword [0x410818]
dec eax
cmp dword [ebp - 0xc], eax
je 0x4059a7
mov eax, dword [0x41081c]
dec eax
cmp dword [ebp - 8], eax
jmp 0x405a5e
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov esi, dword [ebp - 0xc]
mov eax, dword [0x41081c]
mov edx, dword [ebp - 8]
mov ecx, dword [0x410818]
xor ebx, ebx
cmp esi, ebx
je 0x405eb8
lea edi, [ecx - 1]
cmp esi, edi
jne 0x405ecc
cmp edx, 0x1e
jle 0x4059a7
lea edi, [eax - 0x1e]
cmp edx, edi
jge 0x4059a7
cmp edx, ebx
je 0x405ed5
dec eax
cmp edx, eax
jne case.0x405997.24
cmp esi, 0x1e
jle 0x4059a7
add ecx, 0xffffffe2
cmp esi, ecx
jge 0x4059a7
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret