Function at 0x1400e6c90
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov eax, dword [rsp + 0xc0]
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 + 0x9c], r10d
mov rcx, qword [rcx + 8]
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400e6cf0
call fcn.1401009c0
mov r9d, ebp
mov r8, r14
mov rdx, rax
mov rcx, rdi
call fcn.1400e6a80
xor eax, eax
mov dword [rsp + 0xc0], eax
mov dword [rsp + 0xa0], eax
test r14, r14
je 0x1400e6d12
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400ca590
mov r12d, eax
mov dword [rsp + 0xa8], eax
mov r13d, eax
shr r12d, 0x16
and r12d, ebp
test r14, r14
je 0x1400e6d7f
mov rdx, qword [rdi + 8]
test rdx, rdx
je 0x1400e6d7f
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x128]
mov r15d, eax
mov dword [rsp + 0xc0], eax
bt r13d, 0x19
jae 0x1400e6d5a
mov dword [rsp + 0xa0], ebp
jmp 0x1400e6d87
test eax, eax
je 0x1400e6d87
bt r13d, 0xc
jae 0x1400e6d87
call fcn.140104020
mov ecx, dword [rsp + 0xa0]
test eax, eax
cmove ecx, ebp
mov dword [rsp + 0xa0], ecx
jmp 0x1400e6d87
mov r15d, dword [rsp + 0xc0]
xor r8d, r8d
test r15d, r15d
mov eax, r8d
sete al
mov dword [rsp + 0x90], eax
test eax, eax
jne 0x1400e6db4
test r13b, 4
jne 0x1400e6dad
cmp byte [rdi + 0xac], r8b
je 0x1400e6db4
mov dword [rsp + 0x90], ebp
or r15d, 0xffffffff
mov dword [rdi + 0x90], esi
test ebx, ebx
je 0x1400e6df4
mov eax, dword [rdi + 0x60]
test eax, eax
je 0x1400e6df2
jns 0x1400e6dd0
mov edx, r15d
jmp 0x1400e6dd8
test eax, eax
mov edx, r8d
setg dl
test ebx, ebx
jns 0x1400e6de1
mov ecx, r15d
jmp 0x1400e6de9
test ebx, ebx
mov ecx, r8d
setg cl
cmp edx, ecx
cmovne eax, r8d
mov dword [rdi + 0x60], eax
test ebx, ebx
jns 0x1400e6e23
bt r13d, 0x14
jae 0x1400e6e23
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x60]
ucomiss xmm0, dword [0x14015de14]
jp 0x1400e6e11
je 0x1400e6e20
movd xmm1, ebx
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
cvttss2si ebx, xmm1
xor r8d, r8d
mov esi, dword [rdi + 0x10]
cmp esi, ebp
jne 0x1400e6e36
cmp qword [rdi + 0x48], 0
jne 0x1400e6e47
mov esi, r8d
jmp 0x1400e6e47
cmp esi, 3
jne 0x1400e6e47
cmp qword [rdi + 0x48], 0
mov esi, r8d
setne sil
test byte [rdi + 0x3c], 8
jne 0x1400e6e7d
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400e6e7d
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400e6e7d
lea rcx, [0x1402ad8a0]
call fcn.14009a8c0
test eax, eax
je 0x1400e6e7f
xor esi, esi
mov ecx, dword [rdi + 0x3c]
mov eax, 4
test cl, 0x40
cmovne esi, eax
mov eax, dword [rdi + 0x7c]
test bpl, al
je 0x1400e6ea7
cmp dword [rsp + 0xc0], 0
jne 0x1400e6ea7
mov esi, eax
shr esi, 0xa
and esi, 4
bt ecx, 0x1a
cmovb esi, ebp
cmp byte [rdi + 0xad], 0
je 0x1400e6ec1
cmp dword [rsp + 0xc8], 6
je 0x1400e6ed4
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400ca870
bt eax, 0xf
jae 0x1400e6ed9
mov esi, 4
bt r13d, 0xf
jb 0x1400e6ef3
bt r13d, 0x12
jae 0x1400e6ef8
xor ecx, ecx
call fcn.1401023d0
cmp eax, 0xa
jne 0x1400e6ef8
mov esi, 4
test r12d, r12d
je 0x1400e6f0d
cmp esi, 4
jne 0x1400e6f0d
mov r12d, ebp
mov r13d, ebx
jmp 0x1400e6fd8
xor r10d, r10d
mov r12d, r10d
test ebx, ebx
je 0x1400e6fb7
mov r8d, dword [rdi + 0x9c]
cmp r8d, ebp
je 0x1400e6fb7
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jge 0x1400e6f94
add dword [rdi + 0xa0], ebx
mov r9d, dword [rdi + 0xa0]
mov eax, r9d
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp ecx, r8d
jl 0x1400e7039
cmp dword [rsp + 0xc0], r10d
je 0x1400e6f69
mov ebx, r9d
mov r13d, r9d
jmp 0x1400e6fba
test ebx, ebx
jns 0x1400e6f7e
mov eax, r15d
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
mov r13d, eax
jmp 0x1400e6fba
test ebx, ebx
mov eax, r10d
setg al
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
mov r13d, eax
jmp 0x1400e6fba
test esi, esi
jne 0x1400e6f9e
test byte [rdi + 0x3c], 2
jne 0x1400e6fb7
lea eax, [r8 - 1]
mov ecx, r10d
cmp dword [rdi + 0xa0], eax
mov eax, ebx
setge cl
cdq
idiv r8d
lea ebx, [rax + rcx]
mov r13d, ebx
cmp dword [rsp + 0x90], r10d
je 0x1400e6fdb
mov r8d, dword [rsp + 0xc8]
mov edx, ebx
mov rcx, rdi
call fcn.1400e86d0
mov ebx, eax
xor r10d, r10d
add dword [rdi + 0x60], ebx
mov r9d, dword [rdi + 0x60]
test r12d, r12d
jne 0x1400e7043
cmp dword [rsp + 0xb8], r12d
je 0x1400e7043
mov eax, dword [rdi + 0x64]
test eax, eax
je 0x1400e7043
cmp dword [rsp + 0xd0], r12d
je 0x1400e7033
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 0x1400e7033
test r9d, r9d
js 0x1400e7028
mov r15d, r10d
setg r15b
imul r8d, r15d
add r8d, r8d
mov dword [rdi + 0x60], r8d
inc dword [rdi + 0x98]
mov eax, 2
jmp 0x1400e72bd
mov eax, dword [rsp + 0xe8]
mov r8d, dword [rsp + 0xe0]
mov r9d, 2
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.1400e7a40
cmp eax, ebp
jne 0x1400e70af
cmp qword [r14 + 0x38], 0
jne 0x1400e708b
lea rdx, str.f:checkpoints_tpdrv_buildersuperman1_syntpenhCZone.h
lea rcx, str.m_pManagedPointingDevice
mov r8d, 0x1c1
call fcn.1400be660
mov rbx, qword [r14 + 0x38]
mov rcx, r14
call fcn.1400cad30
mov rcx, rbx
mov edx, eax
call fcn.140037e20
test eax, eax
je 0x1400e70ba
xor esi, esi
mov dword [rdi + 0x60], esi
jmp 0x1400e72bb
test eax, 0xfffffffd
je 0x1400e72bd
test r12d, r12d
jne 0x1400e70f7
cmp dword [rdi + 0x3c], r12d
jne 0x1400e70f7
cmp dword [rdi + 0x8c], r12d
je 0x1400e70f7
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400ca590
xor r8d, r8d
bt eax, 0xe
jae 0x1400e70fa
mov ecx, r8d
cmp esi, 4
mov dword [rsp + 0xc0], ecx
cmovne esi, r8d
jmp 0x1400e7101
xor r8d, r8d
mov ecx, dword [rsp + 0xc0]
mov eax, dword [rdi + 0x3c]
mov ebx, dword [rsp + 0xa8]
bt eax, 0x1e
jae 0x1400e711d
bt ebx, 0x1a
mov edx, 6
cmovb esi, edx
mov r15d, r8d
test r12d, r12d
jne 0x1400e7149
test ecx, ecx
jne 0x1400e712f
bt eax, 0x15
jae 0x1400e7149
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400ca870
mov r15d, eax
and r15d, 0x10000
xor r8d, r8d
movzx r12d, r8w
bt ebx, 0x1d
jae 0x1400e7163
mov rdx, qword [r14]
mov rcx, r14
call qword [rdx + 0x70]
xor r8d, r8d
movzx r12d, ax
mov ebx, r8d
cmp esi, 6
ja case.0x1400e7183.3
lea rax, [0x140000000]
movsxd rcx, esi
mov edx, dword [rax + rcx*4 + 0xe72d8]
add rdx, rax
jmp rdx
mov eax, dword [rsp + 0xc8]
mov r9d, dword [rsp + 0xc0]
movzx r8d, bpl
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.1400e9560
jmp 0x1400e727f
mov eax, dword [rsp + 0xc8]
mov r9d, dword [rsp + 0xb0]
mov r8, qword [rdi + 8]
mov dword [rsp + 0x48], r15d
mov dword [rsp + 0x40], eax
mov eax, dword [rsp + 0xa0]
mov dword [rsp + 0x38], eax
mov rax, qword [rsp + 0xd8]
mov rdx, r14
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0xc0]
mov rcx, rdi
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], ebp
call fcn.1400e8830
jmp 0x1400e727f
test dword [rdi + 0x3c], 0x400000
mov rax, qword [rsp + 0xd8]
mov r8, qword [rdi + 0x40]
mov dword [rsp + 0x28], ebp
movzx edx, bpl
mov rcx, rdi
mov qword [rsp + 0x20], rax
je 0x1400e722f
mov r9, qword [rdi + 8]
call fcn.1400e8c80
jmp 0x1400e727f
mov r9, qword [rdi + 0x48]
call fcn.1400e8c80
jmp 0x1400e727f
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x28]
mov r8, qword [rdi + 8]
movzx edx, bpl
mov rcx, rdi
mov r9d, eax
mov word [rsp + 0x20], r12w
call fcn.1400e8e00
jmp 0x1400e727f
mov r8, qword [rdi + 8]
movzx edx, bpl
mov rcx, rdi
call fcn.1400e90c0
jmp 0x1400e727f
movzx r8d, bpl
mov rdx, r14
mov rcx, rdi
call fcn.1400e92d0
xor esi, esi
mov ebx, eax
test eax, eax
jle 0x1400e729a
mov eax, r13d
cdq
xor eax, edx
sub eax, edx
cmp eax, ebp
jg 0x1400e729a
mov dword [rdi + 0x60], esi
jmp 0x1400e729a
xor esi, esi
mov r8d, 3
mov rdx, r14
mov rcx, rdi
mov dword [rdi + 0x64], ebx
call fcn.1400e94e0
test ebx, ebx
jg 0x1400e72bb
mov ebp, esi
sets bpl
add ebp, 2
mov eax, ebp
mov rbx, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret