Function at 0x6fa930
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x14], ecx
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x6faed5
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
push ebp
push 0x6faea5
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0x49c], 0
je 0x6fae9b
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc21], 0
je 0x6fa9b9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x594]
push eax
call sub.user32.dll_GetAsyncKeyState
movsx eax, ax
test ah, 0x80
jne 0x6fa9b9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x598]
push eax
call sub.user32.dll_GetAsyncKeyState
movsx eax, ax
test ah, 0x80
jne 0x6fa9b9
mov eax, dword [ebp - 4]
mov byte [eax + 0xc21], 0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x4ac], 0xff
jne 0x6fa9d5
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4ac], edx
jmp 0x6fa9e2
mov eax, dword [ebp - 4]
mov dword [eax + 0x4ac], 0xff
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.006f8b50
mov eax, dword [ebp - 4]
mov al, byte [eax + 0xc21]
xor al, 1
push eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x4ac]
mov cl, 1
mov eax, dword [ebp - 4]
call fcn.006f6930
mov eax, dword [ebp - 4]
cmp dword [eax + 0x4ac], 0xff
jne 0x6faa2f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
mov edx, 1
call fcn.00551978
jmp 0x6faa3f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
xor edx, edx
call fcn.00551978
mov eax, dword [ebp - 4]
cmp ebx, dword [eax + 0x2f0]
jne 0x6faadf
mov eax, dword [ebp - 4]
cmp byte [eax + 0x49c], 0
je 0x6faadf
mov eax, dword [ebp - 4]
cmp byte [eax + 0x65f], 0
jne 0x6faadf
call sub.kernel32.dll_GetTickCount
xor edx, edx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
sub eax, dword [ecx + 0x698]
sbb edx, dword [ecx + 0x69c]
cmp edx, 0
jne 0x6faa9a
cmp eax, 0x1f4
jbe 0x6faaca
jmp 0x6faa9c
jle 0x6faaca
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
sub eax, dword [ecx + 0x698]
sbb edx, dword [ecx + 0x69c]
cmp edx, 0
jne 0x6faabf
cmp eax, 0x7d0
jae 0x6faaca
jmp 0x6faac1
jge 0x6faaca
mov eax, dword [ebp - 4]
inc dword [eax + 0x690]
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
mov dword [eax + 0x698], edx
mov edx, dword [ebp - 0xc]
mov dword [eax + 0x69c], edx
mov eax, dword [ebp - 4]
cmp ebx, dword [eax + 0x2f0]
jne 0x6fae9b
mov eax, dword [ebp - 4]
cmp byte [eax + 0x49c], 0
je 0x6fae9b
mov eax, dword [ebp - 4]
cmp byte [eax + 0x65f], 0
jne 0x6fae9b
mov eax, dword [ebp - 4]
cmp dword [eax + 0x690], 0x3c
jle 0x6fae9b
xor edx, edx
push ebp
push 0x6fae94
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov byte [eax + 0x660], 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f0]
xor edx, edx
call fcn.004423fc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3e4]
xor edx, edx
call fcn.004423fc
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x690], edx
mov eax, dword [ebp - 4]
call fcn.006ef520
mov eax, dword [ebp - 4]
mov byte [eax + 0x49c], 0
mov eax, dword [0x71578c]
mov byte [eax], 1
mov eax, dword [ebp - 4]
call fcn.006f6f68
mov eax, dword [ebp - 4]
call fcn.006ed9e8
mov eax, dword [ebp - 4]
mov byte [eax + 0x440], 0
mov eax, dword [ebp - 4]
mov byte [eax + 0x578], 0
mov eax, dword [ebp - 4]
call fcn.006ff86c
xor edx, edx
push ebp
push 0x6fae2e
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
push ebp
push 0x6fac03
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [0x71e110], 0
jle 0x6fabde
mov eax, dword [ebp - 4]
call fcn.00454ec4
mov edx, 0x71e110
call fcn.006ebedc
cmp dword [0x71e114], 0
jle 0x6fabf9
mov eax, dword [ebp - 4]
call fcn.00454ec4
mov edx, 0x71e114
call fcn.006ebedc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x6fac0d
mov eax, dword [ebp - 4]
call fcn.006f6758
push 0
push 0
push 0
call fcn.0040d958
mov eax, dword [ebp - 4]
fsub qword [eax + 0x5a8]
mov eax, dword [ebp - 4]
fsub qword [eax + 0x668]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00431f58
mov eax, dword [ebp - 4]
fstp qword [eax + 0x5b0]
wait
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x5a8], edx
mov dword [eax + 0x5ac], edx
xor eax, eax
push ebp
push 0x6facba
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov byte [eax + 0x65f], 1
xor eax, eax
push ebp
push 0x6fac9b
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x478]
call fcn.004f62d4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6faca2
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x6faeaf
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6faedc
lea eax, [ebp - 0x24]
call fcn.00405520
lea eax, [ebp - 0x20]
call fcn.00404dd0
lea eax, [ebp - 0x14]
call fcn.00404dd0
ret