Function at 0x180096c20
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 0x180096c61
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 0x180096c8e
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 0x180096d21
cmp al, bl
jae 0x180096d1e
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 0x180096eb4
inc r14
cmp rsi, r14
jne 0x180096d00
mov eax, ebx
mov byte [rbp - 0x1e], al
test r15, r15
je 0x180096eb8
cmp r15, r13
je 0x180096eb8
lea rbx, [rbp - 0x28]
mov rax, qword [rbp - 0x10]
mov rdi, qword [rax + 0x20]
mov r14, qword [rax + 0x28]
lea rsi, [0x1800d797c]
jmp 0x180096d59
cmp r15, r13
je 0x180096eb8
movzx eax, byte [r15]
test al, al
js 0x180096d70
inc r15
jmp 0x180096de0
mov ecx, eax
and ecx, 0x1f
movzx r8d, byte [r15 + 1]
and r8d, 0x3f
cmp al, 0xdf
jbe 0x180096dbb
movzx edx, byte [r15 + 2]
shl r8d, 6
and edx, 0x3f
or edx, r8d
cmp al, 0xf0
jb 0x180096dc9
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 0x180096eb8
add r15, 4
jmp 0x180096de0
add r15, 2
shl ecx, 6
or ecx, r8d
mov eax, ecx
jmp 0x180096de0
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 0x180096d50
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 0x180096e80
add r12, 0xfffffffffffffffd
cmp r12, 9
ja 0x180096d50
mov al, 1
jmp 0x180096f0f
cmp byte [rbp + 5], 0x80
je 0x180096f0d
movzx ecx, byte [rbp + 6]
movzx eax, byte [rbp + 7]
cmp cl, al
jae 0x180096f0d
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 0x180096f0f
lea rcx, [rbx + 1]
cmp rsi, rbx
mov rbx, rcx
jne 0x180096ef0
jmp 0x180096f0f
xor eax, eax
add rsp, 0x88
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret