Function at 0x180001ef0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rdi
push r13
push r15
sub rsp, 0x78
mov rax, qword [0x18001c008]
xor rax, rsp
mov qword [rsp + 0x58], rax
movsxd r13, dword [rsp + 0xc0]
mov r15, r9
mov qword [rsp + 0x28], rcx
mov rdi, rdx
mov rbx, rcx
test rcx, rcx
je 0x180002209
test rdx, rdx
je 0x180002209
test r9, r9
je 0x180002209
test r13d, r13d
je 0x180002209
mov rcx, r13
call fcn.180005210
mov qword [rsp + 0x40], rax
mov r8, rax
test rax, rax
je 0x180002209
lea eax, [r13 + 0xf]
mov qword [rsp + 0x70], rsi
cdq
mov qword [rsp + 0x60], r14
and edx, 0xf
mov r14, r8
add eax, edx
sar eax, 4
dec eax
mov ecx, eax
shl ecx, 4
sub r13d, ecx
mov dword [rsp + 0x20], r13d
test eax, eax
jle 0x1800020c4
mov qword [rsp + 0xb0], rbp
lea rbx, [r8 + 0xf]
mov qword [rsp + 0x68], r12
lea rbp, [rdi + 0xf]
mov r12, r15
mov r13d, eax
sub r12, rdi
mov rcx, 0xfffffffffffffff1
sub rcx, rdi
sub r12, r8
mov rsi, r15
mov qword [rsp + 0x38], rcx
sub rsi, r8
mov qword [rsp + 0x30], rsi
jmp 0x180001fd5
mov rsi, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x28]
lea r8, [rsp + 0x48]
mov rdx, rdi
call fcn.1800018d0
lea rax, [rsp + 0x57]
cmp rdi, rax
ja 0x180001ffb
lea rax, [rsp + 0x48]
cmp rbp, rax
jae 0x180002031
cmp rdi, rbx
ja 0x180002005
cmp rbp, r14
jae 0x180002031
lea rax, [rsi + rbx]
cmp rdi, rax
ja 0x180002013
cmp rbp, r15
jae 0x180002031
lea rcx, [rsp + 0x57]
cmp r14, rcx
ja 0x180002027
lea rcx, [rsp + 0x48]
cmp rbx, rcx
jae 0x180002031
cmp r14, rax
ja 0x180002075
cmp rbx, r15
jb 0x180002075
mov rbp, qword [rsp + 0x38]
lea rsi, [rsp + 0x48]
sub rsi, rdi
mov rdx, rdi
mov r8d, 0x10
nop word [rax + rax]
lea rax, [rdx + r12]
movzx ecx, byte [rax + rbx - 0xf]
lea rax, [rbx + rbp]
mov byte [rdx], cl
xor cl, byte [rsi + rdx]
mov byte [rax + rdx], cl
lea rdx, [rdx + 1]
sub r8, 1
jne 0x180002050
lea rbp, [rdi + 0xf]
jmp 0x180002095
movdqu xmm1, xmmword [r15]
movdqu xmm0, xmmword [rsp + 0x48]
movdqu xmmword [rdi], xmm1
pxor xmm1, xmm0
movdqu xmmword [r14], xmm1
lea rsi, [rsp + 0x48]
sub rsi, rdi
add r15, 0x10
add r14, 0x10
add rbx, 0x10
sub r13, 1
jne 0x180001fd0
mov r13d, dword [rsp + 0x20]
mov rbx, qword [rsp + 0x28]
mov r12, qword [rsp + 0x68]
mov rbp, qword [rsp + 0xb0]
jmp 0x1800020cc
lea rsi, [rsp + 0x48]
sub rsi, rdi
test r13d, r13d
je 0x1800021f8
lea r8, [rsp + 0x48]
mov rdx, rdi
mov rcx, rbx
call fcn.1800018d0
xor edx, edx
test r13d, r13d
jle 0x1800021bc
cmp r13d, 0x10
jb 0x1800021bc
lea eax, [r13 - 1]
movsxd rcx, eax
lea r10, [rsp + 0x48]
add r10, rcx
lea r8, [rcx + rdi]
cmp rdi, r10
ja 0x180002120
lea rax, [rsp + 0x48]
cmp r8, rax
jae 0x1800021bc
lea rax, [rcx + r14]
cmp rdi, rax
ja 0x180002132
cmp r8, r14
jae 0x1800021bc
lea r9, [rcx + r15]
cmp rdi, r9
ja 0x180002144
cmp r8, r15
jae 0x1800021bc
cmp r14, r10
ja 0x180002153
lea rcx, [rsp + 0x48]
cmp rax, rcx
jae 0x1800021bc
cmp r14, r9
ja 0x18000215d
cmp rax, r15
jae 0x1800021bc
mov ecx, r13d
and ecx, 0x8000000f
jge 0x18000216f
dec ecx
or ecx, 0xfffffff0
inc ecx
mov eax, r13d
lea r9, [rsp + 0x48]
sub eax, ecx
mov r8, r15
sub r8, rdi
movsxd r11, eax
sub r9, rdi
mov r10, r14
sub r10, rdi
mov rcx, rdi
nop
movdqu xmm1, xmmword [r8 + rcx]
add edx, 0x10
movdqu xmm0, xmmword [r9 + rcx]
movdqu xmmword [rcx], xmm1
pxor xmm0, xmm1
movdqu xmmword [r10 + rcx], xmm0
add rcx, 0x10
mov rax, rcx
sub rax, rdi
cmp rax, r11
jl 0x180002190
movsxd rax, edx
movsxd rdx, r13d
cmp rax, rdx
jge 0x1800021f8
sub r15, rdi
lea rcx, [rax + rdi]
sub r14, rdi
sub rdx, rax
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [r15 + rcx]
mov byte [rcx], al
xor al, byte [rsi + rcx]
mov byte [r14 + rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1800021e0
mov rax, qword [rsp + 0x40]
mov r14, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x70]
jmp 0x18000220b
xor eax, eax
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.180002400
add rsp, 0x78
pop r15
pop r13
pop rdi
pop rbx
ret