Function at 0x1401dcdb0
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x70]
sub rsp, 0x170
mov rax, qword [0x1406836b8]
xor rax, rsp
mov qword [rbp + 0x60], rax
xor r15d, r15d
mov r13d, r8d
mov r12d, edx
mov rsi, rcx
mov edi, r15d
lea r14d, [r15 + 1]
sub r9d, 5
je 0x1401dd06e
sub r9d, 3
je 0x1401dd17e
cmp r9d, r14d
jne 0x1401dd6ca
lea r9, [rcx + 0xa4]
call fcn.1401dc440
mov ebx, eax
cmp eax, 0xffffffff
je 0x1401dd6ca
cmp eax, 5
jne 0x1401dcfbf
mov ecx, dword [rsi + 0x190]
lea r8, [rsp + 0x60]
movsd xmm0, qword [rsi + 0x188]
lea rdx, [rsp + 0x70]
movsd xmm3, qword [rsi + 0x180]
mov dword [rsp + 0x28], ecx
mov rcx, rsi
movsd qword [rsp + 0x20], xmm0
call fcn.1401da470
mov eax, dword [rsp + 0x60]
mov r8d, dword [rsp + 0x70]
sub eax, r13d
sub r8d, r12d
mov dword [rsi + 0x7c], eax
mov dword [rsi + 0x78], r8d
mov dword [rsi + 0x80], r12d
mov dword [rsi + 0x84], r13d
call qword [sym.imp.USER32.dll_GetMessageTime]
test byte [rsi], 8
mov dword [rsi + 0x9c], eax
jne 0x1401dcfc4
mov rax, qword [0x14068c260]
lea rdx, str.tooltips_class32
mov qword [rsp + 0x58], r15
mov r9d, 0x80000000
mov qword [rsp + 0x50], rax
xor r8d, r8d
mov rax, qword [rsi + 0x40]
xor ecx, ecx
mov qword [rsp + 0x48], r15
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x38], r15d
mov dword [rsp + 0x30], r15d
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], r15d
call fcn.1401b0740
lea r8d, [r15 + 0x50]
mov qword [rsi + 0x1a0], rax
lea rdx, [rbp - 0x40]
mov rcx, rsi
call fcn.1401dc750
lea rdi, [rsi + 0x1a8]
mov dword [rdi], SHCreateStdEnumFmtEtc
test byte [rsi + 4], 4
je 0x1401dcf15
mov dword [rdi + 4], 0xa0
mov eax, dword [rsi + 0x48]
jmp 0x1401dcf20
mov dword [rdi + 4], 0xa1
mov rax, qword [rsi + 0x40]
mov qword [rdi + 0x10], rax
mov r9, rdi
mov rax, qword [rsi + 0x40]
xor r8d, r8d
mov qword [rdi + 8], rax
mov edx, 0x432
mov rax, qword [0x14068c260]
mov qword [rdi + 0x28], rax
lea rax, [rbp - 0x40]
mov qword [rdi + 0x30], rax
mov qword [rdi + 0x18], r15
mov qword [rdi + 0x20], r15
mov rcx, qword [rsi + 0x1a0]
call qword [sym.imp.USER32.dll_SendMessageW]
lea rcx, [rsp + 0x68]
call qword [sym.imp.USER32.dll_GetCursorPos]
movzx eax, word [rsp + 0x6c]
xor r8d, r8d
add ax, word [0x14067bcac]
movzx edx, ax
movzx eax, word [rsp + 0x68]
add ax, word [0x14067bca8]
movzx ecx, ax
shl edx, 0x10
or edx, ecx
mov rcx, qword [rsi + 0x1a0]
movsxd r9, edx
mov edx, 0x412
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [rsi + 0x1a0]
mov r9, rdi
mov r8, r14
mov edx, 0x411
call qword [sym.imp.USER32.dll_SendMessageW]
jmp 0x1401dcfc4
cmp ebx, 0xfffffffd
je 0x1401dcfec
mov rax, qword [rsi + 0x180]
mov qword [rsi + 0x88], rax
mov rax, qword [rsi + 0x188]
mov qword [rsi + 0x90], rax
mov eax, dword [rsi + 0x190]
mov dword [rsi + 0x98], eax
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_HideCaret]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_SetCapture]
movups xmm0, xmmword [rsi + 0x58]
mov rcx, qword [rsi + 0x40]
lea rdx, [rbp - 0x70]
mov dword [rsi + 0xa0], ebx
movups xmmword [rbp - 0x70], xmm0
call qword [sym.imp.USER32.dll_ClientToScreen]
mov rcx, qword [rsi + 0x40]
lea rdx, [rbp - 0x68]
call qword [sym.imp.USER32.dll_ClientToScreen]
lea rcx, [rbp - 0x70]
call qword [sym.imp.USER32.dll_ClipCursor]
cmp ebx, 0xfffffffd
je 0x1401dd06e
mov ecx, dword [rsi + 8]
lea rax, [rsi + 0xc]
mov r8, qword [rsi + 0x3c8]
mov edx, r14d
shl edx, cl
mov r9d, 9
dec edx
mov dword [rsp + 0x30], r15d
mov dword [rsp + 0x28], edx
mov rcx, rsi
mov edx, dword [rsi + 0x48]
mov qword [rsp + 0x20], rax
call qword [rsi + 0x3d0]
cmp dword [rsi + 0xa0], 5
jne 0x1401dd6ca
mov eax, dword [rsi + 4]
mov dword [rbp - 0x7c], eax
test eax, 0x4001
jne 0x1401dd6ca
mov r9d, dword [rsi + 0x190]
mov edx, eax
shr edx, 9
and edx, r14d
mov dword [rsp + 0x78], r12d
mov dword [rsp + 0x7c], r13d
test r9d, r9d
je 0x1401dd0b1
mov dword [rsi + 0x1f8], r15d
mov ecx, eax
mov eax, edx
shl eax, 0xa
btr ecx, 0xa
or ecx, eax
mov dword [rsi + 4], ecx
cmp dword [rsi + 0x84], r13d
jne 0x1401dd0d7
cmp dword [rsi + 0x80], r12d
je 0x1401dd5ea
lea r8, [rsi + 0x188]
test edx, edx
je 0x1401dd465
movsd xmm0, qword [r8]
lea rdx, [rsp + 0x60]
movsd xmm3, qword [rsi + 0x180]
lea r8, [rsp + 0x70]
mov dword [rsp + 0x28], r9d
mov rcx, rsi
movsd qword [rsp + 0x20], xmm0
call fcn.1401da470
mov eax, dword [rsp + 0x60]
mov edi, dword [rsp + 0x70]
sub eax, dword [rsi + 0x78]
sub edi, dword [rsi + 0x7c]
mov r8d, dword [rsi + 0x190]
movsd xmm5, qword [0x140450f58]
movsd xmm2, qword [0x140453a08]
movsd xmm4, qword [0x1404538b8]
test r8d, r8d
je 0x1401dd169
mov r9d, r8d
cmp r8d, 2
jle 0x1401dd3c2
cmp r8d, 4
jle 0x1401dd169
cmp r8d, 6
jle 0x1401dd3c2
cmp r8d, 8
jg 0x1401dd3c2
cmp dword [rsi + 0x1f0], 2
jne 0x1401dd336
mov eax, r15d
jmp 0x1401dd34c
call qword [sym.imp.USER32.dll_GetCapture]
cmp rax, qword [rsi + 0x40]
jne 0x1401dd6ca
call qword [sym.imp.USER32.dll_ReleaseCapture]
xor ecx, ecx
call qword [sym.imp.USER32.dll_ClipCursor]
cmp dword [rsi + 0xa0], 5
jne 0x1401dd1f9
test byte [rsi], 8
jne 0x1401dd1b7
mov rcx, qword [rsi + 0x1a0]
call qword [sym.imp.USER32.dll_DestroyWindow]
mov ecx, dword [rsi + 8]
lea rax, [rsi + 0xc]
mov r8, qword [rsi + 0x3c8]
mov edx, r14d
shl edx, cl
mov r9d, 4
dec edx
mov dword [rsp + 0x30], r15d
mov dword [rsp + 0x28], edx
mov rcx, rsi
mov edx, dword [rsi + 0x48]
mov qword [rsp + 0x20], rax
call qword [rsi + 0x3d0]
mov rbx, 0xffffffffffffffff
mov dword [rsi + 0x1f4], ebx
cmp dword [rsi + 0xa0], 0xfffffffd
jne 0x1401dd2ac
lea r9, [rsp + 0x60]
mov r8d, r13d
mov edx, r12d
mov rcx, rsi
call fcn.1401dc440
cmp eax, dword [rsi + 0xa0]
jne 0x1401dd2ac
mov ebx, dword [rsp + 0x60]
cmp ebx, dword [rsi + 0xa4]
jne 0x1401dd2ac
mov ecx, 0x11
mov edi, r14d
call qword [sym.imp.USER32.dll_GetKeyState]
mov edx, dword [rsi]
test ax, ax
sets r15b
test dl, 0x20
je 0x1401dd274
cmp dword [rsi + 0x190], 0
je 0x1401dd274
mov ecx, ebx
mov eax, r14d
shl eax, cl
test r15d, r15d
je 0x1401dd26c
not eax
mov dword [rsi + 0x1f8], eax
jmp 0x1401dd290
xor dword [rsi + 0x1f8], eax
jmp 0x1401dd290
mov ecx, ebx
mov eax, r14d
shl eax, cl
test r15d, r15d
je 0x1401dd28a
not eax
mov dword [rsi + 0xac], eax
jmp 0x1401dd290
xor dword [rsi + 0xac], eax
test dl, 2
je 0x1401dd29b
mov dword [rsi + 0x1f4], ebx
mov r8d, 0x2710
mov edx, r14d
mov rcx, rsi
call fcn.1401dbfe0
mov rcx, qword [rsi + 0x40]
and dword [rsi + 4], 0xfffffbff
call qword [sym.imp.USER32.dll_ShowCaret]
mov r8d, 0x2710
mov dword [rsi + 0xa0], 0xffffffff
mov edx, r14d
mov rcx, rsi
call fcn.1401dbfe0
mov ecx, dword [rsi + 8]
lea rax, [rsi + 0xc]
mov r8, qword [rsi + 0x3c8]
mov r9d, 8
mov edx, dword [rsi + 0x48]
shl r14d, cl
mov rcx, rsi
mov dword [rsp + 0x30], edi
dec r14d
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], rax
call qword [rsi + 0x3d0]
mov rcx, qword [rsi + 0x40]
lea rdx, [rsi + 0x58]
xor r8d, r8d
call qword [sym.imp.USER32.dll_InvalidateRect]
test byte [rsi + 4], 4
jne 0x1401dd6ca
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_UpdateWindow]
jmp 0x1401dd6ca
mov ecx, r12d
sub ecx, eax
mov eax, ecx
sar eax, 0x1f
and eax, 0xfffffffe
inc eax
add eax, ecx
cdq
sub eax, edx
sar eax, 1
movsd xmm1, qword [rsi + 0x180]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm5
addsd xmm0, xmm1
comisd xmm2, xmm0
jbe 0x1401dd36f
movaps xmm3, xmm2
jmp 0x1401dd376
movaps xmm3, xmm4
minsd xmm3, xmm0
ucomisd xmm3, xmm1
mov r9d, r8d
jp 0x1401dd381
je 0x1401dd3c2
movsd xmm0, qword [rsi + 0x188]
lea rdx, [rsp + 0x60]
mov dword [rsp + 0x28], r8d
mov rcx, rsi
lea r8, [rbp - 0x80]
movsd qword [rsp + 0x20], xmm0
movsd qword [rsi + 0x180], xmm3
call fcn.1401da470
mov r8d, dword [rsp + 0x60]
sub r8d, dword [rsi + 0x78]
mov r9d, dword [rsi + 0x190]
mov dword [rsp + 0x78], r8d
cmp r9d, 2
jbe 0x1401dd3d5
lea eax, [r9 - 5]
cmp eax, r14d
ja 0x1401dd48f
cmp dword [rsi + 0x1f0], r14d
jne 0x1401dd3e3
mov eax, r15d
jmp 0x1401dd3f9
mov ecx, r13d
sub ecx, edi
mov eax, ecx
sar eax, 0x1f
and eax, 0xfffffffe
inc eax
add eax, ecx
cdq
sub eax, edx
sar eax, 1
movsd xmm3, qword [rsi + 0x188]
movd xmm0, eax
movaps xmm1, xmm3
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm5
subsd xmm1, xmm0
comisd xmm2, xmm1
ja 0x1401dd421
movaps xmm2, xmm4
minsd xmm2, xmm1
ucomisd xmm2, xmm3
jp 0x1401dd429
je 0x1401dd48f
movsd xmm3, qword [rsi + 0x180]
lea r8, [rsp + 0x60]
mov dword [rsp + 0x28], r9d
lea rdx, [rbp - 0x80]
mov rcx, rsi
movsd qword [rsp + 0x20], xmm2
movsd qword [rsi + 0x188], xmm2
call fcn.1401da470
mov r8d, dword [rsp + 0x60]
sub r8d, dword [rsi + 0x7c]
mov dword [rsp + 0x7c], r8d
jmp 0x1401dd48f
mov edx, dword [rsi + 0x7c]
lea r9, [rsi + 0x190]
mov ecx, dword [rsi + 0x78]
add edx, r13d
add ecx, r12d
mov dword [rsp + 0x28], edx
mov dword [rsp + 0x20], ecx
lea rdx, [rsi + 0x180]
mov rcx, rsi
call fcn.1401da780
mov rcx, rsi
call fcn.1401dc8c0
test byte [rsi], 8
jne 0x1401dd5ea
mov r8d, 0x50
lea rdx, [rbp - 0x40]
mov rcx, rsi
call fcn.1401dc750
mov rcx, qword [rsi + 0x1a0]
lea rax, [rbp - 0x40]
lea r9, [rsi + 0x1a8]
mov qword [rsi + 0x1d8], rax
xor r8d, r8d
mov edx, 0x436
call qword [sym.imp.USER32.dll_SendMessageW]
mov rax, qword [rsp + 0x78]
lea rdx, [rsp + 0x68]
mov rcx, qword [rsi + 0x40]
mov qword [rsp + 0x68], rax
call qword [sym.imp.USER32.dll_ClientToScreen]
mov eax, dword [0x14067bca8]
mov ecx, 0x4e
add dword [rsp + 0x68], eax
mov eax, dword [0x14067bcac]
add dword [rsp + 0x6c], eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, 0x4f
mov edi, eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, 0x4d
mov ebx, eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, 0x4c
mov dword [rsp + 0x70], eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [rbp - 0x80], eax
add eax, edi
mov edi, dword [rsp + 0x70]
add edi, ebx
mov dword [rsp + 0x60], eax
mov rbx, 0xffffffffffffffff
lea rax, [rbp - 0x40]
inc rbx
cmp word [rax + rbx*2], r15w
jne 0x1401dd554
mov ecx, 0x64
call sym.ErrorReportClient.exe_SfGetUIFont
mov rcx, rax
lea r9, [rbp - 0x78]
mov r8d, ebx
lea rdx, [rbp - 0x40]
call sym.ErrorReportClient.exe_SfGetTextExtent
mov ecx, dword [rbp - 0x78]
mov edx, dword [rsp + 0x68]
add ecx, 0x10
mov r8d, dword [rsp + 0x60]
mov dword [rbp - 0x78], ecx
lea eax, [rcx + rdx]
cmp eax, r8d
jle 0x1401dd59a
mov edx, r8d
sub edx, ecx
mov r8d, dword [rbp - 0x74]
mov ecx, dword [rsp + 0x6c]
lea eax, [r8 + rcx]
cmp eax, edi
jle 0x1401dd5af
mov ecx, edi
sub ecx, r8d
cmp edx, dword [rbp - 0x80]
cmovl edx, dword [rbp - 0x80]
cmp ecx, dword [rsp + 0x70]
movzx eax, dx
cmovl ecx, dword [rsp + 0x70]
xor r8d, r8d
mov dword [rsp + 0x6c], ecx
movzx ecx, cx
shl ecx, 0x10
or ecx, eax
mov dword [rsp + 0x68], edx
movsxd r9, ecx
mov edx, 0x412
mov rcx, qword [rsi + 0x1a0]
call qword [sym.imp.USER32.dll_SendMessageW]
mov rax, qword [rsp + 0x78]
mov qword [rsi + 0x80], rax
call qword [sym.imp.USER32.dll_GetMessageTime]
test dword [rbp - 0x7c], 0x200
mov dword [rsi + 0x9c], eax
je 0x1401dd644
cmp dword [rsp + 0x78], r12d
jne 0x1401dd619
cmp dword [rsp + 0x7c], r13d
je 0x1401dd644
mov rcx, qword [rsi + 0x40]
lea rdx, [rsp + 0x78]
or dword [rsi + 4], 0x800
call qword [sym.imp.USER32.dll_ClientToScreen]
mov edx, dword [rsp + 0x7c]
mov ecx, dword [rsp + 0x78]
call qword [sym.imp.USER32.dll_SetCursorPos]
and dword [rsi + 4], 0xfffff7ff
mov eax, dword [rsi + 8]
test eax, eax
je 0x1401dd65f
mov r8d, eax
lea rdx, [rsi + 0xc]
shl r8, 2
lea rcx, [rbp - 0x60]
call sub.VCRUNTIME140.dll_memcpy
mov r8d, 0x2710
mov edx, r14d
mov rcx, rsi
call fcn.1401dbfe0
mov r8d, dword [rsi + 8]
mov edx, r15d
test r8d, r8d
je 0x1401dd6ca
nop dword [rax]
mov ecx, edx
mov eax, dword [rsi + rcx*4 + 0xc]
cmp dword [rbp + rcx*4 - 0x60], eax
jne 0x1401dd695
inc edx
cmp edx, r8d
jb 0x1401dd680
jmp 0x1401dd6ca
mov edx, dword [rsi + 0x48]
lea rax, [rsi + 0xc]
mov ecx, r8d
mov dword [rsp + 0x30], r15d
mov r8, qword [rsi + 0x3c8]
mov r9d, 5
shl r14d, cl
mov rcx, rsi
dec r14d
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], rax
call qword [rsi + 0x3d0]
mov rcx, qword [rbp + 0x60]
xor rcx, rsp
call fcn.14039bbb0
mov rbx, qword [rsp + 0x1c8]
add rsp, 0x170
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret