Function at 0x18016ae00
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
lea rbp, [rsp - 0x47]
sub rsp, 0xe0
mov rax, qword [0x180428208]
xor rax, rsp
mov qword [rbp + 0x17], rax
movzx esi, r8b
mov rbx, rdx
mov r11, rcx
test r8b, r8b
je 0x18016ae31
xor ecx, ecx
jmp 0x18016ae35
mov rcx, qword [rcx + 0x10]
mov rax, qword [r11 + 0x60]
test rax, rax
je 0x18016b182
movups xmm0, xmmword [rax + 0x10]
mov qword [rsp + 0x108], rdi
movups xmm2, xmmword [rax]
mov qword [rsp + 0x110], r14
movups xmm1, xmmword [rax + 0x20]
movups xmmword [rbp - 0x59], xmm0
movups xmm0, xmmword [rax + 0x30]
movq rax, xmm2
movdqu xmmword [rbp - 0x69], xmm2
xor rax, rcx
movaps xmmword [rsp + 0xd0], xmm6
lea rcx, [rbp - 0x69]
mov qword [rbp - 0x69], rax
movaps xmmword [rsp + 0xc0], xmm7
movups xmmword [rbp - 0x49], xmm1
movups xmmword [rbp - 0x39], xmm0
call fcn.18016b360
movdqu xmm4, xmmword [rbp - 0x69]
lea r14, [0x18037df50]
movdqu xmm5, xmmword [rbp - 0x59]
xor edi, edi
movdqu xmm6, xmmword [rbp - 0x49]
movdqa xmm1, xmm5
movdqu xmm7, xmmword [rbp - 0x39]
movdqu xmm0, xmmword [rbx]
xorps xmm0, xmm4
movdqu xmmword [rbp - 0x69], xmm0
movdqu xmm0, xmmword [rbx + 0x10]
xorps xmm1, xmm0
movdqu xmm0, xmmword [rbx + 0x20]
movdqu xmmword [rbp - 0x59], xmm1
movdqa xmm1, xmm6
xorps xmm1, xmm0
movdqu xmm0, xmmword [rbx + 0x30]
movdqu xmmword [rbp - 0x49], xmm1
movdqa xmm1, xmm7
xorps xmm1, xmm0
movdqu xmmword [rbp - 0x39], xmm1
movdqu xmm0, xmmword [rdi + r14]
lea rcx, [rbp - 0x29]
xorps xmm0, xmm4
movdqu xmmword [rbp - 0x29], xmm0
movdqu xmm0, xmmword [rdi + r14 + 0x10]
xorps xmm0, xmm5
movdqu xmmword [rbp - 0x19], xmm0
movdqu xmm0, xmmword [rdi + r14 + 0x20]
xorps xmm0, xmm6
movdqu xmmword [rbp - 9], xmm0
movdqu xmm0, xmmword [rdi + r14 + 0x30]
xorps xmm0, xmm7
movdqu xmmword [rbp + 7], xmm0
call fcn.18016b360
lea rcx, [rbp - 0x69]
call fcn.18016b360
movdqu xmm4, xmmword [rbp - 0x29]
add rdi, 0x40
movdqu xmm5, xmmword [rbp - 0x19]
movdqa xmm0, xmm4
movdqu xmm6, xmmword [rbp - 9]
movdqa xmm1, xmm5
movdqu xmm7, xmmword [rbp + 7]
movdqa xmm2, xmm6
xorps xmm0, xmmword [rbp - 0x69]
movdqa xmm3, xmm7
xorps xmm1, xmmword [rbp - 0x59]
xorps xmm2, xmmword [rbp - 0x49]
xorps xmm3, xmmword [rbp - 0x39]
movdqu xmmword [rbp - 0x69], xmm0
movdqu xmmword [rbp - 0x59], xmm1
movdqu xmmword [rbp - 0x49], xmm2
movdqu xmmword [rbp - 0x39], xmm3
cmp rdi, 0x300
jb 0x18016aef3
mov rdx, qword [r11 + 0x60]
movq rax, xmm0
movaps xmm7, xmmword [rsp + 0xc0]
movaps xmm6, xmmword [rsp + 0xd0]
mov r14, qword [rsp + 0x110]
mov rcx, qword [rdx]
xor rcx, qword [rbx]
mov rdi, qword [rsp + 0x108]
xor rcx, rax
mov qword [rdx], rcx
mov rdx, qword [r11 + 0x60]
psrldq xmm0, 8
movq rax, xmm0
mov rcx, qword [rdx + 8]
xor rcx, qword [rbx + 8]
xor rcx, rax
movq rax, xmm1
mov qword [rdx + 8], rcx
xor rax, qword [rbx + 0x10]
mov rcx, qword [r11 + 0x60]
psrldq xmm1, 8
xor qword [rcx + 0x10], rax
movq rax, xmm1
mov rcx, qword [r11 + 0x60]
xor rax, qword [rcx + 0x18]
xor rax, qword [rbx + 0x18]
mov qword [rcx + 0x18], rax
movq rax, xmm2
xor rax, qword [rbx + 0x20]
mov rcx, qword [r11 + 0x60]
psrldq xmm2, 8
xor qword [rcx + 0x20], rax
movq rax, xmm2
mov rcx, qword [r11 + 0x60]
xor rax, qword [rcx + 0x28]
xor rax, qword [rbx + 0x28]
mov qword [rcx + 0x28], rax
movq rax, xmm3
mov rcx, qword [r11 + 0x60]
psrldq xmm3, 8
xor rax, qword [rcx + 0x30]
xor rax, qword [rbx + 0x30]
mov qword [rcx + 0x30], rax
movq rax, xmm3
mov rdx, qword [r11 + 0x60]
mov rcx, qword [rdx + 0x38]
xor rcx, qword [rbx + 0x38]
xor rcx, rax
mov qword [rdx + 0x38], rcx
test sil, sil
jne 0x18016b16b
mov r8, qword [rbx]
xor eax, eax
mov rdx, qword [r11 + 0x78]
mov r9, qword [rdx]
add r9, r8
mov qword [rdx], r9
cmp r9, r8
je 0x18016b096
setb al
mov r8, qword [rbx + 8]
mov rcx, qword [r11 + 0x78]
lea rdx, [r8 + rax]
add rdx, qword [rcx + 8]
mov qword [rcx + 8], rdx
cmp rdx, r8
je 0x18016b0b7
xor eax, eax
cmp rdx, r8
setb al
mov r8, qword [rbx + 0x10]
mov rcx, qword [r11 + 0x78]
lea rdx, [r8 + rax]
add rdx, qword [rcx + 0x10]
mov qword [rcx + 0x10], rdx
cmp rdx, r8
je 0x18016b0d8
xor eax, eax
cmp rdx, r8
setb al
mov r8, qword [rbx + 0x18]
mov rcx, qword [r11 + 0x78]
lea rdx, [r8 + rax]
add rdx, qword [rcx + 0x18]
mov qword [rcx + 0x18], rdx
cmp rdx, r8
je 0x18016b0f9
xor eax, eax
cmp rdx, r8
setb al
mov r8, qword [rbx + 0x20]
mov rcx, qword [r11 + 0x78]
lea rdx, [r8 + rax]
add rdx, qword [rcx + 0x20]
mov qword [rcx + 0x20], rdx
cmp rdx, r8
je 0x18016b11a
xor eax, eax
cmp rdx, r8
setb al
mov r8, qword [rbx + 0x28]
mov rcx, qword [r11 + 0x78]
lea rdx, [r8 + rax]
add rdx, qword [rcx + 0x28]
mov qword [rcx + 0x28], rdx
cmp rdx, r8
je 0x18016b13b
xor eax, eax
cmp rdx, r8
setb al
mov r8, qword [rbx + 0x30]
mov rcx, qword [r11 + 0x78]
lea rdx, [r8 + rax]
add rdx, qword [rcx + 0x30]
mov qword [rcx + 0x30], rdx
cmp rdx, r8
je 0x18016b15c
xor eax, eax
cmp rdx, r8
setb al
mov rdx, qword [rbx + 0x38]
mov r8, qword [r11 + 0x78]
add rdx, rax
add qword [r8 + 0x38], rdx
mov rcx, qword [rbp + 0x17]
xor rcx, rsp
call fcn.1800a5910
add rsp, 0xe0
pop rsi
pop rbx
pop rbp
ret
lea r9, [0x1803e49b0]
mov dword [rsp + 0x20], 0x7b
lea r8, str.copy_mem
lea rdx, str.If_n___0_then_args_are_not_null
lea rcx, str.n___0_implies_in___nullptr__out___nullptr
call fcn.1800d1f70
int3