Function at 0x14020f703
Capabilities:
Log keystrokes via polling

Disassembly:
jmp 0x1404668b0
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rdi
sub rsp, 0xf0
lea rdi, [rsp + 0x30]
mov ecx, 0x30
mov eax, 0xcccccccc
rep stosd dword [rdi], eax
mov rcx, qword [rsp + 0x100]
mov rax, qword [0x140961e80]
xor rax, rsp
mov qword [rsp + 0xe8], rax
cmp dword [rsp + 0x108], 0x20
je 0x140466928
cmp dword [rsp + 0x108], 0x25
je 0x140466928
cmp dword [rsp + 0x108], 0x27
je 0x140466928
cmp dword [rsp + 0x108], 0x6b
je 0x140466928
cmp dword [rsp + 0x108], 0xbb
je 0x140466928
xor al, al
jmp 0x1404670b7
mov rax, qword [rsp + 0x100]
cmp qword [rax + 0x98], 0
jne 0x140466941
mov al, 1
jmp 0x1404670b7
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jge 0x14046695e
mov dword [rsp + 0xd8], 1
jmp 0x140466969
mov dword [rsp + 0xd8], 0
movzx eax, byte [rsp + 0xd8]
mov byte [rsp + 0x30], al
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jge 0x140466992
mov dword [rsp + 0xdc], 1
jmp 0x14046699d
mov dword [rsp + 0xdc], 0
movzx eax, byte [rsp + 0xdc]
mov byte [rsp + 0x31], al
mov eax, dword [rsp + 0x108]
mov dword [rsp + 0xe0], eax
cmp dword [rsp + 0xe0], 0x20
je 0x140466a01
cmp dword [rsp + 0xe0], 0x25
je 0x140466bdb
cmp dword [rsp + 0xe0], 0x27
je 0x140466dd3
cmp dword [rsp + 0xe0], 0x6b
je 0x140466fc9
cmp dword [rsp + 0xe0], 0xbb
je 0x140466fc9
jmp 0x1404670b5
movzx eax, byte [rsp + 0x30]
test eax, eax
je 0x140466ac9
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov rcx, qword [rsp + 0x100]
mov eax, dword [rax + 0x2c]
mov dword [rcx + 0xa4], eax
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov rcx, qword [rsp + 0x100]
mov rcx, qword [rcx + 0x98]
lea rdx, [rsp + 0x64]
mov qword [rsp + 0x28], rdx
lea rdx, [rsp + 0x44]
mov qword [rsp + 0x20], rdx
mov r9d, 2
mov r8d, dword [rax + 0x2c]
mov edx, dword [rcx + 0x2c]
mov rcx, qword [rsp + 0x100]
call fcn.14020d74b
lea rax, [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov r9b, 1
mov r8d, dword [rsp + 0x64]
mov edx, dword [rsp + 0x44]
mov rcx, qword [rsp + 0x100]
call fcn.1402113e6
movzx eax, al
test eax, eax
je 0x140466ac4
xor r8d, r8d
lea rdx, [rsp + 0x88]
mov rax, qword [rsp + 0x100]
mov rcx, qword [rax]
call qword [sym.imp.USER32.dll_InvalidateRect]
nop
jmp 0x140466bd6
movzx eax, byte [rsp + 0x31]
test eax, eax
je 0x140466bd6
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov rcx, qword [rsp + 0x100]
mov ecx, dword [rcx + 0xa4]
cmp dword [rax + 0x2c], ecx
jbe 0x140466b28
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0xa4]
mov dword [rsp + 0xa4], eax
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x2c]
mov dword [rsp + 0xa8], eax
jmp 0x140466b56
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x2c]
mov dword [rsp + 0xa4], eax
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0xa4]
mov dword [rsp + 0xa8], eax
lea rax, [rsp + 0x64]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x44]
mov qword [rsp + 0x20], rax
mov r9d, 4
mov r8d, dword [rsp + 0xa8]
mov edx, dword [rsp + 0xa4]
mov rcx, qword [rsp + 0x100]
call fcn.14020d74b
lea rax, [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov r9b, 1
mov r8d, dword [rsp + 0x64]
mov edx, dword [rsp + 0x44]
mov rcx, qword [rsp + 0x100]
call fcn.1402113e6
movzx eax, al
test eax, eax
je 0x140466bd6
xor r8d, r8d
lea rdx, [rsp + 0x88]
mov rax, qword [rsp + 0x100]
mov rcx, qword [rax]
call qword [sym.imp.USER32.dll_InvalidateRect]
nop
jmp 0x1404670b5
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x34]
and eax, 1
test eax, eax
jne 0x140466c34
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax]
shr eax, 2
and eax, 1
test eax, eax
je 0x140466c34
xor r8d, r8d
mov rax, qword [rsp + 0x100]
mov rdx, qword [rax + 0x98]
mov rcx, qword [rsp + 0x100]
call fcn.14020be0a
nop
jmp 0x140466dce
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
cmp dword [rax + 0x30], 0
je 0x140466dce
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x2c]
mov dword [rsp + 0xac], eax
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x30]
dec eax
mov dword [rsp + 0xb0], eax
cmp dword [rsp + 0xac], 0
je 0x140466dce
mov eax, dword [rsp + 0xac]
dec eax
mov dword [rsp + 0xac], eax
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x128]
mov ecx, dword [rsp + 0xac]
mov rax, qword [rax + 8]
mov rax, qword [rax + rcx*8]
mov qword [rsp + 0xb8], rax
mov rax, qword [rsp + 0xb8]
mov ecx, dword [rsp + 0xb0]
cmp dword [rax + 0x30], ecx
jne 0x140466dc9
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0xb8]
mov qword [rax + 0x98], rcx
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0xb8]
mov ecx, dword [rcx + 0x2c]
mov dword [rax + 0xa4], ecx
mov edx, dword [rsp + 0xac]
mov rcx, qword [rsp + 0x100]
call fcn.14020ea4c
xor r8d, r8d
mov rdx, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0x100]
call fcn.140213f38
lea rax, [rsp + 0x64]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x44]
mov qword [rsp + 0x20], rax
mov r9d, 4
mov r8d, dword [rsp + 0xac]
mov edx, dword [rsp + 0xac]
mov rcx, qword [rsp + 0x100]
call fcn.14020d74b
lea rax, [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov r9b, 1
mov r8d, dword [rsp + 0x64]
mov edx, dword [rsp + 0x44]
mov rcx, qword [rsp + 0x100]
call fcn.1402113e6
movzx eax, al
test eax, eax
je 0x140466db9
xor r8d, r8d
lea rdx, [rsp + 0x88]
mov rax, qword [rsp + 0x100]
mov rcx, qword [rax]
call qword [sym.imp.USER32.dll_InvalidateRect]
nop
mov rcx, qword [rsp + 0x100]
call fcn.14020dff2
nop
jmp 0x140466dce
jmp 0x140466c81
jmp 0x1404670b5
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x34]
and eax, 1
test eax, eax
jne 0x140466fc4
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax]
shr eax, 2
and eax, 1
test eax, eax
jne 0x140466e30
mov r8b, 1
mov rax, qword [rsp + 0x100]
mov rdx, qword [rax + 0x98]
mov rcx, qword [rsp + 0x100]
call fcn.14020be0a
nop
jmp 0x140466fc4
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x2c]
inc eax
mov rcx, qword [rsp + 0x100]
mov rcx, qword [rcx + 0x128]
cmp eax, dword [rcx]
jae 0x140466fc4
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x128]
mov rcx, qword [rsp + 0x100]
mov rcx, qword [rcx + 0x98]
mov ecx, dword [rcx + 0x2c]
inc ecx
mov ecx, ecx
mov rax, qword [rax + 8]
mov rax, qword [rax + rcx*8]
mov qword [rsp + 0xc0], rax
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x30]
inc eax
mov rcx, qword [rsp + 0xc0]
cmp dword [rcx + 0x30], eax
jne 0x140466fc4
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0xc0]
mov qword [rax + 0x98], rcx
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0xc0]
mov ecx, dword [rcx + 0x2c]
mov dword [rax + 0xa4], ecx
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov eax, dword [rax + 0x2c]
inc eax
mov edx, eax
mov rcx, qword [rsp + 0x100]
call fcn.14020ea4c
xor r8d, r8d
mov rdx, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0x100]
call fcn.140213f38
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x98]
mov rcx, qword [rsp + 0x100]
mov rcx, qword [rcx + 0x98]
lea rdx, [rsp + 0x64]
mov qword [rsp + 0x28], rdx
lea rdx, [rsp + 0x44]
mov qword [rsp + 0x20], rdx
mov r9d, 4
mov r8d, dword [rax + 0x2c]
mov edx, dword [rcx + 0x2c]
mov rcx, qword [rsp + 0x100]
call fcn.14020d74b
lea rax, [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov r9b, 1
mov r8d, dword [rsp + 0x64]
mov edx, dword [rsp + 0x44]
mov rcx, qword [rsp + 0x100]
call fcn.1402113e6
movzx eax, al
test eax, eax
je 0x140466fb6
xor r8d, r8d
lea rdx, [rsp + 0x88]
mov rax, qword [rsp + 0x100]
mov rcx, qword [rax]
call qword [sym.imp.USER32.dll_InvalidateRect]
nop
mov rcx, qword [rsp + 0x100]
call fcn.14020dff2
nop
jmp 0x1404670b5
cmp dword [rsp + 0x108], 0x6b
jne 0x140466fdc
movzx eax, byte [rsp + 0x30]
test eax, eax
jne 0x140467007
cmp dword [rsp + 0x108], 0xbb
jne 0x1404670b5
movzx eax, byte [rsp + 0x30]
test eax, eax
je 0x1404670b5
movzx eax, byte [rsp + 0x31]
test eax, eax
je 0x1404670b5
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0x40]
shr eax, 4
and eax, 1
test eax, eax
je 0x140467048
xor r9d, r9d
mov rax, qword [rsp + 0x100]
mov r8, qword [rax + 0xf8]
mov rax, qword [rsp + 0x100]
mov rdx, qword [rax + 0x10]
mov rcx, qword [rsp + 0x100]
call fcn.140210991
nop
mov dword [rsp + 0xc8], 0
jmp 0x140467065
mov eax, dword [rsp + 0xc8]
inc eax
mov dword [rsp + 0xc8], eax
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0xec]
cmp dword [rsp + 0xc8], eax
jae 0x1404670b5
mov eax, dword [rsp + 0xc8]
mov rcx, qword [rsp + 0x100]
mov rcx, qword [rcx + 0xe0]
xor r9d, r9d
mov r8, qword [rcx + rax*8]
mov rax, qword [rsp + 0x100]
mov rdx, qword [rax + 0x18]
mov rcx, qword [rsp + 0x100]
call fcn.140210991
nop
jmp 0x140467055
mov al, 1
mov rdi, rax
mov rcx, rsp
lea rdx, [0x1407d2220]
call fcn.1402124fd
mov rax, rdi
mov rcx, qword [rsp + 0xe8]
xor rcx, rsp
call fcn.14020ee98
add rsp, 0xf0
pop rdi
ret