Function at 0x14016e5f0
Capabilities:
Encode data using xor

Disassembly:
test rcx, rcx
je 0x14016ed0b
mov eax, 0x18
call fcn.1400dc2c0
sub rsp, rax
test rdx, rdx
je 0x14016ed07
test r8, r8
je 0x14016ed07
mov qword [rsp], r15
mov r15d, dword [r8 + 0x110]
lea eax, [r15 - 0xc]
test eax, 0xfffffff9
jne 0x14016ed03
cmp r15d, 0x12
je 0x14016ed03
movzx eax, byte [rcx + 1]
movzx r9d, byte [rcx + 8]
movzx r10d, byte [rcx + 0xc]
mov qword [rsp + 0x20], rbx
mov qword [rsp + 0x30], rsi
movzx esi, byte [rcx]
mov qword [rsp + 0x38], rdi
movzx edi, byte [rcx + 4]
shl esi, 8
xor esi, eax
shl edi, 8
movzx eax, byte [rcx + 2]
shl r9d, 8
shl r10d, 8
shl esi, 8
xor esi, eax
mov qword [rsp + 0x10], r12
movzx eax, byte [rcx + 3]
lea r12, [0x1400b1000]
shl esi, 8
xor esi, eax
mov qword [rsp + 8], r14
movzx eax, byte [rcx + 5]
lea r14, [r8 + 0x10]
xor esi, dword [r8]
xor edi, eax
movzx eax, byte [rcx + 6]
shl edi, 8
xor edi, eax
movzx eax, byte [rcx + 7]
shl edi, 8
xor edi, eax
movzx eax, byte [rcx + 9]
xor edi, dword [r8 + 4]
xor r9d, eax
movzx eax, byte [rcx + 0xa]
shl r9d, 8
xor r9d, eax
movzx eax, byte [rcx + 0xb]
shl r9d, 8
xor r9d, eax
movzx eax, byte [rcx + 0xd]
xor r9d, dword [r8 + 8]
xor r10d, eax
movzx eax, byte [rcx + 0xe]
shl r10d, 8
xor r10d, eax
movzx eax, byte [rcx + 0xf]
shl r10d, 8
xor r10d, eax
mov eax, r9d
xor r10d, dword [r8 + 0xc]
shr eax, 0x10
movzx ecx, al
mov eax, r9d
shr eax, 8
mov r8d, r9d
shr r8, 0x18
mov ebx, dword [r12 + r8*4 + 0x1d61a0]
xor ebx, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
movzx eax, r9b
mov r8d, r10d
shr r8, 0x18
xor ebx, dword [r12 + rcx*4 + 0x1d69a0]
xor ebx, dword [r12 + rax*4 + 0x1d6da0]
mov eax, r10d
shr eax, 0x10
mov r11d, dword [r12 + r8*4 + 0x1d61a0]
movzx ecx, al
mov eax, r10d
shr eax, 8
mov r8d, edi
shr r8, 0x18
xor r11d, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
movzx eax, r10b
xor r11d, dword [r12 + rcx*4 + 0x1d69a0]
xor r11d, dword [r12 + rax*4 + 0x1d6da0]
mov eax, edi
shr eax, 0x10
mov r9d, dword [r12 + r8*4 + 0x1d61a0]
movzx ecx, al
mov eax, edi
shr eax, 8
mov r8d, esi
shr r8, 0x18
xor r9d, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
movzx eax, dil
mov r10d, dword [r12 + r8*4 + 0x1d61a0]
xor r9d, dword [r12 + rcx*4 + 0x1d69a0]
xor r9d, dword [r12 + rax*4 + 0x1d6da0]
mov eax, esi
xor r9d, ebx
shr eax, 0x10
movzx ecx, al
mov eax, esi
shr eax, 8
xor r10d, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
movzx eax, sil
mov esi, r11d
xor r11d, ebx
xor esi, r9d
bswap esi
xor r10d, dword [r12 + rcx*4 + 0x1d69a0]
xor r10d, dword [r12 + rax*4 + 0x1d6da0]
xor r10d, r9d
xor r11d, r10d
xor r9d, r11d
mov ebx, r11d
shr ebx, 0x10
mov edi, r9d
and edi, 0xffff00ff
shr r9d, 8
shl edi, 8
and r9d, 0xff00ff
xor edi, r9d
shl r11d, 0x10
or ebx, r11d
xor edi, ebx
xor ebx, esi
xor r10d, edi
xor esi, edi
xor esi, dword [r14 + 0xc]
xor ebx, r10d
xor r10d, dword [r14]
mov eax, ebx
xor eax, dword [r14 + 4]
xor ebx, dword [r14 + 8]
xor edi, eax
add r14, 0x10
sub r15d, 2
je 0x14016eafe
mov qword [rsp + 0x28], rbp
nop dword [rax + rax]
mov eax, ebx
mov r8d, ebx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
shr r8, 0x18
mov ebp, dword [r12 + r8*4 + 0x1d69a0]
xor ebp, dword [r12 + rcx*4 + 0x1d6da0]
movzx ecx, al
mov r8d, esi
movzx eax, bl
shr r8, 0x18
xor ebp, dword [r12 + rcx*4 + 0x1d61a0]
xor ebp, dword [r12 + rax*4 + 0x1d65a0]
mov eax, esi
mov r11d, dword [r12 + r8*4 + 0x1d69a0]
shr eax, 0x10
movzx ecx, al
mov eax, esi
shr eax, 8
mov r8d, edi
shr r8, 0x18
xor r11d, dword [r12 + rcx*4 + 0x1d6da0]
movzx ecx, al
movzx eax, sil
mov r9d, dword [r12 + r8*4 + 0x1d69a0]
mov r8d, r10d
xor r11d, dword [r12 + rcx*4 + 0x1d61a0]
xor r11d, dword [r12 + rax*4 + 0x1d65a0]
mov eax, edi
shr eax, 0x10
movzx ecx, al
mov eax, edi
shr eax, 8
shr r8, 0x18
xor r9d, dword [r12 + rcx*4 + 0x1d6da0]
movzx ecx, al
mov esi, dword [r12 + r8*4 + 0x1d69a0]
movzx eax, dil
xor r9d, dword [r12 + rcx*4 + 0x1d61a0]
xor r9d, dword [r12 + rax*4 + 0x1d65a0]
mov eax, r10d
xor r9d, ebp
shr eax, 0x10
movzx ecx, al
xor ebp, r11d
mov eax, r10d
xor r11d, r9d
shr eax, 8
xor esi, dword [r12 + rcx*4 + 0x1d6da0]
movzx ecx, al
movzx eax, r10b
mov r10d, r11d
and r10d, 0xffff00ff
shr r11d, 8
shl r10d, 8
and r11d, 0xff00ff
xor esi, dword [r12 + rcx*4 + 0x1d61a0]
xor r10d, r11d
xor esi, dword [r12 + rax*4 + 0x1d65a0]
xor esi, r9d
xor ebp, esi
ror esi, 0x10
mov ebx, ebp
xor ebx, r9d
bswap ebx
xor ebx, ebp
xor ebp, r10d
xor esi, ebx
xor r10d, ebx
xor r10d, dword [r14 + 0xc]
xor ebp, esi
xor esi, dword [r14]
mov eax, ebp
xor eax, dword [r14 + 4]
xor ebp, dword [r14 + 8]
xor ebx, eax
mov r8d, ebp
mov eax, ebp
shr r8, 0x18
mov edi, dword [r12 + r8*4 + 0x1d61a0]
shr eax, 0x10
movzx ecx, al
mov eax, ebp
shr eax, 8
mov r8d, r10d
shr r8, 0x18
xor edi, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
movzx eax, bpl
mov r11d, dword [r12 + r8*4 + 0x1d61a0]
mov r8d, ebx
xor edi, dword [r12 + rcx*4 + 0x1d69a0]
xor edi, dword [r12 + rax*4 + 0x1d6da0]
mov eax, r10d
shr eax, 0x10
movzx ecx, al
mov eax, r10d
shr eax, 8
shr r8, 0x18
xor r11d, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
mov r9d, dword [r12 + r8*4 + 0x1d61a0]
movzx eax, r10b
mov r8d, esi
xor r11d, dword [r12 + rcx*4 + 0x1d69a0]
shr r8, 0x18
xor r11d, dword [r12 + rax*4 + 0x1d6da0]
mov eax, ebx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
mov r10d, dword [r12 + r8*4 + 0x1d61a0]
shr eax, 8
xor r9d, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
movzx eax, bl
xor r9d, dword [r12 + rcx*4 + 0x1d69a0]
xor r9d, dword [r12 + rax*4 + 0x1d6da0]
mov eax, esi
xor r9d, edi
shr eax, 0x10
movzx ecx, al
mov eax, esi
shr eax, 8
xor r10d, dword [r12 + rcx*4 + 0x1d65a0]
movzx ecx, al
movzx eax, sil
mov esi, r11d
xor r11d, edi
xor esi, r9d
bswap esi
xor r10d, dword [r12 + rcx*4 + 0x1d69a0]
xor r10d, dword [r12 + rax*4 + 0x1d6da0]
xor r10d, r9d
xor r11d, r10d
xor r9d, r11d
mov ebx, r11d
shr ebx, 0x10
mov edi, r9d
and edi, 0xffff00ff
shr r9d, 8
shl edi, 8
and r9d, 0xff00ff
xor edi, r9d
shl r11d, 0x10
or ebx, r11d
xor edi, ebx
xor ebx, esi
xor r10d, edi
xor esi, edi
xor esi, dword [r14 + 0x1c]
xor ebx, r10d
xor r10d, dword [r14 + 0x10]
mov eax, ebx
xor eax, dword [r14 + 0x14]
xor ebx, dword [r14 + 0x18]
xor edi, eax
add r14, 0x20
sub r15d, 2
jne 0x14016e860
mov rbp, qword [rsp + 0x28]
mov eax, r10d
shr eax, 0x10
movzx eax, al
mov eax, dword [r12 + rax*4 + 0x1d6da0]
shr eax, 8
movzx r11d, al
mov eax, r10d
shr rax, 0x18
movzx eax, byte [r12 + rax*4 + 0x1d69a0]
shl eax, 8
or r11d, eax
mov eax, r10d
shr eax, 8
movzx ecx, al
shl r11d, 8
movzx eax, byte [r12 + rcx*4 + 0x1d61a0]
or r11d, eax
movzx eax, r10b
shl r11d, 8
movzx eax, byte [r12 + rax*4 + 0x1d65a0]
or r11d, eax
mov eax, edi
shr eax, 0x10
movzx eax, al
xor r11d, dword [r14]
mov eax, dword [r12 + rax*4 + 0x1d6da0]
shr eax, 8
movzx r10d, al
mov eax, edi
shr rax, 0x18
movzx eax, byte [r12 + rax*4 + 0x1d69a0]
shl eax, 8
or r10d, eax
mov eax, edi
shr eax, 8
movzx ecx, al
shl r10d, 8
movzx eax, byte [r12 + rcx*4 + 0x1d61a0]
or r10d, eax
movzx eax, dil
shl r10d, 8
movzx eax, byte [r12 + rax*4 + 0x1d65a0]
or r10d, eax
mov eax, ebx
xor r10d, dword [r14 + 4]
shr eax, 0x10
movzx eax, al
mov eax, dword [r12 + rax*4 + 0x1d6da0]
shr eax, 8
movzx r9d, al
mov eax, ebx
shr rax, 0x18
movzx eax, byte [r12 + rax*4 + 0x1d69a0]
shl eax, 8
or r9d, eax
mov eax, ebx
shr eax, 8
movzx ecx, al
shl r9d, 8
movzx eax, byte [r12 + rcx*4 + 0x1d61a0]
or r9d, eax
movzx eax, bl
shl r9d, 8
movzx eax, byte [r12 + rax*4 + 0x1d65a0]
or r9d, eax
mov eax, esi
xor r9d, dword [r14 + 8]
shr eax, 0x10
movzx eax, al
mov eax, dword [r12 + rax*4 + 0x1d6da0]
shr eax, 8
movzx r8d, al
mov eax, esi
shr rax, 0x18
movzx eax, byte [r12 + rax*4 + 0x1d69a0]
shl eax, 8
or r8d, eax
mov eax, esi
shl r8d, 8
shr eax, 8
movzx ecx, al
movzx eax, byte [r12 + rcx*4 + 0x1d61a0]
mov rdi, qword [rsp + 0x38]
or r8d, eax
mov rbx, qword [rsp + 0x20]
shl r8d, 8
movzx eax, sil
mov rsi, qword [rsp + 0x30]
movzx eax, byte [r12 + rax*4 + 0x1d65a0]
mov r12, qword [rsp + 0x10]
or r8d, eax
xor r8d, dword [r14 + 0xc]
mov eax, r11d
mov r14, qword [rsp + 8]
shr eax, 0x18
mov byte [rdx], al
mov eax, r11d
shr eax, 0x10
mov byte [rdx + 1], al
mov eax, r11d
shr eax, 8
mov byte [rdx + 2], al
mov eax, r10d
shr eax, 0x18
mov byte [rdx + 4], al
mov eax, r10d
shr eax, 0x10
mov byte [rdx + 5], al
mov eax, r10d
shr eax, 8
mov byte [rdx + 6], al
mov eax, r9d
shr eax, 0x18
mov byte [rdx + 8], al
mov eax, r9d
shr eax, 0x10
mov byte [rdx + 9], al
mov eax, r9d
shr eax, 8
mov byte [rdx + 0xa], al
mov eax, r8d
shr eax, 0x18
mov byte [rdx + 0xc], al
mov eax, r8d
shr eax, 0x10
mov byte [rdx + 0xd], al
mov eax, r8d
shr eax, 8
mov byte [rdx + 0xe], al
mov byte [rdx + 3], r11b
mov byte [rdx + 7], r10b
mov byte [rdx + 0xb], r9b
mov byte [rdx + 0xf], r8b
mov r15, qword [rsp]
add rsp, 0x18
ret