Function at 0x18013a920
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x78
lea rbp, [rsp + 0x70]
mov qword [rbp], 0xfffffffffffffffe
mov qword [rbp - 8], r8
cmp rdx, 2
jb 0x18013ae4e
mov rsi, rdx
lea rax, [rdx + 0x10]
cmp rax, r9
ja 0x18013ae64
mov rbx, rsi
shr rbx, 1
mov rdi, rbx
shl rdi, 5
lea r14, [rcx + rdi]
mov rdx, qword [rbp - 8]
add rdi, rdx
cmp rsi, 7
mov qword [rbp - 0x20], rcx
mov qword [rbp - 0x28], r14
jbe 0x18013a9a0
mov rdx, qword [rbp - 8]
call fcn.18013a6e0
mov rcx, r14
mov rdx, rdi
call fcn.18013a6e0
mov rdx, qword [rbp - 8]
mov ecx, 4
jmp 0x18013a9c3
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rdx + 0x10], xmm1
movups xmmword [rdx], xmm0
movups xmm0, xmmword [r14]
movups xmm1, xmmword [r14 + 0x10]
movups xmmword [rdi + 0x10], xmm1
movups xmmword [rdi], xmm0
mov ecx, 1
mov qword [rbp - 0x40], rsi
sub rsi, rbx
mov qword [rbp - 0x48], rsi
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x10], rcx
cmp rcx, rbx
jae 0x18013ab4a
mov rsi, qword [rbp - 0x10]
mov eax, esi
shl eax, 5
mov qword [rbp - 0x18], rax
jmp 0x18013aa2e
mov rax, rdx
mov rcx, qword [rbp - 0x50]
mov qword [rax], rcx
mov qword [rdx + r15 - 0x18], r14
mov qword [rdx + r15 - 0x10], rbx
mov byte [rdx + r15 - 8], r13b
mov rcx, qword [rbp - 0x38]
mov eax, dword [rcx]
mov ecx, dword [rcx + 3]
mov dword [rdx + r15 - 7], eax
mov dword [rdx + r15 - 4], ecx
inc rsi
add qword [rbp - 0x18], 0x20
cmp rsi, qword [rbp - 0x30]
je 0x18013ab4a
mov r15, rsi
shl r15, 5
mov rax, qword [rbp - 0x20]
movups xmm0, xmmword [rax + r15]
movups xmm1, xmmword [rax + r15 + 0x10]
movups xmmword [rdx + r15], xmm0
movups xmmword [rdx + r15 + 0x10], xmm1
mov r14, qword [rdx + r15 + 8]
mov rbx, qword [rdx + r15 + 0x10]
mov rax, qword [rbp - 8]
mov rdx, qword [rax + r15 - 0x18]
mov rax, qword [rbp - 8]
mov r8, qword [rax + r15 - 0x10]
mov r12, rbx
sub r12, r8
cmovb r8, rbx
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
mov rdx, qword [rbp - 8]
cdqe
test eax, eax
cmovne r12, rax
movzx r13d, byte [rdx + r15 + 0x18]
mov eax, r13d
sub al, byte [rdx + r15 - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r12, r12
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x18013aa1c
mov rax, qword [rbp - 0x20]
add rax, r15
add r15, rdx
mov rcx, qword [r15]
mov qword [rbp - 0x50], rcx
add rax, 0x19
mov qword [rbp - 0x38], rax
mov rax, qword [rbp - 0x18]
nop
mov r15, rax
movups xmm0, xmmword [rdx + rax - 0x20]
movups xmm1, xmmword [rdx + rax - 0x10]
movups xmmword [rdx + rax + 0x10], xmm1
movups xmmword [rdx + rax], xmm0
cmp rax, 0x20
je 0x18013a9f0
mov rax, qword [rbp - 8]
mov rdx, qword [rax + r15 - 0x38]
mov rax, qword [rbp - 8]
mov r8, qword [rax + r15 - 0x30]
mov r12, rbx
sub r12, r8
cmovb r8, rbx
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
mov rdx, qword [rbp - 8]
cdqe
test eax, eax
cmovne r12, rax
mov eax, r13d
sub al, byte [rdx + r15 - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r12, r12
sets al
cmovne ecx, eax
lea rax, [r15 - 0x20]
test cl, cl
jne 0x18013aad0
add rax, rdx
jmp 0x18013a9f3
mov r13, qword [rbp - 0x10]
cmp r13, qword [rbp - 0x48]
jae 0x18013acbd
mov r12d, r13d
shl r12d, 5
jmp 0x18013abb1
mov rax, rdi
mov rcx, qword [rbp - 0x38]
mov qword [rax], rcx
mov qword [rdi + r13 - 0x18], r14
mov qword [rdi + r13 - 0x10], r15
mov byte [rdi + r13 - 8], bl
mov rcx, qword [rbp - 0x18]
mov eax, dword [rcx]
mov ecx, dword [rcx + 3]
mov dword [rdi + r13 - 7], eax
mov dword [rdi + r13 - 4], ecx
mov r13, qword [rbp - 0x10]
inc r13
add r12, 0x20
cmp r13, qword [rbp - 0x48]
je 0x18013acbd
mov qword [rbp - 0x10], r13
shl r13, 5
mov rax, qword [rbp - 0x28]
movups xmm0, xmmword [rax + r13]
movups xmm1, xmmword [rax + r13 + 0x10]
movups xmmword [rdi + r13], xmm0
movups xmmword [rdi + r13 + 0x10], xmm1
mov r14, qword [rdi + r13 + 8]
mov r15, qword [rdi + r13 + 0x10]
mov rdx, qword [rdi + r13 - 0x18]
mov r8, qword [rdi + r13 - 0x10]
mov rsi, r15
sub rsi, r8
cmovb r8, r15
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx ebx, byte [rdi + r13 + 0x18]
mov eax, ebx
sub al, byte [rdi + r13 - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rsi, rsi
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x18013ab9c
mov rax, qword [rbp - 0x28]
add rax, r13
add r13, rdi
mov rcx, qword [r13]
mov qword [rbp - 0x38], rcx
add rax, 0x19
mov qword [rbp - 0x18], rax
mov rax, r12
nop word cs:[rax + rax]
mov r13, rax
movups xmm0, xmmword [rdi + rax - 0x20]
movups xmm1, xmmword [rdi + rax - 0x10]
movups xmmword [rdi + rax + 0x10], xmm1
movups xmmword [rdi + rax], xmm0
cmp rax, 0x20
je 0x18013ab70
mov rdx, qword [rdi + r13 - 0x38]
mov r8, qword [rdi + r13 - 0x30]
mov rsi, r15
sub rsi, r8
cmovb r8, r15
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
mov eax, ebx
sub al, byte [rdi + r13 - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rsi, rsi
sets al
cmovne ecx, eax
lea rax, [r13 - 0x20]
test cl, cl
jne 0x18013ac50
add rax, rdi
jmp 0x18013ab73
lea r13, [rdi - 0x20]
mov rdx, qword [rbp - 0x40]
shl rdx, 5
mov rax, qword [rbp - 8]
lea rbx, [rax + rdx]
add rbx, 0xffffffffffffffe0
mov r14, qword [rbp - 0x20]
mov qword [rbp - 0x18], rdx
lea r8, [r14 + rdx]
add r8, 0xffffffffffffffe0
mov rcx, qword [rbp - 0x30]
nop dword [rax]
mov qword [rbp - 0x30], rcx
mov qword [rbp - 0x28], r8
mov qword [rbp - 0x10], rbx
mov rsi, rdi
mov r15, rax
mov rcx, qword [rdi + 8]
mov rax, qword [rdi + 0x10]
mov rdx, qword [r15 + 8]
mov r8, qword [r15 + 0x10]
mov rdi, rax
sub rdi, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rdi, rax
movzx eax, byte [rsi + 0x18]
sub al, byte [r15 + 0x18]
xor r12d, r12d
cmp al, 0xff
sete r12b
xor eax, eax
test rdi, rdi
sets al
cmovne r12d, eax
test r12b, r12b
mov rax, r15
cmovne rax, rsi
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
mov rcx, qword [rbx + 8]
mov rax, qword [rbx + 0x10]
mov rdx, qword [r13 + 8]
mov r8, qword [r13 + 0x10]
mov rbx, rax
sub rbx, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
mov r8, qword [rbp - 0x28]
cdqe
test eax, eax
cmovne rbx, rax
add r14, 0x20
movzx edi, r12b
xor r12b, 1
movzx eax, r12b
shl eax, 5
add rax, r15
shl edi, 5
add rdi, rsi
mov rcx, qword [rbp - 0x10]
movzx ecx, byte [rcx + 0x18]
sub cl, byte [r13 + 0x18]
xor edx, edx
cmp cl, 0xff
sete dl
xor ecx, ecx
test rbx, rbx
mov rbx, qword [rbp - 0x10]
sets cl
cmovne edx, ecx
test dl, dl
mov rcx, rbx
cmovne rcx, r13
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [r8 + 0x10], xmm1
movups xmmword [r8], xmm0
movzx ecx, dl
shl ecx, 5
add rbx, rcx
add rbx, 0xffffffffffffffe0
sub r13, rcx
mov rcx, qword [rbp - 0x30]
add r8, 0xffffffffffffffe0
dec rcx
jne 0x18013acf0
add r13, 0x20
test byte [rbp - 0x40], 1
je 0x18013ae40
xor ecx, ecx
xor edx, edx
cmp rax, r13
setae cl
setb dl
mov r8, rdi
cmovb r8, rax
movups xmm0, xmmword [r8]
movups xmm1, xmmword [r8 + 0x10]
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
shl edx, 5
add rax, rdx
shl ecx, 5
add rdi, rcx
cmp rax, r13
jne 0x18013ae5f
add rbx, 0x20
cmp rdi, rbx
jne 0x18013ae5f
add rsp, 0x78
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.18022e280
ud2