Function at 0x140099967
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, 0x98
mov ebx, r9d
mov r15, qword [rcx + 0x18]
add rdx, r15
jae 0x140099992
mov ecx, ebx
call fcn.14008b7c0
jmp 0x140099eb6
mov rsi, rcx
mov rdi, qword [rcx + 8]
lea r8, [rdi + 1]
mov rax, r8
shr rax, 3
mov rcx, r8
and rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rdi, 8
cmovb rcx, rdi
mov rax, rcx
shr rax, 1
cmp rdx, rax
jbe 0x1400999e7
inc rcx
cmp rdx, rcx
cmova rcx, rdx
cmp rcx, 8
jae 0x140099a3f
xor eax, eax
cmp rcx, 4
setae al
lea rdx, [rax*4 + 4]
jmp 0x140099c93
mov rcx, r8
shr rcx, 4
xor eax, eax
test r8b, 0xf
setne al
mov rdx, qword [rsi]
add rax, rcx
je 0x140099a23
movdqa xmm0, xmmword [0x14009d860]
mov rcx, rdx
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rcx]
por xmm1, xmm0
movdqa xmmword [rcx], xmm1
add rcx, 0x10
dec rax
jne 0x140099a0a
cmp r8, 0x10
jae 0x140099a97
lea rcx, [rdx + 0x10]
call sub.VCRUNTIME140.dll_memmove
cmp rdi, 0xffffffffffffffff
jne 0x140099aa1
xor eax, eax
jmp 0x140099c63
mov rax, rcx
shr rax, 0x3d
jne 0x140099c79
shl rcx, 3
mov edx, 1
cmp rcx, 0xe
jb 0x140099c93
movabs rdx, 0x2492492492492493
mov rax, rcx
mul rdx
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 2
dec rcx
bsr rcx, rcx
not ecx
mov rdx, 0xffffffffffffffff
shr rdx, cl
inc rdx
jmp 0x140099c93
movdqu xmm0, xmmword [rdx]
movdqu xmmword [rdx + r8], xmm0
xor ebx, ebx
movabs r14, 0xaf64724c8602eb6e
movabs r12, 0x100000001b3
xor r13d, r13d
mov qword [rsp + 0x38], rdi
mov rcx, qword [rsi]
cmp byte [rcx + r13], 0x80
jne 0x140099c2d
mov rax, r13
not rax
imul rdx, rax, 0x58
add rdx, rcx
mov rax, r13
neg rax
lea r8, [rcx + rbx]
imul r11, rax, 0x58
mov r10, qword [rcx + r11 - 0x48]
mov r9, r14
test r10, r10
je 0x140099b25
mov r11, qword [rcx + r11 - 0x50]
xor edi, edi
movabs r9, 0xcbf29ce484222325
movzx r15d, byte [r11 + rdi]
xor r9, r15
imul r9, r12
inc rdi
cmp r10, rdi
jne 0x140099b06
xor r9, 0xff
imul r9, r12
mov r10, qword [rsi + 8]
mov rdi, r10
and rdi, r9
movdqu xmm0, xmmword [rcx + rdi]
pmovmskb ebp, xmm0
mov r11, rdi
test ebp, ebp
jne 0x140099b60
mov r15d, 0x10
mov r11, rdi
add r11, r15
and r11, r10
movdqu xmm0, xmmword [rcx + r11]
pmovmskb ebp, xmm0
add r15, 0x10
test ebp, ebp
je 0x140099b48
bsf ebp, ebp
add rbp, r11
and rbp, r10
cmp byte [rcx + rbp], 0
js 0x140099b7c
movdqa xmm0, xmmword [rcx]
pmovmskb r11d, xmm0
bsf ebp, r11d
mov r11, r13
sub r11, rdi
mov r15, rbp
sub r15, rdi
xor r15, r11
and r15, r10
cmp r15, 0x10
jb 0x140099be0
mov r11b, byte [rcx + rbp]
shr r9, 0x39
lea rdi, [rbp - 0x10]
and rdi, r10
mov byte [rcx + rbp], r9b
mov r10, qword [rsi]
mov byte [rdi + r10 + 0x10], r9b
cmp r11b, 0xff
je 0x140099bf9
imul r9, rbp, 0xffffffffffffffa8
add rcx, r9
mov r9, 0xffffffffffffffa8
mov r10b, byte [r8 + r9]
mov r11b, byte [rcx + r9]
mov byte [r8 + r9], r11b
mov byte [rcx + r9], r10b
inc r9
jne 0x140099bc3
mov rcx, qword [rsi]
jmp 0x140099ae4
shr r9, 0x39
lea rax, [r13 - 0x10]
and r10, rax
mov byte [rcx + r13], r9b
mov rax, qword [rsi]
mov byte [r10 + rax + 0x10], r9b
jmp 0x140099c28
not rbp
imul rax, rbp, 0x58
add rcx, rax
lea rax, [r13 - 0x10]
and rax, qword [rsi + 8]
mov r8, qword [rsi]
mov r9b, 0xff
mov byte [r8 + r13], r9b
mov r8, qword [rsi]
mov byte [rax + r8 + 0x10], r9b
mov r8d, 0x58
call sub.VCRUNTIME140.dll_memcpy
mov rdi, qword [rsp + 0x38]
lea rax, [r13 + 1]
add rbx, 0xffffffffffffffa8
cmp r13, rdi
mov r13, rax
jne 0x140099abf
mov rcx, qword [rsi + 8]
mov r15, qword [rsi + 0x18]
lea rax, [rcx + 1]
mov rdx, rax
shr rdx, 3
and rax, 0xfffffffffffffff8
sub rax, rdx
cmp rcx, 8
cmovb rax, rcx
sub rax, r15
mov qword [rsi + 0x10], rax
movabs rax, 0x8000000000000001
jmp 0x140099eb6
mov ecx, ebx
call fcn.14008b7c0
movabs rcx, 0x8000000000000001
cmp rax, rcx
jne 0x140099eb6
lea r14, [rsi + 0x20]
mov byte [rsp + 0x28], bl
mov qword [rsp + 0x20], rdx
lea rdi, [rsp + 0x78]
mov r8d, 0x58
mov r9d, 0x10
mov rcx, rdi
mov rdx, r14
call fcn.1400237b4
mov rdi, qword [rdi]
test rdi, rdi
je 0x140099e5f
mov r12, qword [rsp + 0x80]
mov r13, qword [rsp + 0x88]
mov rbx, qword [rsp + 0x90]
lea r8, [r12 + 0x11]
mov rcx, rdi
mov dl, 0xff
call sub.VCRUNTIME140.dll_memset
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x48], 0x58
mov qword [rsp + 0x50], 0x10
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x70], rbx
test r15, r15
je 0x140099e71
mov qword [rsp + 0x38], r13
mov r14, qword [rsi]
movdqa xmm0, xmmword [r14]
pmovmskb eax, xmm0
not eax
xor r13d, r13d
movabs rbx, 0x100000001b3
test ax, ax
jne 0x140099d63
movdqa xmm0, xmmword [r14 + 0x10]
add r14, 0x10
pmovmskb eax, xmm0
add r13, 0x10
cmp eax, 0xffff
je 0x140099d48
not eax
bsf ecx, eax
add rcx, r13
mov r9, qword [rsi]
mov rdx, rcx
neg rdx
imul r10, rdx, 0x58
mov r8, qword [r9 + r10 - 0x48]
movabs rdx, 0xaf64724c8602eb6e
test r8, r8
je 0x140099dbb
mov r9, qword [r9 + r10 - 0x50]
xor r10d, r10d
movabs rdx, 0xcbf29ce484222325
movzx r11d, byte [r9 + r10]
xor rdx, r11
imul rdx, rbx
inc r10
cmp r8, r10
jne 0x140099d9c
xor rdx, 0xff
imul rdx, rbx
mov r8, rdx
and r8, r12
movdqu xmm0, xmmword [rdi + r8]
pmovmskb r9d, xmm0
test r9d, r9d
jne 0x140099df1
mov r10d, 0x10
add r8, r10
and r8, r12
movdqu xmm0, xmmword [rdi + r8]
pmovmskb r9d, xmm0
add r10, 0x10
test r9d, r9d
je 0x140099dd7
bsf r9d, r9d
add r9, r8
and r9, r12
cmp byte [rdi + r9], 0
js 0x140099e0f
movdqa xmm0, xmmword [rdi]
pmovmskb r8d, xmm0
bsf r9d, r8d
lea ebp, [rax - 1]
and ebp, eax
shr rdx, 0x39
lea rax, [r9 - 0x10]
and rax, r12
mov byte [rdi + r9], dl
mov byte [rax + rdi + 0x10], dl
not rcx
imul rdx, rcx, 0x58
add rdx, qword [rsi]
dec r15
not r9
imul rcx, r9, 0x58
add rcx, rdi
mov r8d, 0x58
call sub.VCRUNTIME140.dll_memcpy
mov eax, ebp
test r15, r15
jne 0x140099d43
mov rax, qword [rsi + 0x18]
mov r13, qword [rsp + 0x38]
jmp 0x140099e73
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
jmp 0x140099eb6
xor eax, eax
sub r13, rax
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x70], rax
xor eax, eax
mov rcx, qword [rsi + rax*8]
mov rdx, qword [rsp + rax*8 + 0x58]
mov qword [rsi + rax*8], rdx
mov qword [rsp + rax*8 + 0x58], rcx
inc rax
cmp rax, 4
jne 0x140099e82
lea rcx, [rsp + 0x40]
call fcn.140004606
movabs rax, 0x8000000000000001
mov edx, 0x10
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret