Function at 0x18007d390
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x50]
sub rsp, 0x150
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
movaps xmmword [rax - 0x78], xmm9
movaps xmmword [rax - 0x88], xmm10
movaps xmmword [rax - 0x98], xmm11
movaps xmmword [rax - 0xa8], xmm12
movaps xmmword [rax - 0xb8], xmm13
mov rax, qword [0x1800e8400]
xor rax, rsp
mov qword [rbp - 0x40], rax
mov r13, rdx
mov qword [rsp + 0x60], rdx
mov rsi, rcx
xor r12d, r12d
mov edi, r12d
mov dword [rsp + 0x50], r12d
cmp byte [rcx + 0x4c], r12b
je 0x18007de64
mov rcx, qword [0x1800ea250]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe8]
call rdx
mov r15, rax
test rax, rax
je 0x18007de64
mov r14, qword [0x1800ea250]
mov qword [rsp + 0x70], r14
test r14, r14
je 0x18007de64
mov rcx, qword [r14]
mov rdx, qword [rcx + 0xe0]
mov rcx, r14
call rdx
test rax, rax
je 0x18007de64
mov rcx, qword [0x1800ea250]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe8]
call rdx
mov rcx, qword [rax + 0x760]
test rcx, rcx
je 0x18007de64
cmp qword [rcx + 0xc0], rdi
je 0x18007de64
mov dword [rsp + 0x54], 0x57
lea rdx, [rsp + 0x54]
call fcn.18001fe70
cmp byte [rax], dil
jne 0x18007d4e6
mov dword [rsp + 0x58], 0x41
lea rdx, [rsp + 0x58]
call fcn.18001fe70
cmp byte [rax], dil
jne 0x18007d4e6
mov dword [rsp + 0x5c], 0x53
lea rdx, [rsp + 0x5c]
call fcn.18001fe70
cmp byte [rax], dil
jne 0x18007d4e6
mov dword [rsp + 0x50], 0x44
lea rdx, [rsp + 0x50]
call fcn.18001fe70
cmp byte [rax], dil
je 0x18007d4f3
cmp byte [0x1800ea238], dil
jne 0x18007d4f3
mov al, 1
jmp 0x18007d4f5
xor al, al
mov ebx, r12d
movzx eax, al
cmp dword [rsi + 0xe4], 2
cmovne ebx, eax
mov rax, qword [r15 + 0x290]
movss xmm6, dword [rax + 0x1c]
movss xmm12, dword [rax + 0x18]
movss xmm13, dword [rax + 0x20]
movaps xmm2, xmm12
mulss xmm2, xmm12
movaps xmm0, xmm6
mulss xmm0, xmm6
addss xmm2, xmm0
movaps xmm1, xmm13
mulss xmm1, xmm13
addss xmm2, xmm1
xorps xmm0, xmm0
ucomiss xmm0, xmm2
ja 0x18007d54f
xorps xmm0, xmm0
sqrtss xmm0, xmm2
jmp 0x18007d557
movaps xmm0, xmm2
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrtf
xorps xmm7, xmm7
ucomiss xmm0, xmm7
jp 0x18007d56e
jne 0x18007d56e
xorps xmm12, xmm12
xorps xmm6, xmm6
xorps xmm13, xmm13
jmp 0x18007d57c
divss xmm13, xmm0
divss xmm6, xmm0
divss xmm12, xmm0
mov rcx, r15
call fcn.180082d50
movss xmm8, dword [0x1800d3f7c]
test al, al
jne 0x18007d5e6
mov rax, qword [r15 + 0x290]
test rax, rax
je 0x18007d5b7
movsd xmm0, qword [rax]
mov eax, dword [rax + 8]
mov dword [rsp + 0x38], eax
movaps xmm1, xmm0
shufps xmm1, xmm1, 0x55
movsd qword [rsp + 0x30], xmm0
jmp 0x18007d5c0
xorps xmm1, xmm1
movss dword [rsp + 0x34], xmm1
movss xmm0, dword [rsi + 0x94]
addss xmm0, xmm8
comiss xmm0, xmm1
ja 0x18007d5e6
test bl, bl
jne 0x18007d62a
mov ecx, 0x20
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18007d62a
mov rax, qword [r15 + 0x290]
test rax, rax
je 0x18007d60c
movsd xmm0, qword [rax]
mov eax, dword [rax + 8]
mov dword [rsp + 0x38], eax
movaps xmm1, xmm0
shufps xmm1, xmm1, 0x55
movsd qword [rsp + 0x30], xmm0
jmp 0x18007d615
xorps xmm1, xmm1
movss dword [rsp + 0x34], xmm1
movaps xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
subss xmm0, xmm8
movss dword [rsi + 0x94], xmm0
mov edx, dword [rsi + 0xe4]
sub edx, 1
je 0x18007d63e
cmp edx, 1
jne 0x18007d8b3
test bl, bl
jne 0x18007d86d
mov ecx, 0x20
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18007d86d
cvtps2pd xmm0, xmm6
comisd xmm0, xmmword [0x1800d4208]
jbe 0x18007d86d
call fcn.18007eef0
test al, al
je 0x18007d86d
mov rcx, qword [0x1800ea250]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe8]
call rdx
mov rcx, qword [rax + 0x760]
mov r13, qword [rcx + 0xc0]
mov r14d, r12d
movsd xmm6, qword [0x1800d3ff0]
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [r13]
mov r8, qword [rax + 0x38]
mov edx, r14d
mov rcx, r13
call r8
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18007d854
mov rcx, qword [rcx]
test rcx, rcx
je 0x18007d854
cmp qword [rax + 0x18], r12
je 0x18007d75c
mov eax, dword [rcx + 0xa2]
sub eax, 0xd9bc
cmp eax, 4
jbe 0x18007d75c
lea rdx, [rcx + 0xc8]
lea rcx, [rbp - 0x80]
test rdx, rdx
je 0x18007d707
call fcn.18001edf0
jmp 0x18007d725
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
mov qword [rbp - 0x70], r12
mov qword [rbp - 0x68], r12
xor r8d, r8d
lea rdx, [0x1800aeed5]
call fcn.18001f390
or edi, 3
lea rcx, [rbp - 0x80]
cmp qword [rbp - 0x68], 0xf
cmova rcx, qword [rbp - 0x80]
mov qword [rsp + 0x20], 3
lea r9, [0x1800d2d24]
xor r8d, r8d
mov rdx, qword [rbp - 0x70]
call fcn.180002470
cmp rax, 0xffffffffffffffff
jne 0x18007d75c
mov bl, 1
jmp 0x18007d75e
xor bl, bl
test dil, 1
je 0x18007d770
and edi, 0xfffffffe
lea rcx, [rbp - 0x80]
call fcn.18001f4d0
test bl, bl
je 0x18007d854
cmp dword [rsi + 0xe4], 2
jne 0x18007d82e
mov dword [rsp + 0x50], 0x57
lea rdx, [rsp + 0x50]
call fcn.18001fe70
cmp byte [rax], r12b
jne 0x18007d7e1
mov dword [rsp + 0x5c], 0x41
lea rdx, [rsp + 0x5c]
call fcn.18001fe70
cmp byte [rax], r12b
jne 0x18007d7e1
mov dword [rsp + 0x58], 0x53
lea rdx, [rsp + 0x58]
call fcn.18001fe70
cmp byte [rax], r12b
jne 0x18007d7e1
mov dword [rsp + 0x54], 0x44
lea rdx, [rsp + 0x54]
call fcn.18001fe70
cmp byte [rax], r12b
je 0x18007d82e
cmp byte [0x1800ea238], r12b
jne 0x18007d82e
movss xmm1, dword [rsi + 0xe0]
lea rcx, [rsp + 0x40]
call fcn.18001fb40
movss xmm0, dword [rax]
mov rax, qword [r15 + 0x290]
movss dword [rax + 0x18], xmm0
movss xmm1, dword [rsi + 0xe0]
lea rcx, [rbp - 0x60]
call fcn.18001fb40
movss xmm0, dword [rax + 8]
mov rax, qword [r15 + 0x290]
movss dword [rax + 0x20], xmm0
movss xmm0, dword [rsi + 0xdc]
cvtps2pd xmm0, xmm0
subsd xmm0, xmm6
cvtpd2ps xmm1, xmm0
mov rax, qword [r15 + 0x290]
movss dword [rax + 0x1c], xmm1
mov byte [rsi + 0xc8], 1
inc r14d
cmp r14d, 0x24
jl 0x18007d6b0
mov r14, qword [rsp + 0x70]
mov r13, qword [rsp + 0x60]
jmp 0x18007d8b3
mov rcx, r15
call fcn.180082d50
test al, al
jne 0x18007d8b3
cmp byte [rsi + 0xc8], dil
je 0x18007d8b3
movss xmm0, dword [rsi + 0xdc]
cvtps2pd xmm0, xmm0
subsd xmm0, qword [str.333333]
xorps xmm0, xmmword [0x1800d4690]
cvtsd2ss xmm0, xmm0
mov rax, qword [r15 + 0x290]
movss dword [rax + 0x1c], xmm0
mov byte [rsi + 0xc8], dil
movss xmm8, dword [0x1800d3fc8]
cmp dword [rsi + 0xe8], 1
jne 0x18007d996
xorps xmm0, xmm0
movups xmmword [rbp - 0x50], xmm0
mov edx, 0x24
lea rcx, [rbp - 0x50]
call fcn.180021650
nop
mov rdx, qword [rbp - 0x50]
cmp byte [rsi + 0x114], 0
je 0x18007d904
movsd xmm0, qword [rsi + 0x98]
movsd qword [rdx + 0x30], xmm0
mov eax, dword [rsi + 0xa0]
mov dword [rdx + 0x38], eax
jmp 0x18007d942
movss xmm2, dword [rsi + 0xa0]
addss xmm2, xmm7
movss xmm1, dword [rsi + 0x9c]
subss xmm1, xmm8
movss xmm0, dword [rsi + 0x98]
addss xmm0, xmm7
movss dword [rsp + 0x48], xmm2
unpcklps xmm0, xmm1
movsd qword [rsp + 0x40], xmm0
movsd qword [rdx + 0x30], xmm0
movss dword [rdx + 0x38], xmm2
mov dword [rdx + 0x48], 1
mov rax, qword [0x1800ea250]
mov rcx, qword [rax + 0xf0]
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rbx, qword [rbp - 0x48]
test rbx, rbx
je 0x18007d996
mov eax, 0xffffffff
lock xadd dword [rbx + 8], eax
cmp eax, 1
jne 0x18007d996
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, 0xffffffff
lock xadd dword [rbx + 0xc], eax
cmp eax, 1
jne 0x18007d996
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov rax, qword [r14 + 0xd0]
mov rcx, qword [rax + 0xe0]
mov dword [rcx], r12d
mov rcx, qword [r15 + 0x290]
movss xmm1, dword [rsi + 0x94]
subss xmm1, xmm8
test rcx, rcx
je 0x18007d9de
movsd xmm0, qword [rcx]
movsd qword [rsp + 0x40], xmm0
mov eax, dword [rcx + 8]
mov dword [rsp + 0x48], eax
movsd qword [rsp + 0x40], xmm0
movss xmm2, dword [rcx + 8]
jmp 0x18007d9e4
movaps xmm2, xmm7
movaps xmm0, xmm7
unpcklps xmm0, xmm1
movsd qword [rsi + 0x98], xmm0
movss dword [rsi + 0xa0], xmm2
movss xmm9, dword [rsi + 0xd8]
mov rax, qword [r15 + 0x290]
movaps xmm10, xmm9
mulss xmm10, dword [rax + 0x18]
addss xmm10, dword [rsi + 0x98]
movss dword [rsi + 0x98], xmm10
mov rax, qword [r15 + 0x290]
mulss xmm9, dword [rax + 0x20]
addss xmm9, dword [rsi + 0xa0]
movss dword [rsi + 0xa0], xmm9
cmp byte [rsi + 0x10c], 0
je 0x18007da52
mov byte [0x1800eba68], 1
mov eax, dword [rsi + 0xd4]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [rsi + 0x110]
jbe 0x18007de49
mov ecx, dword [rsi + 0xe8]
test ecx, ecx
je 0x18007dd92
sub ecx, 1
je 0x18007dc19
cmp ecx, 1
jne 0x18007de4d
mov rcx, qword [0x1800ea250]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
cmp byte [rsi + 0x114], 0
jne 0x18007db41
movsd xmm6, qword [rsi + 0x98]
mov ebx, dword [rsi + 0xa0]
call rdx
mov rdi, rax
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov dword [rsp + 0x30], ecx
movaps xmm0, xmm6
shufps xmm0, xmm0, 0x55
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov dword [rsp + 0x34], ecx
movd xmm0, ebx
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov rax, qword [rdi]
mov r10, qword [rax + 0x10]
movsd xmm0, qword [rsp + 0x30]
movsd qword [rsp + 0x30], xmm0
mov dword [rsp + 0x38], ecx
lea rdx, [rsp + 0x30]
mov rcx, rdi
call r10
mov rcx, qword [rax + 0x30]
mov rax, qword [rcx + 0x128]
cmp dword [rax], 0
jne 0x18007dc04
movsd xmm0, qword [rsi + 0x98]
mov eax, dword [rsi + 0xa0]
mov dword [rsp + 0x38], eax
mov r9d, 0xffffffff
jmp 0x18007dbee
movss xmm6, dword [rsi + 0x9c]
call rdx
mov rbx, rax
addss xmm10, xmm7
movaps xmm0, xmm10
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov dword [rsp + 0x30], ecx
subss xmm6, xmm8
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov dword [rsp + 0x34], ecx
addss xmm9, xmm7
movaps xmm0, xmm9
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov rax, qword [rbx]
mov r8, qword [rax + 0x10]
movsd xmm0, qword [rsp + 0x30]
movsd qword [rsp + 0x30], xmm0
mov dword [rsp + 0x38], ecx
lea rdx, [rsp + 0x30]
mov rcx, rbx
call r8
mov rcx, qword [rax + 0x30]
mov rax, qword [rcx + 0x128]
cmp dword [rax], 0
jne 0x18007dc04
movss xmm0, dword [rsi + 0x98]
addss xmm0, xmm7
movss xmm1, dword [rsi + 0x9c]
subss xmm1, xmm8
movss xmm2, dword [rsi + 0xa0]
addss xmm2, xmm7
unpcklps xmm0, xmm1
movss dword [rsp + 0x38], xmm2
xor r9d, r9d
movsd qword [rsp + 0x30], xmm0
mov r8, r13
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.18007d0c0
cmp byte [rsi + 0x114], 0
sete al
mov byte [rsi + 0x114], al
jmp 0x18007de4d
movsd xmm9, qword [rsi + 0x98]
movsd qword [rsp + 0x60], xmm9
mov r14d, dword [rsi + 0xa0]
mov edi, 0xffffffff
movss xmm0, dword [rsi + 0x118]
comiss xmm0, dword [0x1800d4200]
jbe 0x18007de4d
movaps xmm10, xmm12
movss xmm0, dword [0x1800d4680]
andps xmm10, xmm0
movaps xmm11, xmm13
andps xmm11, xmm0
movss xmm0, dword [rsp + 0x64]
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si eax, xmm0
mov dword [rsp + 0x34], eax
movd xmm6, r14d
movss xmm8, dword [rsp + 0x60]
comiss xmm10, xmm11
jbe 0x18007dcc3
comiss xmm12, xmm7
jbe 0x18007dc94
mov eax, 1
jmp 0x18007dca0
mov eax, r12d
comiss xmm7, xmm12
setbe al
dec eax
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm8, xmm0
movsd xmm2, qword [rsp + 0x60]
movss xmm2, xmm8
movsd qword [rsp + 0x60], xmm2
movaps xmm9, xmm2
jmp 0x18007dcec
comiss xmm13, xmm7
jbe 0x18007dcd0
mov eax, 1
jmp 0x18007dcdc
mov eax, r12d
comiss xmm7, xmm13
setbe al
dec eax
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm6, xmm0
movd r14d, xmm6
mov rcx, qword [0x1800ea250]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rbx, rax
movaps xmm0, xmm8
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov dword [rsp + 0x30], ecx
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si edx, xmm0
mov rcx, qword [rbx]
mov r8, qword [rcx + 0x10]
movsd xmm0, qword [rsp + 0x30]
movsd qword [rsp + 0x70], xmm0
mov dword [rsp + 0x78], edx
lea rdx, [rsp + 0x70]
mov rcx, rbx
call r8
mov rcx, qword [rax + 0x30]
mov rax, qword [rcx + 0x128]
cmp dword [rax], 0
jne 0x18007dd73
movsd qword [rsp + 0x40], xmm9
mov dword [rsp + 0x48], r14d
mov r9d, 0xffffffff
mov r8, r13
lea rdx, [rsp + 0x40]
mov rcx, rsi
call fcn.18007d0c0
inc edi
movd xmm1, edi
cvtdq2ps xmm1, xmm1
movss xmm0, dword [rsi + 0x118]
comiss xmm0, xmm1
ja 0x18007dc81
jmp 0x18007de4d
movsd xmm6, qword [rsi + 0x98]
mov ebx, dword [rsi + 0xa0]
mov rcx, qword [0x1800ea250]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rdi, rax
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov dword [rsp + 0x40], ecx
movaps xmm0, xmm6
shufps xmm0, xmm0, 0x55
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov dword [rsp + 0x44], ecx
movd xmm0, ebx
call sub.api_ms_win_crt_math_l1_1_0.dll_floorf
cvttss2si ecx, xmm0
mov rax, qword [rdi]
mov r8, qword [rax + 0x10]
movsd xmm0, qword [rsp + 0x40]
movsd qword [rsp + 0x40], xmm0
mov dword [rsp + 0x48], ecx
lea rdx, [rsp + 0x40]
mov rcx, rdi
call r8
mov rcx, qword [rax + 0x30]
mov rax, qword [rcx + 0x128]
cmp dword [rax], 0
jne 0x18007de4d
movsd xmm0, qword [rsi + 0x98]
movsd qword [rsp + 0x40], xmm0
mov eax, dword [rsi + 0xa0]
mov dword [rsp + 0x48], eax
mov r9d, 0xffffffff
mov r8, r13
lea rdx, [rsp + 0x40]
mov rcx, rsi
call fcn.18007d0c0
jmp 0x18007de4d
lea r12d, [rax + 1]
mov dword [rsi + 0xd4], r12d
cmp byte [rsi + 0x10c], 0
je 0x18007de64
mov byte [0x1800eba68], 0
mov rcx, qword [rbp - 0x40]
xor rcx, rsp
call fcn.1800a3dc0
lea r11, [rsp + 0x150]
mov rbx, qword [r11 + 0x50]
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]
movaps xmm11, xmmword [r11 - 0x60]
movaps xmm12, xmmword [r11 - 0x70]
movaps xmm13, xmmword [r11 - 0x80]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret