Function at 0x14004cac0
Capabilities:
Encode data using xor
Interact with driver via ioctl

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3a0]
sub rsp, 0x4a0
mov rax, qword [0x14006a040]
xor rax, rsp
mov qword [rbp + 0x390], rax
mov rsi, rcx
mov qword [rsp + 0x40], rcx
mov ecx, edx
mov edi, edx
mov rdx, qword [0x14006b968]
xor ebx, ebx
sar ecx, 0x10
add rdx, 0xf33b490
shl ecx, 3
add rdx, rcx
call fcn.140056a20
mov rcx, rax
movzx eax, di
lea rax, [rcx + rax*2]
mov rdx, rax
mov qword [rsp + 0x40], rax
call fcn.140056c80
movzx r13d, ax
lea rcx, [rbp - 0x70]
xor edx, edx
shr r13d, 6
mov r8d, 0x400
call sub.VCRUNTIME140.dll_memset
mov rax, qword [0x14006b968]
lea r14, [rbp - 0x70]
mov rcx, qword [0x14006b828]
lea r9d, [rbx + 0x20]
add rax, 0xf2655bc
mov qword [rsp + 0x38], rbx
cmp byte [0x14006abbb], bl
lea r8, [rsp + 0x50]
mov qword [rsp + 0x58], rax
mov edx, 0x222404
lea rax, [rsp + 0x4c]
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x60], rax
mov eax, dword [0x14006b830]
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x50], eax
mov dword [rsp + 0x4c], ebx
mov dword [rsp + 0x54], ebx
mov qword [rsp + 0x68], 4
mov qword [rsp + 0x20], rbx
jne 0x14004cbba
mov edx, 0x220c58
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov r12d, dword [rsp + 0x4c]
mov eax, 0x3e0f83e1
mul r12d
mov r15d, r12d
mov edi, ebx
shr edx, 3
xor r15d, 0x9c677cc5
imul eax, edx, 0x21
sub r12d, eax
test r13d, r13d
je 0x14004cd78
mov rax, qword [rsp + 0x40]
lea ecx, [r13*2]
add rax, 2
mov qword [rsp + 0x38], rbx
cmp byte [0x14006abbb], bl
lea r8, [rsp + 0x70]
mov qword [rsp + 0x78], rax
mov r9d, 0x20
lea rax, [rbp - 0x70]
mov qword [rsp + 0x30], rbx
mov qword [rbp - 0x80], rax
mov edx, 0x222404
mov eax, dword [0x14006b830]
mov qword [rbp - 0x78], rcx
mov rcx, qword [0x14006b828]
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x70], eax
mov dword [rsp + 0x74], ebx
mov qword [rsp + 0x20], rbx
jne 0x14004cc52
mov edx, 0x220c58
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
nop dword [rax + rax]
lea eax, [rdi + r12]
inc edi
add r15d, eax
xor byte [r14], r15b
lea r14, [r14 + 1]
cmp edi, r13d
jl 0x14004cc60
cmp r13d, 0x400
jae 0x14004cdb9
xorps xmm0, xmm0
mov byte [rbp + r13 - 0x70], bl
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], rbx
lea rax, [rbp - 0x70]
mov qword [rsi + 0x18], rbx
mov rdi, 0xffffffffffffffff
inc rdi
cmp byte [rax + rdi], bl
jne 0x14004cca0
movabs r14, 0x7fffffffffffffff
cmp rdi, r14
ja 0x14004cdc5
mov qword [rsi + 0x18], 0xf
cmp rdi, 0xf
ja 0x14004cce4
mov r8, rdi
mov qword [rsi + 0x10], rdi
lea rdx, [rbp - 0x70]
mov rcx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov byte [rdi + rsi], bl
jmp 0x14004cd8c
mov rax, rdi
or rax, 0xf
cmp rax, r14
jbe 0x14004cd19
movabs rax, 0x8000000000000000
add rax, 0x27
mov rcx, rax
call fcn.140057db8
test rax, rax
je 0x14004cd44
lea rbx, [rax + 0x27]
and rbx, 0xffffffffffffffe0
mov qword [rbx - 8], rax
jmp 0x14004cd58
mov ecx, 0x16
mov r14, rax
cmp rax, rcx
cmovb r14, rcx
lea rcx, [r14 + 1]
cmp rcx, 0x1000
jb 0x14004cd4b
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x14004cdbf
jmp 0x14004ccfe
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
test rcx, rcx
je 0x14004cd58
call fcn.140057db8
mov rbx, rax
mov r8, rdi
mov qword [rsi], rbx
lea rdx, [rbp - 0x70]
mov qword [rsi + 0x10], rdi
mov rcx, rbx
mov qword [rsi + 0x18], r14
call sub.VCRUNTIME140.dll_memcpy
mov byte [rbx + rdi], 0
jmp 0x14004cd8c
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], rbx
mov qword [rsi + 0x18], 0xf
mov byte [rsi], bl
mov rax, rsi
mov rcx, qword [rbp + 0x390]
xor rcx, rsp
call fcn.1400577d0
mov rbx, qword [rsp + 0x4f0]
add rsp, 0x4a0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1400578f8
int3
call fcn.140031330
int3
call fcn.1400313d0
int3