Function at 0x180021840
Capabilities:
Create thread
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
push rdi
push r14
push r15
sub rsp, 0x110
movaps xmmword [rax - 0x28], xmm6
movaps xmmword [rax - 0x38], xmm7
movaps xmmword [rax - 0x48], xmm8
movaps xmmword [rax - 0x58], xmm9
movaps xmmword [rax - 0x68], xmm10
mov rax, qword [0x18009c3c0]
xor rax, rsp
mov qword [rsp + 0xb0], rax
mov rsi, rcx
xor ebp, ebp
lea r15d, [rbp + 1]
cmp byte [0x1800cccd4], bpl
jne 0x180021902
mov dword [0x1800ccd44], 0xff
mov ecx, r15d
call fcn.180061d18
mov qword [rsp + 0x50], rax
lea rcx, [rsp + 0x68]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], ebp
mov r9, rax
lea r8, [0x180024d20]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
mov qword [rsp + 0x60], rax
test rax, rax
je 0x18002192a
cmp dword [rsp + 0x68], ebp
je 0x180021920
movaps xmm0, xmmword [rsp + 0x60]
movdqa xmmword [rsp + 0x50], xmm0
lea rcx, [rsp + 0x50]
call qword [sym.imp.MSVCP140.dll__Thrd_detach]
test eax, eax
jne 0x180021920
xorps xmm0, xmm0
movdqa xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x60], rsi
mov rcx, rsi
call qword [sym.imp.MSVCP140.dll__Mtx_lock]
test eax, eax
je 0x18002193a
mov ecx, 5
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov ecx, r15d
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov dword [rsp + 0x68], ebp
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov eax, dword [rsi + 0x4c]
cmp eax, 0x7fffffff
jne 0x180021955
dec eax
mov dword [rsi + 0x4c], eax
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov byte [0x1800cccd4], 1
movabs rbx, 0x5f4b6931816e599b
movss xmm9, dword [0x180084798]
cmp byte [rsi + 0x50], 0
je 0x180021a44
cmp byte [rsi + 0x51], 0
je 0x180021a44
mov dword [0x1800b5ba8], ebp
mov qword [0x1800ce058], rbx
mov qword [0x1800b5c70], rbp
mov dword [0x1800b5b98], r15d
call fcn.180024d70
mov ecx, r15d
call qword [sym.imp.USER32.dll_ShowCursor]
movss xmm8, dword [rsi + 0xb0]
addss xmm8, dword [rsi + 0x80]
addss xmm8, dword [rsi + 0xf8]
movss xmm7, dword [rsi + 0x5c]
movaps xmm6, xmm7
mulss xmm6, xmm9
addss xmm6, dword [rsi + 0x54]
mulss xmm8, xmm9
movaps xmm10, xmm8
addss xmm10, dword [rsi + 0x58]
lea rcx, [rsp + 0x50]
call qword [sym.imp.USER32.dll_GetCursorPos]
movd xmm3, dword [rsp + 0x50]
cvtdq2ps xmm3, xmm3
movd xmm0, dword [rsp + 0x54]
cvtdq2ps xmm0, xmm0
mulss xmm7, xmm9
movaps xmm2, xmm6
subss xmm2, xmm7
addss xmm7, xmm6
movaps xmm1, xmm10
addss xmm1, xmm8
subss xmm10, xmm8
comiss xmm3, xmm7
ja 0x180021a44
comiss xmm2, xmm3
ja 0x180021a44
comiss xmm0, xmm1
ja 0x180021a44
comiss xmm10, xmm0
ja 0x180021a44
lea rcx, str.Kekkeke
call fcn.18001e580
mov rax, qword [0x1800b88a0]
cmp byte [rax + 0x50], 0
je 0x180021a7c
movzx eax, byte [0x1800ce269]
test al, al
je 0x180021a7c
mov dword [0x1800b5ba8], ebp
mov qword [0x1800ce058], rbx
mov qword [0x1800b5c70], rbp
mov dword [0x1800b5b98], r15d
call fcn.180024d70
mov dword [rsi + 0x150], 0
mov word [rsi + 0x154], 0
mov byte [rsi + 0x156], 0
mov ecx, 0x74
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rsi + 0x150], al
mov ecx, 8
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rsi + 0x151], al
mov ecx, 0xd
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rsi + 0x152], al
mov ecx, 0x26
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rsi + 0x153], al
mov ecx, 0x28
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rsi + 0x154], al
mov ecx, 0x25
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rsi + 0x155], al
mov ecx, 0x27
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rsi + 0x156], al
mov rcx, rsi
call fcn.180022280
mov rcx, rsi
call fcn.180023e00
cmp byte [rsi + 0x50], 0
je 0x180021ea8
mov dword [0x1800b5ba8], ebp
movabs rax, 0xfe99b66d079cf6bc
mov qword [0x1800ce058], rax
mov qword [0x1800b5c70], rbp
mov qword [rsp + 0x50], rbp
mov dword [rsp + 0x50], 0x1b
mov rax, qword [rsp + 0x50]
mov qword [0x1800b5c78], rax
mov qword [rsp + 0x50], rbp
mov dword [rsp + 0x50], r15d
mov rax, qword [rsp + 0x50]
mov qword [0x1800b5c80], rax
mov dword [0x1800b5b98], 3
call fcn.180024d70
mov eax, dword [rsi + 0x58]
mov dword [rsi + 0x158], eax
mov rcx, rsi
call fcn.1800231f0
mov r14, qword [rsi + 0x180]
cmp qword [rsi + 0x178], r14
je 0x180021e7f
mov r14, qword [r14 - 8]
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x20]
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x18]
xorps xmm0, xmm0
movups xmmword [rsp + 0x70], xmm0
movups xmmword [rsp + 0x80], xmm0
movups xmmword [rsp + 0x90], xmm0
movups xmmword [rsp + 0xa0], xmm0
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 8]
mov rdx, rax
mov r8d, 0x3f
lea rcx, [rsp + 0x70]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncpy]
lea rbx, [rsp + 0x70]
movsx ecx, byte [rbx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_toupper]
mov byte [rbx], al
inc rbx
lea rax, [rsp + 0xb0]
cmp rbx, rax
jne 0x180021c23
movss xmm0, dword [rsi + 0xb0]
movaps xmm2, xmm0
mulss xmm2, xmm9
addss xmm2, dword [rsi + 0x158]
mov eax, dword [rsi + 0xc0]
mov dword [rsp + 0x28], eax
movss dword [rsp + 0x20], xmm0
movss xmm3, dword [rsi + 0x5c]
movss xmm1, dword [rsi + 0x54]
call fcn.180024560
mov ebx, dword [rsi + 0xc4]
mov edi, dword [rsi + 0xb8]
movss xmm6, dword [rsi + 0xb4]
mov dword [0x1800b5ba8], ebp
movabs rax, 0xdb88a37483346780
mov qword [0x1800ce058], rax
mov qword [rsp + 0x50], rbp
movss dword [rsp + 0x50], xmm6
mov rax, qword [rsp + 0x50]
mov qword [0x1800b5c70], rax
mov qword [rsp + 0x50], rbp
mov dword [rsp + 0x50], edi
mov rax, qword [rsp + 0x50]
mov qword [0x1800b5c78], rax
mov dword [0x1800b5b98], 2
call fcn.180024d70
movss xmm0, dword [rax]
movss xmm3, dword [rsi + 0xb0]
mulss xmm3, xmm9
addss xmm3, dword [rsi + 0x158]
divss xmm0, dword [0x180084808]
subss xmm3, xmm0
movss xmm0, dword [rsi + 0x5c]
divss xmm0, dword [rsi + 0xbc]
movss xmm2, dword [rsi + 0x54]
subss xmm2, xmm0
mov byte [rsp + 0x40], 1
mov dword [rsp + 0x30], ebx
mov dword [rsp + 0x28], edi
movss dword [rsp + 0x20], xmm6
lea rdx, [rsp + 0x70]
call fcn.180024830
movss xmm0, dword [rsi + 0xb0]
addss xmm0, dword [rsi + 0x158]
movss dword [rsi + 0x158], xmm0
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x30]
test rax, rax
je 0x180021e7f
mov rdi, qword [rsi + 0x60]
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x30]
cmp rax, rdi
ja 0x180021d7b
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x30]
mov rdi, rax
mov rdx, qword [r14]
mov rcx, r14
call qword [rdx + 0x30]
cmp rax, qword [rsi + 0x60]
jbe 0x180021db7
mov rdx, qword [r14]
mov rcx, r14
call qword [rdx + 0x38]
cmp rax, qword [rsi + 0x60]
jb 0x180021db7
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x38]
sub r15, qword [rsi + 0x60]
lea rbp, [r15 + rax]
mov rdx, qword [r14]
mov rcx, r14
call qword [rdx + 0x38]
lea rdi, [rax + 1]
movss xmm6, dword [rsi + 0x158]
mov rbx, rbp
cmp rbp, rdi
jae 0x180021e7f
lea r15, [rdi - 1]
movss xmm1, dword [rsi + 0xc8]
nop word [rax + rax]
movaps xmm2, xmm1
mulss xmm2, xmm9
addss xmm2, xmm6
cvtps2pd xmm0, xmm2
cmp rbx, rbp
jne 0x180021dfc
movsd qword [0x1800cdd68], xmm0
cmp rbx, r15
jne 0x180021e09
movsd qword [0x1800cdd60], xmm0
mov eax, dword [rsi + 0xe4]
mov dword [rsp + 0x28], eax
movss dword [rsp + 0x20], xmm1
movss xmm3, dword [rsi + 0x5c]
movss xmm1, dword [rsi + 0x54]
call fcn.180024560
movss xmm1, dword [rsi + 0xc8]
addss xmm6, xmm1
inc rbx
cmp rbx, rdi
jb 0x180021de0
cmp rbp, rdi
jae 0x180021e7f
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x38]
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x38]
cmp rbp, rax
sete bl
mov rax, qword [r14]
mov rdx, rbp
mov rcx, r14
call qword [rax + 0x28]
mov r9, r14
movzx r8d, bl
mov rdx, rax
mov rcx, rsi
call fcn.180023760
inc rbp
cmp rbp, rdi
jb 0x180021e41
mov rax, qword [rsi + 0x180]
mov rbx, qword [rax - 8]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x20]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov rdx, rbx
mov rcx, rsi
call fcn.180024190
nop
mov rcx, rsi
call qword [sym.imp.MSVCP140.dll__Mtx_unlock]
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.180061980
lea r11, [rsp + 0x110]
mov rbx, qword [r11 + 0x28]
mov rbp, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
mov rsp, r11
pop r15
pop r14
pop rdi
ret