Function at 0x180001700
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r14
push r15
sub rsp, 0x30
mov rbp, r8
mov r15, rcx
cmp r9d, 1
jne 0x180001828
mov r14d, dword [rcx + 0x14]
mov qword [rsp + 0x50], r12
mov r12d, dword [rcx + 0x10]
cmp r8, 8
jb 0x18000180a
lea rsi, [rdx + 7]
shr rbp, 3
nop word [rax + rax]
movzx eax, byte [rsi - 5]
mov rdi, rsi
movzx r8d, byte [rsi - 7]
movzx ecx, byte [rsi - 4]
movzx edx, byte [rsi - 6]
shl eax, 8
or ecx, eax
shl edx, 0x10
movzx eax, byte [rsi - 2]
shl eax, 8
shl r8d, 0x18
or ecx, r8d
or ecx, edx
movzx edx, byte [rsi - 3]
mov dword [rsp + 0x20], ecx
movzx ecx, byte [rsi - 1]
or ecx, eax
shl edx, 0x18
movzx eax, byte [rsi]
shl ecx, 8
or ecx, eax
or ecx, edx
lea rdx, [rsp + 0x20]
mov dword [rsp + 0x24], ecx
mov rcx, r15
mov rbx, qword [rsp + 0x20]
call fcn.1800012c0
xor r14d, dword [rsp + 0x24]
add rsi, 8
xor r12d, dword [rsp + 0x20]
mov eax, r14d
shr eax, 8
mov byte [rdi], r14b
mov byte [rsi - 9], al
mov eax, r14d
shr eax, 0x10
mov byte [rsi - 0xa], al
mov eax, r12d
shr eax, 8
shr r14d, 0x18
mov byte [rsi - 0xd], al
mov eax, r12d
mov byte [rsi - 0xb], r14b
mov r14, rbx
mov byte [rsi - 0xc], r12b
shr r12d, 0x18
shr eax, 0x10
shr r14, 0x20
mov byte [rsi - 0xf], r12b
mov r12d, ebx
mov byte [rsi - 0xe], al
sub rbp, 1
jne 0x180001750
mov r12, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
add rsp, 0x30
pop r15
pop r14
pop rdi
ret
cmp r9d, 2
jne 0x18000190d
mov eax, dword [rcx + 0x10]
mov dword [rsp + 0x28], eax
mov eax, dword [rcx + 0x14]
mov dword [rsp + 0x2c], eax
cmp rbp, 8
jb 0x18000180f
lea r14, [rdx + 7]
shr rbp, 3
nop
movzx eax, byte [r14 - 5]
mov rsi, r14
movzx edx, byte [r14 - 7]
movzx ecx, byte [r14 - 6]
movzx ebx, byte [r14 - 4]
movzx edi, byte [r14 - 1]
shl eax, 8
or ebx, eax
shl ecx, 0x10
movzx eax, byte [r14 - 2]
shl edx, 0x18
shl eax, 8
or ebx, edx
or edi, eax
lea rdx, [rsp + 0x28]
movzx eax, byte [r14]
or ebx, ecx
movzx ecx, byte [r14 - 3]
shl ecx, 0x18
shl edi, 8
or edi, eax
mov dword [rsp + 0x20], ebx
or edi, ecx
mov rcx, r15
mov dword [rsp + 0x24], edi
call fcn.180001ce0
xor edi, dword [rsp + 0x2c]
add r14, 8
mov rax, qword [rsp + 0x20]
mov ecx, dword [rsp + 0x28]
mov qword [rsp + 0x28], rax
xor ecx, ebx
mov eax, edi
mov byte [rsi], dil
shr eax, 8
mov byte [r14 - 9], al
mov eax, edi
shr eax, 0x10
mov byte [r14 - 0xa], al
mov eax, ecx
shr eax, 8
mov byte [r14 - 0xd], al
mov eax, ecx
shr eax, 0x10
shr edi, 0x18
mov byte [r14 - 0xc], cl
shr ecx, 0x18
mov byte [r14 - 0xb], dil
mov byte [r14 - 0xe], al
mov byte [r14 - 0xf], cl
sub rbp, 1
jne 0x180001850
jmp 0x18000180f
cmp rbp, 8
jb 0x18000180f
lea rbx, [rdx + 7]
shr rbp, 3
nop
movzx eax, byte [rbx - 5]
mov rdi, rbx
movzx r8d, byte [rbx - 7]
movzx ecx, byte [rbx - 4]
movzx edx, byte [rbx - 6]
shl eax, 8
or ecx, eax
shl edx, 0x10
movzx eax, byte [rbx - 2]
shl eax, 8
shl r8d, 0x18
or ecx, r8d
or ecx, edx
movzx edx, byte [rbx - 3]
mov dword [rsp + 0x20], ecx
movzx ecx, byte [rbx - 1]
or ecx, eax
shl edx, 0x18
movzx eax, byte [rbx]
shl ecx, 8
or ecx, eax
or ecx, edx
lea rdx, [rsp + 0x20]
mov dword [rsp + 0x24], ecx
mov rcx, r15
call fcn.1800012c0
mov ecx, dword [rsp + 0x24]
add rbx, 8
movzx eax, byte [rsp + 0x24]
mov byte [rdi], al
mov eax, ecx
shr eax, 8
mov byte [rbx - 9], al
mov eax, ecx
shr eax, 0x10
mov byte [rbx - 0xa], al
movzx eax, byte [rsp + 0x20]
shr ecx, 0x18
mov byte [rbx - 0xc], al
mov byte [rbx - 0xb], cl
mov ecx, dword [rsp + 0x20]
mov eax, ecx
shr eax, 8
mov byte [rbx - 0xd], al
mov eax, ecx
shr eax, 0x10
shr ecx, 0x18
mov byte [rbx - 0xe], al
mov byte [rbx - 0xf], cl
sub rbp, 1
jne 0x180001920
jmp 0x18000180f