Function at 0x18003cf20
Capabilities:
Log keystrokes via polling

Disassembly:
mov r11, rsp
push rbp
push r13
lea rbp, [r11 - 0x1b8]
sub rsp, 0x2a8
mov rax, qword [0x180057040]
xor rax, rsp
mov qword [rbp + 0x100], rax
movabs r13, 0x1424304a8
mov r13, qword [r13]
test r13, r13
je 0x18003d88d
mov qword [r11 + 8], rbx
mov rbx, qword [r13 + 0xd0]
test rbx, rbx
je 0x18003d885
mov qword [r11 - 0x28], r15
mov r15, qword [r13 + 0x48]
test r15, r15
je 0x18003d87d
mov rcx, qword [r13 + 0xe0]
mov qword [rbp - 0x58], rcx
test rcx, rcx
je 0x18003d87d
mov rax, qword [rcx]
mov qword [r11 + 0x10], rsi
mov rdx, qword [rax + 0xa8]
call rdx
mov qword [rbp - 0x48], rax
mov rsi, rax
test rax, rax
je 0x18003d875
mov rdx, qword [rbx]
mov rcx, rbx
mov qword [rsp + 0x298], r14
mov r8, qword [rdx + 0x68]
call r8
mov qword [rbp - 0x50], rax
mov r14, rax
test rax, rax
je 0x18003d86d
mov rcx, qword [rax]
lea rdx, [rbp + 0x90]
mov qword [rbp + 0x90], 0
mov qword [rsp + 0x2d0], rdi
mov r8, qword [rcx + 0x470]
mov rcx, rax
call r8
test al, al
jne 0x18003d013
xor edi, edi
mov qword [rbp + 0x90], rdi
jmp 0x18003d01a
mov rdi, qword [rbp + 0x90]
test rdi, rdi
je 0x18003d865
mov rax, qword [r14]
mov rcx, r14
mov rdx, qword [rax + 0xc8]
call rdx
mov qword [rbp - 0x70], rax
test rax, rax
je 0x18003d865
mov rcx, qword [r14]
mov rdx, qword [rcx + 0x448]
mov rcx, r14
call rdx
mov qword [rbp - 0x68], rax
test rax, rax
je 0x18003d865
mov rcx, qword [r13 + 0x70]
mov qword [rbp - 0x60], rcx
test rcx, rcx
je 0x18003d865
mov rcx, qword [rdi]
xor edx, edx
mov r8, qword [rcx + 0x1d8]
mov rcx, rdi
call r8
test rax, rax
je 0x18003d865
lea rbx, [rax + 0x28]
test rbx, rbx
je 0x18003d865
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x18003d865
mov rax, qword [rdi + 0xd88]
test rax, rax
je 0x18003d865
mov qword [rbp + 0xf0], 0
xorps xmm0, xmm0
mov dword [rbp + 0xf8], 0
mov byte [rax + 0xb4], 0
movss dword [rax + 0xb8], xmm0
movss dword [rax + 0xbc], xmm0
movss dword [rax + 0xc0], xmm0
mov byte [rcx + 0x148], 0
mov rcx, rsi
mov rax, qword [rsi]
mov qword [rsp + 0x2a0], r12
mov r12d, dword [r15 + 0x17c8]
movaps xmmword [rsp + 0x250], xmm9
movsd xmm9, qword [r15 + 0x17c0]
mov rdx, qword [rax + 0x30]
mov qword [rsp + 0x70], 0
mov dword [rsp + 0x78], 0
movsd qword [rsp + 0x70], xmm9
call rdx
mov rsi, rax
test rax, rax
je 0x18003d854
movaps xmmword [rsp + 0x230], xmm11
movaps xmmword [rsp + 0x220], xmm12
movss xmm12, dword [rsp + 0x74]
movaps xmmword [rsp + 0x210], xmm13
movss xmm13, dword [rsp + 0x70]
movaps xmmword [rsp + 0x280], xmm6
movaps xmmword [rsp + 0x270], xmm7
movaps xmmword [rsp + 0x260], xmm8
movaps xmmword [rsp + 0x240], xmm10
movd xmm11, r12d
mov rax, qword [rsi]
mov rcx, rsi
mov rdx, qword [rax + 0x18]
call rdx
mov rcx, qword [rax]
mov rdx, qword [rcx + 0x10]
mov rcx, rax
call rdx
test rax, rax
je 0x18003d7fe
mov rax, qword [rsi]
mov rcx, rsi
mov rdx, qword [rax + 0x60]
call rdx
test rax, rax
je 0x18003d7fe
mov rax, qword [rsi]
mov rcx, rsi
mov rdx, qword [rax + 8]
call rdx
mov rcx, qword [rbp - 0x70]
mov edx, eax
mov r8, qword [rcx]
call qword [r8 + 0x78]
mov rsi, rax
test rax, rax
je 0x18003d7fe
mov eax, esi
mov edx, edi
mov ecx, dword [rax + 0x3e4]
cmp dword [rdx + 0x3e4], ecx
je 0x18003d7fe
mov rax, qword [rsi]
mov rcx, rsi
mov rdx, qword [rax + 0xe0]
call rdx
test eax, eax
jle 0x18003d7fe
mov rax, qword [rdi]
mov rcx, rdi
mov rdx, qword [rax + 0xe0]
call rdx
test eax, eax
jle 0x18003d7fe
mov r14, qword [rsi + 0x10]
xor edx, edx
mov rcx, r14
mov rax, qword [r14]
mov r8, qword [rax + 0x2a0]
call r8
test rax, rax
je 0x18003d7fe
mov rax, qword [r14]
xor edx, edx
mov rcx, r14
mov r8, qword [rax + 0x2a0]
call r8
mov rcx, qword [rax]
mov rdx, qword [rcx + 0x30]
mov rcx, rax
call rdx
movups xmm6, xmmword [r14 + 0x40]
mov edx, 0x19
movups xmm7, xmmword [r14 + 0x50]
mov rcx, qword [rax]
movups xmm8, xmmword [r14 + 0x60]
mov r8, qword [rcx + 0x38]
mov rcx, rax
call r8
mov rdx, rax
lea rcx, [rbp + 0xa0]
call fcn.180042a80
movss xmm5, dword [rbp + 0xbc]
lea rdx, str.mat_head
movss xmm3, dword [rbp + 0xac]
movaps xmm0, xmm6
movss xmm4, dword [rbp + 0xcc]
movaps xmm1, xmm3
mov r14, qword [rbp - 0x68]
movaps xmm10, xmm5
shufps xmm0, xmm6, 0x55
movaps xmm2, xmm4
mulss xmm1, xmm6
mov rcx, r14
mulss xmm10, xmm0
movaps xmm0, xmm6
mov rax, qword [r14]
shufps xmm0, xmm6, 0xaa
shufps xmm6, xmm6, 0xff
addss xmm10, xmm1
mulss xmm2, xmm0
mov r8, qword [rax + 0x3b8]
movaps xmm0, xmm7
movaps xmm1, xmm7
shufps xmm1, xmm7, 0xaa
mulss xmm1, xmm4
mulss xmm0, xmm3
addss xmm10, xmm2
addss xmm10, xmm6
movaps xmm6, xmm7
shufps xmm6, xmm7, 0x55
shufps xmm7, xmm7, 0xff
mulss xmm6, xmm5
addss xmm6, xmm0
movaps xmm0, xmm8
mulss xmm0, xmm3
addss xmm6, xmm1
movaps xmm1, xmm8
shufps xmm1, xmm8, 0xaa
mulss xmm1, xmm4
addss xmm6, xmm7
movaps xmm7, xmm8
shufps xmm7, xmm8, 0x55
mulss xmm7, xmm5
shufps xmm8, xmm8, 0xff
addss xmm7, xmm0
addss xmm7, xmm1
addss xmm7, xmm8
call r8
test eax, eax
je 0x18003d7fe
mov r14, qword [rbp - 0x60]
lea rcx, str.RayWorldIntersection_Game_
mov rsi, qword [rsi + 0x10]
lea r8, [rbp - 0x80]
mov dword [rsp + 0x68], 4
lea rdx, [rsp + 0x70]
movaps xmm0, xmm10
movss dword [rsp + 0x70], xmm13
mov rax, qword [r14]
subss xmm0, xmm13
movaps xmm1, xmm6
movss dword [rsp + 0x74], xmm12
subss xmm1, xmm12
movss dword [rsp + 0x78], xmm11
mov r9d, 0x101
movss dword [rbp - 0x80], xmm0
movaps xmm0, xmm7
subss xmm0, xmm11
movss dword [rbp - 0x7c], xmm1
movss dword [rbp - 0x78], xmm0
mov r10, qword [rax + 0x310]
xor eax, eax
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x58], rcx
mov rcx, r14
mov dword [rsp + 0x50], eax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], eax
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0xa0]
mov dword [rsp + 0x30], 1
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0xa000150a
call r10
test eax, eax
jle 0x18003d442
mov rcx, qword [rbp - 0x58]
mov rdx, qword [rbp + 0xa8]
mov rax, qword [rcx]
mov r8, qword [rax + 0xd0]
call r8
cmp rax, rsi
jne 0x18003d7fe
mov r14, qword [rbp - 0x50]
mov rcx, r14
mov rax, qword [r14]
mov rdx, qword [rax + 0xc8]
call rdx
mov rcx, rdi
mov r9, rax
call fcn.18003c5b0
mov rcx, qword [r9]
mov edx, eax
mov r8, qword [rcx + 0x78]
mov rcx, r9
call r8
test rax, rax
je 0x18003d57a
mov rdx, rdi
call fcn.18003c8c0
lea r14, [0x18004f940]
cmp rax, r14
jne 0x18003d4b8
cmp byte [0x180094374], 0
je 0x18003d4b8
mov esi, 3
nop word [rax + rax]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x58]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x60]
sub rsi, 1
jne 0x18003d4a0
mov rdx, rdi
call fcn.18003c8c0
lea rcx, [0x18004f960]
cmp rax, rcx
jne 0x18003d4f8
cmp byte [0x18009437c], 0
je 0x18003d4f8
mov esi, 3
nop word [rax + rax]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x58]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x60]
sub rsi, 1
jne 0x18003d4e0
mov rdx, rdi
call fcn.18003c8c0
lea rcx, [0x18004f958]
cmp rax, rcx
jne 0x18003d538
cmp byte [0x180094384], 0
je 0x18003d538
mov esi, 3
nop word [rax + rax]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x58]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x60]
sub rsi, 1
jne 0x18003d520
mov rdx, rdi
call fcn.18003c8c0
lea rcx, [0x18004f950]
cmp rax, rcx
jne 0x18003d581
cmp byte [0x18009438c], 0
je 0x18003d581
mov esi, 3
nop word [rax + rax]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x58]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x60]
sub rsi, 1
jne 0x18003d560
jmp 0x18003d581
lea r14, [0x18004f940]
movaps xmm0, xmm10
movss dword [rbp - 0x38], xmm7
unpcklps xmm0, xmm6
lea r8, [rbp + 0xf0]
lea rdx, [rbp - 0x40]
movsd qword [rbp - 0x40], xmm0
mov rcx, r15
movaps xmm6, xmm0
call fcn.18003c5e0
test al, al
je 0x18003d7fe
mov rdx, rdi
call fcn.18003c8c0
cmp rax, r14
jne 0x18003d63b
cvttss2si r8d, dword [0x1800570bc]
lea rdx, [rbp - 0x30]
mov rcx, r15
movss dword [rbp - 0x28], xmm7
movsd qword [rbp - 0x30], xmm6
call fcn.18003c730
test al, al
je 0x18003d63b
cmp byte [0x180094373], 0
je 0x18003d63b
mov ecx, dword [0x180094378]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18003d602
cmp byte [0x180094372], al
je 0x18003d63b
mov rcx, qword [r13 + 0xc0]
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x38]
lea r9, [rbp - 0x20]
movss dword [rbp - 0x18], xmm7
lea r8, [rbp - 0x10]
movss dword [rsp + 0x20], xmm0
mov rdx, rdi
movsd qword [rbp - 0x20], xmm6
movsd qword [rbp - 0x10], xmm9
mov dword [rbp - 8], r12d
call fcn.18003c910
mov rdx, rdi
call fcn.18003c8c0
lea rcx, [0x18004f960]
cmp rax, rcx
jne 0x18003d6cd
cvttss2si r8d, dword [0x1800570dc]
lea rdx, [rbp]
mov rcx, r15
movss dword [rbp + 8], xmm7
movsd qword [rbp], xmm6
call fcn.18003c730
test al, al
je 0x18003d6cd
cmp byte [0x180094377], 0
je 0x18003d6cd
mov ecx, dword [0x180094380]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18003d694
cmp byte [0x180094376], al
je 0x18003d6cd
mov rcx, qword [r13 + 0xc0]
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x38]
lea r9, [rbp + 0x10]
movss dword [rbp + 0x18], xmm7
lea r8, [rbp + 0x20]
movss dword [rsp + 0x20], xmm0
mov rdx, rdi
movsd qword [rbp + 0x10], xmm6
movsd qword [rbp + 0x20], xmm9
mov dword [rbp + 0x28], r12d
call fcn.18003c910
mov rdx, rdi
call fcn.18003c8c0
lea rcx, [0x18004f958]
cmp rax, rcx
jne 0x18003d75f
cvttss2si r8d, dword [0x1800570f8]
lea rdx, [rbp + 0x30]
mov rcx, r15
movss dword [rbp + 0x38], xmm7
movsd qword [rbp + 0x30], xmm6
call fcn.18003c730
test al, al
je 0x18003d75f
cmp byte [0x18009437f], 0
je 0x18003d75f
mov ecx, dword [0x180094388]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18003d726
cmp byte [0x18009437e], al
je 0x18003d75f
mov rcx, qword [r13 + 0xc0]
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x38]
lea r9, [rbp + 0x40]
movss dword [rbp + 0x48], xmm7
lea r8, [rbp + 0x50]
movss dword [rsp + 0x20], xmm0
mov rdx, rdi
movsd qword [rbp + 0x40], xmm6
movsd qword [rbp + 0x50], xmm9
mov dword [rbp + 0x58], r12d
call fcn.18003c910
mov rdx, rdi
call fcn.18003c8c0
lea rcx, [0x18004f950]
cmp rax, rcx
jne 0x18003d7fe
cvttss2si r8d, dword [0x180057118]
lea rdx, [rbp + 0x60]
mov rcx, r15
movss dword [rbp + 0x68], xmm7
movsd qword [rbp + 0x60], xmm6
call fcn.18003c730
test al, al
je 0x18003d7fe
cmp byte [0x180094387], 0
je 0x18003d7fe
mov ecx, dword [0x180094390]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18003d7bc
cmp byte [0x180094386], al
je 0x18003d7fe
mov rcx, qword [r13 + 0xc0]
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x38]
lea r9, [rbp + 0x70]
movss dword [rbp + 0x78], xmm7
lea r8, [rbp + 0x80]
movss dword [rsp + 0x20], xmm0
mov rdx, rdi
movsd qword [rbp + 0x70], xmm6
movsd qword [rbp + 0x80], xmm9
mov dword [rbp + 0x88], r12d
call fcn.18003c910
mov rcx, qword [rbp - 0x48]
mov rax, qword [rcx]
mov rdx, qword [rax + 0x30]
call rdx
mov rsi, rax
test rax, rax
jne 0x18003d190
movaps xmm13, xmmword [rsp + 0x210]
movaps xmm12, xmmword [rsp + 0x220]
movaps xmm11, xmmword [rsp + 0x230]
movaps xmm10, xmmword [rsp + 0x240]
movaps xmm8, xmmword [rsp + 0x260]
movaps xmm7, xmmword [rsp + 0x270]
movaps xmm6, xmmword [rsp + 0x280]
mov r12, qword [rsp + 0x2a0]
movaps xmm9, xmmword [rsp + 0x250]
mov rdi, qword [rsp + 0x2d0]
mov r14, qword [rsp + 0x298]
mov rsi, qword [rsp + 0x2c8]
mov r15, qword [rsp + 0x290]
mov rbx, qword [rsp + 0x2c0]
mov rcx, qword [rbp + 0x100]
xor rcx, rsp
call fcn.180042bf0
add rsp, 0x2a8
pop r13
pop rbp
ret