Function at 0x14023cb60
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push r14
sub rsp, 0x30
mov edi, edx
mov rsi, rcx
call fcn.14023a210
mov rcx, qword [rsi + 8]
mov edx, 0xffffffec
call qword [0x1403ad690]
nop dword [rax + rax]
mov ebp, 1
lea rcx, [rsi + 0x30]
mov ebx, eax
shr ebx, 0x16
and ebx, ebp
call fcn.140236ab0
mov edx, eax
mov r8d, ebx
mov ecx, edi
call fcn.140215948
mov edx, eax
lea r14d, [rbp + 4]
sub edx, 0xd
je 0x14023cd7a
sub edx, 0xe
je 0x14023cd20
sub edx, r14d
je 0x14023cd7a
lea edi, [rbp + 2]
sub edx, edi
je 0x14023cccb
sub edx, ebp
je 0x14023cc87
xor ebx, ebx
sub edx, ebp
je 0x14023cc69
sub edx, ebp
je 0x14023cc03
sub edx, ebp
je 0x14023cc69
cmp edx, ebp
jne 0x14023cdda
mov rcx, qword [rsi + 0x118]
test rcx, rcx
je 0x14023cc69
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x14006b68f.0]
cmp eax, edi
jne 0x14023cc28
xor r9d, r9d
jmp 0x14023cdbc
mov rcx, qword [rsi + 0x118]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x14006b68f.0]
cmp eax, ebp
jne 0x14023cdda
mov r8d, dword [rsi + 0x120]
mov r9d, 2
mov rdx, qword [rsi + 0x118]
mov rcx, rsi
mov dword [rsp + 0x20], ebp
call fcn.14023a848
jmp 0x14023cdda
add eax, 0xffffffdb
lea rcx, [rsi + 0x28]
cmp eax, ebp
cmovbe ebp, ebx
xor r9d, r9d
mov r8d, ebp
xor edx, edx
call fcn.140237b00
jmp 0x14023cdda
lea rcx, [rsi + 0x28]
mov edx, ebp
call fcn.1400071b0
mov rdx, qword [rsi + 0xd8]
xor ebx, ebx
test rdx, rdx
je 0x14023cca4
mov eax, dword [rdx]
jmp 0x14023cca6
mov eax, ebx
test eax, eax
jle 0x14023cdda
mov rdx, qword [rdx + 8]
xor r8d, r8d
mov rdx, qword [rdx]
mov r9d, 2
mov rcx, rsi
call fcn.14023dfb8
jmp 0x14023cdda
lea rcx, [rsi + 0x28]
mov edx, ebp
call fcn.1400071b0
mov rax, qword [rsi + 0xd8]
xor ebx, ebx
test rax, rax
je 0x14023cce8
mov ecx, dword [rax]
jmp 0x14023ccea
mov ecx, ebx
test ecx, ecx
jle 0x14023cdda
test rax, rax
je 0x14023ccf9
mov ebx, dword [rax]
mov rax, qword [rax + 8]
movsxd rcx, ebx
mov rbx, qword [rax + rcx*8 - 8]
mov rcx, rbx
mov rax, qword [rbx]
mov rax, qword [rax + 0x138]
call qword [case.0x14006b68f.0]
mov r8d, eax
mov rdx, rbx
jmp 0x14023ccb8
xor ebx, ebx
cmp dword [rsi + 0x248], ebx
jne 0x14023cd32
cmp dword [rsi + 0xf0], ebx
jne 0x14023cd61
mov dword [rsp + 0x20], ebx
xor r9d, r9d
or ebx, 0xffffffff
xor edx, edx
mov r8d, ebx
mov rcx, rsi
call fcn.14023ea48
xor r9d, r9d
mov dword [rsp + 0x20], 4
mov r8d, ebx
xor edx, edx
mov rcx, rsi
call fcn.14023ea48
lea rcx, [rsi + 0x28]
mov edx, ebp
call fcn.1400071b0
lea rcx, [rsi + 0x138]
call fcn.14003944c
jmp 0x14023cdda
xor ebx, ebx
cmp qword [rsi + 0x118], rbx
je 0x14023cdda
mov edi, ebx
cmp eax, 0xd
jne 0x14023cdb9
lea ecx, [rbx + 0x10]
call qword [sym.imp.USER32.dll_GetKeyState]
nop dword [rax + rax]
test ax, ax
jns 0x14023cdb9
lea ecx, [rbx + 0x11]
call qword [sym.imp.USER32.dll_GetKeyState]
nop dword [rax + rax]
test ax, ax
lea edi, [rbx + 3]
cmovs edi, r14d
mov r9d, edi
mov r8d, dword [rsi + 0x120]
mov rcx, rsi
mov rdx, qword [rsi + 0x118]
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], ebp
call fcn.14023c13c
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
add rsp, 0x30
pop r14
ret