Function at 0x40be05
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov ebx, dword [ebp + 8]
cmp dword [0x56425c], 0
je 0x40c0a1
call fcn.00412691
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x40c0a1
test ebx, ebx
jne 0x40be3d
mov dword [ebp - 0xc], 1
jmp 0x40be42
xor eax, eax
mov dword [ebp - 0xc], eax
cmp dword [ebp + 0xc], 0
je 0x40be69
push 0x11
call sub.USER32.dll_GetKeyState
movsx edx, ax
and edx, 0x8000
cmp edx, 0x8000
sete cl
and ecx, 1
mov dword [ebp - 0x10], ecx
jmp 0x40be6e
xor eax, eax
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x40be8d
cmp dword [0x564260], 0
je 0x40be86
mov dword [ebp - 0x10], 1
jmp 0x40bea4
xor edx, edx
mov dword [ebp - 0x10], edx
jmp 0x40bea4
cmp dword [0x564260], 0
je 0x40be9d
xor ecx, ecx
mov dword [ebp - 0x10], ecx
jmp 0x40bea4
mov dword [ebp - 0x10], 1
push 0xa
call sub.USER32.dll_BeginDeferWindowPos
mov edi, eax
test edi, edi
je 0x40c0a1
test ebx, ebx
jne 0x40bf69
cmp dword [ebp - 0x10], 0
je 0x40bf12
mov ebx, dword [0x56f010]
test ebx, ebx
je 0x40bf69
mov eax, dword [ebx + 0xb6c]
cmp eax, dword [ebp - 4]
jne 0x40bf06
push dword [ebx]
call fcn.0051fe9d
test eax, eax
je 0x40bf06
push 0x13
push 0
push 0
push 0
push 0
push dword [ebp - 0xc]
push dword [ebx]
push edi
call sub.USER32.dll_DeferWindowPos
mov edi, eax
test edi, edi
je 0x40c0a1
mov ebx, dword [ebx + 0xd3c]
test ebx, ebx
jne 0x40bed1
jmp 0x40bf69
push 5
push dword [0x56f01c]
call sub.USER32.dll_GetWindow
mov esi, eax
test esi, esi
je 0x40bf69
push esi
call fcn.0051fafa
mov ebx, eax
test ebx, ebx
je 0x40bf5b
mov eax, dword [ebx + 0xb6c]
cmp eax, dword [ebp - 4]
jne 0x40bf5b
push 0x13
push 0
push 0
push 0
push 0
push dword [ebp - 0xc]
push dword [ebx]
push edi
call sub.USER32.dll_DeferWindowPos
mov edi, eax
test edi, edi
je 0x40c0a1
push 2
push esi
call sub.USER32.dll_GetWindow
mov esi, eax
test esi, esi
jne 0x40bf25
mov edx, dword [0x55f25c]
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 0
je 0x40c046
mov ecx, dword [ebp - 8]
cmp ecx, dword [ebp - 4]
je 0x40c030
cmp dword [ebp - 0x10], 0
je 0x40bfdd
mov ebx, dword [0x56f010]
test ebx, ebx
je 0x40c030
mov eax, dword [ebx + 0xb6c]
cmp eax, dword [ebp - 8]
jne 0x40bfd1
push dword [ebx]
call fcn.0051fe9d
test eax, eax
je 0x40bfd1
push 0x13
push 0
push 0
push 0
push 0
push dword [ebp - 0xc]
push dword [ebx]
push edi
call sub.USER32.dll_DeferWindowPos
mov edi, eax
test edi, edi
je 0x40c0a1
mov ebx, dword [ebx + 0xd3c]
test ebx, ebx
jne 0x40bf9c
jmp 0x40c030
push 5
push dword [0x56f01c]
call sub.USER32.dll_GetWindow
mov esi, eax
test esi, esi
je 0x40c030
push esi
call fcn.0051fafa
mov ebx, eax
test ebx, ebx
je 0x40c022
mov eax, dword [ebx + 0xb6c]
cmp eax, dword [ebp - 8]
jne 0x40c022
push 0x13
push 0
push 0
push 0
push 0
push dword [ebp - 0xc]
push dword [ebx]
push edi
call sub.USER32.dll_DeferWindowPos
mov edi, eax
test edi, edi
je 0x40c0a1
push 2
push esi
call sub.USER32.dll_GetWindow
mov esi, eax
test esi, esi
jne 0x40bff0
mov edx, dword [ebp - 8]
mov ecx, dword [edx + 0x1e28]
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], 0
jne 0x40bf7c
push 5
push dword [0x56f01c]
call sub.USER32.dll_GetWindow
mov esi, eax
test esi, esi
je 0x40c097
push esi
call fcn.0051fafa
mov ebx, eax
test ebx, ebx
je 0x40c089
cmp dword [ebx + 0x9d8], 0
je 0x40c089
push 0x13
push 0
push 0
push 0
push 0
push dword [ebp - 0xc]
push dword [ebx]
push edi
call sub.USER32.dll_DeferWindowPos
mov edi, eax
test edi, edi
je 0x40c0a1
push 2
push esi
call sub.USER32.dll_GetWindow
mov esi, eax
test esi, esi
jne 0x40c059
test edi, edi
je 0x40c0a1
push edi
call sub.USER32.dll_EndDeferWindowPos
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8