Function at 0x140204570
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r14
push r15
lea rbp, [rsp - 0x198]
sub rsp, 0x298
mov rax, qword [0x1406836b8]
xor rax, rsp
mov qword [rbp + 0x180], rax
mov r14, qword [rcx + 0x50]
mov r15, r8
shr r15, 0x20
mov rbx, r8
cmp dword [0x140699010], 0
mov rsi, rcx
mov qword [rsp + 0x30], rbx
jne 0x14020461f
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
call qword [sym.imp.USER32.dll_GetDoubleClickTime]
sub edi, dword [0x140699014]
mov ecx, eax
add ecx, ecx
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
cmp edi, edx
jae 0x140204615
sub r15d, dword [r14 + 0x20]
mov edi, ebx
sub edi, dword [r14 + 0x1c]
mov ecx, 0x44
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, eax
mov eax, edi
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jge 0x140204615
mov eax, r15d
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jge 0x140204615
mov eax, 1
jmp 0x140204bd4
mov dword [0x140699010], 1
test byte [r14 + 0x38], 8
mov qword [rsp + 0x2d8], r12
mov qword [rsp + 0x290], r13
je 0x1402047e7
mov eax, dword [rsp + 0x34]
xor r15d, r15d
mov ecx, dword [r14 + 0x24]
test ebx, ebx
mov edx, r15d
mov r8d, r15d
cmovg edx, ebx
test eax, eax
mov dword [rsp + 0x30], edx
cmovg r8d, eax
mov dword [rsp + 0x34], r8d
test ecx, ecx
js 0x1402046b2
mov eax, dword [r14 + 0x1c]
lea r15, [rsp + 0x60]
mov dword [rsp + 0x60], eax
mov eax, dword [r14 + 0x20]
mov dword [rsp + 0x64], eax
mov eax, dword [rsi + 0x1c]
cmp ecx, eax
jge 0x140204685
mov dword [rsp + 0x68], eax
jmp 0x140204693
mov eax, dword [rsi + 0x24]
dec eax
cmp ecx, eax
cmovg ecx, eax
mov dword [rsp + 0x68], ecx
mov ecx, dword [r14 + 0x28]
mov eax, dword [rsi + 0x20]
cmp ecx, eax
jge 0x1402046a4
mov dword [rsp + 0x6c], eax
jmp 0x1402046b2
mov eax, dword [rsi + 0x28]
dec eax
cmp ecx, eax
cmovg ecx, eax
mov dword [rsp + 0x6c], ecx
mov r13d, dword [rsi + 0x1c]
mov eax, dword [r14 + 0x1c]
mov edi, dword [r14 + 0x20]
mov dword [rsp + 0x38], eax
cmp edx, r13d
jl 0x1402046d5
mov eax, dword [rsi + 0x24]
mov r13d, edx
dec eax
cmp edx, eax
cmovg r13d, eax
mov eax, dword [rsi + 0x20]
mov dword [rsp + 0x44], eax
cmp r8d, eax
jl 0x1402046f3
mov eax, dword [rsi + 0x28]
mov ebx, r8d
dec eax
cmp r8d, eax
cmovg ebx, eax
mov dword [rsp + 0x44], ebx
mov rax, qword [rsp + 0x30]
mov qword [r14 + 0x24], rax
mov rax, qword [r14]
mov rcx, rax
mov qword [rsp + 0x30], rax
call qword [sym.imp.USER32.dll_GetDC]
mov rcx, rax
mov edx, 0xa
mov r12, rax
call qword [sym.imp.GDI32.dll_SetROP2]
test r15, r15
je 0x14020477b
mov esi, dword [r15 + 4]
xor r9d, r9d
mov r14d, dword [r15 + 8]
mov r8d, esi
mov edx, r14d
mov rcx, r12
call qword [sym.imp.GDI32.dll_MoveToEx]
mov edx, dword [r15]
mov r8d, esi
mov rcx, r12
call qword [sym.imp.GDI32.dll_LineTo]
mov r8d, dword [r15 + 0xc]
mov rcx, r12
mov edx, dword [r15]
call qword [sym.imp.GDI32.dll_LineTo]
mov r8d, dword [r15 + 0xc]
mov edx, r14d
mov rcx, r12
call qword [sym.imp.GDI32.dll_LineTo]
mov r8d, esi
mov edx, r14d
mov rcx, r12
call qword [sym.imp.GDI32.dll_LineTo]
xor r9d, r9d
mov r8d, edi
mov edx, r13d
mov rcx, r12
call qword [sym.imp.GDI32.dll_MoveToEx]
mov edx, dword [rsp + 0x38]
mov r8d, edi
mov rcx, r12
call qword [sym.imp.GDI32.dll_LineTo]
mov r8d, dword [rsp + 0x44]
mov rcx, r12
mov edx, dword [rsp + 0x38]
call qword [sym.imp.GDI32.dll_LineTo]
mov r8d, dword [rsp + 0x44]
mov edx, r13d
mov rcx, r12
call qword [sym.imp.GDI32.dll_LineTo]
mov r8d, edi
mov edx, r13d
mov rcx, r12
call qword [sym.imp.GDI32.dll_LineTo]
mov rcx, qword [rsp + 0x30]
mov rdx, r12
call qword [sym.imp.USER32.dll_ReleaseDC]
mov eax, 1
jmp 0x140204bc4
mov rdx, qword [rsi + 0x10]
test rdx, rdx
je 0x140204bc2
movsxd rcx, dword [rsi + 0x44]
xor r15d, r15d
mov eax, dword [rdx]
test ecx, ecx
js 0x140204811
dec eax
cmp ecx, eax
jg 0x140204811
mov rax, qword [rdx + 0x10]
mov rdi, qword [rax + rcx*8]
jmp 0x140204814
mov rdi, r15
test rdi, rdi
je 0x140204bc2
test byte [rdi + 0x14], 4
jne 0x140204bc2
mov rax, qword [rdi + 0x38]
mov eax, dword [rax]
mov dword [rsp + 0x40], eax
cmp dword [r14 + 0x10], eax
jae 0x140204bc2
mov edx, dword [r14 + 0x14]
add edx, dword [rsp + 0x30]
mov eax, dword [rsi + 0x1c]
cmp edx, eax
jge 0x140204850
mov dword [rsp + 0x38], eax
jmp 0x14020485b
cmp edx, dword [rsi + 0x24]
cmovg edx, dword [rsi + 0x24]
mov dword [rsp + 0x38], edx
mov edx, dword [r14 + 0x18]
add edx, dword [rsp + 0x34]
mov r12d, dword [rsi + 0x20]
cmp edx, r12d
jl 0x140204877
cmp edx, dword [rsi + 0x28]
mov r12d, edx
cmovg r12d, dword [rsi + 0x28]
mov dword [rsp + 0x3c], r12d
lea r9, [rsp + 0x48]
mov rbx, qword [rsp + 0x38]
mov rdx, rdi
mov r8, rbx
mov rcx, rsi
call fcn.1401ff960
mov eax, dword [rsi + 0x48]
mov r13d, r15d
mov qword [rsp + 0x30], rbx
cmp eax, 0xffffffff
je 0x1402048d9
test byte [r14 + 0x38], 4
lea rdx, [rax + rax*2]
mov rax, qword [rdi + 0x38]
mov rcx, qword [rax + 0x10]
movups xmm0, xmmword [rcx + rdx*8]
movsd xmm1, qword [rcx + rdx*8 + 0x10]
movups xmmword [rsp + 0x60], xmm0
movsd qword [rsp + 0x70], xmm1
je 0x1402048d9
cmp dword [rsp + 0x70], r15d
jne 0x1402048d9
mov r13d, 1
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ecx, r15d
mov eax, dword [r14 + 0x38]
sets cl
mov dword [rsp + 0x38], ecx
test al, 1
je 0x14020495f
mov r8, qword [r14 + 0x1c]
lea r9, [rsp + 0x60]
mov rdx, rdi
mov rcx, rsi
call fcn.1401ff960
movss xmm1, dword [rsp + 0x68]
mov rdx, rdi
mov qword [r14 + 0x1c], rbx
mov rcx, rsi
movss xmm0, dword [rsp + 0x50]
mov r8, qword [rsp + 0x48]
subss xmm0, xmm1
sub r8, qword [rsp + 0x60]
mov ebx, dword [rsi + 0x48]
cvtps2pd xmm2, xmm1
mov dword [rsp + 0x28], 1
cvtps2pd xmm3, xmm0
movsd qword [rsp + 0x20], xmm2
call fcn.140201e20
mov edx, dword [rsi + 0x48]
sub edx, ebx
add edx, dword [r14 + 0x10]
mov dword [r14 + 0x10], edx
jmp 0x1402049fb
test al, 4
je 0x140204a13
test r13d, r13d
jne 0x140204a13
mov r8, qword [r14 + 0x1c]
lea r9, [rsp + 0x60]
mov rdx, rdi
mov rcx, rsi
call fcn.1401ff960
mov rax, qword [rsp + 0x60]
mov dword [r14 + 0x20], r12d
cmp dword [rsi + 0x4c], 1
mov qword [rsp + 0x48], rax
jne 0x1402049af
mov rax, qword [rdi + 0x38]
mov ebx, dword [rsi + 0x48]
mov rcx, qword [rax + 0x10]
lea rdx, [rbx + rbx*2]
movss xmm2, dword [rcx + rdx*8 + 8]
jmp 0x1402049b8
mov ebx, dword [rsi + 0x48]
movss xmm2, dword [rsp + 0x68]
movss xmm0, dword [rsp + 0x50]
xor r8d, r8d
mov eax, dword [rsp + 0x38]
subss xmm0, xmm2
cvtps2pd xmm1, xmm2
mov dword [rsp + 0x28], eax
mov rdx, rdi
mov rcx, rsi
cvtps2pd xmm3, xmm0
movsd qword [rsp + 0x20], xmm1
call fcn.140201e20
mov edx, dword [rsi + 0x48]
sub edx, ebx
add edx, dword [r14 + 0x10]
mov dword [r14 + 0x10], edx
cmp dword [rsi + 0x4c], 1
jbe 0x140204ad2
mov r8, qword [rsp + 0x48]
mov rcx, rdi
call fcn.1401ff690
movss dword [rsp + 0x50], xmm0
jmp 0x140204ad2
mov rax, qword [rdi + 0x38]
movss xmm0, dword [rdi + 0x24]
movss xmm1, dword [rsp + 0x50]
comiss xmm0, xmm1
mov rdx, qword [rax + 0x10]
mov r8d, dword [r14 + 0x10]
ja 0x140204a38
movss xmm0, dword [rdi + 0x28]
minss xmm0, xmm1
lea r9, [r8 + r8*2]
movss dword [rdx + r9*8 + 8], xmm0
test r8d, r8d
je 0x140204abb
test r13d, r13d
jne 0x140204abb
mov eax, dword [rsp + 0x40]
dec eax
cmp r8d, eax
jae 0x140204a90
mov r10, qword [rsp + 0x48]
lea eax, [r8 - 1]
lea rax, [rax + rax*2]
mov rax, qword [rdx + rax*8]
inc rax
cmp r10, rax
jl 0x140204a8a
lea eax, [r8 + 1]
lea rax, [rax + rax*2]
mov rcx, qword [rdx + rax*8]
mov rax, r10
dec rcx
cmp r10, rcx
cmovg rax, rcx
mov qword [rdx + r9*8], rax
jmp 0x140204abb
jne 0x140204abb
mov rcx, qword [rsp + 0x48]
lea eax, [r8 - 1]
lea rax, [rax + rax*2]
mov r8, qword [rdx + rax*8]
inc r8
cmp rcx, r8
jl 0x140204ab7
cmp rcx, qword [rsi + 8]
cmovg rcx, qword [rsi + 8]
mov r8, rcx
mov qword [rdx + r9*8], r8
movups xmm0, xmmword [rdx + r9*8]
movups xmmword [rsp + 0x48], xmm0
movsd xmm1, qword [rdx + r9*8 + 0x10]
movsd qword [rsp + 0x58], xmm1
mov r8, qword [rsi + 0x38]
mov ecx, dword [rsi + 0x1c]
mov dword [rsp + 0x30], ecx
test r8, r8
je 0x140204b32
mov rax, qword [rsp + 0x48]
xorps xmm2, xmm2
sub rax, qword [rsi + 0x30]
xorps xmm1, xmm1
cvtsi2sd xmm1, r8
cvtsi2sd xmm2, rax
mov eax, dword [rsi + 0x24]
sub eax, ecx
movd xmm0, eax
mov rax, r8
cqo
cvtdq2pd xmm0, xmm0
sub rax, rdx
sar rax, 1
mulsd xmm2, xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, rax
addsd xmm2, xmm0
divsd xmm2, xmm1
cvttsd2si rax, xmm2
add eax, ecx
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x34]
add eax, 0x12
test byte [r14 + 0x38], 5
mov dword [rsp + 0x34], eax
je 0x140204b4b
add eax, 8
mov dword [rsp + 0x34], eax
mov rcx, qword [rsi + 0x50]
lea rax, [rbp - 0x80]
mov qword [rsp + 0x60], rax
lea r9, [rsp + 0x60]
lea rax, [rsp + 0x48]
mov qword [rsp + 0x68], 0x100
mov qword [rsp + 0x70], rax
xor r8d, r8d
mov rcx, qword [rcx + 8]
mov edx, 0x615
call qword [sym.imp.USER32.dll_SendMessageW]
movups xmm0, xmmword [rsi + 0x1c]
mov rdx, qword [rsp + 0x30]
lea r9, [rsp + 0x60]
mov rcx, qword [rsi + 0x50]
lea r8, [rbp - 0x80]
movaps xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x20], r15
call fcn.1401fec20
mov rcx, qword [rsi + 0x50]
lea rdx, [rsi + 0x1c]
xor r8d, r8d
mov rcx, qword [rcx]
call qword [sym.imp.USER32.dll_InvalidateRect]
mov eax, 1
jmp 0x140204bc4
xor eax, eax
mov r12, qword [rsp + 0x2d8]
mov r13, qword [rsp + 0x290]
mov rcx, qword [rbp + 0x180]
xor rcx, rsp
call fcn.14039bbb0
add rsp, 0x298
pop r15
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret