Function at 0x4011b0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push esi
mov esi, dword [esp + 0x10]
push edi
mov edi, dword [esp + 0x18]
mov dword [edi], 0
push 0x11
mov dword [esi], 0
call ebx
movsx eax, ax
test eax, 0x10000000
je 0x4011de
or dword [edi], 2
push 0x10
call ebx
movsx ecx, ax
test ecx, 0x10000000
je 0x4011f0
or dword [edi], 4
push 0x12
call ebx
movsx edx, ax
test edx, 0x10000000
je 0x401202
or dword [edi], 1
mov ecx, dword [esp + 0x10]
lea eax, [ecx - 8]
cmp eax, 0x73
ja case.0x401219.10
movzx eax, byte [eax + 0x40154c]
jmp dword [eax*4 + 0x4014a0]
pop edi
mov dword [esi], 0xa0
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa1
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa2
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa3
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa4
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa5
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa6
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa7
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa8
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xa9
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xaa
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xab
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb9
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb1
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb3
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb0
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb2
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xac
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xad
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xaf
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xae
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb5
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb6
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb7
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xb8
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe0
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe1
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe2
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe3
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe4
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe5
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe6
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe7
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe8
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xe9
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xea
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xeb
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xec
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xed
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xee
pop esi
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi], 0xef
pop esi
mov eax, 1
pop ebx
ret
lea edx, [ecx - 0x20]
cmp edx, 0x60
ja case.0x401219.91
pop edi
mov dword [esi], ecx
pop esi
mov eax, 1
pop ebx
ret
pop edi
pop esi
xor eax, eax
pop ebx
ret