Function at 0x180068a40
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x40
mov rax, qword [0x18008d3f8]
mov rdi, rcx
test rax, rax
jne 0x180068a76
mov r8d, 0xb48
lea rdx, [0x18007a620]
lea rcx, [0x18007a7a0]
call qword [sym.imp.ucrtbase.dll__wassert]
mov rax, qword [0x18008d3f8]
mov ecx, dword [rax + 0x74]
mov dl, 1
call fcn.180039ac0
test al, al
je 0x180068a90
mov byte [rdi + 0x20], 0x42
mov al, 1
add rsp, 0x40
pop rdi
ret
mov rax, qword [0x18008d3f8]
movaps xmmword [rsp + 0x20], xmm6
test rax, rax
jne 0x180068ac2
mov r8d, 0xb48
lea rdx, [0x18007a620]
lea rcx, [0x18007a7a0]
call qword [sym.imp.ucrtbase.dll__wassert]
mov rax, qword [0x18008d3f8]
movss xmm0, dword [rax + 0x140]
xorps xmm6, xmm6
comiss xmm6, xmm0
jbe 0x180068ae3
movaps xmm6, xmmword [rsp + 0x20]
mov al, 1
mov byte [rdi + 0x20], 0x3f
add rsp, 0x40
pop rdi
ret
comiss xmm0, xmm6
jbe 0x180068af9
movaps xmm6, xmmword [rsp + 0x20]
mov al, 1
mov byte [rdi + 0x20], 0x40
add rsp, 0x40
pop rdi
ret
mov ecx, 0xa0
mov qword [rsp + 0x58], rbx
call qword [sym.imp.user32.dll_GetKeyState]
bt ax, 0xf
jae 0x180068b26
mov rbx, qword [rsp + 0x58]
mov al, 1
movaps xmm6, xmmword [rsp + 0x20]
mov byte [rdi + 0x20], 0x37
add rsp, 0x40
pop rdi
ret
mov ecx, 0xa4
call qword [sym.imp.user32.dll_GetKeyState]
bt ax, 0xf
jae 0x180068b4e
mov rbx, qword [rsp + 0x58]
mov al, 1
movaps xmm6, xmmword [rsp + 0x20]
mov byte [rdi + 0x20], 0x34
add rsp, 0x40
pop rdi
ret
mov ecx, 0xa2
call qword [sym.imp.user32.dll_GetKeyState]
bt ax, 0xf
jae 0x180068b76
mov rbx, qword [rsp + 0x58]
mov al, 1
movaps xmm6, xmmword [rsp + 0x20]
mov byte [rdi + 0x20], 0x35
add rsp, 0x40
pop rdi
ret
mov ecx, 3
call qword [sym.imp.user32.dll_GetKeyState]
bt ax, 0xf
jae 0x180068b9e
mov rbx, qword [rsp + 0x58]
mov al, 1
movaps xmm6, xmmword [rsp + 0x20]
mov byte [rdi + 0x20], 0x3c
add rsp, 0x40
pop rdi
ret
mov ecx, 4
call qword [sym.imp.user32.dll_GetKeyState]
bt ax, 0xf
jae 0x180068bc6
mov rbx, qword [rsp + 0x58]
mov al, 1
movaps xmm6, xmmword [rsp + 0x20]
mov byte [rdi + 0x20], 0x3d
add rsp, 0x40
pop rdi
ret
mov qword [rsp + 0x60], rbp
xor ebp, ebp
mov ebx, ebp
mov qword [rsp + 0x38], rsi
mov rsi, qword [0x18008d3f8]
cmp ebx, 4
jbe 0x180068bfa
mov r8d, 0xf58
lea rdx, [0x18007a620]
lea rcx, [0x18007ba60]
call qword [sym.imp.ucrtbase.dll__wassert]
movsxd rax, ebx
movss xmm0, dword [rsi + rax*4 + 0x45c]
ucomiss xmm0, xmm6
jp 0x180068c0d
je 0x180068c7e
inc ebx
cmp ebx, 5
jl 0x180068bd4
mov qword [rsp + 0x30], r14
lea rsi, [0x18007a2b8]
lea r14, [0x180079910]
mov ebx, ebp
nop dword [rax]
mov dl, 1
mov ecx, ebx
call fcn.180039ac0
test al, al
je 0x180068c53
mov rcx, r14
cmp dword [rcx + 0x10], ebx
je 0x180068c4e
add rcx, 0x18
cmp rcx, rsi
jne 0x180068c40
cmp rcx, rsi
jne 0x180068c88
inc ebx
cmp ebx, 0x200
jl 0x180068c30
xor al, al
mov r14, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x58]
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x40
pop rdi
ret
add bl, 0x39
mov al, 1
mov byte [rdi + 0x20], bl
jmp 0x180068c64
sub rcx, r14
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov byte [rdi + 0x20], dl
cmp dl, 0x35
jne 0x180068d20
mov rax, qword [0x18008d3f8]
movss xmm1, dword [rax + 0x754]
ucomiss xmm1, xmm6
jp 0x180068cc4
je 0x180068d1c
movss xmm2, dword [rax + 0x90]
comiss xmm1, xmm2
jbe 0x180068d20
ucomiss xmm1, xmm6
movss xmm3, dword [rax + 0x94]
jp 0x180068ce7
jne 0x180068ce7
mov ebp, 1
jmp 0x180068d18
comiss xmm2, xmm1
jae 0x180068d18
comiss xmm6, xmm3
jae 0x180068d18
movaps xmm0, xmm1
subss xmm1, xmm2
subss xmm0, dword [rax + 0x18]
divss xmm1, xmm3
subss xmm0, xmm2
cvttss2si ecx, xmm1
divss xmm0, xmm3
cvttss2si eax, xmm0
sub ecx, eax
test ecx, ecx
cmovg ebp, ecx
test ebp, ebp
jle 0x180068d20
mov byte [rdi + 0x20], 0x53
mov al, 1
jmp 0x180068c5f