Function at 0x180051e58
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xe8
mov rdi, rdx
mov rsi, rcx
lea rbx, [rsp + 0x30]
mov rcx, rbx
call fcn.18005273b
lea r14, [rsp + 0x70]
mov rcx, r14
mov rdx, rbx
call fcn.18005270f
mov eax, dword [r14]
cmp eax, 2
jne 0x180051efe
mov al, byte [rsp + 0x76]
movzx ecx, word [rsp + 0x74]
mov word [rsp + 0x20], cx
mov byte [rsp + 0x22], al
lea rbx, [rsp + 0x30]
mov rcx, rbx
mov rdx, rdi
call fcn.18005273b
mov r15d, dword [rbx]
cmp r15d, 2
jne 0x180051fb5
movzx r12d, byte [rsp + 0x34]
test r12b, r12b
js 0x180051f5e
mov ebx, r12d
and ebx, 0xffffff00
or ebx, r12d
mov al, byte [rsp + 0x22]
mov byte [rsi + 0xa], al
movzx eax, word [rsp + 0x20]
mov word [rsi + 8], ax
mov dword [rsi + 4], ebx
mov dword [rsi], 2
jmp 0x180052102
mov cl, byte [rsp + 0x76]
mov byte [rsp + 0xb2], cl
movzx ecx, word [rsp + 0x74]
mov word [rsp + 0xb0], cx
mov cl, byte [rsp + 0xa7]
mov byte [rsi + 0x37], cl
movups xmm0, xmmword [rsp + 0x97]
movups xmmword [rsi + 0x27], xmm0
movups xmm0, xmmword [rsp + 0x87]
movups xmmword [rsi + 0x17], xmm0
movups xmm0, xmmword [rsp + 0x77]
movups xmmword [rsi + 7], xmm0
mov cl, byte [rsp + 0xb2]
mov byte [rsi + 6], cl
movzx ecx, word [rsp + 0xb0]
mov word [rsi + 4], cx
mov dword [rsi], eax
jmp 0x180052102
xor r15d, r15d
cmp r12b, 0x80
jne 0x180051f6f
mov bpl, 5
jmp 0x18005202d
mov bpl, 0xd
cmp r12b, 0x84
ja 0x18005202d
mov r13, r12
xor r13, 0x80
xor ebx, ebx
lea r14, [rsp + 0x30]
sub r13, 1
jb 0x180052005
mov rcx, r14
mov rdx, rdi
call fcn.18005273b
mov r15d, dword [rsp + 0x30]
cmp r15d, 2
jne 0x180051fb5
shl ebx, 8
movzx eax, byte [rsp + 0x34]
or ebx, eax
jmp 0x180051f8d
mov al, byte [rsp + 0x34]
mov bpl, byte [rsp + 0x38]
movzx edx, byte [rsp + 0x37]
shl edx, 0x10
movzx ecx, word [rsp + 0x35]
or ecx, edx
movzx edx, word [rsp + 0x39]
mov word [rsp + 0x24], dx
mov dl, byte [rsp + 0x3b]
mov byte [rsp + 0x26], dl
movups xmm0, xmmword [rsp + 0x3c]
movaps xmmword [rsp + 0x70], xmm0
movups xmm0, xmmword [rsp + 0x4c]
movaps xmmword [rsp + 0x80], xmm0
movups xmm0, xmmword [rsp + 0x58]
movups xmmword [rsp + 0x8c], xmm0
jmp 0x18005202d
xor r15d, r15d
cmp ebx, 0x10000000
jae 0x180052116
mov ecx, ebx
call fcn.180020e59
test al, al
je 0x18005202d
cmp dl, r12b
jne 0x18005202d
movzx r12d, bl
jmp 0x180051ed7
shl ecx, 8
movzx eax, al
or eax, ecx
cmp bpl, 0xd
jne 0x180052055
mov cl, byte [rsp + 0x22]
mov byte [rsp + 0x2a], cl
movzx ecx, word [rsp + 0x20]
mov word [rsp + 0x28], cx
xor r15d, r15d
mov bpl, 6
jmp 0x18005208b
mov cl, byte [rsp + 0x26]
mov byte [rsp + 0x2a], cl
movzx ecx, word [rsp + 0x24]
mov word [rsp + 0x28], cx
movaps xmm0, xmmword [rsp + 0x70]
movaps xmm1, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0x30], xmm0
movaps xmmword [rsp + 0x40], xmm1
movups xmm0, xmmword [rsp + 0x8c]
movups xmmword [rsp + 0x4c], xmm0
mov cl, byte [rsp + 0x2a]
mov byte [rsp + 0x2e], cl
movzx ecx, word [rsp + 0x28]
mov word [rsp + 0x2c], cx
movaps xmm0, xmmword [rsp + 0x30]
movaps xmm1, xmmword [rsp + 0x40]
movaps xmmword [rsp + 0xb0], xmm0
movaps xmmword [rsp + 0xc0], xmm1
movups xmm0, xmmword [rsp + 0x4c]
movups xmmword [rsp + 0xcc], xmm0
mov byte [rsi + 8], bpl
movzx ecx, word [rsp + 0x2c]
mov word [rsi + 9], cx
mov cl, byte [rsp + 0x2e]
mov byte [rsi + 0xb], cl
movaps xmm0, xmmword [rsp + 0xb0]
movaps xmm1, xmmword [rsp + 0xc0]
movups xmmword [rsi + 0xc], xmm0
movups xmmword [rsi + 0x1c], xmm1
movups xmm0, xmmword [rsp + 0xcc]
movups xmmword [rsi + 0x28], xmm0
mov dword [rsi], r15d
mov dword [rsi + 4], eax
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov bpl, 0xc
xor ecx, ecx
jmp 0x18005202d