Function at 0x1400c5140
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov eax, dword [rsp + 0xb0]
mov rdi, rcx
mov ebp, 1
test eax, eax
mov r10d, ebp
mov ebx, r9d
cmovne r10d, eax
mov esi, r8d
mov r14, rdx
mov dword [rcx + 0x90], r10d
mov rcx, qword [rcx]
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400c51a4
call fcn.1400dc5d0
mov r8, r14
mov rcx, rdi
mov rdx, rax
call fcn.1400c4f90
xor r13d, r13d
mov r12d, r13d
mov r15d, r13d
mov dword [rsp + 0xb0], r13d
test r14, r14
je 0x1400c5218
mov rdx, qword [rdi]
test rdx, rdx
je 0x1400c5218
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0xa8]
xor r8d, r8d
xor edx, edx
mov rcx, r14
mov r12d, eax
call fcn.1400aa8f0
bt eax, 0x19
jae 0x1400c51ed
mov dword [rsp + 0xb0], ebp
jmp 0x1400c5218
test r12d, r12d
je 0x1400c521b
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0xc
jae 0x1400c5218
call fcn.1400df0d0
test eax, eax
cmove r15d, ebp
mov dword [rsp + 0xb0], r15d
test r12d, r12d
sete r13b
test r13d, r13d
jne 0x1400c5246
test r14, r14
je 0x1400c523a
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
test al, 4
jne 0x1400c5243
cmp byte [rdi + 0xa0], 0
je 0x1400c5246
mov r13d, ebp
or r15d, 0xffffffff
xor r8d, r8d
mov dword [rdi + 0x88], esi
test ebx, ebx
je 0x1400c5285
mov eax, dword [rdi + 0x58]
test eax, eax
jns 0x1400c5263
mov edx, r15d
jmp 0x1400c526b
test eax, eax
mov edx, r8d
setg dl
test ebx, ebx
jns 0x1400c5274
mov ecx, r15d
jmp 0x1400c527c
test ebx, ebx
mov ecx, r8d
setg cl
cmp edx, ecx
cmovne eax, r8d
mov dword [rdi + 0x58], eax
mov esi, dword [rdi + 8]
cmp esi, ebp
jne 0x1400c5298
cmp qword [rdi + 0x40], 0
jne 0x1400c52a9
mov esi, r8d
jmp 0x1400c52a9
cmp esi, 3
jne 0x1400c52a9
cmp qword [rdi + 0x40], 0
mov esi, r8d
setne sil
test byte [rdi + 0x34], 8
jne 0x1400c52df
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400c52df
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400c52df
lea rcx, [0x1402707e0]
call fcn.1400844e0
test eax, eax
je 0x1400c52e3
xor eax, eax
mov esi, eax
mov ecx, dword [rdi + 0x34]
mov eax, 4
test cl, 0x40
cmovne esi, eax
mov eax, dword [rdi + 0x74]
test bpl, al
je 0x1400c5306
test r12d, r12d
jne 0x1400c5306
mov esi, eax
shr esi, 0xa
and esi, 4
bt ecx, 0x1a
cmovb esi, ebp
cmp byte [rdi + 0xa1], 0
je 0x1400c5320
cmp dword [rsp + 0xb8], 6
je 0x1400c5333
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aab30
bt eax, 0xf
jae 0x1400c5338
mov esi, 4
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0xf
jb 0x1400c536a
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0x12
jae 0x1400c536f
xor ecx, ecx
call fcn.1400dd570
cmp eax, 0xa
jne 0x1400c536f
mov esi, 4
test ebx, ebx
je 0x1400c5400
mov r8d, dword [rdi + 0x90]
cmp r8d, ebp
je 0x1400c5400
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jge 0x1400c53de
test r12d, r12d
cmovne eax, ebx
add dword [rdi + 0x94], eax
mov ecx, dword [rdi + 0x94]
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jl 0x1400c547b
test r12d, r12d
je 0x1400c53ba
mov ebx, ecx
jmp 0x1400c5400
test ebx, ebx
jns 0x1400c53cc
mov eax, r15d
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
jmp 0x1400c5400
xor eax, eax
test ebx, ebx
setg al
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
jmp 0x1400c5400
test esi, esi
jne 0x1400c53e8
test byte [rdi + 0x34], 2
jne 0x1400c5400
xor ecx, ecx
lea eax, [r8 - 1]
cmp dword [rdi + 0x94], eax
mov eax, ebx
setge cl
cdq
idiv r8d
lea ebx, [rax + rcx]
test r13d, r13d
mov r13d, dword [rsp + 0xb8]
mov dword [rsp + 0x90], ebx
je 0x1400c5423
mov r8d, r13d
mov edx, ebx
mov rcx, rdi
call fcn.1400c6890
mov ebx, eax
add dword [rdi + 0x58], ebx
cmp dword [rsp + 0xa8], 0
mov r9d, dword [rdi + 0x58]
je 0x1400c5485
mov eax, dword [rdi + 0x5c]
test eax, eax
je 0x1400c5485
cmp dword [rsp + 0xc0], 0
je 0x1400c547b
cdq
mov r8d, eax
mov eax, r9d
xor r8d, edx
sub r8d, edx
cdq
xor eax, edx
lea ecx, [r8 + r8]
sub eax, edx
cmp eax, ecx
jle 0x1400c547b
test r9d, r9d
js 0x1400c5470
xor eax, eax
test r9d, r9d
mov r15d, eax
setg r15b
imul r8d, r15d
add r8d, r8d
mov dword [rdi + 0x58], r8d
mov eax, 2
jmp 0x1400c5675
mov eax, dword [rsp + 0xd8]
mov r8d, dword [rsp + 0xd0]
mov r9d, 2
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.1400c5d50
cmp eax, ebp
jne 0x1400c54d1
mov rbx, qword [r14 + 0x48]
mov rcx, r14
call fcn.1400aac00
mov rcx, rbx
mov edx, eax
call fcn.140026e90
test eax, eax
je 0x1400c54dc
xor eax, eax
mov dword [rdi + 0x58], eax
jmp 0x1400c5673
test eax, 0xfffffffd
je 0x1400c5675
cmp dword [rdi + 0x34], 0
jne 0x1400c550d
cmp dword [rdi + 0x84], 0
je 0x1400c550d
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
xor r15d, r15d
bt eax, 0xe
jae 0x1400c5510
cmp esi, 4
mov r12d, r15d
cmovne esi, r15d
jmp 0x1400c5510
xor r15d, r15d
mov ebx, r15d
test r12d, r12d
jne 0x1400c5521
test dword [rdi + 0x34], 0x200000
je 0x1400c5536
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aab30
mov ebx, eax
and ebx, 0x10000
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0x1d
jae 0x1400c5556
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x60]
movzx r15d, ax
xor eax, eax
mov r8d, eax
test esi, esi
je 0x1400c5605
dec esi
je 0x1400c55cb
dec esi
je 0x1400c55a8
sub esi, 2
je 0x1400c558c
dec esi
jne 0x1400c5661
mov r8, qword [rdi]
movzx edx, bpl
mov rcx, rdi
call fcn.1400c71a0
jmp 0x1400c5641
mov r9d, r12d
movzx r8d, bpl
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], r13d
call fcn.1400c73b0
jmp 0x1400c5641
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x20]
mov r8, qword [rdi]
movzx edx, bpl
mov rcx, rdi
mov r9d, eax
mov word [rsp + 0x20], r15w
call fcn.1400c6ef0
jmp 0x1400c5641
test dword [rdi + 0x34], 0x400000
mov rax, qword [rsp + 0xc8]
mov r8, qword [rdi + 0x38]
mov dword [rsp + 0x28], ebp
movzx edx, bpl
mov rcx, rdi
mov qword [rsp + 0x20], rax
je 0x1400c55fa
mov r9, qword [rdi]
call fcn.1400c6d70
jmp 0x1400c5641
mov r9, qword [rdi + 0x40]
call fcn.1400c6d70
jmp 0x1400c5641
mov eax, dword [rsp + 0xb0]
mov rcx, qword [rsp + 0xc8]
mov r8d, dword [rsp + 0xa0]
mov rdx, qword [rdi]
mov dword [rsp + 0x40], ebx
mov dword [rsp + 0x38], r13d
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rcx
mov r9d, ebp
mov rcx, rdi
mov dword [rsp + 0x20], r12d
call fcn.1400c69f0
mov r8d, eax
test eax, eax
jle 0x1400c565f
mov eax, dword [rsp + 0x90]
cdq
xor eax, edx
sub eax, edx
cmp eax, ebp
jg 0x1400c565f
xor eax, eax
mov dword [rdi + 0x58], eax
jmp 0x1400c5661
xor eax, eax
mov dword [rdi + 0x5c], r8d
test r8d, r8d
jg 0x1400c5673
mov ebp, eax
sets bpl
add ebp, 2
mov eax, ebp
lea r11, [rsp + 0x50]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret