Function at 0x180012dd0
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, 0x88
lea rbp, [rsp + 0x80]
mov qword [rbp], 0xfffffffffffffffe
mov qword [rbp - 8], r8
cmp rdx, 2
jb 0x180013321
mov rdi, rdx
lea rax, [rdx + 0x10]
cmp rax, r9
ja 0x18001333a
mov rbx, rdi
shr rbx, 1
mov r12, rbx
shl r12, 5
lea r15, [rcx + r12]
mov rdx, qword [rbp - 8]
lea r14, [rdx + r12]
cmp rdi, 7
mov qword [rbp - 0x20], r15
mov qword [rbp - 0x50], r14
jbe 0x180012e5e
mov rsi, rcx
mov rdx, qword [rbp - 8]
call fcn.180012670
mov rcx, r15
mov rdx, r14
call fcn.180012670
mov rcx, rsi
mov rdx, qword [rbp - 8]
mov r8d, 4
jmp 0x180012e84
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rdx + 0x10], xmm1
movups xmmword [rdx], xmm0
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
mov r8d, 1
mov qword [rbp - 0x28], rcx
mov qword [rbp - 0x40], rdi
sub rdi, rbx
mov qword [rbp - 0x48], rdi
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x10], r8
cmp r8, rbx
jae 0x18001301a
mov rsi, qword [rbp - 0x10]
mov eax, esi
shl eax, 5
mov qword [rbp - 0x18], rax
jmp 0x180012efe
mov rax, rdx
mov rcx, qword [rbp - 0x58]
mov qword [rax], rcx
mov qword [rdx + r13 - 0x18], r14
mov qword [rdx + r13 - 0x10], rbx
mov byte [rdx + r13 - 8], r15b
mov rcx, qword [rbp - 0x38]
mov eax, dword [rcx]
mov ecx, dword [rcx + 3]
mov dword [rdx + r13 - 7], eax
mov dword [rdx + r13 - 4], ecx
inc rsi
add qword [rbp - 0x18], 0x20
cmp rsi, qword [rbp - 0x30]
je 0x18001301a
mov r13, rsi
shl r13, 5
mov rax, qword [rbp - 0x28]
movups xmm0, xmmword [rax + r13]
movups xmm1, xmmword [rax + r13 + 0x10]
movups xmmword [rdx + r13], xmm0
movups xmmword [rdx + r13 + 0x10], xmm1
mov r14, qword [rdx + r13 + 8]
mov rbx, qword [rdx + r13 + 0x10]
mov rax, qword [rbp - 8]
mov rdx, qword [rax + r13 - 0x18]
mov rax, qword [rbp - 8]
mov r8, qword [rax + r13 - 0x10]
mov rdi, rbx
sub rdi, r8
cmovb r8, rbx
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
mov rdx, qword [rbp - 8]
cdqe
test eax, eax
cmovne rdi, rax
movzx r15d, byte [rdx + r13 + 0x18]
mov eax, r15d
sub al, byte [rdx + r13 - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rdi, rdi
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x180012eec
mov rax, qword [rbp - 0x28]
add rax, r13
add r13, rdx
mov rcx, qword [r13]
mov qword [rbp - 0x58], rcx
add rax, 0x19
mov qword [rbp - 0x38], rax
mov rax, qword [rbp - 0x18]
mov r13, 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 0x180012ec0
mov rax, qword [rbp - 8]
mov rdx, qword [rax + r13 - 0x38]
mov rax, qword [rbp - 8]
mov r8, qword [rax + r13 - 0x30]
mov rdi, rbx
sub rdi, r8
cmovb r8, rbx
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
mov rdx, qword [rbp - 8]
cdqe
test eax, eax
cmovne rdi, rax
mov eax, r15d
sub al, byte [rdx + r13 - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rdi, rdi
sets al
cmovne ecx, eax
lea rax, [r13 - 0x20]
test cl, cl
jne 0x180012fa0
add rax, rdx
jmp 0x180012ec3
mov r15, qword [rbp - 0x10]
cmp r15, qword [rbp - 0x48]
jae 0x180013191
add r12, qword [rbp - 8]
mov r13d, r15d
shl r13d, 5
jmp 0x180013081
mov rax, r12
mov rcx, qword [rbp - 0x38]
mov qword [rax], rcx
mov qword [r12 + r15 - 0x18], r14
mov qword [r12 + r15 - 0x10], rsi
mov byte [r12 + r15 - 8], bl
mov rcx, qword [rbp - 0x18]
mov eax, dword [rcx]
mov ecx, dword [rcx + 3]
mov dword [r12 + r15 - 7], eax
mov dword [r12 + r15 - 4], ecx
mov r15, qword [rbp - 0x10]
inc r15
add r13, 0x20
cmp r15, qword [rbp - 0x48]
je 0x180013191
mov qword [rbp - 0x10], r15
shl r15, 5
mov rax, qword [rbp - 0x20]
movups xmm0, xmmword [rax + r15]
movups xmm1, xmmword [rax + r15 + 0x10]
movups xmmword [r12 + r15], xmm0
movups xmmword [r12 + r15 + 0x10], xmm1
mov r14, qword [r12 + r15 + 8]
mov rsi, qword [r12 + r15 + 0x10]
mov rdx, qword [r12 + r15 - 0x18]
mov r8, qword [r12 + r15 - 0x10]
mov rdi, rsi
sub rdi, r8
cmovb r8, rsi
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rdi, rax
movzx ebx, byte [r12 + r15 + 0x18]
mov eax, ebx
sub al, byte [r12 + r15 - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rdi, rdi
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x18001306c
mov rax, qword [rbp - 0x20]
add rax, r15
add r15, r12
mov rcx, qword [r15]
mov qword [rbp - 0x38], rcx
add rax, 0x19
mov qword [rbp - 0x18], rax
mov rax, r13
nop word cs:[rax + rax]
mov r15, rax
movups xmm0, xmmword [r12 + rax - 0x20]
movups xmm1, xmmword [r12 + rax - 0x10]
movups xmmword [r12 + rax + 0x10], xmm1
movups xmmword [r12 + rax], xmm0
cmp rax, 0x20
je 0x180013040
mov rdx, qword [r12 + r15 - 0x38]
mov r8, qword [r12 + r15 - 0x30]
mov rdi, rsi
sub rdi, r8
cmovb r8, rsi
mov rcx, r14
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rdi, rax
mov eax, ebx
sub al, byte [r12 + r15 - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rdi, rdi
sets al
cmovne ecx, eax
lea rax, [r15 - 0x20]
test cl, cl
jne 0x180013120
add rax, r12
jmp 0x180013043
mov r9, qword [rbp - 0x50]
lea r12, [r9 - 0x20]
mov rdx, qword [rbp - 0x40]
shl rdx, 5
mov rax, qword [rbp - 8]
lea rbx, [rax + rdx]
add rbx, 0xffffffffffffffe0
mov rsi, qword [rbp - 0x28]
mov qword [rbp - 0x20], rdx
lea r8, [rsi + rdx]
add r8, 0xffffffffffffffe0
mov rcx, qword [rbp - 0x30]
nop word cs:[rax + rax]
mov qword [rbp - 0x30], rcx
mov qword [rbp - 0x10], r8
mov r15, r9
mov r13, rax
mov rcx, qword [r9 + 8]
mov rax, qword [r9 + 0x10]
mov rdx, qword [r13 + 8]
mov r8, qword [r13 + 0x10]
mov r14, rax
sub r14, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
movzx eax, byte [r15 + 0x18]
sub al, byte [r13 + 0x18]
xor edi, edi
cmp al, 0xff
sete dil
xor eax, eax
test r14, r14
sets al
cmovne edi, eax
test dil, dil
mov rax, r13
cmovne rax, r15
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
mov rcx, qword [rbx + 8]
mov rax, qword [rbx + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov r14, rax
sub r14, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
mov r8, qword [rbp - 0x10]
cdqe
test eax, eax
cmovne r14, rax
add rsi, 0x20
movzx r9d, dil
xor dil, 1
movzx eax, dil
shl eax, 5
add rax, r13
shl r9d, 5
add r9, r15
movzx ecx, byte [rbx + 0x18]
sub cl, byte [r12 + 0x18]
xor edx, edx
cmp cl, 0xff
sete dl
xor ecx, ecx
test r14, r14
sets cl
cmovne edx, ecx
test dl, dl
mov rcx, rbx
cmovne rcx, r12
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 r12, rcx
mov rcx, qword [rbp - 0x30]
add r8, 0xffffffffffffffe0
dec rcx
jne 0x1800131d0
add r12, 0x20
test byte [rbp - 0x40], 1
je 0x180013313
xor ecx, ecx
xor edx, edx
cmp rax, r12
setae cl
setb dl
mov r8, r9
cmovb r8, rax
movups xmm0, xmmword [r8]
movups xmm1, xmmword [r8 + 0x10]
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
shl edx, 5
add rax, rdx
shl ecx, 5
add r9, rcx
cmp rax, r12
jne 0x180013335
add rbx, 0x20
cmp r9, rbx
jne 0x180013335
add rsp, 0x88
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.18010ff90
ud2