Function at 0x474242
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0xaba010]
xor eax, esp
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x14]
push ebx
push esi
push edi
and dword [eax], 0
mov ebx, ecx
cmp dword [ebp + 0xc], 0x1b6
jne 0x47459a
push dword [ebx + 0x404c]
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x47459a
mov eax, dword [0xd58f54]
cmp dword [eax + 0x1188], 0
jne 0x47459a
cmp byte [ebx + 0x40c4], 0
je 0x47459a
mov eax, dword [ebx + 0x4074]
mov esi, eax
mov dword [esp + 0x10], esi
jmp 0x4742bc
mov esi, eax
push eax
mov dword [esp + 0x14], esi
call dword [sym.imp.USER32.dll_GetParent]
test eax, eax
jne 0x4742af
call dword [sym.imp.USER32.dll_GetForegroundWindow]
cmp esi, eax
je 0x4742d9
mov ecx, dword [0xd58f54]
cmp dword [ecx + 4], eax
jne 0x474580
push dword [ebx + 0x404c]
call dword [sym.imp.USER32.dll_GetDC]
push dword [ebx + 0x404c]
lea ecx, [esp + 0x38]
mov edi, eax
call fcn.004165b6
lea eax, [esp + 0x34]
push eax
push edi
call dword [sym.imp.GDI32.dll_RectVisible]
push edi
push dword [ebx + 0x404c]
mov esi, eax
call dword [sym.imp.USER32.dll_ReleaseDC]
test esi, esi
je 0x474580
and dword [esp + 0x18], 0
lea eax, [esp + 0x18]
and dword [esp + 0x1c], 0
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x47459a
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call dword [sym.imp.USER32.dll_WindowFromPoint]
mov esi, eax
jmp 0x474351
push eax
mov esi, eax
call dword [sym.imp.USER32.dll_GetParent]
test eax, eax
jne 0x474348
cmp esi, dword [esp + 0x10]
jne 0x474580
mov eax, dword [0xd58f54]
test eax, eax
je 0x47436b
add eax, 0x5c
cmp dword [eax + 0x1e0], 0
je 0x474393
cmp dword [ebx + 0x4020], 0
je 0x474393
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8000
test cx, ax
je 0x474580
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
cmp esi, dword [ebx + 0x40b8]
jne 0x474574
cmp eax, dword [ebx + 0x40bc]
jne 0x474574
lea eax, [esp + 0x18]
push eax
push dword [ebx + 0x404c]
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [esp + 0x1c]
lea eax, [esp + 0x18]
mov ecx, ebx
push dword [esp + 0x1c]
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.0047412a
mov ecx, dword [ebx + 0x402c]
test eax, eax
jne 0x4743ff
lea eax, [ebx + 0x4078]
push eax
push 0
push 0x411
push ecx
jmp 0x474594
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
push 0x40f
push ecx
call edi
test eax, eax
je 0x47444c
cmp dword [0xd59fc0], ebx
jne 0x47459a
mov eax, dword [ebx + 0x40cc]
cmp eax, dword [esp + 0x10]
je 0x47459a
lea eax, [ebx + 0x4078]
push eax
push 0
push 0x411
push dword [ebx + 0x402c]
call edi
jmp 0x47459a
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
cmp dword [0xd59fc0], ebx
jne 0x47447d
cmp dword [ebx + 0x40cc], ecx
jne 0x47447d
cmp dword [ebx + 0x4020], 0
jne 0x47459a
cmp dword [ebx + 0x40d0], edi
je 0x47459a
mov byte [ebx + 0x1c], 0
mov eax, dword [ebx]
push edi
push ecx
mov ecx, ebx
call dword [eax + 8]
mov eax, dword [ebx]
mov ecx, ebx
push edi
call dword [eax]
cmp dword [ebx + 0x40d4], 0
mov dword [esp + 0x14], eax
je 0x4744b3
push eax
push edi
mov ecx, ebx
call fcn.004741ed
test eax, eax
je 0x47459a
mov eax, dword [esp + 0x14]
test eax, eax
je 0x47459a
call dword [sym.imp.USER32.dll_GetDesktopWindow]
lea ecx, [esp + 0x24]
xorps xmm0, xmm0
push ecx
push eax
movups xmmword [esp + 0x2c], xmm0
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, esi
cmp ecx, dword [esp + 0x24]
jl 0x47450e
cmp ecx, dword [esp + 0x2c]
jg 0x47450e
mov edx, 0x258
cmp dword [esp + 0x14], edx
cmovl edx, dword [esp + 0x14]
lea eax, [edx + ecx]
cmp eax, dword [esp + 0x2c]
jle 0x47450e
mov esi, dword [esp + 0x2c]
sub esi, edx
sub esi, 0xf
jns 0x474509
xor esi, esi
jmp 0x47450e
cmp esi, ecx
cmovg esi, ecx
cmp dword [ebx + 0x4020], 0
je 0x47451e
mov ecx, ebx
call fcn.00473a96
mov eax, dword [esp + 0x10]
mov dword [ebx + 0x40cc], eax
mov eax, dword [esp + 0x20]
add eax, 0x14
mov dword [ebx + 0x40d0], edi
movzx ecx, ax
movzx eax, si
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
shl ecx, 0x10
or ecx, eax
mov dword [0xd59fc0], ebx
push ecx
push 0
push 0x412
push dword [ebx + 0x402c]
call esi
lea eax, [ebx + 0x4078]
push eax
push 1
push 0x411
push dword [ebx + 0x402c]
call esi
jmp 0x47459a
mov dword [ebx + 0x40b8], esi
mov dword [ebx + 0x40bc], eax
lea eax, [ebx + 0x4078]
push eax
push 0
push 0x411
push dword [ebx + 0x402c]
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [esp + 0x44]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004efcea
mov esp, ebp
pop ebp
ret 0x10