Function at 0x4051e2
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push ebp
push esi
push edi
push dword [esp + 0x1c]
mov esi, ecx
push dword [esp + 0x1c]
call fcn.004045fd
mov ebx, eax
cmp ebx, 0xffffffff
je 0x405404
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x10
call edi
xor ecx, ecx
test ax, ax
setl cl
push 0x11
mov dword [esp + 0x18], ecx
call edi
xor ecx, ecx
test ax, ax
setge cl
xor ebp, ebp
push ebx
mov eax, ecx
mov ecx, esi
cmp dword [esp + 0x18], ebp
je 0x4052ba
call sub.mfc90.dll_Ordinal_3140
push ebp
push ebp
not eax
push 0xb
push dword [esi + 0x20]
and eax, 0x80000000
mov dword [esp + 0x24], eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, esi
xor edi, edi
call fcn.0040111b
test eax, eax
jle 0x4052b4
mov ebp, 0x8068
push edi
mov ecx, esi
call sub.mfc90.dll_Ordinal_3140
and eax, 0x7fffffff
or eax, dword [esp + 0x14]
mov ecx, esi
push eax
push edi
call fcn.0040112e
push edi
mov ecx, esi
call fcn.00403e15
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call sub.mfc90.dll_Ordinal_2592
xor ecx, ecx
cmp edi, ebx
sete cl
push ecx
push edi
push ebp
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageA]
mov ecx, esi
inc edi
call fcn.0040111b
cmp edi, eax
jl 0x405262
xor ebp, ebp
push ebp
jmp 0x4053b8
cmp eax, ebp
je 0x4053c7
call sub.mfc90.dll_Ordinal_3140
push ebp
push ebp
mov edi, eax
push 0xb
push dword [esi + 0x20]
not edi
and edi, 0x80000000
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, esi
call fcn.00403e2c
mov ebp, 0x8068
cmp eax, 1
jbe 0x40537a
and dword [esp + 0x14], 0
mov ecx, esi
call fcn.0040111b
test eax, eax
jle 0x40537a
cmp dword [esp + 0x14], ebx
je 0x405369
push 2
push dword [esp + 0x18]
push 0x102c
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
je 0x405369
push dword [esp + 0x14]
mov ecx, esi
call sub.mfc90.dll_Ordinal_3140
and eax, 0x7fffffff
or eax, edi
push eax
push dword [esp + 0x18]
mov ecx, esi
call fcn.0040112e
push dword [esp + 0x14]
mov ecx, esi
call fcn.00403e15
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call sub.mfc90.dll_Ordinal_2592
push 0
push dword [esp + 0x18]
push ebp
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageA]
inc dword [esp + 0x14]
mov ecx, esi
call fcn.0040111b
cmp dword [esp + 0x14], eax
jl 0x405303
push ebx
mov ecx, esi
call sub.mfc90.dll_Ordinal_3140
and eax, 0x7fffffff
or eax, edi
push eax
push ebx
mov ecx, esi
call fcn.0040112e
push ebx
mov ecx, esi
call fcn.00403e15
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call sub.mfc90.dll_Ordinal_2592
push 1
push ebx
push ebp
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageA]
push 0
push 1
push 0xb
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x405417
call sub.mfc90.dll_Ordinal_3140
xor eax, 0x80000000
push eax
push ebx
mov ecx, esi
call fcn.0040112e
push ebx
mov ecx, esi
call fcn.00403e15
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call sub.mfc90.dll_Ordinal_2592
push 1
push ebx
push 0x8068
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageA]
jmp 0x405417
push dword [esp + 0x1c]
mov ecx, esi
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call fcn.004032dc
pop edi
pop esi
pop ebp
pop ebx
ret 0xc