Function at 0x140196340
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, 0xa8
mov rsi, rcx
mov r15, qword [rdx + 0x18]
add r8, r15
jae 0x14019637a
mov cl, 1
call fcn.14017ae10
mov qword [rsi + 8], rax
mov qword [rsi + 0x10], rdx
mov qword [rsi], 1
jmp 0x140196484
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 0x1401963fb
add r13, 1
cmp r8, r13
cmova r13, r8
mov qword [rsp + 0x20], r13
lea rcx, [rsp + 0x50]
mov r8d, 0x30
mov r9d, 0x10
mov rdx, rdi
call fcn.140072e30
cmp dword [rsp + 0x50], 1
mov rcx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x60]
jne 0x14019649b
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rax
mov qword [rsi], 1
jmp 0x140196484
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 0x140196426
nop word [rax + rax]
add rax, 0xf
jb 0x14019644a
cmp rax, r12
jae 0x14019644a
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 0x140196420
jmp 0x140196426
cmp r12, 0x10
jae 0x1401966eb
lea rcx, [rdi + 0x10]
mov rdx, rdi
mov r8, r12
call sub.VCRUNTIME140.dll_memmove
test r12, r12
jne 0x1401966f5
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, 0xa8
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 + 0x68]
mov r14, qword [rsp + 0x70]
movups xmm0, xmmword [rsp + 0x78]
movaps xmmword [rsp + 0x90], 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 0x140196500
nop word [rax + rax]
lea r8d, [rdx - 1]
and r8d, edx
jmp 0x140196531
cmp rsi, r12
jae 0x140196990
movdqa xmm0, xmmword [rsi]
pmovmskb edx, xmm0
add rdi, 0xfffffffffffffd00
add rsi, 0x10
cmp dx, 0xffff
je 0x140196500
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*2]
shl rdx, 4
lea r13, [rdi + rdx]
add r13, 0xffffffffffffffd0
mov rdx, qword [rdi + rdx - 0x20]
movabs r15, 0xaf64724c8602eb6e
test rdx, rdx
je 0x140196634
mov rbp, qword [r13]
lea rbx, [rdx - 1]
mov r10d, edx
and r10d, 7
cmp rbx, 7
jae 0x140196584
movabs r9, 0xcbf29ce484222325
jmp 0x140196603
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 0x1401965a0
mov r15, r9
test r10, r10
je 0x140196629
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 0x140196610
xor r15, 0xff
imul r15, rcx
mov rdx, r15
and rdx, r11
movdqu xmm0, xmmword [r14 + rdx]
pmovmskb ebx, xmm0
test bx, bx
jne 0x140196669
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 0x140196650
bsf ax, bx
movzx ebp, ax
add rbp, rdx
and rbp, r11
cmp byte [r14 + rbp], 0
jns 0x1401966d9
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*2]
add rax, rbp
shl rax, 4
movdqu xmm0, xmmword [r13]
movdqu xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmmword [r14 + rax - 0x10], xmm2
movdqu xmmword [r14 + rax - 0x20], xmm1
movdqu xmmword [r14 + rax - 0x30], xmm0
mov edx, r8d
test dx, dx
jne 0x1401964f0
jmp 0x140196500
movdqa xmm0, xmmword [r14]
pmovmskb eax, xmm0
bsf ax, ax
movzx ebp, ax
jmp 0x14019667d
movdqu xmm0, xmmword [rdi]
movdqu xmmword [rdi + r12], xmm0
xor r11d, r11d
movabs r9, 0xaf64724c8602eb6e
movabs r8, 0xcbf29ce484222325
movabs rbx, 0x100000001b3
jmp 0x140196923
mov rdx, qword [r10 + 0x10]
mov rax, r9
test rdx, rdx
je 0x1401967e2
lea rax, [rdx - 1]
mov esi, edx
and esi, 7
mov rcx, r8
cmp rax, 7
jb 0x1401967b2
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 0x140196750
mov rax, rcx
test rsi, rsi
je 0x1401967d8
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 0x1401967c0
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 0x140196828
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 0x140196810
bsf cx, bp
movzx ebp, cx
add rbp, rsi
and rbp, r14
cmp byte [rdi + rbp], 0
jns 0x1401968dd
mov rsi, r11
sub rsi, rdx
mov rcx, rbp
sub rcx, rdx
xor rcx, rsi
and rcx, r14
cmp rcx, 0xf
jbe 0x140196900
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 0x14019694a
neg rbp
lea rax, [rbp*2]
add rax, rbp
shl rax, 4
movdqu xmm0, xmmword [rdi + rax - 0x30]
movups xmm1, xmmword [rdi + rax - 0x20]
movups xmm2, xmmword [r10]
movups xmm3, xmmword [r10 + 0x10]
movups xmmword [rdi + rax - 0x20], xmm3
movups xmmword [rdi + rax - 0x30], xmm2
movdqu xmmword [r10], xmm0
movups xmmword [r10 + 0x10], xmm1
movups xmm1, xmmword [rdi + rax - 0x10]
movaps xmmword [rsp + 0x50], xmm1
movups xmm1, xmmword [r10 + 0x20]
movups xmmword [rdi + rax - 0x10], xmm1
movdqa xmm1, xmmword [rsp + 0x50]
movdqu xmmword [r10 + 0x20], xmm1
movq rbp, xmm0
jmp 0x140196720
movdqa xmm0, xmmword [rdi]
pmovmskb ecx, xmm0
bsf cx, cx
movzx ebp, cx
jmp 0x14019683f
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 0x14019646c
cmp byte [rdi + r11], 0x80
jne 0x140196913
mov rax, r11
neg rax
lea rax, [rax + rax*2]
shl rax, 4
lea r10, [rdi + rax]
add r10, 0xffffffffffffffd0
mov rbp, qword [rdi + rax - 0x30]
jmp 0x140196720
lea rax, [r11 - 0x10]
and rax, r14
mov byte [rdi + r11], 0xff
mov byte [rax + rdi + 0x10], 0xff
neg rbp
lea rax, [rbp*2]
add rax, rbp
shl rax, 4
movdqu xmm0, xmmword [r10]
movdqu xmm1, xmmword [r10 + 0x10]
movups xmm2, xmmword [r10 + 0x20]
movups xmmword [rdi + rax - 0x10], xmm2
movdqu xmmword [rdi + rax - 0x20], xmm1
movdqu xmmword [rdi + rax - 0x30], xmm0
jmp 0x140196913
mov rax, qword [rsp + 0x30]
movdqu xmm0, xmmword [rax]
mov qword [rax], r11
mov qword [rax + 8], r14
movaps xmm1, xmmword [rsp + 0x90]
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 0x140196484
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 0x140196484
pshufd xmm0, xmm0, 0xee
movq rcx, xmm0
sub rcx, rax
mov rdx, rbx
call fcn.1400012f0
jmp 0x140196484