Function at 0x4f71f0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x74c48d
mov eax, dword fs:[0]
push eax
sub esp, 0x28
mov eax, dword [0x85e00c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x18]
call fcn.004f7180
test eax, eax
je 0x4f725c
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
je 0x4f7241
mov byte [ebp - 0xd], 1
jmp 0x4f7245
mov byte [ebp - 0xd], 0
movzx edx, byte [ebp - 0xd]
push edx
mov ecx, dword [ebp - 0x18]
call fcn.004f7460
mov eax, 1
jmp 0x4f744d
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax + 4]
push ecx
call fcn.004847f0
add esp, 4
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x4f7390
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [eax + 0x74]
call edx
test eax, eax
je 0x4f7390
cmp dword [ebp + 8], 0x25
je 0x4f72a9
cmp dword [ebp + 8], 0x27
je 0x4f72a9
cmp dword [ebp + 8], 0x26
je 0x4f72a9
cmp dword [ebp + 8], 0x28
jne 0x4f7390
cmp dword [ebp + 8], 0x27
je 0x4f72be
cmp dword [ebp + 8], 0x28
je 0x4f72be
mov dword [ebp - 0x28], 2
jmp 0x4f72c5
mov dword [ebp - 0x28], 3
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x20]
push ecx
mov ecx, dword [ebp - 0x1c]
call fcn.00460510
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x4f7317
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x14]
mov edx, dword [eax + 0x74]
call edx
test eax, eax
je 0x4f7306
push 1
mov ecx, dword [ebp - 0x14]
call fcn.004604f0
push eax
mov ecx, dword [ebp - 0x18]
call fcn.004f74c0
jmp 0x4f7317
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x14]
call fcn.00460510
mov dword [ebp - 0x14], eax
jmp 0x4f72da
cmp dword [ebp - 0x14], 0
jne 0x4f7386
cmp dword [ebp - 0x20], 3
jne 0x4f732c
mov dword [ebp - 0x2c], 0
jmp 0x4f7333
mov dword [ebp - 0x2c], 1
mov ecx, dword [ebp - 0x2c]
push ecx
mov ecx, dword [ebp - 0x1c]
call fcn.00460f50
mov ecx, eax
call fcn.00460510
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x4f7386
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x14]
mov edx, dword [eax + 0x74]
call edx
test eax, eax
je 0x4f7375
push 1
mov ecx, dword [ebp - 0x14]
call fcn.004604f0
push eax
mov ecx, dword [ebp - 0x18]
call fcn.004f74c0
jmp 0x4f7386
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x14]
call fcn.00460510
mov dword [ebp - 0x14], eax
jmp 0x4f7349
mov eax, 1
jmp 0x4f744d
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
je 0x4f73a9
mov byte [ebp - 0xe], 1
jmp 0x4f73ad
mov byte [ebp - 0xe], 0
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
je 0x4f73c6
mov byte [ebp - 0xf], 1
jmp 0x4f73ca
mov byte [ebp - 0xf], 0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x8000
je 0x4f73e0
mov byte [ebp - 0x10], 1
jmp 0x4f73e4
mov byte [ebp - 0x10], 0
movzx ecx, byte [ebp - 0xe]
push ecx
movzx edx, byte [ebp - 0xf]
push edx
movzx eax, byte [ebp - 0x10]
push eax
mov ecx, dword [ebp + 8]
push ecx
lea ecx, [ebp - 0x24]
call fcn.004fd4d0
mov dword [ebp - 4], 0
lea edx, [ebp - 0x24]
push edx
mov ecx, dword [ebp - 0x18]
call fcn.004f77e0
movzx eax, al
test eax, eax
je 0x4f7434
mov dword [ebp - 0x30], 1
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24]
call fcn.004fd540
mov eax, dword [ebp - 0x30]
jmp 0x4f744d
mov dword [ebp - 0x34], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24]
call fcn.004fd540
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov esp, ebp
pop ebp
ret 4