Function at 0x40c560
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x444cf8
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
mov eax, dword [0x4574b8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [esi + 0x68]
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
cmp edi, 0xff
jge 0x40c615
push edi
call ebx
shr eax, 0xf
and al, 1
je 0x40c60f
cmp byte [edi + 0x45a768], 0
jne 0x40c60f
push 1
push str.123489
lea ecx, [ebp - 0x28]
mov byte [edi + 0x45a768], 1
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], 0
mov byte [ebp - 0x28], 0
call fcn.00401710
mov dword [ebp - 4], 0
sub esp, 0xc
lea eax, [ebp - 0x28]
mov ecx, esi
push 0
sub esp, 8
push 1
push eax
call fcn.0040c8c0
cmp dword [ebp - 0x14], 0x10
jb 0x40c8a1
push dword [ebp - 0x28]
call fcn.0042b3e8
add esp, 4
jmp 0x40c8a1
mov byte [edi + 0x45a768], al
mov edi, dword [esi + 0x6c]
cmp edi, 0xff
jge 0x40c66d
push edi
call ebx
shr eax, 0xf
and al, 1
je 0x40c667
cmp byte [edi + 0x45a768], 0
jne 0x40c667
push 1
push 0x4502a8
lea ecx, [ebp - 0x28]
mov byte [edi + 0x45a768], 1
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], 0
mov byte [ebp - 0x28], 0
call fcn.00401710
mov dword [ebp - 4], 1
jmp 0x40c5e0
mov byte [edi + 0x45a768], al
mov edi, dword [esi + 0x70]
cmp edi, 0xff
jge 0x40c6b1
push edi
call ebx
shr eax, 0xf
and al, 1
je 0x40c6ab
cmp byte [edi + 0x45a768], 0
jne 0x40c6ab
push 0x4502ac
lea ecx, [ebp - 0x28]
mov byte [edi + 0x45a768], 1
call fcn.00408c70
mov dword [ebp - 4], 2
jmp 0x40c5e0
mov byte [edi + 0x45a768], al
push dword [esi + 0x74]
call fcn.0040d110
test al, al
je 0x40c72b
push 0x4502b0
lea ecx, [ebp - 0x28]
call fcn.00408c70
sub esp, 0xc
mov dword [ebp - 4], 3
lea eax, [ebp - 0x28]
mov ecx, esi
push 0
sub esp, 8
push 1
push eax
call fcn.0040c8c0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
call fcn.00401860
push 0x4502b4
lea ecx, [ebp - 0x28]
call fcn.00408c70
mov dword [ebp - 4], 4
sub esp, 0xc
lea eax, [ebp - 0x28]
mov ecx, esi
push 0
sub esp, 8
push 1
push eax
call fcn.0040c8c0
lea ecx, [ebp - 0x28]
call fcn.00401860
jmp 0x40c8a1
push dword [esi + 0x78]
call fcn.0040d110
test al, al
je 0x40c758
mov ecx, esi
call fcn.0040c1a0
test al, al
je 0x40c758
push 0x450268
lea ecx, [ebp - 0x28]
call fcn.00408c70
mov dword [ebp - 4], 5
jmp 0x40c709
push dword [esi + 0x7c]
call fcn.0040d110
test al, al
je 0x40c785
mov ecx, esi
call fcn.0040c1a0
test al, al
je 0x40c785
push 0x45026c
lea ecx, [ebp - 0x28]
call fcn.00408c70
mov dword [ebp - 4], 6
jmp 0x40c709
push dword [esi + 0x80]
call fcn.0040d110
test al, al
je 0x40c7b8
mov ecx, esi
call fcn.0040c1a0
test al, al
je 0x40c7b8
push 0x450270
lea ecx, [ebp - 0x28]
call fcn.00408c70
mov dword [ebp - 4], 7
jmp 0x40c709
push dword [esi + 0x84]
call fcn.0040d110
test al, al
je 0x40c7e0
push 0x4502b8
lea ecx, [ebp - 0x28]
call fcn.00408c70
mov dword [ebp - 4], 8
jmp 0x40c709
push dword [esi + 0x88]
call fcn.0040d110
test al, al
je 0x40c876
push 0x4502bc
lea ecx, [ebp - 0x28]
call fcn.00408c70
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 9
push eax
mov ecx, esi
call fcn.0040deb0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov edi, eax
call fcn.00401860
cmp dword [edi + 8], 0
jne 0x40c84d
sub esp, 0x18
mov ecx, esp
push 0x4502c0
call fcn.00408c70
push 0
push 1
push 1
lea ecx, [esi + 0x2c]
call fcn.004104f0
mov dword [edi + 8], eax
test eax, eax
je 0x40c8a1
push 0x4502bc
lea ecx, [ebp - 0x40]
call fcn.00408c70
lea eax, [ebp - 0x40]
mov dword [ebp - 4], 0xa
push eax
mov ecx, esi
call fcn.0040cb10
lea ecx, [ebp - 0x40]
call fcn.00401860
jmp 0x40c8a1
push 0x24
call ebx
shr eax, 0xf
and al, 1
je 0x40c89c
cmp byte [0x45a78c], 0
jne 0x40c89c
push 0
mov ecx, esi
mov byte [0x45a78c], 1
call fcn.0040d310
jmp 0x40c8a1
mov byte [0x45a78c], al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042b3ed
mov esp, ebp
pop ebp
ret