Function at 0x6391a8
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeac
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x13c], ecx
mov dword [ebp - 0x138], ecx
mov dword [ebp - 0x130], ecx
mov dword [ebp - 0x134], ecx
mov dword [ebp - 0x2c], ecx
mov byte [ebp - 3], dl
mov esi, eax
xor eax, eax
push ebp
push 0x63958d
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [0x6aa988], 0x7fffffff
mov byte [ebp - 8], 0
mov byte [ebp - 4], 0
mov byte [ebp - 5], 0
mov byte [ebp - 6], 0
mov byte [ebp - 7], 0
xor ebx, ebx
mov eax, esi
call fcn.0040a42c
mov edi, eax
cmp edi, dword [0x6aa988]
jle 0x63921b
mov edi, dword [0x6aa988]
test edi, edi
je 0x639567
cmp edi, ebx
jle 0x63955c
cmp edi, 1
jle 0x63925d
lea eax, [ebp - 0x2c]
mov edx, esi
call fcn.0040ab0c
lea eax, [ebp - 0x2c]
call fcn.00639048
cmp ax, 0xffff
jne 0x63925d
mov edx, 0x46
mov eax, 0x32
call fcn.0043f094
push eax
call sub.kernel32.dll_Sleep
movzx eax, word [esi + ebx*2]
cmp eax, 0x2b
jg 0x63927a
je 0x6392c6
sub eax, 0x25
je 0x6392ad
sub eax, 3
je 0x639292
dec eax
je 0x63929c
jmp 0x639519
sub eax, 0x5e
je 0x6392df
sub eax, 0x1d
je 0x6392f8
sub eax, 3
je 0x639500
jmp 0x639519
mov byte [ebp - 4], 1
inc ebx
jmp 0x639554
mov byte [ebp - 4], 0
push ebp
call fcn.00639144
pop ecx
inc ebx
jmp 0x639554
mov byte [ebp - 7], 1
push ebp
xor ecx, ecx
mov dx, 1
mov al, 0x12
call fcn.00638e40
pop ecx
inc ebx
jmp 0x639554
mov byte [ebp - 5], 1
push ebp
xor ecx, ecx
mov dx, 1
mov al, 0x10
call fcn.00638e40
pop ecx
inc ebx
jmp 0x639554
mov byte [ebp - 6], 1
push ebp
xor ecx, ecx
mov dx, 1
mov al, 0x11
call fcn.00638e40
pop ecx
inc ebx
jmp 0x639554
mov word [ebp - 0xc], 1
cmp word [esi + ebx*2 + 2], 0x7b
jne 0x639336
mov word [ebp - 2], 0xdb
lea eax, [ebp - 1]
mov dl, 1
call fcn.00638df0
push ebp
mov cl, 1
mov dx, 1
movzx eax, word [ebp - 2]
call fcn.00638f70
pop ecx
push ebp
call fcn.00639144
pop ecx
add ebx, 3
jmp 0x639554
mov byte [ebp - 0x25], 0
mov byte [ebp - 9], 0
cmp edi, ebx
jl 0x6393df
inc ebx
cmp word [esi + ebx*2], 0x7d
jne 0x639358
mov byte [ebp - 9], 1
inc ebx
jmp 0x6393df
movzx eax, word [esi + ebx*2]
mov word [ebp - 0xe], ax
movzx eax, word [ebp - 0xe]
mov word [ebp - 0x10], ax
movzx eax, word [ebp - 0xe]
add eax, 0xffffff9f
sub ax, 0x1a
jae 0x639381
movzx eax, word [ebp - 0xe]
and ax, 0xffdf
mov word [ebp - 0x10], ax
lea eax, [ebp - 0x130]
lea edx, [ebp - 0x25]
call fcn.0040ac2c
lea eax, [ebp - 0x130]
push eax
lea eax, [ebp - 0x134]
movzx edx, word [ebp - 0x10]
call fcn.0040aacc
mov edx, dword [ebp - 0x134]
pop eax
call fcn.0040acb8
mov edx, dword [ebp - 0x130]
lea eax, [ebp - 0x12c]
mov ecx, 0xff
call fcn.0040abc0
lea edx, [ebp - 0x12c]
lea eax, [ebp - 0x25]
mov cl, 0x14
call fcn.0040a5e0
cmp edi, ebx
jge 0x639346
cmp byte [ebp - 9], 0
jne 0x6393f4
mov eax, 0x6395a0
call fcn.00638de0
jmp 0x639567
cmp word [esi + ebx*2], 0x7d
jne 0x639429
mov word [ebp - 2], 0xdd
lea eax, [ebp - 1]
mov dl, 1
call fcn.00638df0
push ebp
mov cl, 1
mov dx, 1
movzx eax, word [ebp - 2]
call fcn.00638f70
pop ecx
push ebp
call fcn.00639144
pop ecx
inc ebx
jmp 0x639554
lea eax, [ebp - 0x138]
lea edx, [ebp - 0x25]
call fcn.0040ac2c
mov edx, dword [ebp - 0x138]
mov ecx, 1
mov eax, 0x6395c0
call fcn.0040b0f0
mov byte [ebp - 0xa], al
cmp byte [ebp - 0xa], 0
je 0x6394bc
lea eax, [ebp - 0x154]
push eax
movzx ecx, byte [ebp - 0x25]
movzx eax, byte [ebp - 0xa]
sub ecx, eax
movzx edx, byte [ebp - 0xa]
inc edx
lea eax, [ebp - 0x25]
call fcn.0040a5fc
lea edx, [ebp - 0x154]
lea eax, [ebp - 0x13c]
call fcn.0040ac2c
mov eax, dword [ebp - 0x13c]
call fcn.00425e60
mov word [ebp - 0xc], ax
lea eax, [ebp - 0x154]
push eax
movzx ecx, byte [ebp - 0xa]
dec ecx
lea eax, [ebp - 0x25]
mov edx, 1
call fcn.0040a5fc
lea edx, [ebp - 0x154]
lea eax, [ebp - 0x25]
mov cl, 0x14
call fcn.0040a5e0
cmp byte [ebp - 0x25], 1
jne 0x6394d2
movzx eax, byte [ebp - 0x24]
push eax
call sub.user32.dll_VkKeyScanW
mov word [ebp - 2], ax
jmp 0x6394de
lea eax, [ebp - 0x25]
call fcn.00639048
mov word [ebp - 2], ax
cmp word [ebp - 2], 0xffff
je 0x639554
push ebp
mov cl, 1
movzx edx, word [ebp - 0xc]
movzx eax, word [ebp - 2]
call fcn.00638f70
pop ecx
push ebp
call fcn.00639144
pop ecx
jmp 0x639554
push ebp
mov cl, 1
mov dx, 1
mov al, 0xd
call fcn.00638e40
pop ecx
push ebp
call fcn.00639144
pop ecx
inc ebx
jmp 0x639554
movzx eax, word [esi + ebx*2]
push eax
call sub.user32.dll_VkKeyScanW
mov word [ebp - 2], ax
cmp word [ebp - 2], 0xffff
je 0x639549
push ebp
mov cl, 1
mov dx, 1
movzx eax, word [ebp - 2]
call fcn.00638f70
pop ecx
push ebp
call fcn.00639144
pop ecx
jmp 0x639553
mov eax, 0x6395c4
call fcn.00638de0
inc ebx
cmp edi, ebx
jg 0x63922b
mov byte [ebp - 8], 1
push ebp
call fcn.00639144
pop ecx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x639594
lea eax, [ebp - 0x13c]
mov edx, 4
call fcn.00409fa8
lea eax, [ebp - 0x2c]
call fcn.00409f48
ret