Function at 0x18001b490
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
movabs rax, 0x800000000000001
cmp rdx, rax
jae 0x18001b831
mov rdi, rcx
lea rcx, [rdx - 1]
neg rdx
and rdx, 0xfffffffffffffffe
mov rax, rcx
movabs r8, 0x401505b24a580908
and r8, rcx
movabs r9, 0x1f62ca4cb5a7f2b5
and r9, rcx
xor rcx, 1
or rcx, rdx
xor rax, 0xfffffffffffffffe
movabs rdx, 0xa088300100000442
and rdx, rax
or r8, rdx
movabs rdx, 0xc02804c84060014
or rdx, r8
xor r9, rcx
movabs r8, 0x53754fb27bf9fba8
xor r8, r9
xor r8, rdx
or rax, rcx
not rax
or rax, r8
bsr rcx, rax
xor ecx, 0x3f
mov dl, 0x40
sub dl, cl
xor r8d, r8d
test rax, rax
movzx ecx, dl
cmove ecx, r8d
mov esi, 1
shl rsi, cl
lea rax, [rdi + 0x18]
mov rbx, qword [rdi + 8]
mov edx, 2
shl rdx, cl
mov rcx, rax
mov r8, rbx
call fcn.18001aba0
lea rax, [rsi - 1]
mov qword [rdi + 0x30], rax
mov qword [rdi + 0x38], rsi
mov rax, qword [rdi + 8]
mov rbp, qword [rax]
mov qword [rsp + 0x38], rbx
cmp rbp, rbx
je 0x18001b820
mov rsi, rdi
movabs r12, 0x100000001b3
mov qword [rsp + 0x28], rdi
jmp 0x18001b5b3
mov qword [r15 + r8*8], r13
mov qword [r15 + rcx*8], r13
cmp rbp, qword [rsp + 0x38]
je 0x18001b820
mov r13, rbp
cmp qword [rbp + 0x28], 0x10
jb 0x18001b5d0
mov rbx, qword [r13 + 0x10]
jmp 0x18001b5d4
lea rbx, [r13 + 0x10]
mov r14, qword [r13 + 0x20]
movabs rax, 0xcbf29ce484222325
test r14, r14
je 0x18001b6c0
cmp r14, 1
jne 0x18001b600
xor ecx, ecx
jmp 0x18001b684
mov rdx, r14
and rdx, 0xfffffffffffffffe
xor ecx, ecx
nop dword [rax]
movzx r9d, byte [rbx + rcx]
mov r8, rax
not r8
mov r10d, r9d
or r8, r9
not r9
mov r11d, r9d
and r11d, 0x3f
and r10d, 0xffffffc0
or r10d, r11d
xor eax, r10d
xor eax, 0xc0
or rax, r9
xor r8, rax
imul r8, r12
movzx r9d, byte [rbx + rcx + 1]
mov rax, r8
not rax
mov r10d, r9d
or rax, r9
not r9
mov r11d, r9d
and r11d, 0x3f
and r10d, 0xffffffc0
or r10d, r11d
xor r8d, r10d
xor r8d, 0xc0
or r8, r9
xor rax, r8
imul rax, r12
add rcx, 2
cmp rdx, rcx
jne 0x18001b610
test r14b, 1
je 0x18001b6c0
movzx ecx, byte [rbx + rcx]
mov rdx, rax
not rdx
mov r8d, ecx
or rdx, rcx
not rcx
mov r9d, ecx
and r9d, 0x3f
and r8d, 0xffffffc0
or r8d, r9d
xor eax, r8d
xor eax, 0xc0
or rax, rcx
xor rdx, rax
imul rdx, r12
mov rax, rdx
mov rbp, qword [r13]
and rax, qword [rsi + 0x30]
mov r15, qword [rsi + 0x18]
lea r8, [rax + rax]
lea rcx, [rax*2 + 1]
shl rax, 4
mov rdi, qword [r15 + rax]
cmp rdi, qword [rsp + 0x38]
je 0x18001b5a0
mov qword [rsp + 0x30], r13
mov rsi, qword [r15 + rcx*8]
cmp r14, qword [rsi + 0x20]
mov r13, r8
jne 0x18001b786
cmp qword [rsi + 0x28], 0x10
mov qword [rsp + 0x40], rcx
jb 0x18001b713
mov rdx, qword [rsi + 0x10]
jmp 0x18001b717
lea rdx, [rsi + 0x10]
mov rcx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov r8, r13
mov r10, qword [rsp + 0x40]
jne 0x18001b786
mov rax, qword [rsi]
mov r9, qword [rsp + 0x30]
cmp rax, r9
je 0x18001b75c
mov rcx, qword [r9 + 8]
mov qword [rcx], rbp
mov rdx, qword [rbp + 8]
mov qword [rdx], rax
mov r8, qword [rax + 8]
mov qword [r8], r9
mov qword [rax + 8], rdx
mov qword [rbp + 8], rcx
mov qword [r9 + 8], r8
mov qword [r15 + r10*8], r9
jmp 0x18001b810
mov rdx, qword [rsi + 0x10]
mov rcx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov r8, r13
je 0x18001b7dc
cmp rdi, rsi
je 0x18001b7b0
mov rsi, qword [rsi + 8]
cmp r14, qword [rsi + 0x20]
jne 0x18001b786
cmp qword [rsi + 0x28], 0x10
jae 0x18001b770
lea rdx, [rsi + 0x10]
jmp 0x18001b774
mov r9, qword [rsp + 0x30]
mov rax, qword [r9 + 8]
mov qword [rax], rbp
mov rcx, qword [rbp + 8]
mov qword [rcx], rdi
mov rdx, qword [rdi + 8]
mov qword [rdx], r9
mov qword [rdi + 8], rcx
mov qword [rbp + 8], rax
mov qword [r9 + 8], rdx
mov qword [r15 + r8*8], r9
jmp 0x18001b810
mov rax, qword [rsi]
mov r9, qword [rsp + 0x30]
mov rcx, qword [r9 + 8]
mov qword [rcx], rbp
mov rdx, qword [rbp + 8]
mov qword [rdx], rax
mov r8, qword [rax + 8]
mov qword [r8], r9
mov qword [rax + 8], rdx
mov qword [rbp + 8], rcx
mov qword [r9 + 8], r8
nop word cs:[rax + rax]
mov rsi, qword [rsp + 0x28]
cmp rbp, qword [rsp + 0x38]
jne 0x18001b5b3
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movabs rcx, 0x871864b4eceadfc2
add rcx, qword [0x18004a8c8]
call fcn.180033410
lea rcx, [0x18004bfe8]
call sub.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const____ptr64_
int3