Function at 0x18000cc20
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x50
cmp byte [rcx + 0x30], 0
mov rdi, rcx
je 0x18000d5de
cmp byte [0x1800ac610], 0
jne 0x18000d5de
call fcn.180002400
mov rcx, rax
call fcn.180002a90
test al, al
je 0x18000d5de
mov rax, qword [0x1800ac618]
inc qword [rdi + 0x68]
mov qword [rsp + 0x60], rbx
movaps xmmword [rsp + 0x40], xmm6
mov rbx, qword [rax + 8]
mov eax, dword [rdi + 0x34]
movaps xmmword [rsp + 0x30], xmm7
movaps xmmword [rsp + 0x20], xmm8
test eax, eax
jne 0x18000cc8a
movss xmm1, dword [rdi + 0x38]
jmp 0x18000d49f
cmp eax, 1
jne 0x18000cd45
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm6, xmm6
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
cvtsd2ss xmm6, xmm0
mov rax, qword [rcx]
call qword [rax + 0x338]
xorps xmm0, xmm0
comiss xmm0, xmm6
jbe 0x18000d5c9
mov rdx, qword [rbx]
test rdx, rdx
je 0x18000d5c9
mov rcx, qword [0x1800ac608]
xor r8d, r8d
mov rax, qword [rcx]
mov r9, qword [rax + 0xc0]
call r9
test al, al
jne 0x18000d5c9
mov rcx, qword [0x1800ac608]
mov r9b, 1
mov r8, qword [0x1800ac8c0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x348]
jmp 0x18000d5c9
cmp eax, 2
jne 0x18000d179
movss xmm1, dword [rdi + 0x38]
mov rcx, rbx
call fcn.18007aee0
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm7, xmm7
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtsd2ss xmm7, xmm0
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm8, xmm8
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
cvtsd2ss xmm8, xmm0
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
movss xmm6, dword [0x180098f84]
ucomiss xmm8, xmm6
jp 0x18000ce1f
je 0x18000ce3d
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm8
mov rax, qword [rcx]
call qword [rax + 0x380]
mov rcx, qword [0x1800ac608]
xorps xmm3, xmm3
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
ucomiss xmm7, xmm6
jp 0x18000ce61
je 0x18000ce7e
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm7
mov rax, qword [rcx]
call qword [rax + 0x380]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac7a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x330]
call r9
xorps xmm7, xmm7
ucomiss xmm0, xmm7
jp 0x18000cf22
jne 0x18000cf22
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac798]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x330]
call r9
ucomiss xmm0, xmm7
jp 0x18000cf22
jne 0x18000cf22
mov rcx, qword [0x1800ac608]
xorps xmm3, xmm3
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
mov rcx, qword [0x1800ac608]
xorps xmm3, xmm3
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
mov rcx, qword [0x1800ac608]
xorps xmm3, xmm3
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18000d056
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm7, xmm7
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtsd2ss xmm7, xmm0
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm8, xmm8
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
cvtsd2ss xmm8, xmm0
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
ucomiss xmm8, xmm6
jp 0x18000cff2
je 0x18000d010
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm8
mov rax, qword [rcx]
call qword [rax + 0x380]
mov rcx, qword [0x1800ac608]
movsd xmm3, qword [0x180098fe8]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
ucomiss xmm7, xmm6
jp 0x18000d039
je 0x18000d056
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm7
mov rax, qword [rcx]
call qword [rax + 0x380]
mov ecx, 0x20
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18000d5c9
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm7, xmm7
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtsd2ss xmm7, xmm0
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm8, xmm8
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
cvtsd2ss xmm8, xmm0
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
ucomiss xmm8, xmm6
jp 0x18000d126
je 0x18000d144
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm8
mov rax, qword [rcx]
call qword [rax + 0x380]
mov rcx, qword [0x1800ac608]
movsd xmm3, qword [0x180098e18]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
ucomiss xmm7, xmm6
jp 0x18000d171
je 0x18000d5c9
cvtps2pd xmm3, xmm7
jmp 0x18000d5af
cmp eax, 3
jne 0x18000d45e
mov rdx, qword [rbx]
test rdx, rdx
je 0x18000d1cb
mov rcx, qword [0x1800ac608]
xor r8d, r8d
mov rax, qword [rcx]
mov r9, qword [rax + 0xc0]
call r9
test al, al
jne 0x18000d1cb
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8c0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x300]
call r9
test al, al
jne 0x18000d5c9
mov rdx, qword [rbx]
test rdx, rdx
je 0x18000d5c9
mov rcx, qword [0x1800ac608]
xor r8d, r8d
mov rax, qword [rcx]
mov r9, qword [rax + 0xc0]
call r9
test al, al
jne 0x18000d5c9
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8d8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x330]
call r9
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x18000d5c9
mov rcx, qword [0x1800ac608]
movabs rax, 0x6666666666666667
imul qword [rdi + 0x68]
mov r8, qword [0x1800ac900]
sar rdx, 1
mov rax, rdx
shr rax, 0x3f
add rdx, rax
lea rax, [rdx + rdx*4]
mov rdx, qword [rbx]
cmp qword [rdi + 0x68], rax
mov rax, qword [rcx]
jne 0x18000d336
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm6, xmm6
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtsd2ss xmm6, xmm0
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm7, xmm7
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
cvtsd2ss xmm7, xmm0
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
movss xmm8, dword [0x180098f84]
ucomiss xmm7, xmm8
jp 0x18000d30c
je 0x18000d329
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm7
mov rax, qword [rcx]
call qword [rax + 0x380]
movsd xmm3, qword [0x180098fc8]
jmp 0x18000d40a
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm6, xmm6
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtsd2ss xmm6, xmm0
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm7, xmm7
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
cvtsd2ss xmm7, xmm0
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
movss xmm8, dword [0x180098f84]
ucomiss xmm7, xmm8
jp 0x18000d3e5
je 0x18000d402
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm7
mov rax, qword [rcx]
call qword [rax + 0x380]
movsd xmm3, qword [0x180098fd8]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
ucomiss xmm6, xmm8
jp 0x18000d42c
je 0x18000d449
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm6
mov rax, qword [rcx]
call qword [rax + 0x380]
movss xmm1, dword [0x180098d38]
mov rcx, rbx
call fcn.18007aee0
jmp 0x18000d5c9
cmp eax, 4
jne 0x18000d5c9
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac780]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x320]
call r9
test eax, eax
jle 0x18000d48d
mov byte [rdi + 0x70], 1
cmp byte [rdi + 0x70], 0
je 0x18000d5c9
movss xmm1, dword [0x180098d40]
mov rcx, rbx
call fcn.18007aee0
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm6, xmm6
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtsd2ss xmm6, xmm0
mov rax, qword [rcx]
mov r9, qword [rax + 0x338]
call r9
mov rcx, qword [0x1800ac608]
xorps xmm7, xmm7
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
cvtsd2ss xmm7, xmm0
mov rax, qword [rcx]
call qword [rax + 0x338]
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x338]
movss xmm8, dword [0x180098f84]
ucomiss xmm7, xmm8
jp 0x18000d56a
je 0x18000d587
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac900]
mov rdx, qword [rbx]
cvtps2pd xmm3, xmm7
mov rax, qword [rcx]
call qword [rax + 0x380]
mov rcx, qword [0x1800ac608]
xorps xmm3, xmm3
mov r8, qword [0x1800ac8b0]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
ucomiss xmm6, xmm8
jp 0x18000d5ac
je 0x18000d5c9
cvtps2pd xmm3, xmm6
mov rcx, qword [0x1800ac608]
mov r8, qword [0x1800ac8a8]
mov rdx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x380]
movaps xmm7, xmmword [rsp + 0x30]
movaps xmm6, xmmword [rsp + 0x40]
movaps xmm8, xmmword [rsp + 0x20]
mov rbx, qword [rsp + 0x60]
add rsp, 0x50
pop rdi
ret
mov rcx, qword [rcx + 8]
jmp 0x18000cc20