Function at 0x18001c600
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x90
mov rax, qword [rcx + 0x58]
mov rbp, r8
movaps xmmword [rsp + 0x70], xmm7
mov rsi, rdx
movaps xmmword [rsp + 0x60], xmm8
mov rdi, rcx
movaps xmmword [rsp + 0x50], xmm9
cmp byte [rax + 0x60], 0
jne 0x18001c907
cmp byte [rax + 0x40], 0
mov rcx, qword [rsi + 0x88]
sete dl
xor r8d, r8d
call qword [0x1800d3988]
mov rax, qword [rdi + 0x58]
cmp byte [rax + 0x60], 0
jne 0x18001c907
cmp byte [rax + 0x40], 0
jne 0x18001c69e
mov rdx, rbp
mov rcx, rsi
call qword [0x1800d3968]
movaps xmm7, xmmword [rsp + 0x70]
lea r11, [rsp + 0x90]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
mov rsp, r11
pop rdi
ret
mov rax, qword [0x1800d3ad0]
xor edx, edx
mov rcx, qword [rsi + 0x88]
call rax
mov ecx, 0x57
mov rbx, rax
xorps xmm7, xmm7
xorps xmm9, xmm9
xorps xmm8, xmm8
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18001c710
mov r9, qword [0x1800d3980]
lea rcx, [rsp + 0x20]
xor r8d, r8d
mov rdx, rbx
call r9
movsd xmm0, qword [rax]
movaps xmm9, xmm0
movsd qword [rsp + 0x30], xmm0
movaps xmm8, xmm0
addss xmm9, xmm7
movss xmm0, dword [rax + 8]
addss xmm0, xmm7
shufps xmm8, xmm8, 0x55
addss xmm8, xmm7
movaps xmm7, xmm0
mov ecx, 0x53
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18001c754
mov rax, qword [0x1800d3980]
lea rcx, [rsp + 0x30]
xor r8d, r8d
mov rdx, rbx
call rax
movsd xmm1, qword [rax]
subss xmm7, dword [rax + 8]
movaps xmm0, xmm1
movsd qword [rsp + 0x20], xmm1
shufps xmm0, xmm0, 0x55
subss xmm9, xmm1
subss xmm8, xmm0
mov ecx, 0x44
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18001c798
mov rax, qword [0x1800d3a38]
lea rcx, [rsp + 0x30]
xor r8d, r8d
mov rdx, rbx
call rax
movsd xmm1, qword [rax]
addss xmm7, dword [rax + 8]
movaps xmm0, xmm1
movsd qword [rsp + 0x20], xmm1
shufps xmm0, xmm0, 0x55
addss xmm9, xmm1
addss xmm8, xmm0
mov ecx, 0x41
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18001c7dc
mov rax, qword [0x1800d3a38]
lea rcx, [rsp + 0x30]
xor r8d, r8d
mov rdx, rbx
call rax
movsd xmm1, qword [rax]
subss xmm7, dword [rax + 8]
movaps xmm0, xmm1
movsd qword [rsp + 0x20], xmm1
shufps xmm0, xmm0, 0x55
subss xmm9, xmm1
subss xmm8, xmm0
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18001c820
mov rax, qword [0x1800d39c0]
lea rcx, [rsp + 0x30]
xor r8d, r8d
mov rdx, rbx
call rax
movsd xmm1, qword [rax]
addss xmm7, dword [rax + 8]
movaps xmm0, xmm1
movsd qword [rsp + 0x20], xmm1
shufps xmm0, xmm0, 0x55
addss xmm9, xmm1
addss xmm8, xmm0
mov ecx, 0xa2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18001c864
mov rax, qword [0x1800d39c0]
lea rcx, [rsp + 0x30]
xor r8d, r8d
mov rdx, rbx
call rax
movsd xmm1, qword [rax]
subss xmm7, dword [rax + 8]
movaps xmm0, xmm1
movsd qword [rsp + 0x20], xmm1
shufps xmm0, xmm0, 0x55
subss xmm9, xmm1
subss xmm8, xmm0
mov rdi, qword [rdi + 0x70]
mov rax, qword [0x1800d3aa8]
cmp byte [rdi + 0x60], 2
jne 0x18001c907
xor ecx, ecx
movaps xmmword [rsp + 0x80], xmm6
call rax
mov rax, qword [0x1800d39b0]
lea rcx, [rsp + 0x30]
movaps xmm6, xmm0
xor r8d, r8d
mulss xmm6, dword [rdi + 0x40]
mov rdx, rbx
call rax
mulss xmm9, xmm6
lea rdx, [rsp + 0x20]
xor r8d, r8d
mov rcx, rbx
mulss xmm8, xmm6
movsd xmm1, qword [rax]
mulss xmm7, xmm6
addss xmm9, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm0, 0x55
addss xmm7, dword [rax + 8]
addss xmm8, xmm0
movss dword [rsp + 0x20], xmm9
movss dword [rsp + 0x28], xmm7
movss dword [rsp + 0x24], xmm8
call qword [0x1800d3a58]
mov rdx, rbp
mov rcx, rsi
call qword [0x1800d3968]
movaps xmm6, xmmword [rsp + 0x80]
jmp 0x18001c676
call fcn.180001b30
int3