Function at 0x1400c4040
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, 0x40
mov eax, dword [rsp + 0xa0]
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 0x1400c40a4
call fcn.1400db140
mov r8, r14
mov rcx, rdi
mov rdx, rax
call fcn.1400c3e90
xor r13d, r13d
mov r12d, r13d
mov r15d, r13d
mov dword [rsp + 0xa0], r13d
test r14, r14
je 0x1400c4118
mov rdx, qword [rdi]
test rdx, rdx
je 0x1400c4118
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x80]
xor r8d, r8d
xor edx, edx
mov rcx, r14
mov r12d, eax
call fcn.1400a9a30
bt eax, 0x19
jae 0x1400c40ed
mov dword [rsp + 0xa0], ebp
jmp 0x1400c4118
test r12d, r12d
je 0x1400c411b
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400a9a30
bt eax, 0xc
jae 0x1400c4118
call fcn.1400ddb20
test eax, eax
cmove r15d, ebp
mov dword [rsp + 0xa0], r15d
test r12d, r12d
sete r13b
test r13d, r13d
jne 0x1400c4146
test r14, r14
je 0x1400c413a
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400a9a30
test al, 4
jne 0x1400c4143
cmp byte [rdi + 0xa0], 0
je 0x1400c4146
mov r13d, ebp
or r15d, 0xffffffff
xor r8d, r8d
mov dword [rdi + 0x88], esi
test ebx, ebx
je 0x1400c4185
mov eax, dword [rdi + 0x58]
test eax, eax
jns 0x1400c4163
mov edx, r15d
jmp 0x1400c416b
test eax, eax
mov edx, r8d
setg dl
test ebx, ebx
jns 0x1400c4174
mov ecx, r15d
jmp 0x1400c417c
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 0x1400c4198
cmp qword [rdi + 0x40], 0
jne 0x1400c41a9
mov esi, r8d
jmp 0x1400c41a9
cmp esi, 3
jne 0x1400c41a9
cmp qword [rdi + 0x40], 0
mov esi, r8d
setne sil
test byte [rdi + 0x34], 8
jne 0x1400c41df
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400c41df
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400c41df
lea rcx, [0x14026d730]
call fcn.140084610
test eax, eax
je 0x1400c41e3
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 0x1400c4206
test r12d, r12d
jne 0x1400c4206
mov esi, eax
shr esi, 0xa
and esi, 4
bt ecx, 0x1a
cmovb esi, ebp
cmp byte [rdi + 0xa1], 0
je 0x1400c4220
cmp dword [rsp + 0xa8], 6
je 0x1400c4233
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400a9c70
bt eax, 0xf
jae 0x1400c4238
mov esi, 4
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400a9a30
bt eax, 0xf
mov eax, 4
cmovb esi, eax
test ebx, ebx
je 0x1400c42e2
mov r8d, dword [rdi + 0x90]
cmp r8d, ebp
je 0x1400c42e2
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jge 0x1400c42c0
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 0x1400c435d
test r12d, r12d
je 0x1400c429c
mov ebx, ecx
jmp 0x1400c42e2
test ebx, ebx
jns 0x1400c42ae
mov eax, r15d
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
jmp 0x1400c42e2
xor eax, eax
test ebx, ebx
setg al
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
jmp 0x1400c42e2
test esi, esi
jne 0x1400c42ca
test byte [rdi + 0x34], 2
jne 0x1400c42e2
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 + 0xa8]
mov dword [rsp + 0x80], ebx
je 0x1400c4305
mov r8d, r13d
mov edx, ebx
mov rcx, rdi
call fcn.1400c5610
mov ebx, eax
add dword [rdi + 0x58], ebx
cmp dword [rsp + 0x98], 0
mov r9d, dword [rdi + 0x58]
je 0x1400c4367
mov eax, dword [rdi + 0x5c]
test eax, eax
je 0x1400c4367
cmp dword [rsp + 0xb0], 0
je 0x1400c435d
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 0x1400c435d
test r9d, r9d
js 0x1400c4352
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 0x1400c44f0
mov eax, dword [rsp + 0xc8]
mov r8d, dword [rsp + 0xc0]
mov r9d, 2
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.1400c4ac0
cmp eax, ebp
jne 0x1400c43b3
mov rbx, qword [r14 + 0x48]
mov rcx, r14
call fcn.1400a9d40
mov rcx, rbx
mov edx, eax
call fcn.140027e60
test eax, eax
je 0x1400c43be
xor eax, eax
mov dword [rdi + 0x58], eax
jmp 0x1400c44ee
test eax, 0xfffffffd
je 0x1400c44f0
cmp dword [rdi + 0x34], 0
jne 0x1400c43ed
cmp dword [rdi + 0x84], 0
je 0x1400c43ed
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400a9a30
xor ecx, ecx
bt eax, 0xe
jae 0x1400c43ef
cmp esi, 4
mov r12d, ecx
cmovne esi, ecx
jmp 0x1400c43ef
xor ecx, ecx
test esi, esi
je 0x1400c4487
dec esi
je 0x1400c444d
dec esi
je 0x1400c443c
sub esi, 2
je 0x1400c4420
dec esi
jne 0x1400c44dc
mov r8, qword [rdi]
movzx edx, bpl
mov rcx, rdi
call fcn.1400c5ea0
jmp 0x1400c44bf
mov r9d, r12d
movzx r8d, bpl
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], r13d
call fcn.1400c60b0
jmp 0x1400c44bf
mov r8, qword [rdi]
movzx edx, bpl
mov rcx, rdi
call fcn.1400c5c50
jmp 0x1400c44bf
test dword [rdi + 0x34], 0x400000
mov rax, qword [rsp + 0xb8]
mov r8, qword [rdi + 0x38]
mov dword [rsp + 0x28], ebp
movzx edx, bpl
mov rcx, rdi
mov qword [rsp + 0x20], rax
je 0x1400c447c
mov r9, qword [rdi]
call fcn.1400c5ad0
jmp 0x1400c44bf
mov r9, qword [rdi + 0x40]
call fcn.1400c5ad0
jmp 0x1400c44bf
mov eax, dword [rsp + 0xa0]
mov rcx, qword [rsp + 0xb8]
mov r8d, dword [rsp + 0x90]
mov rdx, qword [rdi]
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.1400c5770
mov ecx, eax
test eax, eax
jle 0x1400c44dc
mov eax, dword [rsp + 0x80]
cdq
xor eax, edx
sub eax, edx
cmp eax, ebp
jg 0x1400c44dc
xor eax, eax
mov dword [rdi + 0x58], eax
jmp 0x1400c44de
xor eax, eax
mov dword [rdi + 0x5c], ecx
test ecx, ecx
jg 0x1400c44ee
mov ebp, eax
sets bpl
add ebp, 2
mov eax, ebp
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x88]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
ret