Function at 0x140001070
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x20
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
xor ebx, ebx
test ax, ax
je 0x1400010a0
cmp byte [0x140005046], bl
jne 0x1400010a0
mov byte [0x140005046], 1
mov byte [0x140005040], 1
jmp 0x1400010be
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movzx ecx, byte [0x140005046]
test ax, ax
cmove ecx, ebx
mov byte [0x140005046], cl
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400010e0
cmp byte [0x140005043], bl
jne 0x1400010e0
mov cl, 1
mov byte [0x140005040], cl
jmp 0x1400010f8
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movzx ecx, byte [0x140005043]
test ax, ax
cmove ecx, ebx
cmp byte [0x140005046], bl
mov byte [0x140005043], cl
je 0x14000138b
test cl, cl
je 0x14000138b
mov ecx, 0x50
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x14000114b
cmp byte [0x140005042], bl
jne 0x14000114b
cmp byte [0x140005634], bl
mov byte [0x140005042], 1
sete byte [0x140005634]
mov byte [0x140005040], 1
add rsp, 0x20
pop rbx
ret
mov ecx, 0x50
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x140001161
mov byte [0x140005042], bl
mov ecx, 0x44
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x14000119a
cmp byte [0x140005044], bl
jne 0x14000119a
cmp byte [0x14000503a], bl
mov byte [0x140005044], 1
sete byte [0x14000503a]
mov byte [0x140005040], 1
add rsp, 0x20
pop rbx
ret
mov ecx, 0x44
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x1400011b0
mov byte [0x140005044], bl
mov ecx, 0x47
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400011e9
cmp byte [0x14000503b], bl
jne 0x1400011e9
cmp byte [0x140005635], bl
mov byte [0x14000503b], 1
sete byte [0x140005635]
mov byte [0x140005040], 1
add rsp, 0x20
pop rbx
ret
mov ecx, 0x47
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x1400011ff
mov byte [0x14000503b], bl
mov ecx, 0x52
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x140001238
cmp byte [0x140005045], bl
jne 0x140001238
cmp byte [0x140005636], bl
mov byte [0x140005045], 1
sete byte [0x140005636]
mov byte [0x140005040], 1
add rsp, 0x20
pop rbx
ret
mov ecx, 0x52
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x14000124e
mov byte [0x140005045], bl
mov ecx, 0x32
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x140001280
cmp byte [0x140005038], bl
jne 0x140001280
inc dword [0x14000503c]
mov byte [0x140005038], 1
mov byte [0x140005040], 1
add rsp, 0x20
pop rbx
ret
mov ecx, 0x32
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x140001296
mov byte [0x140005038], bl
mov ecx, 0x31
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400012d9
cmp byte [0x140005039], bl
jne 0x1400012d9
sub dword [0x14000503c], 1
mov byte [0x140005039], 1
mov byte [0x140005040], 1
jne 0x14000138b
mov dword [0x14000503c], 1
add rsp, 0x20
pop rbx
ret
mov ecx, 0x31
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x1400012ef
mov byte [0x140005039], bl
mov ecx, 0x34
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x140001321
cmp byte [0x140005041], bl
jne 0x140001321
inc dword [0x140005034]
mov byte [0x140005041], 1
mov byte [0x140005040], 1
add rsp, 0x20
pop rbx
ret
mov ecx, 0x34
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x140001337
mov byte [0x140005041], bl
mov ecx, 0x33
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x140001375
cmp byte [0x140005047], bl
jne 0x140001375
mov eax, dword [0x140005034]
sub eax, 1
mov byte [0x140005047], 1
mov byte [0x140005040], 1
cmovs eax, ebx
mov dword [0x140005034], eax
add rsp, 0x20
pop rbx
ret
mov ecx, 0x33
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x14000138b
mov byte [0x140005047], bl
add rsp, 0x20
pop rbx
ret