Function at 0x14008d851
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, 0x88
mov rbx, qword [rcx + 0x18]
mov rax, rbx
inc rax
je 0x14008dd87
mov rsi, rcx
mov r9, qword [rcx + 8]
lea r8, [r9 + 1]
mov rdx, r8
shr rdx, 3
mov rcx, r8
and rcx, 0xfffffffffffffff8
sub rcx, rdx
cmp r9, 8
cmovb rcx, r9
mov rdx, rcx
shr rdx, 1
cmp rax, rdx
jbe 0x14008d8cd
inc rcx
cmp rax, rcx
cmova rcx, rax
cmp rcx, 8
jae 0x14008d937
xor eax, eax
cmp rcx, 4
setae al
lea r8, [rax*4 + 4]
jmp 0x14008d987
mov rcx, r8
shr rcx, 4
xor eax, eax
test r8b, 0xf
setne al
mov rdx, qword [rsi]
add rax, rcx
je 0x14008d909
movdqa xmm0, xmmword [0x1402eaa10]
mov rcx, rdx
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rcx]
por xmm1, xmm0
movdqa xmmword [rcx], xmm1
add rcx, 0x10
dec rax
jne 0x14008d8f0
cmp r8, 0x10
mov qword [rsp + 0x28], r9
jae 0x14008db34
lea rcx, [rdx + 0x10]
call sub.msvcrt.dll_memmove
mov r9, qword [rsp + 0x28]
cmp r9, 0xffffffffffffffff
jne 0x14008db3e
xor eax, eax
jmp 0x14008dd01
mov rax, rcx
shr rax, 0x3d
jne 0x14008dd87
shl rcx, 3
mov r8d, 1
cmp rcx, 0xe
jb 0x14008d987
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 r8, 0xffffffffffffffff
shr r8, cl
inc r8
lea rdi, [rsp + 0x30]
mov edx, 0xa8
mov rcx, rdi
call fcn.1402da212
mov rdi, qword [rdi]
test rdi, rdi
je 0x14008dd14
lea r14, [rsi + 0x20]
mov r12, qword [rsp + 0x38]
mov r13, qword [rsp + 0x40]
mov r15, qword [rsp + 0x48]
lea r8, [r12 + 0x11]
mov rcx, rdi
mov dl, 0xff
call sub.msvcrt.dll_memset
lea rdx, [rsp + 0x68]
mov qword [rdx - 0x18], r14
mov qword [rdx - 0x10], 0xa8
mov qword [rdx - 8], 0x10
mov qword [rdx], rdi
mov qword [rdx + 8], r12
mov qword [rdx + 0x10], r13
mov qword [rdx + 0x18], r15
test rbx, rbx
je 0x14008dd1b
mov qword [rsp + 0x28], r13
movabs rbp, 0x100000001b3
mov r15, qword [rsi]
movdqa xmm0, xmmword [r15]
pmovmskb eax, xmm0
not eax
xor r14d, r14d
test ax, ax
jne 0x14008da38
movdqa xmm0, xmmword [r15 + 0x10]
add r15, 0x10
pmovmskb eax, xmm0
add r14, 0x10
cmp eax, 0xffff
je 0x14008da1d
not eax
bsf ecx, eax
add rcx, r14
mov rdx, qword [rsi]
mov r8, rcx
neg r8
imul r8, r8, 0xa8
movzx edx, word [rdx + r8 - 0xa8]
mov word [rsp + 0x30], dx
movabs rdx, 0xcbf29ce484222325
xor r8d, r8d
movzx r9d, byte [rsp + r8 + 0x30]
inc r8
xor rdx, r9
imul rdx, rbp
cmp r8, 2
jne 0x14008da69
mov r8, rdx
and r8, r12
movdqu xmm0, xmmword [rdi + r8]
pmovmskb r9d, xmm0
test r9d, r9d
jne 0x14008dab5
mov r10d, 0x10
add r8, r10
and r8, r12
movdqu xmm0, xmmword [rdi + r8]
pmovmskb r9d, xmm0
add r10, 0x10
test r9d, r9d
je 0x14008da9b
bsf r9d, r9d
add r9, r8
and r9, r12
cmp byte [rdi + r9], 0
js 0x14008dad3
movdqa xmm0, xmmword [rdi]
pmovmskb r8d, xmm0
bsf r9d, r8d
lea r13d, [rax - 1]
and r13d, 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, 0xa8
add rdx, qword [rsi]
dec rbx
not r9
imul rcx, r9, 0xa8
add rcx, rdi
mov r8d, 0xa8
call sub.msvcrt.dll_memcpy
mov eax, r13d
test rbx, rbx
jne 0x14008da18
mov rax, qword [rsi + 0x18]
lea rdx, [rsp + 0x68]
mov r13, qword [rsp + 0x28]
jmp 0x14008dd1d
movdqu xmm0, xmmword [rdx]
movdqu xmmword [rdx + r8], xmm0
movabs rbx, 0xcbf29ce484222325
movabs r14, 0x100000001b3
xor r15d, r15d
xor r12d, r12d
mov rcx, qword [rsi]
cmp byte [rcx + r12], 0x80
jne 0x14008dcc7
mov rax, r12
not rax
imul rdx, rax, 0xa8
add rdx, rcx
mov rax, r12
neg rax
lea r8, [rcx + r15]
imul r9, rax, 0xa8
movzx r9d, word [rcx + r9 - 0xa8]
mov word [rsp + 0x50], r9w
mov r9, rbx
xor r10d, r10d
movzx r11d, byte [rsp + r10 + 0x50]
inc r10
xor r9, r11
imul r9, r14
cmp r10, 2
jne 0x14008db9c
mov r10, qword [rsi + 8]
mov rbp, r10
and rbp, r9
movdqu xmm0, xmmword [rcx + rbp]
pmovmskb r13d, xmm0
mov r11, rbp
test r13d, r13d
jne 0x14008dbf0
mov edi, 0x10
mov r11, rbp
add r11, rdi
and r11, r10
movdqu xmm0, xmmword [rcx + r11]
pmovmskb r13d, xmm0
add rdi, 0x10
test r13d, r13d
je 0x14008dbd6
bsf r13d, r13d
add r13, r11
and r13, r10
cmp byte [rcx + r13], 0
js 0x14008dc0e
movdqa xmm0, xmmword [rcx]
pmovmskb r11d, xmm0
bsf r13d, r11d
mov r11, r12
sub r11, rbp
mov rdi, r13
sub rdi, rbp
xor rdi, r11
and rdi, r10
cmp rdi, 0x10
jb 0x14008dc75
mov r11b, byte [rcx + r13]
shr r9, 0x39
lea rdi, [r13 - 0x10]
and rdi, r10
mov byte [rcx + r13], r9b
mov r10, qword [rsi]
mov byte [rdi + r10 + 0x10], r9b
cmp r11b, 0xff
je 0x14008dc8f
imul r9, r13, 0xffffffffffffff58
add rcx, r9
mov r9, 0xffffffffffffff58
mov r10b, byte [r8 + r9]
mov r11b, byte [rcx + r9]
mov byte [r8 + r9], r11b
mov byte [rcx + r9], r10b
inc r9
jne 0x14008dc58
mov rcx, qword [rsi]
jmp 0x14008db80
shr r9, 0x39
lea rax, [r12 - 0x10]
and r10, rax
mov byte [rcx + r12], r9b
mov rax, qword [rsi]
mov byte [r10 + rax + 0x10], r9b
jmp 0x14008dcc2
not r13
imul rax, r13, 0xa8
add rcx, rax
lea rax, [r12 - 0x10]
and rax, qword [rsi + 8]
mov r8, qword [rsi]
mov r9b, 0xff
mov byte [r8 + r12], r9b
mov r8, qword [rsi]
mov byte [rax + r8 + 0x10], r9b
mov r8d, 0xa8
call sub.msvcrt.dll_memcpy
mov r9, qword [rsp + 0x28]
lea rax, [r12 + 1]
add r15, 0xffffffffffffff58
cmp r12, r9
mov r12, rax
jne 0x14008db58
mov rcx, qword [rsi + 8]
mov rbx, 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, rbx
movabs rdi, 0x8000000000000001
mov qword [rsi + 0x10], rax
jmp 0x14008dd70
mov rdi, qword [rsp + 0x38]
jmp 0x14008dd70
xor eax, eax
movabs rdi, 0x8000000000000001
sub r13, rax
lea rcx, [rsp + 0x50]
mov qword [rcx + 0x28], r13
mov qword [rcx + 0x30], rax
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movaps xmmword [rsp + 0x40], xmm1
movaps xmmword [rsp + 0x30], xmm0
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
movdqa xmm0, xmmword [rsp + 0x30]
movdqa xmm1, xmmword [rsp + 0x40]
movdqu xmmword [rdx + 0x10], xmm1
movdqu xmmword [rdx], xmm0
call fcn.14008b614
mov rax, rdi
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call fcn.1400b2b70
int3