Function at 0x140016a50
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov dword [rsp + 0x24], r9d
mov r14, r8
mov r15, rdx
mov rsi, rcx
mov rdi, qword [rsp + 0x90]
mov rax, qword [rsp + 0x98]
mov r12, qword [r8]
mov r13, qword [r8 + 0x60]
xor ebx, ebx
tzcnt rbx, r13
xor ebp, ebp
tzcnt rbp, r12
mov dword [rcx + 0x10c], eax
mov rcx, rax
shr rcx, 0x30
mov byte [rsi + 0x112], cl
shr rax, 0x20
mov word [rsi + 0x110], ax
mov rdx, qword [rsi + 8]
test rdx, rdx
je 0x140016acc
mov rcx, qword [rsi]
shl rdx, 3
mov r8d, 8
call fcn.140001c70
vmovups ymm0, ymmword [r15]
vmovups ymmword [rsi], ymm0
vmovups ymm0, ymmword [r14]
vmovups ymm1, ymmword [r14 + 0x20]
vmovups ymm2, ymmword [r14 + 0x40]
vmovups ymm3, ymmword [r14 + 0x58]
vmovups ymmword [rsi + 0x40], ymm0
vmovups ymmword [rsi + 0x60], ymm1
vmovups ymmword [rsi + 0x80], ymm2
vmovups ymmword [rsi + 0x98], ymm3
vmovups xmm0, xmmword [rdi]
vmovups xmmword [rsi + 0xb8], xmm0
mov r15d, dword [rsp + 0x24]
mov word [rsi + 0x108], r15w
mov r8, rbx
mov byte [rsi + 0x10a], r8b
mov byte [rsi + 0x10b], bpl
mov qword [rsi + 0x38], 0
vxorps xmm0, xmm0, xmm0
vmovups ymmword [rsi + 0xe8], ymm0
vmovups ymmword [rsi + 0xc8], ymm0
mov rax, qword [r14 + 0x38]
test rax, rax
je 0x140016b7c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 1
jne 0x140016b60
mov rax, qword [r14 + 0x28]
test rax, rax
je 0x140016bac
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 0xff
jne 0x140016b90
mov rax, qword [r14 + 0x40]
test rax, rax
je 0x140016bdc
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 2
jne 0x140016bc0
mov rax, qword [r14 + 0x20]
test rax, rax
je 0x140016c0c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 0xfe
jne 0x140016bf0
mov rax, qword [r14 + 0x48]
test rax, rax
je 0x140016c3c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 3
jne 0x140016c20
mov rax, qword [r14 + 0x18]
test rax, rax
je 0x140016c6c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 0xfd
jne 0x140016c50
mov rax, qword [r14 + 0x50]
test rax, rax
je 0x140016c9c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 4
jne 0x140016c80
mov rax, qword [r14 + 0x10]
test rax, rax
je 0x140016ccc
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 0xfc
jne 0x140016cb0
mov rax, qword [r14 + 0x58]
test rax, rax
je 0x140016cfc
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 5
jne 0x140016ce0
mov rax, qword [r14 + 8]
test rax, rax
je 0x140016d2c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, rax
mov edx, 1
shl rdx, cl
xor rax, rdx
mov byte [rsi + rcx + 0xc8], 0xfb
jne 0x140016d10
test r13, r13
je 0x140016d5c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, r13
mov eax, 1
shl rax, cl
xor r13, rax
mov byte [rsi + rcx + 0xc8], 6
jne 0x140016d40
test r12, r12
je 0x140016d8c
nop word cs:[rax + rax]
xor ecx, ecx
tzcnt rcx, r12
mov eax, 1
shl rax, cl
xor r12, rax
mov byte [rsi + rcx + 0xc8], 0xfa
jne 0x140016d70
lea rdx, [rsi + 0x40]
lea rax, [rsi + 0xb8]
lea rdi, [0x140eb94e8]
xor ebx, ebx
mov r10, rdi
xor ecx, ecx
jmp 0x140016dc2
add rbx, 4
add r10, 0x20
cmp rbx, 0x40
je 0x140016e4f
movzx r11d, byte [rsi + rbx + 0xc8]
test r11b, r11b
je 0x140016de0
add r11b, 6
movsx r11, r11b
shl r11, 9
xor rcx, qword [r10 + r11]
movzx r11d, byte [rsi + rbx + 0xc9]
test r11b, r11b
je 0x140016e02
add r11b, 6
movsx r11, r11b
shl r11, 9
add r11, rdi
xor rcx, qword [r11 + rbx*8 + 8]
movzx r11d, byte [rsi + rbx + 0xca]
test r11b, r11b
je 0x140016e24
add r11b, 6
movsx r11, r11b
shl r11, 9
add r11, rdi
xor rcx, qword [r11 + rbx*8 + 0x10]
movzx r11d, byte [rsi + rbx + 0xcb]
test r11b, r11b
je 0x140016db0
add r11b, 6
movsx r11, r11b
shl r11, 9
add r11, rdi
xor rcx, qword [r11 + rbx*8 + 0x18]
jmp 0x140016db0
movabs r10, 0x190ca349285594ea
xor r10, rcx
test r15b, 1
cmove r10, rcx
movzx ecx, byte [rsi + 0xc2]
lea r11, [0x140eb9468]
xor r10, qword [r11 + rcx*8]
movabs rcx, 0x610c50f8e4754049
xor rcx, r10
mov qword [rsi + 0xb8], rcx
movzx r10d, word [rsi + 0xc0]
test r10w, r10w
je 0x140016eab
tzcnt r10d, r10d
lea r11, [0x140eb93e8]
xor rcx, qword [r11 + r10*8]
mov qword [rax], rcx
mov rcx, qword [rsi + 0x20]
mov r9d, ebp
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
vzeroupper
jmp fcn.1400231c0