Function at 0x1400c2f10
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov r14d, dword [rdx]
lea rdi, [rdx + 4]
mov rsi, rdx
mov eax, dword [rcx + 0x50]
mov rbx, rcx
cmp r14d, dword [rcx + 0x4c]
jne 0x1400c2f3f
cmp dword [rdi], eax
jne 0x1400c2f3f
xor bpl, bpl
jmp 0x1400c2f42
mov bpl, 1
cmp qword [rcx + 0x690], 0
mov r15d, dword [rdi]
je 0x1400c2faf
mov rax, qword [rcx]
mov dl, 1
call qword [rax + 0x800]
test al, al
jne 0x1400c2f9f
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x7f8]
test al, al
jne 0x1400c2f9f
cmp byte [rbx + 0x68c], al
jne 0x1400c2f9f
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x808]
test al, al
jne 0x1400c2f9f
mov rax, qword [rbx + 0x690]
lea rcx, [rax + 0x38]
mov qword [rcx + 0x318], rax
call fcn.1400700c0
jmp 0x1400c2faf
mov rcx, qword [rbx + 0x690]
add rcx, 0x38
call fcn.14006ff30
cmp qword [rbx + 0x6a0], 0
je 0x1400c301c
mov rax, qword [rbx]
mov dl, 1
mov rcx, rbx
call qword [rax + 0x800]
test al, al
jne 0x1400c300c
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x7f8]
test al, al
jne 0x1400c300c
cmp byte [rbx + 0x68c], al
jne 0x1400c300c
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x808]
test al, al
jne 0x1400c300c
mov rax, qword [rbx + 0x6a0]
lea rcx, [rax + 0x38]
mov qword [rcx + 0x318], rax
call fcn.1400700c0
jmp 0x1400c301c
mov rcx, qword [rbx + 0x6a0]
add rcx, 0x38
call fcn.14006ff30
lea rdx, [rsp + 0x50]
mov dword [rsp + 0x50], r14d
mov rcx, rbx
mov dword [rsp + 0x54], r15d
call fcn.1400bc3e0
cmp byte [rbx + 0x7c9], 0
je 0x1400c3066
mov eax, dword [rsi]
lea rdx, [rsp + 0x50]
mov dword [rsp + 0x50], eax
mov rcx, rbx
mov eax, dword [rdi]
mov dword [rsp + 0x54], eax
call fcn.1400c3b30
mov rbx, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret
test bpl, bpl
je 0x1400c31d8
cmp byte [rbx + 0x665], 0
je 0x1400c31d8
mov ecx, 1
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
jne 0x1400c30a4
mov ecx, 2
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x1400c31d8
mov eax, dword [rsi]
lea r8, [rsp + 0x50]
mov dword [rsp + 0x58], eax
lea rdx, [rsp + 0x58]
mov eax, dword [rdi]
lea rcx, [rbx + 0x1e8]
mov dword [rsp + 0x5c], eax
xor r9d, r9d
mov rax, qword [rbx + 0x1e8]
mov dword [rsp + 0x50], 0xffffffff
call qword [rax + 0x1f8]
cmp rax, qword [rbx + 0x658]
jne 0x1400c30f2
mov eax, dword [rbx + 0x660]
cmp dword [rsp + 0x50], eax
je 0x1400c31d8
mov ebp, dword [rbx + 0x88]
lea rdx, [rsp + 0x58]
mov r14d, dword [rbx + 0x8c]
mov rcx, rbx
mov rax, qword [rbx]
mov dword [rsp + 0x58], ebp
mov dword [rsp + 0x5c], r14d
call qword [rax + 0x8d8]
test al, al
je 0x1400c318b
lea rdx, [rbx + 0x7b8]
mov dword [rbx + 0x7c0], ebp
lea rcx, [rbx + 0x1e8]
mov dword [rdx], ebp
mov dword [rbx + 0x7c4], r14d
mov dword [rbx + 0x7bc], r14d
call fcn.1400b62f0
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
mov edx, 0xbb8
mov byte [rbx + 0x7c9], 1
shr eax, 0xf
mov r8d, 0x28
and al, 1
mov rcx, rbx
mov byte [rbx + 0x7ca], al
mov rax, qword [rbx]
call qword [rax + 0x598]
mov rbx, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret
cmp qword [rbx + 0x658], 0
je 0x1400c31d8
lea rdx, [rbx + 0x798]
mov rcx, rbx
call fcn.1400b8ea0
cmp dword [rbx + 0x7a0], 0
jle 0x1400c31d8
mov byte [rbx + 0x665], 0
lea r8, [rsp + 0x58]
mov eax, dword [rsi]
lea rdx, [rbx + 0x798]
mov dword [rsp + 0x58], eax
mov rcx, rbx
mov eax, dword [rdi]
mov dword [rsp + 0x5c], eax
mov rax, qword [rbx]
call qword [rax + 0x8d0]
mov rbx, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret