Function at 0x4159a5
Capabilities:
Log keystrokes via polling

Disassembly:
mov dword [esi + 0x14], 1
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x18], eax
push edi
call sub.USER32.dll_SetCapture
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
push dword [0x432ff0]
call sub.USER32.dll_CallWindowProcA
jmp 0x415141
cmp dword [esi + 0x14], 0
je 0x414f2c
and dword [esi + 0x14], 0
call sub.USER32.dll_ReleaseCapture
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
push dword [0x432ff0]
call sub.USER32.dll_CallWindowProcA
jmp 0x415141
cmp dword [0x431734], 0
jne 0x414f59
push 1
push edi
call fcn.004152c0
jmp 0x414f60
and dword [0x431734], 0
xor eax, eax
jmp 0x415141
push 3
push edi
call fcn.004152c0
mov dword [0x431734], 1
xor eax, eax
jmp 0x415141
push 2
push edi
call fcn.004152c0
xor eax, eax
jmp 0x415141
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
push dword [0x432ff0]
call sub.USER32.dll_CallWindowProcA
pop edi
pop esi
pop ebx
leave
ret 0x10
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
push dword [0x433090]
call fcn.00417290
mov ebx, eax
mov dword [ebp - 0xc], 0xd0d0d0d1
cmp dword [ebx], 0
jne 0x415b54
cmp dword [ebp + 0xc], 0x112
jne case.default.0x415c16
mov eax, dword [ebp + 0x10]
and eax, 0xfff0
cmp eax, 0xf000
jne case.default.0x415c16
push 0
lea eax, [ebp - 0x10]
push eax
push 0
push 0x26
call sub.USER32.dll_SystemParametersInfoA
cmp dword [ebp - 0x10], 0
je case.default.0x415c16
mov dword [ebx], 1
mov eax, dword [ebp + 0x10]
and eax, 0xf
mov dword [ebx + 0x30], eax
mov eax, ebx
add eax, 0x10
push eax
push dword [ebp + 8]
call sub.USER32.dll_GetWindowRect
mov eax, ebx
add eax, 0x20
push eax
push dword [ebp + 8]
call sub.USER32.dll_GetWindowRect
and dword [ebx + 0x34], 0
and dword [ebx + 0x38], 0
push 0x3d
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x3c], eax
push 0x3e
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x40], eax
push 0xfffffffffffffff0
push dword [ebp + 8]
call sub.USER32.dll_GetWindowLongA
test eax, 0x800000
je 0x415a72
push 5
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x44], eax
push 6
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x48], eax
jmp 0x415aa0
push 0xffffffffffffffec
push dword [ebp + 8]
call sub.USER32.dll_GetWindowLongA
test ax, 0x100
je 0x415a98
push 0x2d
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x44], eax
push 0x2e
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x48], eax
jmp 0x415aa0
and dword [ebx + 0x44], 0
and dword [ebx + 0x48], 0
push 0x22
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x4c], eax
push 0x23
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x50], eax
push 0x3b
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x54], eax
push 0x3c
call sub.USER32.dll_GetSystemMetrics
mov dword [ebx + 0x58], eax
mov eax, ebx
add eax, 0x34
push eax
push 0
push 0x24
push dword [ebp + 8]
call sub.USER32.dll_SendMessageA
push 1
call sub.USER32.dll_GetKeyState
or ax, ax
jne 0x415af7
push 0
push 1
push 0x201
push dword [ebp + 8]
call sub.USER32.dll_SendMessageA
push dword [ebp + 8]
call sub.USER32.dll_SetCapture
push 0
push 0
push 0x231
push dword [ebp + 8]
call sub.USER32.dll_PostMessageA
cmp dword [ebx + 0x30], 0
jne 0x415b47
mov dword [ebx + 4], 1
mov eax, ebx
add eax, 8
push eax
call sub.USER32.dll_GetCursorPos
push 0x8040
push 0
push 0
push 2
push 0x7f86
push 0
call sub.USER32.dll_LoadImageA
push eax
call sub.USER32.dll_SetCursor
jmp 0x415b4b
and dword [ebx + 4], 0
and dword [ebp - 0xc], 0
jmp case.default.0x415c16
cmp dword [ebp + 0xc], 0x200
jne 0x415be3
and dword [ebx + 4], 0
movzx eax, word [ebp + 0x14]
and eax, 0xffff
movsx eax, ax
mov dword [ebp - 8], eax
mov edi, dword [ebp + 0x14]
shr edi, 0x10
and edi, 0xffff
and edi, 0xffff
movsx edi, di
mov dword [ebp - 4], edi
push 1
lea eax, [ebp - 8]
push eax
push 0
push dword [ebp + 8]
call sub.USER32.dll_MapWindowPoints
push ebx
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.00415f07
mov eax, ebx
add eax, 0x10
push eax
push dword [ebx + 0x30]
push 0x214
push dword [ebp + 8]
call sub.USER32.dll_SendMessageA
mov esi, ebx
add esi, 0x10
sub esp, 0x10
mov edi, esp
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
push dword [ebp + 8]
call fcn.0041602c
add esp, 0x20
and dword [ebp - 0xc], 0
jmp case.default.0x415c16
cmp dword [ebp + 0xc], 0x100
jne 0x415eb7
mov eax, dword [ebp + 0x10]
cmp eax, 0x1b
je 0x415c2b
jg 0x415c04
cmp eax, 0xd
je 0x415c1d
jmp case.default.0x415c16
cmp eax, 0x25
jl case.default.0x415c16
cmp eax, 0x28
jg case.default.0x415c16
jmp dword [eax*4 + 0x43174c]
call sub.USER32.dll_ReleaseCapture
and dword [ebp - 0xc], 0
jmp case.default.0x415c16
call sub.USER32.dll_ReleaseCapture
and dword [ebp - 0xc], 0
jmp case.default.0x415c16
cmp dword [ebp + 0xc], 0x202
jne 0x415ecb
call sub.USER32.dll_ReleaseCapture
and dword [ebp - 0xc], 0
jmp case.default.0x415c16
cmp dword [ebp + 0xc], 0x215
jne case.default.0x415c16
push 0
push 0
push 0x232
push dword [ebp + 8]
call sub.USER32.dll_PostMessageA
and dword [ebx], 0
cmp dword [ebx + 4], 0
je 0x415ef9
push dword [ebx + 0xc]
push dword [ebx + 8]
call sub.USER32.dll_SetCursorPos
and dword [ebp - 0xc], 0
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
leave
ret 0x10