Function at 0x14002ed70
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 0x14002f081
mov r14, rcx
add rdx, 0xffffffffffffffff
or rdx, 1
bsr rcx, rdx
xor ecx, 0x3f
neg cl
mov esi, 1
shl rsi, cl
lea rcx, [r14 + 0x18]
mov rdi, qword [r14 + 8]
lea rdx, [rsi + rsi]
mov r8, rdi
call fcn.14002e3e0
lea rax, [rsi - 1]
mov qword [r14 + 0x30], rax
mov qword [r14 + 0x38], rsi
mov rax, qword [r14 + 8]
mov rbp, qword [rax]
mov qword [rsp + 0x38], rdi
cmp rbp, rdi
je 0x14002f070
movabs rdi, 0x100000001b3
mov qword [rsp + 0x20], r14
jmp 0x14002ee13
mov qword [rcx + rsi*8], r8
mov qword [rcx + rdx*8], r8
cmp rbp, qword [rsp + 0x38]
je 0x14002f070
mov r8, rbp
cmp qword [rbp + 0x28], 0x10
jb 0x14002ee30
mov rbx, qword [r8 + 0x10]
jmp 0x14002ee34
lea rbx, [r8 + 0x10]
mov r15, qword [r8 + 0x20]
movabs rdx, 0xcbf29ce484222325
test r15, r15
je 0x14002eef7
lea rcx, [r15 - 1]
mov eax, r15d
and eax, 3
cmp rcx, 3
jae 0x14002ee70
xor ecx, ecx
movabs rbp, 0xcbf29ce484222325
jmp 0x14002eec8
mov rsi, r15
and rsi, 0xfffffffffffffffc
xor ecx, ecx
movabs rbp, 0xcbf29ce484222325
nop word cs:[rax + rax]
nop dword [rax]
movzx edx, byte [rbx + rcx]
xor rdx, rbp
imul rdx, rdi
movzx ebp, byte [rbx + rcx + 1]
xor rbp, rdx
imul rbp, rdi
movzx edx, byte [rbx + rcx + 2]
xor rdx, rbp
imul rdx, rdi
movzx ebp, byte [rbx + rcx + 3]
xor rbp, rdx
imul rbp, rdi
add rcx, 4
cmp rsi, rcx
jne 0x14002ee90
mov rdx, rbp
test rax, rax
je 0x14002eef7
add rcx, rbx
xor esi, esi
nop word cs:[rax + rax]
nop
movzx edx, byte [rcx + rsi]
xor rdx, rbp
imul rdx, rdi
add rsi, 1
mov rbp, rdx
cmp rax, rsi
jne 0x14002eee0
mov rbp, qword [r8]
and rdx, qword [r14 + 0x30]
mov rcx, qword [r14 + 0x18]
lea rsi, [rdx + rdx]
mov rax, rdx
shl rax, 4
add rdx, rdx
add rdx, 1
mov r12, qword [rcx + rax]
cmp r12, qword [rsp + 0x38]
je 0x14002ee00
mov qword [rsp + 0x28], r8
mov qword [rsp + 0x30], rbp
mov r14, qword [rcx + rdx*8]
cmp r15, qword [r14 + 0x20]
mov rbp, rsi
mov r13, rcx
jne 0x14002efc9
cmp qword [r14 + 0x28], 0x10
mov qword [rsp + 0x40], rdx
jb 0x14002ef53
mov rdx, qword [r14 + 0x10]
jmp 0x14002ef57
lea rdx, [r14 + 0x10]
mov rcx, rbx
mov r8, r15
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov rsi, rbp
mov rcx, r13
mov rdx, qword [rsp + 0x40]
jne 0x14002efc9
mov rax, qword [r14]
mov rsi, qword [rsp + 0x28]
cmp rax, rsi
mov rbp, qword [rsp + 0x30]
je 0x14002efa4
mov r8, qword [rsi + 8]
mov qword [r8], rbp
mov r9, qword [rbp + 8]
mov qword [r9], rax
mov rbx, qword [rax + 8]
mov qword [rbx], rsi
mov qword [rax + 8], r9
mov qword [rbp + 8], r8
mov qword [rsi + 8], rbx
mov qword [rcx + rdx*8], rsi
jmp 0x14002f060
mov rdx, qword [r14 + 0x10]
mov rcx, rbx
mov r8, r15
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov rsi, rbp
mov rcx, r13
je 0x14002f023
cmp r12, r14
je 0x14002eff0
mov r14, qword [r14 + 8]
cmp r15, qword [r14 + 0x20]
jne 0x14002efc9
cmp qword [r14 + 0x28], 0x10
jae 0x14002efb0
lea rdx, [r14 + 0x10]
jmp 0x14002efb4
mov rax, qword [rsp + 0x28]
mov r8, qword [rax + 8]
mov rbp, qword [rsp + 0x30]
mov qword [r8], rbp
mov rbx, qword [rbp + 8]
mov qword [rbx], r12
mov rdx, qword [r12 + 8]
mov qword [rdx], rax
mov qword [r12 + 8], rbx
mov qword [rbp + 8], r8
mov qword [rax + 8], rdx
mov qword [rcx + rsi*8], rax
jmp 0x14002f060
mov rax, qword [r14]
mov rsi, qword [rsp + 0x28]
mov rcx, qword [rsi + 8]
mov rbp, qword [rsp + 0x30]
mov qword [rcx], rbp
mov rdx, qword [rbp + 8]
mov qword [rdx], rax
mov rbx, qword [rax + 8]
mov qword [rbx], rsi
mov qword [rax + 8], rdx
mov qword [rbp + 8], rcx
mov qword [rsi + 8], rbx
nop word cs:[rax + rax]
nop dword [rax + rax]
mov r14, qword [rsp + 0x20]
cmp rbp, qword [rsp + 0x38]
jne 0x14002ee13
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, str.invalid_hash_bucket_count
call sub.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const____ptr64_
int3