Function at 0x401760
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc4
push ebx
push esi
push edi
lea edi, [ebp - 0xc4]
mov ecx, 0x31
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov esi, esp
push 0x14
call dword [sym.imp.USER32.dll_GetKeyState]
cmp esi, esp
call fcn.00401fa0
mov word [ebp - 0x74], ax
push 0x70
push 0
lea eax, [ebp - 0x70]
push eax
call fcn.00402450
add esp, 0xc
mov dword [ebp - 0x54], 1
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x1c], 1
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x38], edx
movsx eax, word [ebp - 0x74]
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0x78], eax
mov ecx, dword [ebp + 0xc]
movsx edx, byte [ecx]
cmp edx, 0xa
jne 0x401812
mov word [ebp - 0x50], 0xd
mov ax, word [ebp - 0x50]
mov word [ebp - 0x6c], ax
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x4c], 2
push 0x1c
lea ecx, [ebp - 0x70]
push ecx
push 2
call sub.USER32.dll_SendInput
cmp eax, 2
je 0x40180d
mov eax, 1
jmp 0x4019d5
jmp 0x4019d5
mov dword [ebp - 0x7c], 0
jmp 0x401824
mov edx, dword [ebp - 0x7c]
add edx, 1
mov dword [ebp - 0x7c], edx
mov eax, dword [ebp - 0x7c]
cmp eax, dword [ebp + 0x10]
jge 0x4019ac
mov ecx, dword [ebp + 0xc]
add ecx, dword [ebp - 0x7c]
movsx edx, byte [ecx]
cmp edx, 0xa
je 0x4019a7
mov dword [ebp - 0x84], 0
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x7c]
mov esi, esp
mov cl, byte [eax]
push ecx
call dword [sym.imp.USER32.dll_VkKeyScanA]
cmp esi, esp
call fcn.00401fa0
mov word [ebp - 0x80], ax
movsx edx, word [ebp - 0x80]
and edx, 0xff00
test edx, edx
je 0x4018ca
mov dword [ebp - 0x84], 1
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x7c]
movsx ecx, byte [eax]
cmp ecx, 0x41
jl 0x40189c
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x7c]
movsx eax, byte [edx]
cmp eax, 0x5a
jle 0x4018b8
mov ecx, dword [ebp + 0xc]
add ecx, dword [ebp - 0x7c]
movsx edx, byte [ecx]
cmp edx, 0x61
jl 0x4018c8
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x7c]
movsx ecx, byte [eax]
cmp ecx, 0x7a
jg 0x4018c8
cmp dword [ebp - 0x78], 0
je 0x4018c8
mov dword [ebp - 0x84], 0
jmp 0x401912
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x7c]
movsx eax, byte [edx]
cmp eax, 0x41
jl 0x4018e6
mov ecx, dword [ebp + 0xc]
add ecx, dword [ebp - 0x7c]
movsx edx, byte [ecx]
cmp edx, 0x5a
jle 0x401902
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x7c]
movsx ecx, byte [eax]
cmp ecx, 0x61
jl 0x401912
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x7c]
movsx eax, byte [edx]
cmp eax, 0x7a
jg 0x401912
cmp dword [ebp - 0x78], 0
je 0x401912
mov dword [ebp - 0x84], 1
cmp dword [ebp - 0x84], 0
je 0x40196f
mov word [ebp - 0x18], 0x10
mov cx, word [ebp - 0x18]
mov word [ebp - 0x6c], cx
movsx edx, word [ebp - 0x80]
and edx, 0xff
mov word [ebp - 0x34], dx
mov ax, word [ebp - 0x34]
mov word [ebp - 0x50], ax
mov dword [ebp - 0x4c], 0
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x14], 2
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x30], edx
push 0x1c
lea eax, [ebp - 0x70]
push eax
push 4
call sub.USER32.dll_SendInput
cmp eax, 4
je 0x40196d
jmp 0x4019ac
jmp 0x4019a7
movsx ecx, word [ebp - 0x80]
and ecx, 0xff
mov word [ebp - 0x50], cx
mov dx, word [ebp - 0x50]
mov word [ebp - 0x6c], dx
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x4c], 2
push 0x1c
lea eax, [ebp - 0x70]
push eax
push 2
call sub.USER32.dll_SendInput
cmp eax, 2
je 0x4019a7
jmp 0x4019ac
jmp 0x40181b
mov ecx, dword [ebp - 0x7c]
cmp ecx, dword [ebp + 0x10]
je 0x4019d3
mov esi, esp
push 0
push str.Error
push str.Unable_to_send_input
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp esi, esp
call fcn.00401fa0
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0xc4
cmp ebp, esp
call fcn.00401fa0
mov esp, ebp
pop ebp
ret