Function at 0x1800177b0
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 0x180017bde
mov r14, rcx
lea rax, [rdx - 1]
neg rdx
and rdx, 0xfffffffffffffffe
mov r9, rax
xor r9, 1
or rdx, r9
mov r10, rdx
not r10
movabs r8, 0xbc5716f032f550ee
mov rcx, rax
and rcx, r8
lea r11, [r8 + 1]
xor r11, rax
and r11, r9
movabs r9, 0x2014121022f4406c
movabs rsi, 0x42a0a90b490a2a00
and rsi, r10
and r10, r9
movabs rdi, 0x9c4304e010011082
and rdi, rdx
or rdi, r10
movabs r10, 0x108400484008511
mov rbx, rdx
and rbx, r10
or rsi, rbx
or rdi, r10
or rsi, r9
xor rcx, r8
xor rcx, r11
and r11, r8
or rcx, r11
xor rcx, rsi
xor rcx, rdi
xor rax, 0xfffffffffffffffe
or rax, rdx
not rax
or rax, rcx
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, [r14 + 0x18]
mov rdi, qword [r14 + 8]
mov edx, 2
shl rdx, cl
mov rcx, rax
mov r8, rdi
call fcn.180016da0
lea rax, [rsi - 1]
mov qword [r14 + 0x30], rax
mov qword [r14 + 0x38], rsi
mov rax, qword [r14 + 8]
mov r9, qword [rax]
cmp r9, rdi
je 0x180017bcd
mov r11, r14
movabs rbp, 0x118020b7080026ff
movabs r12, 0xee7fdf48f7ffd900
movabs r15, 0x100000001b3
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], rdi
jmp 0x180017916
mov qword [r10 + rax*8], r13
mov qword [r10 + rdx*8], r13
mov r9, qword [rsp + 0x20]
cmp r9, rdi
je 0x180017bcd
mov r13, r9
cmp qword [r9 + 0x28], 0x10
jb 0x180017930
mov rbx, qword [r13 + 0x10]
jmp 0x180017934
lea rbx, [r13 + 0x10]
mov r14, qword [r13 + 0x20]
movabs rax, 0xcbf29ce484222325
test r14, r14
je 0x180017993
xor ecx, ecx
nop dword [rax]
movzx edx, byte [rbx + rcx]
mov r8, rdx
not r8
mov r9d, r8d
and r9d, 0x56
mov r10d, edx
and r10d, 0xffffffa9
or r10d, r9d
xor r10d, eax
xor r10d, 0xa9
or r10, r8
and r10, rbp
not rax
or rax, rdx
xor rax, r12
xor rax, r10
imul rax, r15
inc rcx
cmp r14, rcx
jne 0x180017950
mov rcx, qword [r13]
mov qword [rsp + 0x20], rcx
mov rcx, rax
not rcx
mov rdx, rcx
movabs r9, 0xf240719121420314
and rdx, r9
mov r8, rax
movabs r10, 0x38000a12200003
and r8, r10
or r8, rdx
mov rdx, rax
movabs r10, 0x48302408c1cd0c8
and rdx, r10
movabs rsi, 0x9048c2440812c20
and rcx, rsi
or rdx, r9
or rdx, rcx
mov rcx, qword [r11 + 0x30]
or r8, r10
xor rdx, r8
mov r8, rcx
movabs r9, 0xf278719b33620317
and r8, r9
xor r8, rdx
mov rdx, rcx
movabs r9, 0xd878e64cc9dfce8
and rdx, r9
movabs r9, 0x9238010801020004
or rdx, r9
xor rdx, r8
mov r10, qword [r11 + 0x18]
or rcx, rax
mov rax, rdx
movabs r8, 0x6040709332600313
xor rax, r8
or rax, rcx
movabs r8, 0x1fbf8f6ccd9ffcec
xor rcx, r8
xor rcx, rdx
and rcx, rax
lea rax, [rcx + rcx]
lea rdx, [rcx*2 + 1]
shl rcx, 4
mov rsi, qword [r10 + rcx]
cmp rsi, rdi
je 0x180017900
mov qword [rsp + 0x38], r13
mov rdi, qword [r10 + rdx*8]
cmp r14, qword [rdi + 0x20]
mov r13, r10
mov rbp, rax
jne 0x180017b19
cmp qword [rdi + 0x28], 0x10
mov qword [rsp + 0x40], rdx
jb 0x180017a9a
mov rdx, qword [rdi + 0x10]
jmp 0x180017a9e
lea rdx, [rdi + 0x10]
mov rcx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov r10, r13
mov rax, rbp
mov r8, qword [rsp + 0x40]
jne 0x180017b19
mov rax, qword [rdi]
mov r11, qword [rsp + 0x38]
cmp rax, r11
mov r9, qword [rsp + 0x20]
je 0x180017af1
mov rcx, qword [r11 + 8]
mov qword [rcx], r9
mov rdx, qword [r9 + 8]
mov qword [rdx], rax
mov rsi, r8
mov r8, qword [rax + 8]
mov qword [r8], r11
mov qword [rax + 8], rdx
mov qword [r9 + 8], rcx
mov qword [r11 + 8], r8
mov r8, rsi
mov qword [r10 + r8*8], r11
jmp 0x180017bb0
mov rdx, qword [rdi + 0x10]
mov rcx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov r10, r13
mov rax, rbp
je 0x180017b74
cmp rsi, rdi
je 0x180017b40
mov rdi, qword [rdi + 8]
cmp r14, qword [rdi + 0x20]
jne 0x180017b19
cmp qword [rdi + 0x28], 0x10
jae 0x180017b00
lea rdx, [rdi + 0x10]
jmp 0x180017b04
mov r8, qword [rsp + 0x38]
mov r11, rax
mov rax, qword [r8 + 8]
mov r9, qword [rsp + 0x20]
mov qword [rax], r9
mov rcx, qword [r9 + 8]
mov qword [rcx], rsi
mov rdx, qword [rsi + 8]
mov qword [rdx], r8
mov qword [rsi + 8], rcx
mov qword [r9 + 8], rax
mov qword [r8 + 8], rdx
mov qword [r10 + r11*8], r8
jmp 0x180017bb0
mov rax, qword [rdi]
mov r10, qword [rsp + 0x38]
mov rcx, qword [r10 + 8]
mov r9, qword [rsp + 0x20]
mov qword [rcx], r9
mov rdx, qword [r9 + 8]
mov qword [rdx], rax
mov r8, qword [rax + 8]
mov qword [r8], r10
mov qword [rax + 8], rdx
mov qword [r9 + 8], rcx
mov qword [r10 + 8], r8
nop word cs:[rax + rax]
mov r11, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x28]
movabs rbp, 0x118020b7080026ff
cmp r9, rdi
jne 0x180017916
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movabs rcx, 0xf57db1eb6b3e8e3d
add rcx, qword [0x180046760]
call fcn.180031940
lea rcx, [0x180047bc8]
call sub.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const____ptr64_
int3