Function at 0x140194a90
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 rsi, rcx
mov r15, qword [rdx + 0x18]
add r8, r15
jae 0x140194aca
mov cl, 1
call fcn.14017ae10
mov qword [rsi + 8], rax
mov qword [rsi + 0x10], rdx
mov qword [rsi], 1
jmp 0x140194bd4
mov rdi, rdx
mov r14, qword [rdx]
lea r12, [r14 + 1]
mov rax, r12
shr rax, 3
lea r13, [rax*8]
sub r13, rax
cmp r14, 8
cmovb r13, r14
mov rax, r13
shr rax, 1
cmp r8, rax
jbe 0x140194b4b
add r13, 1
cmp r8, r13
cmova r13, r8
mov qword [rsp + 0x20], r13
lea rcx, [rsp + 0x60]
mov r8d, 0x28
mov r9d, 0x10
mov rdx, rdi
call fcn.140072e30
cmp dword [rsp + 0x60], 1
mov rcx, qword [rsp + 0x68]
mov rax, qword [rsp + 0x70]
jne 0x140194beb
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rax
mov qword [rsi], 1
jmp 0x140194bd4
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rdi
mov rdi, qword [rdi + 8]
xor ecx, ecx
movdqa xmm0, xmmword [0x1401af880]
xor eax, eax
test cl, 1
je 0x140194b76
nop word [rax + rax]
add rax, 0xf
jb 0x140194b9a
cmp rax, r12
jae 0x140194b9a
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rdi + rax]
por xmm1, xmm0
movdqa xmmword [rdi + rax], xmm1
add rax, 1
mov cl, 1
test cl, 1
jne 0x140194b70
jmp 0x140194b76
cmp r12, 0x10
jae 0x140194e35
lea rcx, [rdi + 0x10]
mov rdx, rdi
mov r8, r12
call sub.VCRUNTIME140.dll_memmove
test r12, r12
jne 0x140194e3f
sub r13, r15
mov rax, qword [rsp + 0x30]
mov qword [rax + 0x10], r13
mov rsi, qword [rsp + 0x38]
mov qword [rsi], 0
mov rax, rsi
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x38], rsi
mov r11, qword [rsp + 0x78]
mov r14, qword [rsp + 0x80]
movups xmm0, xmmword [rsp + 0x88]
movaps xmmword [rsp + 0x50], xmm0
mov qword [rsp + 0x30], rdi
mov rdi, qword [rdi + 8]
add r12, rdi
movdqa xmm0, xmmword [rdi]
pmovmskb edx, xmm0
not edx
lea rsi, [rdi + 0x10]
movabs rcx, 0x100000001b3
test dx, dx
je 0x140194c50
nop dword [rax]
lea r8d, [rdx - 1]
and r8d, edx
jmp 0x140194c81
cmp rsi, r12
jae 0x1401950c7
movdqa xmm0, xmmword [rsi]
pmovmskb edx, xmm0
add rdi, 0xfffffffffffffd80
add rsi, 0x10
cmp dx, 0xffff
je 0x140194c50
mov ebp, 0xfffffffe
sub ebp, edx
not edx
mov r8d, edx
and r8d, ebp
bsf dx, dx
movzx edx, dx
neg rdx
lea rdx, [rdx + rdx*4]
lea r13, [rdi + rdx*8]
add r13, 0xffffffffffffffd8
mov rdx, qword [rdi + rdx*8 - 0x18]
movabs r15, 0xaf64724c8602eb6e
test rdx, rdx
je 0x140194d84
mov rbp, qword [r13]
lea rbx, [rdx - 1]
mov r10d, edx
and r10d, 7
cmp rbx, 7
jae 0x140194cd3
movabs r9, 0xcbf29ce484222325
jmp 0x140194d53
and rdx, 0xfffffffffffffff8
neg rdx
movabs r9, 0xcbf29ce484222325
nop word cs:[rax + rax]
nop
movzx ebx, byte [rbp]
xor rbx, r9
imul rbx, rcx
movzx eax, byte [rbp + 1]
xor rax, rbx
imul rax, rcx
movzx ebx, byte [rbp + 2]
xor rbx, rax
imul rbx, rcx
movzx eax, byte [rbp + 3]
xor rax, rbx
imul rax, rcx
movzx ebx, byte [rbp + 4]
xor rbx, rax
imul rbx, rcx
movzx eax, byte [rbp + 5]
xor rax, rbx
imul rax, rcx
movzx ebx, byte [rbp + 6]
xor rbx, rax
imul rbx, rcx
movzx r9d, byte [rbp + 7]
add rbp, 8
xor r9, rbx
imul r9, rcx
add rdx, 8
jne 0x140194cf0
mov r15, r9
test r10, r10
je 0x140194d79
xor edx, edx
nop dword [rax]
movzx r15d, byte [rbp + rdx]
xor r15, r9
imul r15, rcx
add rdx, 1
mov r9, r15
cmp r10, rdx
jne 0x140194d60
xor r15, 0xff
imul r15, rcx
mov rdx, r15
and rdx, r11
movdqu xmm0, xmmword [r14 + rdx]
pmovmskb ebx, xmm0
test bx, bx
jne 0x140194db9
mov ebp, 0x10
nop
add rdx, rbp
and rdx, r11
movdqu xmm0, xmmword [r14 + rdx]
pmovmskb ebx, xmm0
add rbp, 0x10
test bx, bx
je 0x140194da0
bsf ax, bx
movzx ebp, ax
add rbp, rdx
and rbp, r11
cmp byte [r14 + rbp], 0
jns 0x140194e23
shr r15, 0x39
lea rax, [rbp - 0x10]
and rax, r11
mov byte [r14 + rbp], r15b
mov byte [rax + r14 + 0x10], r15b
neg rbp
lea rax, [rbp*4]
add rax, rbp
mov rdx, qword [r13 + 0x20]
mov qword [r14 + rax*8 - 8], rdx
movdqu xmm0, xmmword [r13]
movdqu xmm1, xmmword [r13 + 0x10]
movdqu xmmword [r14 + rax*8 - 0x18], xmm1
movdqu xmmword [r14 + rax*8 - 0x28], xmm0
mov edx, r8d
test dx, dx
jne 0x140194c40
jmp 0x140194c50
movdqa xmm0, xmmword [r14]
pmovmskb eax, xmm0
bsf ax, ax
movzx ebp, ax
jmp 0x140194dcd
movdqu xmm0, xmmword [rdi]
movdqu xmmword [rdi + r12], xmm0
xor r11d, r11d
movabs r9, 0xaf64724c8602eb6e
movabs r8, 0xcbf29ce484222325
movabs rbx, 0x100000001b3
jmp 0x140195063
mov rdx, qword [r10 + 0x10]
mov rax, r9
test rdx, rdx
je 0x140194f32
lea rax, [rdx - 1]
mov esi, edx
and esi, 7
mov rcx, r8
cmp rax, 7
jb 0x140194f02
and rdx, 0xfffffffffffffff8
neg rdx
mov rcx, r8
nop dword [rax]
movzx eax, byte [rbp]
xor rax, rcx
imul rax, rbx
movzx ecx, byte [rbp + 1]
xor rcx, rax
imul rcx, rbx
movzx eax, byte [rbp + 2]
xor rax, rcx
imul rax, rbx
movzx ecx, byte [rbp + 3]
xor rcx, rax
imul rcx, rbx
movzx eax, byte [rbp + 4]
xor rax, rcx
imul rax, rbx
movzx ecx, byte [rbp + 5]
xor rcx, rax
imul rcx, rbx
movzx eax, byte [rbp + 6]
xor rax, rcx
imul rax, rbx
movzx ecx, byte [rbp + 7]
add rbp, 8
xor rcx, rax
imul rcx, rbx
add rdx, 8
jne 0x140194ea0
mov rax, rcx
test rsi, rsi
je 0x140194f28
xor edx, edx
nop dword [rax]
movzx eax, byte [rbp + rdx]
xor rax, rcx
imul rax, rbx
add rdx, 1
mov rcx, rax
cmp rsi, rdx
jne 0x140194f10
xor rax, 0xff
imul rax, rbx
mov rdx, r14
and rdx, rax
movdqu xmm0, xmmword [rdi + rdx]
pmovmskb ebp, xmm0
mov rsi, rdx
test bp, bp
jne 0x140194f78
mov ecx, 0x10
mov rsi, rdx
nop word cs:[rax + rax]
nop dword [rax + rax]
add rsi, rcx
and rsi, r14
movdqu xmm0, xmmword [rdi + rsi]
pmovmskb ebp, xmm0
add rcx, 0x10
test bp, bp
je 0x140194f60
bsf cx, bp
movzx ebp, cx
add rbp, rsi
and rbp, r14
cmp byte [rdi + rbp], 0
jns 0x14019501d
mov rsi, r11
sub rsi, rdx
mov rcx, rbp
sub rcx, rdx
xor rcx, rsi
and rcx, r14
cmp rcx, 0xf
jbe 0x140195040
mov cl, byte [rdi + rbp]
shr rax, 0x39
lea rdx, [rbp - 0x10]
and rdx, r14
mov byte [rdi + rbp], al
mov byte [rdx + rdi + 0x10], al
cmp cl, 0xff
je 0x140195086
neg rbp
lea rax, [rbp*4]
add rax, rbp
movdqu xmm0, xmmword [rdi + rax*8 - 0x28]
movdqu xmm1, xmmword [rdi + rax*8 - 0x18]
movups xmm2, xmmword [r10]
movups xmm3, xmmword [r10 + 0x10]
movups xmmword [rdi + rax*8 - 0x18], xmm3
movups xmmword [rdi + rax*8 - 0x28], xmm2
movdqu xmmword [r10], xmm0
movdqu xmmword [r10 + 0x10], xmm1
mov rcx, qword [rdi + rax*8 - 8]
mov rdx, qword [r10 + 0x20]
mov qword [rdi + rax*8 - 8], rdx
mov qword [r10 + 0x20], rcx
movq rbp, xmm0
jmp 0x140194e70
movdqa xmm0, xmmword [rdi]
pmovmskb ecx, xmm0
bsf cx, cx
movzx ebp, cx
jmp 0x140194f8f
shr rax, 0x39
lea rcx, [r11 - 0x10]
and rcx, r14
mov byte [rdi + r11], al
mov byte [rcx + rdi + 0x10], al
lea rax, [r11 + 1]
cmp r11, r14
mov r11, rax
je 0x140194bbc
cmp byte [rdi + r11], 0x80
jne 0x140195053
mov rax, r11
neg rax
lea rax, [rax + rax*4]
lea r10, [rdi + rax*8]
add r10, 0xffffffffffffffd8
mov rbp, qword [rdi + rax*8 - 0x28]
jmp 0x140194e70
lea rax, [r11 - 0x10]
and rax, r14
mov byte [rdi + r11], 0xff
mov byte [rax + rdi + 0x10], 0xff
neg rbp
lea rax, [rbp*4]
add rax, rbp
mov rcx, qword [r10 + 0x20]
mov qword [rdi + rax*8 - 8], rcx
movdqu xmm0, xmmword [r10]
movdqu xmm1, xmmword [r10 + 0x10]
movdqu xmmword [rdi + rax*8 - 0x18], xmm1
movdqu xmmword [rdi + rax*8 - 0x28], xmm0
jmp 0x140195053
mov rax, qword [rsp + 0x30]
movdqu xmm0, xmmword [rax]
mov qword [rax], r11
mov qword [rax + 8], r14
movaps xmm1, xmmword [rsp + 0x50]
movups xmmword [rax + 0x10], xmm1
mov rsi, qword [rsp + 0x38]
mov qword [rsi], 0
movq rbx, xmm0
test rbx, rbx
mov r8, qword [rsp + 0x48]
je 0x140194bd4
lea rcx, [rbx + 1]
mov rax, qword [rsp + 0x40]
mul rcx
lea rcx, [r8 + rax]
add rcx, 0xffffffffffffffff
mov rax, r8
neg rax
and rax, rcx
add rbx, rax
add rbx, 0x11
je 0x140194bd4
pshufd xmm0, xmm0, 0xee
movq rcx, xmm0
sub rcx, rax
mov rdx, rbx
call fcn.1400012f0
jmp 0x140194bd4