Function at 0x64bcd4
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd0
xor ecx, ecx
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x64bf7c
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x12
call sub.user32.dll_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp eax, 0x8000
sete byte [ebp - 9]
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x1b8]
call fcn.00646690
mov edx, dword [ebp - 8]
cmp ax, word [edx]
jne 0x64bd92
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 4]
call fcn.00633b58
mov eax, dword [ebp - 0x1c]
push eax
call fcn.00646690
mov edx, eax
lea eax, [ebp - 0x20]
call fcn.00408f64
mov eax, dword [ebp - 0x20]
pop edx
call fcn.0040950c
test eax, eax
jne 0x64bd92
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
call fcn.00633b58
lea eax, [ebp - 0x24]
push eax
call fcn.00646690
mov edx, eax
lea eax, [ebp - 0x28]
call fcn.00408f64
mov edx, dword [ebp - 0x28]
pop eax
call fcn.00409138
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x1a0]
mov eax, dword [ebp - 8]
mov ax, word [eax]
mov word [ebp - 0xc], ax
mov ax, word [ebp - 0xc]
call fcn.0041a808
mov byte [ebp - 0xd], al
cmp byte [ebp - 0xd], 0
je 0x64bdf3
mov eax, dword [ebp - 4]
call fcn.005a9078
test eax, eax
jle 0x64bdf3
lea edx, [ebp - 0x2c]
mov eax, dword [ebp - 4]
call fcn.00633b58
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x64bde2
mov eax, dword [ebp - 0x18]
sub eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
call fcn.005a9078
cmp eax, dword [ebp - 0x18]
je 0x64bf61
mov eax, dword [ebp - 8]
movzx eax, word [eax]
cmp eax, 0x2d
jg 0x64be44
je 0x64bf00
cmp eax, 0x26
jg 0x64be2f
je 0x64bf4e
sub eax, 0xd
je 0x64bf28
sub eax, 0xe
je 0x64bf3f
sub eax, 0xa
je 0x64bf1e
jmp 0x64bf61
sub eax, 0x2a
je 0x64bf0a
dec eax
je 0x64beec
jmp 0x64bf61
cmp eax, 0x3d
jg 0x64be63
je 0x64bf14
sub eax, 0x2f
je 0x64bef6
dec eax
sub eax, 0xa
jb 0x64be72
jmp 0x64bf61
sub eax, 0x43
je 0x64beab
sub eax, 0x20
je 0x64beab
jmp 0x64bf61
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.00633b58
mov eax, dword [ebp - 0x30]
mov edx, 0x64bf94
call fcn.00409328
je 0x64be9c
mov eax, dword [ebp - 4]
cmp byte [eax + 0x428], 0
je 0x64bf61
mov eax, dword [ebp - 4]
mov byte [eax + 0x428], 0
jmp 0x64bf61
mov edx, 0x64bf94
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x1a0]
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x430], edx
mov dword [eax + 0x434], edx
mov word [eax + 0x438], dx
mov eax, dword [ebp - 4]
mov byte [eax + 0x428], 1
mov eax, dword [ebp - 4]
mov dword [eax + 0x43c], 0xffffffff
jmp 0x64bf61
mov eax, dword [ebp - 4]
call fcn.0064c4dc
jmp 0x64bf61
mov eax, dword [ebp - 4]
call fcn.0064c218
jmp 0x64bf61
mov eax, dword [ebp - 4]
call fcn.0064c49c
jmp 0x64bf61
mov eax, dword [ebp - 4]
call fcn.0064c4bc
jmp 0x64bf61
mov eax, dword [ebp - 4]
call fcn.0064c238
jmp 0x64bf61
mov eax, dword [ebp - 4]
call fcn.0064c34c
jmp 0x64bf61
mov eax, dword [ebp - 4]
call fcn.0064c238
xor edx, edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x15c]
jmp 0x64bf61
mov dl, 1
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x15c]
jmp 0x64bf61
cmp byte [ebp - 9], 0
je 0x64bf61
mov dl, 1
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x15c]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x64bf83
lea eax, [ebp - 0x30]
mov edx, 6
call fcn.0040836c
ret