Function at 0x180002980
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], rbx
push rsi
push rdi
push r14
sub rsp, 0x100
mov rbx, qword [rsp + 0x140]
mov rsi, rcx
movaps xmmword [rax - 0x28], xmm6
lea rcx, [rsp + 0x40]
movaps xmmword [rax - 0x38], xmm7
movaps xmm7, xmm1
movaps xmmword [rax - 0x48], xmm8
movaps xmm8, xmm3
movaps xmmword [rax - 0x68], xmm10
lea r14, [rbx + 0x50]
movaps xmmword [rax - 0x78], xmm11
mov rdx, r14
movaps xmmword [rsp + 0x70], xmm14
movaps xmm10, xmm2
movaps xmmword [rsp + 0x60], xmm15
movaps xmmword [rax - 0x58], xmm9
movaps xmmword [rax - 0x88], xmm12
movaps xmmword [rax - 0x98], xmm13
call fcn.180001b60
mov rdx, rax
mov rcx, rbx
call fcn.180004b00
movss xmm14, dword [0x18000f90c]
xor edi, edi
mov rcx, qword [rsi]
movaps xmm3, xmm8
movss xmm11, dword [0x18000f8f4]
movaps xmm2, xmm10
movd xmm0, eax
movaps xmm1, xmm7
mov eax, dword [0x180012010]
mov rdx, qword [rcx]
cvtdq2ps xmm0, xmm0
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x28], eax
movaps xmm6, xmm0
mulss xmm0, xmm11
mulss xmm6, xmm14
addss xmm6, xmm14
addss xmm6, xmm0
movss dword [rsp + 0x20], xmm6
call qword [rdx + 0x50]
mov eax, dword [0x180012014]
movaps xmm3, xmm8
mov dword [rsp + 0x28], eax
movaps xmm2, xmm10
movaps xmm1, xmm7
movss dword [rsp + 0x20], xmm6
mov rcx, rsi
call fcn.18000bef0
movaps xmm3, xmm8
mov byte [rsp + 0x28], dil
movaps xmm2, xmm10
movss dword [rsp + 0x20], xmm6
movaps xmm1, xmm7
mov rcx, rsi
call fcn.180003300
cmp qword [rbx + 0x18], 7
mov rax, rbx
jbe 0x180002aa3
mov rax, qword [rbx]
movss xmm15, dword [0x18000f8fc]
movaps xmm9, xmm10
movss xmm13, dword [0x18000f908]
addss xmm9, xmm15
mov rcx, qword [rsi]
movaps xmm1, xmm7
mov qword [rsp + 0x30], rax
addss xmm1, xmm15
movaps xmm3, xmm13
mov qword [rsp + 0x28], rdi
movd r9d, xmm3
movaps xmm12, xmm9
mov qword [rsp + 0x128], r15
subss xmm12, dword [0x18000f8f8]
movd edx, xmm1
mov dword [rsp + 0x20], 0xffbfbfbf
movaps xmm2, xmm12
movd r8d, xmm2
call fcn.180003460
mov ecx, dword [rbx + 0x20]
sub ecx, 1
je 0x1800030c3
sub ecx, 2
je 0x180002f0e
sub ecx, 1
je 0x180002d1a
cmp ecx, 2
jne 0x18000320e
movzx ecx, byte [rbx + 0x4a]
lea r15, [rbx + 0x28]
test cl, cl
je 0x180002b46
mov rax, qword [rbx + 0x30]
mov edx, dword [rax]
jmp 0x180002b49
mov edx, dword [r15]
mov r8, qword [rbx + 0x40]
cmp dword [r8], edx
jle 0x180002b64
test cl, cl
je 0x180002b5c
mov rax, qword [rbx + 0x30]
jmp 0x180002b5f
mov rax, r15
mov eax, dword [rax]
mov dword [r8], eax
mov rax, qword [rbx + 0x40]
mov ecx, dword [rbx + 0x24]
cmp dword [rax], ecx
jge 0x180002b71
mov dword [rax], ecx
mov rcx, qword [rbx + 0x40]
mov eax, dword [rbx + 0x24]
movss xmm9, dword [0x18000f8e8]
movss xmm11, dword [0x18000f8e0]
cmp dword [rcx], eax
jle 0x180002bda
movaps xmm1, xmm7
movaps xmm0, xmm6
addss xmm1, xmm8
movaps xmm2, xmm10
subss xmm0, xmm9
movaps xmm3, xmm14
addss xmm2, xmm11
mov rcx, rsi
subss xmm1, dword [0x18000f940]
movss dword [rsp + 0x20], xmm0
call fcn.18000c790
test al, al
je 0x180002bda
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x180002bda
mov rax, qword [rbx + 0x40]
dec dword [rax]
cmp byte [rbx + 0x4a], dil
je 0x180002be4
mov r15, qword [rbx + 0x30]
mov rcx, qword [rbx + 0x40]
mov eax, dword [r15]
cmp dword [rcx], eax
jge 0x180002c38
movaps xmm1, xmm7
subss xmm6, xmm9
addss xmm1, xmm8
movaps xmm2, xmm10
addss xmm2, xmm11
movaps xmm3, xmm14
mov rcx, rsi
movss dword [rsp + 0x20], xmm6
subss xmm1, dword [0x18000f918]
call fcn.18000c790
test al, al
je 0x180002c38
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x180002c38
mov rax, qword [rbx + 0x40]
inc dword [rax]
mov rcx, qword [rsi]
lea rax, [0x18000e358]
movaps xmm6, xmm7
mov qword [rsp + 0x30], rax
addss xmm6, xmm8
mov dword [rsp + 0x28], 2
movaps xmm3, xmm13
mov dword [rsp + 0x20], 0xffbfbfbf
movaps xmm2, xmm12
movd r9d, xmm3
movd r8d, xmm2
movaps xmm1, xmm6
subss xmm1, dword [0x18000f93c]
movd edx, xmm1
call fcn.180003460
subss xmm6, dword [0x18000f91c]
mov rcx, qword [rsi]
lea rax, [0x18000e360]
mov qword [rsp + 0x30], rax
movaps xmm3, xmm13
movaps xmm2, xmm12
movd r9d, xmm3
movd r8d, xmm2
movaps xmm1, xmm6
mov qword [rsp + 0x28], rdi
movd edx, xmm1
mov dword [rsp + 0x20], 0xffbfbfbf
call fcn.180003460
mov rax, qword [rbx + 0x40]
movaps xmm3, xmm13
subss xmm6, dword [0x18000f924]
mov rcx, qword [rsi]
movaps xmm2, xmm12
mov qword [rsp + 0x38], rax
lea rax, [0x18000e368]
mov qword [rsp + 0x30], rax
movd r9d, xmm3
movaps xmm1, xmm6
movd r8d, xmm2
movd edx, xmm1
mov dword [rsp + 0x28], 0xc
mov dword [rsp + 0x20], 0xffbfbfbf
call fcn.180003460
jmp 0x180003205
addss xmm7, dword [0x18000f928]
addss xmm8, dword [0x18000f960]
lea rcx, [rsp + 0x140]
mov qword [rsp + 0x120], rbp
call qword [sym.imp.USER32.dll_GetCursorPos]
call qword [sym.imp.USER32.dll_GetForegroundWindow]
mov rcx, rax
lea rdx, [rsp + 0x140]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rcx, qword [rsi]
movaps xmm3, xmm8
mov dword [rsp + 0x30], edi
movaps xmm2, xmm10
mov dword [rsp + 0x28], 0xff10232e
movaps xmm1, xmm7
movss dword [rsp + 0x20], xmm6
mov rax, qword [rcx]
call qword [rax + 0x50]
mov rax, qword [rbx + 0x40]
mov ecx, dword [rbx + 0x28]
cmp dword [rax], ecx
jle 0x180002d8b
mov dword [rax], ecx
mov rax, qword [rbx + 0x40]
mov ecx, dword [rbx + 0x24]
cmp dword [rax], ecx
jge 0x180002d98
mov dword [rax], ecx
mov rax, qword [rbx + 0x40]
movd xmm2, dword [rsp + 0x140]
cvtdq2ps xmm2, xmm2
mov ecx, dword [rax]
sub ecx, dword [rbx + 0x24]
mov eax, dword [rbx + 0x28]
sub eax, dword [rbx + 0x24]
comiss xmm2, xmm7
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm1, xmm8
divss xmm1, xmm0
cvttss2si ebp, xmm1
jb 0x180002e48
movaps xmm0, xmm7
addss xmm0, xmm8
comiss xmm0, xmm2
jb 0x180002e48
movd xmm1, dword [rsp + 0x144]
cvtdq2ps xmm1, xmm1
comiss xmm1, xmm10
jb 0x180002e48
movaps xmm0, xmm10
addss xmm0, xmm14
comiss xmm0, xmm1
jb 0x180002e48
mov ecx, 1
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x180002e48
mov eax, dword [rbx + 0x28]
sub eax, dword [rbx + 0x24]
movd xmm0, dword [rsp + 0x140]
cvtdq2ps xmm0, xmm0
movd xmm1, eax
mov rax, qword [rbx + 0x40]
subss xmm0, xmm7
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
divss xmm1, xmm8
addss xmm1, dword [0x18000f8e0]
cvttss2si ecx, xmm1
mov dword [rax], ecx
mov rcx, qword [rsi]
movaps xmm2, xmm10
movss xmm6, dword [0x18000f910]
movaps xmm1, xmm7
movd xmm3, ebp
mov dword [rsp + 0x30], edi
mov rax, qword [rcx]
cvtdq2ps xmm3, xmm3
mov dword [rsp + 0x28], 0xff20bfd4
movss dword [rsp + 0x20], xmm6
call qword [rax + 0x50]
mov eax, dword [0x180012014]
movaps xmm3, xmm8
mov dword [rsp + 0x28], eax
movaps xmm2, xmm10
movaps xmm1, xmm7
movss dword [rsp + 0x20], xmm6
mov rcx, rsi
call fcn.18000bef0
mov rax, qword [rbx + 0x40]
movaps xmm1, xmm8
mulss xmm1, dword [0x18000f8dc]
movaps xmm3, xmm13
mov rcx, qword [rsi]
movaps xmm2, xmm9
movd r9d, xmm3
mov eax, dword [rax]
mov dword [rsp + 0x38], eax
addss xmm1, xmm7
lea rax, [0x18000e368]
movd r8d, xmm2
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0xc
mov dword [rsp + 0x20], 0xffbfbfbf
movd edx, xmm1
call fcn.180003460
addss xmm7, dword [0x18000f95c]
addss xmm8, dword [0x18000f930]
mov rbp, qword [rsp + 0x120]
jmp 0x18000320e
mov rax, qword [rbx + 0x40]
movss xmm11, dword [0x18000f8e8]
movss xmm12, dword [0x18000f8e0]
cmp dword [rax], edi
jle 0x180002f74
movaps xmm1, xmm7
movaps xmm0, xmm6
addss xmm1, xmm8
movaps xmm2, xmm10
subss xmm0, xmm11
movaps xmm3, xmm14
addss xmm2, xmm12
mov rcx, rsi
subss xmm1, dword [0x18000f940]
movss dword [rsp + 0x20], xmm0
call fcn.18000c790
test al, al
je 0x180002f74
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x180002f74
mov rax, qword [rbx + 0x40]
dec dword [rax]
mov rdx, qword [rbx + 0x70]
sub rdx, qword [rbx + 0x68]
mov rax, qword [rbx + 0x40]
sar rdx, 5
dec rdx
movsxd rcx, dword [rax]
cmp rcx, rdx
jae 0x180002fd8
movaps xmm1, xmm7
subss xmm6, xmm11
addss xmm1, xmm8
movaps xmm2, xmm10
addss xmm2, xmm12
movaps xmm3, xmm14
mov rcx, rsi
movss dword [rsp + 0x20], xmm6
subss xmm1, dword [0x18000f918]
call fcn.18000c790
test al, al
je 0x180002fd8
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x180002fd8
mov rax, qword [rbx + 0x40]
inc dword [rax]
mov rcx, qword [rsi]
lea rax, [0x18000e358]
movaps xmm6, xmm7
mov qword [rsp + 0x30], rax
addss xmm6, xmm8
mov dword [rsp + 0x28], 2
movaps xmm3, xmm13
mov dword [rsp + 0x20], 0xffbfbfbf
movaps xmm2, xmm9
movd r9d, xmm3
movd r8d, xmm2
movaps xmm1, xmm6
subss xmm1, dword [0x18000f93c]
movd edx, xmm1
call fcn.180003460
subss xmm6, dword [0x18000f91c]
mov rcx, qword [rsi]
lea rax, [0x18000e360]
mov qword [rsp + 0x30], rax
movaps xmm3, xmm13
movaps xmm2, xmm9
movd r9d, xmm3
movd r8d, xmm2
movaps xmm1, xmm6
mov qword [rsp + 0x28], rdi
movd edx, xmm1
mov dword [rsp + 0x20], 0xffbfbfbf
call fcn.180003460
mov rax, qword [rbx + 0x40]
movsxd rdx, dword [rax]
shl rdx, 5
add rdx, qword [rbx + 0x68]
cmp qword [rdx + 0x18], 7
jbe 0x180003080
mov rdx, qword [rdx]
subss xmm6, dword [0x18000f924]
mov rcx, qword [rsi]
movaps xmm3, xmm13
mov qword [rsp + 0x30], rdx
movaps xmm2, xmm9
movd r9d, xmm3
movd r8d, xmm2
movaps xmm1, xmm6
mov dword [rsp + 0x28], 0xc
movd edx, xmm1
mov dword [rsp + 0x20], 0xffbfbfbf
call fcn.180003460
jmp 0x180003205
movss xmm13, dword [0x18000f934]
movaps xmm9, xmm7
mov eax, dword [0x180012014]
addss xmm9, xmm8
movss xmm12, dword [0x18000f904]
movaps xmm6, xmm10
addss xmm6, dword [0x18000f8e8]
mov dword [rsp + 0x28], eax
movaps xmm3, xmm13
mov rcx, rsi
movss dword [rsp + 0x20], xmm12
subss xmm9, xmm13
movaps xmm11, xmm6
addss xmm11, dword [0x18000f8e8]
subss xmm9, xmm15
movaps xmm2, xmm11
movaps xmm1, xmm9
call fcn.18000bef0
mov r15, qword [rbx + 0x40]
movaps xmm3, xmm13
movaps xmm2, xmm6
movss dword [rsp + 0x20], xmm12
movaps xmm1, xmm9
mov rcx, rsi
call fcn.18000c790
test al, al
je 0x180003162
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x180003162
mov eax, edi
cmp dword [r15], eax
sete al
mov dword [r15], eax
mov rcx, qword [rsi]
movaps xmm3, xmm13
mov dword [rsp + 0x30], edi
movaps xmm2, xmm11
mov dword [rsp + 0x28], 0xff10232e
movaps xmm1, xmm9
movss dword [rsp + 0x20], xmm12
mov rax, qword [rcx]
call qword [rax + 0x50]
mov ecx, dword [r15]
test ecx, ecx
je 0x1800031b4
cmp ecx, 1
jne 0x1800031e0
movss xmm3, dword [0x18000f920]
movaps xmm1, xmm9
mov dword [rsp + 0x30], edi
addss xmm1, xmm3
mov dword [rsp + 0x28], 0xff47c3b8
jmp 0x1800031cc
movss xmm3, dword [0x18000f920]
movaps xmm1, xmm9
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x28], 0xff838b98
mov rcx, qword [rsi]
movaps xmm2, xmm11
movss dword [rsp + 0x20], xmm12
mov rax, qword [rcx]
call qword [rax + 0x50]
mov eax, dword [0x180012014]
movaps xmm3, xmm13
mov dword [rsp + 0x28], eax
movaps xmm2, xmm11
movaps xmm1, xmm9
movss dword [rsp + 0x20], xmm12
mov rcx, rsi
call fcn.18000bef0
movss xmm11, dword [0x18000f8f4]
cmp dword [rbx + 0x20], 1
movaps xmm6, xmm10
addss xmm6, dword [0x18000f914]
movaps xmm13, xmmword [rsp + 0x80]
movaps xmm12, xmmword [rsp + 0x90]
movaps xmm9, xmmword [rsp + 0xc0]
mov r15, qword [rsp + 0x128]
jne 0x18000324b
mov rax, qword [rbx + 0x40]
cmp dword [rax], edi
jle 0x1800032ab
mov rdx, qword [r14]
mov rax, qword [r14 + 8]
sub rax, rdx
sar rax, 3
test rax, rax
je 0x1800032ab
subss xmm8, xmm14
mov rbx, rdi
addss xmm7, xmm15
nop dword [rax + rax]
mov rax, qword [rbx + rdx]
movaps xmm3, xmm8
movaps xmm2, xmm6
mov qword [rsp + 0x20], rax
movaps xmm1, xmm7
mov rcx, rsi
call fcn.180002980
mov rdx, qword [r14]
addss xmm6, xmm0
mov rcx, qword [r14 + 8]
inc edi
sub rcx, rdx
movsxd rax, edi
sar rcx, 3
add rbx, 8
cmp rax, rcx
jb 0x180003270
movaps xmm14, xmmword [rsp + 0x70]
lea r11, [rsp + 0x100]
mov rbx, qword [r11 + 0x30]
subss xmm6, xmm10
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm10, xmmword [r11 - 0x50]
movaps xmm15, xmmword [rsp + 0x60]
addss xmm6, xmm11
movaps xmm11, xmmword [r11 - 0x60]
movaps xmm0, xmm6
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop r14
pop rdi
pop rsi
ret