Function at 0x140150990
Capabilities:
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 - 0x10], rdx
movzx edx, byte [rcx + 0x10]
cmp dl, 0x80
je 0x1401509d1
movzx eax, byte [rcx + 0x1a]
movzx ebx, byte [rcx + 0x1b]
movzx r8d, byte [rcx + 0x19]
mov byte [rbp - 0x40], r8b
mov r8, qword [rcx + 0x11]
mov qword [rbp - 0x48], r8
mov r15, qword [rcx]
mov r13, qword [rcx + 8]
movzx r11d, byte [rcx + 0x1c]
cmp r11b, 0x80
je 0x1401509fe
movzx r9d, byte [rcx + 0x26]
movzx r10d, byte [rcx + 0x27]
movzx r8d, byte [rcx + 0x25]
mov byte [rbp - 0x50], r8b
mov rcx, qword [rcx + 0x1d]
mov qword [rbp - 0x58], rcx
mov qword [rbp - 0x38], r15
mov qword [rbp - 0x30], r13
mov byte [rbp - 0x28], dl
mov rcx, qword [rbp - 0x48]
mov qword [rbp - 0x27], rcx
movzx ecx, byte [rbp - 0x40]
mov byte [rbp - 0x1f], cl
mov byte [rbp - 0x1e], al
mov byte [rbp - 0x1d], bl
mov byte [rbp - 0x1c], r11b
movzx ecx, byte [rbp - 0x50]
mov byte [rbp - 0x13], cl
mov rcx, qword [rbp - 0x58]
mov qword [rbp - 0x1b], rcx
mov byte [rbp - 0x12], r9b
mov byte [rbp - 0x11], r10b
cmp dl, 0x80
mov byte [rbp + 6], r9b
mov byte [rbp + 7], r10b
mov byte [rbp + 5], r11b
je 0x140150a91
cmp al, bl
jae 0x140150a8e
movzx esi, bl
mov rcx, qword [rbp - 0x10]
mov rdi, qword [rcx + 0x20]
movzx r14d, al
mov rax, qword [rcx + 0x28]
mov r12, qword [rax + 0x20]
nop word cs:[rax + rax]
movzx edx, byte [rbp + r14 - 0x28]
mov rcx, rdi
call r12
test al, al
jne 0x140150c24
inc r14
cmp rsi, r14
jne 0x140150a70
mov eax, ebx
mov byte [rbp - 0x1e], al
test r15, r15
je 0x140150c28
cmp r15, r13
je 0x140150c28
lea rbx, [rbp - 0x28]
mov rax, qword [rbp - 0x10]
mov rdi, qword [rax + 0x20]
mov r14, qword [rax + 0x28]
lea rsi, [0x14017bafc]
jmp 0x140150ac9
cmp r15, r13
je 0x140150c28
movzx eax, byte [r15]
test al, al
js 0x140150ae0
inc r15
jmp 0x140150b50
mov ecx, eax
and ecx, 0x1f
movzx r8d, byte [r15 + 1]
and r8d, 0x3f
cmp al, 0xdf
jbe 0x140150b2b
movzx edx, byte [r15 + 2]
shl r8d, 6
and edx, 0x3f
or edx, r8d
cmp al, 0xf0
jb 0x140150b39
movzx eax, byte [r15 + 3]
and ecx, 7
shl ecx, 0x12
shl edx, 6
and eax, 0x3f
or eax, edx
or eax, ecx
cmp eax, 0x110000
je 0x140150c28
add r15, 4
jmp 0x140150b50
add r15, 2
shl ecx, 6
or ecx, r8d
mov eax, ecx
jmp 0x140150b50
add r15, 3
shl ecx, 0xc
or edx, ecx
mov eax, edx
nop word cs:[rax + rax]
mov ecx, eax
or ecx, 1
bsr r12d, ecx
xor r12d, 0x1c
shr r12d, 2
mov byte [rbp - 4], 0
mov word [rbp - 6], 0
mov ecx, eax
shr ecx, 0x14
movzx ecx, byte [rcx + rsi]
mov byte [rbp - 3], cl
mov ecx, eax
shr ecx, 0x10
and ecx, 0xf
movzx ecx, byte [rcx + rsi]
mov byte [rbp - 2], cl
mov ecx, eax
shr ecx, 0xc
and ecx, 0xf
movzx ecx, byte [rcx + rsi]
mov byte [rbp - 1], cl
mov ecx, eax
shr ecx, 8
and ecx, 0xf
movzx ecx, byte [rcx + rsi]
mov byte [rbp], cl
mov ecx, eax
shr ecx, 4
and ecx, 0xf
movzx ecx, byte [rcx + rsi]
mov byte [rbp + 1], cl
and eax, 0xf
movzx eax, byte [rax + rsi]
mov byte [rbp + 2], al
mov byte [rbp + 3], 0x7d
mov word [rbp + r12 - 8], 0x755c
mov byte [rbp + r12 - 6], 0x7b
movzx eax, word [rbp + 2]
mov word [rbx + 8], ax
mov rax, qword [rbp - 6]
mov qword [rbx], rax
mov byte [rbp - 0x1d], 0xa
nop word cs:[rax + rax]
cmp r12, 0xc
je 0x140150ac0
lea eax, [r12 - 1]
mov byte [rbp - 0x1e], al
movzx edx, byte [rbp + r12 - 0x2a]
mov rcx, rdi
call qword [r14 + 0x20]
inc r12
test al, al
je 0x140150bf0
add r12, 0xfffffffffffffffd
cmp r12, 9
ja 0x140150ac0
mov al, 1
jmp 0x140150c7f
cmp byte [rbp + 5], 0x80
je 0x140150c7d
movzx ecx, byte [rbp + 6]
movzx eax, byte [rbp + 7]
cmp cl, al
jae 0x140150c7d
movzx esi, al
mov rax, qword [rbp - 0x10]
mov rdi, qword [rax + 0x20]
movzx ebx, cl
mov rax, qword [rax + 0x28]
mov r14, qword [rax + 0x20]
dec rsi
nop word cs:[rax + rax]
movzx edx, byte [rbp + rbx - 0x1c]
mov rcx, rdi
call r14
test al, al
jne 0x140150c7f
lea rcx, [rbx + 1]
cmp rsi, rbx
mov rbx, rcx
jne 0x140150c60
jmp 0x140150c7f
xor eax, eax
add rsp, 0x88
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret