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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x20
mov rdx, qword [rcx + 0x10]
mov rsi, rcx
add rdx, 1
mov rdi, qword [rcx + 0x38]
xorps xmm0, xmm0
js 0x1400ecf4c
cvtsi2ss xmm0, rdx
divss xmm0, dword [rcx]
call sub.api_ms_win_crt_private_l1_1_0.dll__o_ceilf
movss xmm1, dword [0x1403bd01c]
xor ecx, ecx
comiss xmm0, xmm1
jb 0x1400ecce9
subss xmm0, xmm1
comiss xmm0, xmm1
jae 0x1400ecce9
movabs rax, 0x8000000000000000
mov rcx, rax
cvttss2si rax, xmm0
add rax, rcx
mov ecx, 8
cmp rax, rcx
cmova rcx, rax
cmp rdi, rcx
jae 0x1400ecd1c
cmp rdi, 0x200
jae 0x1400ecf66
shl rdi, 3
cmp rdi, rcx
jb 0x1400ecf66
movabs rax, 0xfffffffffffffff
bsr rcx, rax
mov eax, 1
shl rax, cl
cmp rdi, rax
ja 0x1400ecf6e
mov rbp, qword [rsi + 0x20]
lea rax, [rdi - 1]
mov rdi, qword [rsi + 0x18]
or rax, 1
mov rbx, qword [rsi + 8]
sub rbp, rdi
bsr rcx, rax
mov r15d, 1
sar rbp, 3
inc ecx
shl r15, cl
lea r14, [r15 + r15]
cmp rbp, r14
jae 0x1400ece90
mov rcx, r14
call fcn.1400d9bd0
mov rcx, rax
call fcn.1400daac0
xor r12d, r12d
mov rdi, rax
test rbp, rbp
je 0x1400ecdab
mov rcx, qword [rsi + 0x18]
lea rdx, [rbp*8]
cmp rdx, 0x1000
jae 0x1400ecf22
call fcn.1401568b4
lea rax, [rdi + r14*8]
mov qword [rsi + 0x18], rdi
mov qword [rsi + 0x20], rax
mov qword [rsi + 0x28], rax
jmp 0x1400ecdc4
mov qword [rdi], rbx
add rdi, 8
cmp rdi, rax
jne 0x1400ecdbd
lea rax, [r15 - 1]
mov qword [rsi + 0x38], r15
mov qword [rsi + 0x30], rax
mov rax, qword [rsi + 8]
mov rax, qword [rax]
mov rcx, rax
cmp rax, rbx
je 0x1400ece36
mov rcx, qword [rcx]
movabs rdi, 0xcbf29ce484222325
mov r8, r12
movzx edx, byte [r8 + rax + 0x10]
movabs r9, 0x100000001b3
xor rdi, rdx
inc r8
imul rdi, r9
cmp r8, 8
jb 0x1400ecdf4
mov r9, qword [rsi + 0x30]
mov r10, qword [rsi + 0x18]
and r9, rdi
add r9, r9
cmp qword [r10 + r9*8], rbx
jne 0x1400ece4e
mov qword [r10 + r9*8], rax
mov qword [r10 + r9*8 + 8], rax
mov rax, rcx
jmp 0x1400ecddf
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret
mov rdx, qword [r10 + r9*8 + 8]
mov rdi, qword [rax + 0x10]
cmp rdi, qword [rdx + 0x10]
je 0x1400ecef0
lea r11, [rdx + 8]
cmp qword [r10 + r9*8], rdx
jne 0x1400ecebe
mov r8, qword [rax + 8]
mov qword [r8], rcx
mov rdi, qword [rcx + 8]
mov qword [rdi], rdx
mov rdx, qword [r11]
mov qword [rdx], rax
mov qword [r11], rdi
mov qword [rcx + 8], r8
mov qword [rax + 8], rdx
mov qword [r10 + r9*8], rax
jmp 0x1400ece31
mov rcx, qword [rsi + 0x20]
xor r12d, r12d
sub rcx, rdi
add rcx, 7
shr rcx, 3
cmp rdi, qword [rsi + 0x20]
cmova rcx, r12
test rcx, rcx
je 0x1400ecdc9
mov rax, rbx
rep stosq qword [rdi], rax
jmp 0x1400ecdc9
mov rdx, qword [r11]
cmp rdi, qword [rdx + 0x10]
jne 0x1400ece61
mov r9, qword [rdx]
mov r8, qword [rax + 8]
mov qword [r8], rcx
mov rdi, qword [rcx + 8]
mov qword [rdi], r9
mov rdx, qword [r9 + 8]
mov qword [rdx], rax
mov qword [r9 + 8], rdi
mov qword [rcx + 8], r8
mov qword [rax + 8], rdx
jmp 0x1400ece31
mov r11, qword [rdx]
cmp r11, rax
je 0x1400ece2c
mov r8, qword [rax + 8]
mov qword [r8], rcx
mov rdi, qword [rcx + 8]
mov qword [rdi], r11
mov rdx, qword [r11 + 8]
mov qword [rdx], rax
mov qword [r11 + 8], rdi
mov qword [rcx + 8], r8
mov qword [rax + 8], rdx
jmp 0x1400ece2c
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x1400ecf3f
mov rcx, r8
jmp 0x1400ecda6
call qword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o__invalid_parameter_noinfo_noreturn]
nop dword [rax + rax]
int3
mov rax, rdx
and edx, 1
shr rax, 1
or rax, rdx
cvtsi2ss xmm0, rax
addss xmm0, xmm0
jmp 0x1400eccbb
mov rdi, rcx
jmp 0x1400ecd1c
lea rcx, str.invalid_hash_bucket_count
call qword [sym.imp.msvcp_win.dll_void___cdecl_std::_Xlength_error_char_const____ptr64_]
nop dword [rax + rax]
int3