Function at 0x76c788
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffd0
mov ebx, edx
mov ebp, eax
mov eax, ebp
call fcn.00748cb4
mov eax, dword [0x7a7064]
mov edx, dword [eax]
mov dword [esp + 8], edx
mov edx, dword [eax + 4]
mov dword [esp + 0xc], edx
push 0x11
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jge 0x76c7c7
fld qword [esp + 8]
fdiv dword [0x76c9dc]
fstp qword [esp + 8]
wait
push 0x10
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jge 0x76c7e2
fld qword [esp + 8]
fdiv dword [0x76c9e0]
fstp qword [esp + 8]
wait
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
cmp ebx, 1
jne 0x76c80b
mov eax, dword [esp + 8]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
cmp ebx, 2
jne 0x76c81b
fld qword [esp + 8]
fchs
fstp qword [esp + 0x10]
wait
cmp ebx, 3
jne 0x76c82b
fld qword [esp + 8]
fchs
fstp qword [esp + 0x18]
wait
cmp ebx, 4
jne 0x76c840
mov eax, dword [esp + 8]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c], eax
xor edx, edx
mov eax, ebp
call fcn.00786768
lea edx, [esp + 0x20]
mov eax, ebp
call fcn.007500c8
xor eax, eax
mov dword [esp], eax
call fcn.0063bbbc
mov eax, dword [0x7a6990]
mov eax, dword [eax]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x76c8c2
inc esi
xor ebx, ebx
mov eax, dword [0x7a6990]
mov eax, dword [eax]
mov edx, ebx
call fcn.00447f1c
mov edi, eax
cmp byte [edi + 0x15], 0
je 0x76c8be
mov edx, dword [0x7a6990]
mov edx, dword [edx]
mov eax, ebx
call fcn.00638a44
push dword [esp + 0x14]
push dword [esp + 0x14]
push dword [esp + 0x24]
push dword [esp + 0x24]
mov eax, edi
call fcn.00646ef0
mov edx, dword [0x7a6990]
mov edx, dword [edx]
mov eax, ebx
call fcn.00638a44
inc dword [esp]
inc ebx
dec esi
jne 0x76c870
call fcn.0063bbbc
mov eax, dword [0x7a6348]
mov eax, dword [eax]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x76c8f0
inc esi
xor ebx, ebx
mov eax, dword [0x7a6348]
mov eax, dword [eax]
mov edx, ebx
call fcn.00447f1c
call fcn.00638a5c
inc ebx
dec esi
jne 0x76c8d9
mov eax, dword [0x7a688c]
mov eax, dword [eax]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x76c958
inc esi
xor ebx, ebx
mov eax, dword [0x7a688c]
mov eax, dword [eax]
mov edx, ebx
call fcn.00447f1c
push eax
mov eax, dword [0x7a688c]
mov eax, dword [eax]
mov edx, ebx
call fcn.00447f1c
fld dword [eax]
fadd qword [esp + 0x14]
pop eax
fstp dword [eax]
wait
mov eax, dword [0x7a688c]
mov eax, dword [eax]
mov edx, ebx
call fcn.00447f1c
add eax, 4
push eax
mov eax, dword [0x7a688c]
mov eax, dword [eax]
mov edx, ebx
call fcn.00447f1c
fld dword [eax + 4]
fadd qword [esp + 0x1c]
pop eax
fstp dword [eax]
wait
inc ebx
dec esi
jne 0x76c902
mov eax, dword [0x7a6348]
mov eax, dword [eax]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x76c981
inc esi
xor ebx, ebx
mov eax, dword [0x7a6348]
mov eax, dword [eax]
mov edx, ebx
call fcn.00447f1c
call fcn.00638a5c
inc ebx
dec esi
jne 0x76c96a
mov eax, dword [0x7a688c]
mov eax, dword [eax]
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [0x7a6348]
mov eax, dword [eax]
mov edx, dword [eax]
call dword [edx + 8]
mov eax, ebp
call fcn.00750014
push 0
lea eax, [esp + 0x24]
push eax
mov eax, dword [0x7a6e20]
mov eax, dword [eax]
call fcn.0049ca5c
push eax
call sub.user32.dll_InvalidateRect
mov eax, dword [ebp + 0xafc]
mov edx, dword [eax]
call dword [edx + 0xa8]
cmp dword [esp], 1
jne 0x76c9d4
mov eax, ebp
call fcn.00782cc0
add esp, 0x30
pop ebp
pop edi
pop esi
pop ebx
ret