Function at 0x5cfac0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x278
mov dword [ebp - 4], eax
mov byte [ebp - 8], dl
mov dword [ebp - 0x278], 0
lea ecx, [ebp - 0x58]
lea edx, [ebp - 0x70]
mov eax, 1
call fcn.0040b8a0
call fcn.0040d8a0
push eax
test eax, eax
jne 0x5cfe71
mov dword [0x640490], 0x7fffffff
mov byte [ebp - 0xc], 0
mov byte [ebp - 0x10], 0
mov byte [ebp - 0x14], 0
mov byte [ebp - 0x18], 0
mov byte [ebp - 0x1c], 0
mov dword [ebp - 0x28], 0
mov eax, dword [ebp - 4]
call fcn.00403b10
mov dword [ebp - 0x2c], eax
cmp eax, dword [0x640490]
jle 0x5cfb37
mov eax, dword [0x640490]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
test eax, eax
jne 0x5cfe5a
jmp 0x5cfe71
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x28]
mov al, byte [eax + edx]
cmp al, 0x21
jb 0x5cfe17
sub al, 0x21
je 0x5cfba1
sub al, 7
je 0x5cfb82
dec al
je 0x5cfb8e
sub al, 2
je 0x5cfbbc
sub al, 0x33
je 0x5cfbd7
sub al, 0x1d
je 0x5cfbf2
sub al, 3
je 0x5cfdfc
jmp 0x5cfe17
mov byte [ebp - 0x10], 1
inc dword [ebp - 0x28]
jmp 0x5cfe5a
mov byte [ebp - 0x10], 0
mov eax, ebp
call fcn.005cfea0
inc dword [ebp - 0x28]
jmp 0x5cfe5a
mov byte [ebp - 0x1c], 1
push 0
mov eax, ebp
mov cx, 1
mov dl, 0x12
call fcn.005d0170
inc dword [ebp - 0x28]
jmp 0x5cfe5a
mov byte [ebp - 0x14], 1
push 0
mov eax, ebp
mov cx, 1
mov dl, 0x10
call fcn.005d0170
inc dword [ebp - 0x28]
jmp 0x5cfe5a
mov byte [ebp - 0x18], 1
push 0
mov eax, ebp
mov cx, 1
mov dl, 0x11
call fcn.005d0170
inc dword [ebp - 0x28]
jmp 0x5cfe5a
mov word [ebp - 0x30], 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x28]
inc eax
mov al, byte [edx + eax]
cmp al, 0x7b
jne 0x5cfc39
mov word [ebp - 0x34], 0xdb
lea edx, [ebp - 0x33]
mov eax, ebp
mov cl, 1
call fcn.005d0310
push 1
mov dx, word [ebp - 0x34]
mov eax, ebp
mov cx, 1
call fcn.005d0010
mov eax, ebp
call fcn.005cfea0
add dword [ebp - 0x28], 3
jmp 0x5cfe5a
mov byte [ebp - 0x4c], 0
mov byte [ebp - 0x20], 0
jmp 0x5cfcaa
inc dword [ebp - 0x28]
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x28]
mov al, byte [eax + edx]
cmp al, 0x7d
jne 0x5cfc5d
mov byte [ebp - 0x20], 1
inc dword [ebp - 0x28]
jmp 0x5cfcb2
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x28]
mov al, byte [eax + edx]
call fcn.00404b80
and eax, 0xff
shl eax, 8
or eax, 1
mov word [ebp - 0x274], ax
lea eax, [ebp - 0x274]
push eax
lea ecx, [ebp - 0x4c]
lea eax, [ebp - 0x174]
mov edx, 0xff
call fcn.00403f10
lea ecx, [ebp - 0x174]
lea eax, [ebp - 0x4c]
mov edx, 0x14
call fcn.00403930
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0x2c]
jle 0x5cfc44
mov al, byte [ebp - 0x20]
test al, al
jne 0x5cfcca
mov edx, str.No_Close
mov eax, ebp
call fcn.005d0360
jmp 0x5cfe71
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x28]
mov al, byte [eax + edx]
cmp al, 0x7d
jne 0x5cfd09
mov word [ebp - 0x34], 0xdd
lea edx, [ebp - 0x33]
mov eax, ebp
mov cl, 1
call fcn.005d0310
push 1
mov dx, word [ebp - 0x34]
mov eax, ebp
mov cx, 1
call fcn.005d0010
mov eax, ebp
call fcn.005cfea0
inc dword [ebp - 0x28]
jmp 0x5cfe5a
lea edx, [ebp - 0x4c]
mov al, 0x20
call fcn.00404b30
mov byte [ebp - 0x24], al
movzx eax, byte [ebp - 0x24]
test eax, eax
je 0x5cfdad
lea eax, [ebp - 0x278]
call fcn.00403d60
mov dword [ebp - 0x278], 0
lea eax, [ebp - 0x174]
push eax
movzx ecx, byte [ebp - 0x4c]
movzx eax, byte [ebp - 0x24]
sub ecx, eax
mov dl, byte [ebp - 0x24]
inc dl
and edx, 0xff
lea eax, [ebp - 0x4c]
call fcn.004048c0
lea eax, [ebp - 0x174]
lea edx, [ebp - 0x278]
call fcn.00407660
mov eax, dword [ebp - 0x278]
call fcn.004a9f60
mov word [ebp - 0x30], ax
lea eax, [ebp - 0x174]
push eax
mov cl, byte [ebp - 0x24]
dec cl
and ecx, 0xff
lea eax, [ebp - 0x4c]
mov edx, 1
call fcn.004048c0
lea ecx, [ebp - 0x174]
lea eax, [ebp - 0x4c]
mov edx, 0x14
call fcn.00403930
movzx eax, byte [ebp - 0x4c]
cmp eax, 1
jne 0x5cfdc6
movzx eax, byte [ebp - 0x4b]
push eax
call sub.user32.dll_VkKeyScanA
mov word [ebp - 0x34], ax
jmp 0x5cfdd4
lea edx, [ebp - 0x4c]
mov eax, ebp
call fcn.005cff10
mov word [ebp - 0x34], ax
mov ax, word [ebp - 0x34]
cmp ax, 0xffff
je 0x5cfe5a
push 1
mov cx, word [ebp - 0x30]
mov dx, word [ebp - 0x34]
mov eax, ebp
call fcn.005d0010
mov eax, ebp
call fcn.005cfea0
jmp 0x5cfe5a
push 1
mov eax, ebp
mov cx, 1
mov dl, 0xd
call fcn.005d0170
mov eax, ebp
call fcn.005cfea0
inc dword [ebp - 0x28]
jmp 0x5cfe5a
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x28]
movzx eax, byte [eax + edx]
push eax
call sub.user32.dll_VkKeyScanA
mov word [ebp - 0x34], ax
cmp ax, 0xffff
je 0x5cfe4b
push 1
mov dx, word [ebp - 0x34]
mov eax, ebp
mov cx, 1
call fcn.005d0010
mov eax, ebp
call fcn.005cfea0
jmp 0x5cfe57
mov edx, str.Invalid_KeyName
mov eax, ebp
call fcn.005d0360
inc dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0x2c]
jl 0x5cfb48
mov byte [ebp - 0xc], 1
mov eax, ebp
call fcn.005cfea0
call fcn.0040bb70
lea eax, [ebp - 0x278]
call fcn.00403d60
mov dword [ebp - 0x278], 0
pop eax
test eax, eax
je 0x5cfe95
call fcn.0040bce0
mov al, byte [ebp - 0xc]
leave
ret