Function at 0x14015a4cc
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r14
push r15
mov rbp, rsp
sub rsp, 0x70
mov rax, qword [0x1402d6cb0]
xor rax, rsp
mov qword [rbp - 0x10], rax
mov rsi, rcx
xor r15d, r15d
lea rcx, [rbp - 0x50]
mov qword [rbp - 0x50], r15
mov rbx, r8
mov r14d, edx
call qword [sym.imp.USER32.dll_GetCursorPos]
mov rax, qword [rsi]
mov rdi, qword [rax + 0x370]
mov rcx, rdi
call fcn.1401cc2e4
mov rcx, rsi
call rdi
test al, 1
je 0x14015a751
cmp byte [rsi + 0x210], r15b
jne 0x14015a54b
call qword [sym.imp.USER32.dll_GetCapture]
mov rcx, rax
call fcn.1400414b4
cmp rax, rsi
je 0x14015a581
cmp byte [rsi + 0x210], r15b
je 0x14015a55e
call qword [sym.imp.USER32.dll_GetCapture]
mov rcx, rax
call fcn.1400414b4
cmp rax, rsi
jne 0x14015a581
mov ecx, 0x17
call qword [sym.imp.USER32.dll_GetSystemMetrics]
neg eax
sbb ecx, ecx
neg ecx
inc ecx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x14015a59e
cmp dword [rsi + 0x4d8], r15d
jne 0x14015a59e
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov byte [rsi + 0x210], r15b
mov byte [rsi + 0x408], r15b
cmp byte [rsi + 0x408], r15b
je 0x14015a785
mov rcx, qword [rsi + 0x40]
lea rdx, [rbp - 0x20]
mov qword [rbp - 0x20], r15
mov qword [rbp - 0x18], r15
call qword [sym.imp.USER32.dll_GetWindowRect]
cmp byte [rsi + 0x409], r15b
jne 0x14015a5e4
mov rdx, qword [rbp - 0x50]
lea rcx, [rbp - 0x20]
call qword [sym.imp.USER32.dll_PtInRect]
cmp eax, 1
sete al
mov byte [rsi + 0x409], al
mov rax, qword [rsi + 0x240]
lea rdx, [rbp - 0x48]
mov ecx, dword [rbp - 0x50]
sub ecx, eax
shr rax, 0x20
mov dword [rbp - 0x30], ecx
mov ecx, dword [rbp - 0x4c]
sub ecx, eax
mov rax, qword [rbp - 0x50]
mov qword [rsi + 0x240], rax
mov rax, qword [rsi + 0x208]
mov dword [rbp - 0x2c], ecx
mov rcx, qword [rsi + 0x40]
mov qword [rbp - 0x48], rax
call qword [sym.imp.USER32.dll_ClientToScreen]
mov rax, qword [rbp - 0x48]
mov rcx, rsi
mov ebx, dword [rbp - 0x50]
mov edi, dword [rbp - 0x4c]
sub ebx, eax
mov rdx, qword [rbp - 0x30]
shr rax, 0x20
sub edi, eax
call fcn.14007ddb0
mov ecx, ebx
call fcn.1401e6f4c
cmp eax, dword [0x1402e8980]
jg 0x14015a663
mov ecx, edi
call fcn.1401e6f4c
cmp eax, dword [0x1402e8984]
jle 0x14015a7b2
cmp byte [rsi + 0x409], r15b
je 0x14015a7b2
mov rax, qword [rsi]
mov rbx, qword [rax + 0x2d8]
mov rcx, rbx
call fcn.1401cc2e4
mov rcx, rsi
call rbx
test eax, eax
je 0x14015a6dc
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_GetParent]
mov rcx, rax
call fcn.1400414b4
mov rdx, rax
lea rcx, str.CMFCBaseTabCtrl
call fcn.140036800
mov rdi, rax
test rax, rax
je 0x14015a747
mov rcx, qword [rax]
mov rbx, qword [rcx + 0x340]
mov rcx, rbx
call fcn.1401cc2e4
xor r9d, r9d
or r8d, 0xffffffff
mov rcx, rdi
lea edx, [r9 + 1]
call rbx
jmp 0x14015a747
mov rax, qword [rsi]
movups xmm0, xmmword [rsi + 0x2c0]
mov rbx, qword [rax + 0x3f8]
mov rcx, rbx
movdqu xmmword [rbp - 0x30], xmm0
call fcn.1401cc2e4
mov r9b, 1
lea rdx, [rbp - 0x30]
mov r8d, 1
mov rcx, rsi
call rbx
mov rax, qword [rsi]
mov rbx, qword [rax + 0x338]
mov rcx, rbx
call fcn.1401cc2e4
mov rcx, rsi
call rbx
mov rdx, rax
lea rcx, vtable.CGlobalUtils.0
call fcn.140112ae4
xor r9d, r9d
lea rcx, vtable.CGlobalUtils.0
xor r8d, r8d
mov rdx, rax
call fcn.140112990
mov word [rsi + 0x408], r15w
jmp 0x14015a7b2
mov rax, qword [rsi]
mov rdi, qword [rax + 0x370]
mov rcx, rdi
call fcn.1401cc2e4
mov rcx, rsi
call rdi
test al, 2
je 0x14015a785
cmp byte [rsi + 0x408], r15b
je 0x14015a785
mov r8, rbx
mov edx, r14d
mov rcx, rsi
call fcn.14007c728
jmp 0x14015a7b2
mov rcx, qword [rsi + 0x40]
lea rdx, [rbp - 0x40]
mov qword [rbp - 0x40], rbx
call qword [sym.imp.USER32.dll_ClientToScreen]
mov rax, qword [rsi]
mov rbx, qword [rax + 0x710]
mov rcx, rbx
call fcn.1401cc2e4
mov rdx, qword [rbp - 0x40]
mov rcx, rsi
call rbx
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.1401cb5d0
mov rbx, qword [rsp + 0xb0]
add rsp, 0x70
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret