Function at 0xf76b311
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
push ebx
mov eax, dword [ebp + 0xc]
push esi
sub eax, 0x200
push edi
xor esi, esi
mov edi, 0xff
cmp eax, 9
ja case.default.0xf76b32e
jmp dword [eax*4 + 0xf76b60a]
mov bx, 0
mov esi, 0xa
push 4
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0xf76b34f
mov bx, 4
push 2
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ax, 0
jge 0xf76b364
mov ax, 2
or bx, ax
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ax, 0
jge 0xf76b37c
mov ax, 1
or bx, ax
mov word [ebp - 2], bx
mov ebx, dword [ebp + 8]
cmp edi, 0xff
mov ecx, dword [ebx + 0x20]
movzx eax, byte [esi + ecx + 0xc0]
mov dword [ebp - 0x10], eax
je 0xf76b3a4
movzx edi, byte [ecx + edi + 0xc0]
cmp dword [ebp - 0x10], 0xff
jne 0xf76b445
cmp esi, 1
jne 0xf76b3eb
mov ax, word [ecx + 0x2e]
test al, 0x30
jne 0xf76b3eb
mov eax, dword [ecx]
cmp eax, 0xf7b6808
je 0xf76b3eb
cmp eax, 0xf7b5e78
je 0xf76b3eb
mov esi, 9
mov eax, dword [ebp + 0xc]
sub eax, 0x201
shr eax, 1
mov word [ebp - 2], ax
movzx ecx, byte [ecx + 0xc9]
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 0x10], 0xff
jne 0xf76b445
cmp edi, 0xff
jne 0xf76b445
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov esi, 9
xor edi, edi
mov eax, dword [ebp + 0xc]
sub eax, 0x1ff
shr eax, 1
mov word [ebp - 2], ax
jmp case.default.0xf76b32e
mov esi, 0xb
xor edi, edi
mov eax, dword [ebp + 0xc]
sub eax, 0x200
shr eax, 1
mov word [ebp - 2], ax
jmp case.default.0xf76b32e
mov esi, 1
jmp case.default.0xf76b32e
mov dword [ebp - 0x14], 0
cmp esi, 9
je 0xf76b553
cmp esi, 0xb
je 0xf76b589
xor eax, eax
cmp dword [ebp - 0x10], 0xff
je 0xf76b531
cmp esi, 1
je 0xf76b524
mov si, 0
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0xf76b48b
mov si, 4
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ax, 0
jge 0xf76b4a0
mov ax, 1
or si, ax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ax, 0
jge 0xf76b4b8
mov ax, 2
or si, ax
push ebx
mov word [ebp - 0xc], si
call fcn.0f73b427
mov esi, eax
sub esp, 4
movsx ecx, word [ebp + 0x14]
imul ecx, dword [0xf7ae4c0]
mov dword [ebp - 0x20], ecx
fild dword [ebp - 0x20]
fstp dword [esp]
push esi
call fcn.0f72e4f0
fstp dword [ebp - 0x1c]
mov eax, dword [ebp + 0x14]
sub esp, 4
shr eax, 0x10
movsx ecx, ax
imul ecx, dword [0xf7ae4c4]
mov dword [ebp - 0x20], ecx
fild dword [ebp - 0x20]
fstp dword [esp]
push esi
call fcn.0f72aec8
fstp dword [ebp - 0x18]
lea ecx, [ebp - 2]
lea esi, [ebp - 0xc]
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x2c], ecx
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], ecx
lea eax, [ebp - 0x38]
push eax
push dword [ebp - 0x10]
push ebx
call fcn.0f72f6a9
test eax, eax
jne 0xf76b3fe
cmp dword [ebp - 0x14], 0
je 0xf76b3fe
lea eax, [ebp - 0x38]
push eax
push edi
push ebx
call fcn.0f72f6a9
jmp 0xf76b3fe
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0xf76b57e
push 4
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0xf76b57e
push 2
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0xf76b45e
push ebx
call fcn.0f75c999
jmp 0xf76b45e
call fcn.0f75c95a
cmp eax, ebx
jne 0xf76b45e
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0xf76b5c2
push 4
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0xf76b5c2
push 2
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0xf76b5c2
call fcn.0f75ca1e
cmp edi, 0xff
je 0xf76b45e
movzx eax, word [ebp + 0x14]
lea edx, [ebp - 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0x14]
push edx
shr eax, 0x10
push ebx
movzx ecx, ax
mov dword [ebp - 8], ecx
call fcn.0f73b4cd
push dword [ebp - 8]
push dword [ebp - 0xc]
call fcn.0f75ca2f
cmp eax, ebx
jne 0xf76b45e
mov dword [ebp - 0x14], 1
jmp 0xf76b45e