Function at 0x140099400
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, 0xb8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x30], 0xfffffffffffffffe
mov rsi, rdx
mov qword [rbp + 0x10], rcx
mov rcx, qword [rdx + 0x20]
mov rdx, qword [rdx + 0x28]
mov qword [rbp + 0x28], r8
call fcn.140098d90
mov rcx, rax
mov r9, qword [rsi]
mov qword [rbp + 0x18], rsi
mov rdx, qword [rsi + 8]
mov r8, rax
shr r8, 0x39
movd xmm0, r8d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
xor eax, eax
mov qword [rbp + 8], rax
pcmpeqd xmm1, xmm1
mov qword [rbp + 0x20], rdx
and rcx, rdx
movdqu xmm2, xmmword [r9 + rcx]
movdqa xmm3, xmm0
pcmpeqb xmm3, xmm2
pmovmskb r8d, xmm3
test r8d, r8d
je 0x140099650
mov rax, qword [rbp + 0x28]
movzx eax, byte [rax]
mov qword [rbp], rax
mov qword [rbp - 8], rcx
jmp 0x1400994d9
test r9b, r9b
je 0x1400997bb
lea r8d, [r11 - 1]
and r8d, r11d
test r8w, r8w
mov rdx, qword [rbp + 0x20]
mov r9, rcx
mov rcx, qword [rbp - 8]
mov rax, qword [rbp]
je 0x140099650
mov r11d, r8d
tzcnt r14d, r11d
add r14, rcx
and r14, rdx
mov r8, r14
neg r8
lea r8, [r8 + r8*4]
shl r8, 4
lea r15, [r9 + r8]
mov rcx, r9
add r8, r9
add r8, 0xffffffffffffffb0
cmp eax, 1
je 0x1400995a0
cmp eax, 2
jne 0x1400997bb
movzx r9d, byte [r8]
cmp r9b, 2
jne 0x1400994b0
mov rax, qword [rbp + 0x28]
mov r9, qword [rax + 8]
mov rdi, qword [r9 + 0x10]
mov rsi, qword [r15 - 0x48]
cmp rdi, qword [rsi + 0x10]
jne 0x1400994b9
mov r13, qword [r9 + 8]
mov rsi, qword [rsi + 8]
mov r12, rdi
neg r12
mov r9, 0xffffffffffffffff
nop word [rax + rax]
lea rbx, [r12 + r9]
cmp rbx, 0xffffffffffffffff
je 0x1400995d0
movzx ebx, byte [r13 + r9 + 1]
movzx edx, byte [rsi + r9 + 1]
lea r10d, [rbx - 0x41]
cmp r10b, 0x1a
setb r10b
shl r10b, 5
lea eax, [rdx - 0x41]
cmp al, 0x1a
setb al
shl al, 5
or r10b, bl
or al, dl
inc r9
cmp r10b, al
je 0x140099550
cmp r9, rdi
jb 0x1400994b9
jmp 0x1400995d0
movzx r9d, byte [r8]
cmp r9b, 1
jne 0x1400994b0
mov rax, qword [rbp + 0x28]
cmp byte [rax + 1], 0
movzx r9d, byte [r15 - 0x4f]
je 0x1400995c7
test r9b, r9b
jne 0x1400995d0
jmp 0x1400994b9
test r9b, r9b
jne 0x1400994b9
mov rax, qword [rbp + 0x28]
mov r12, qword [rax + 0x20]
cmp r12, qword [r15 - 0x30]
jne 0x1400994b9
mov rax, qword [rbp + 0x28]
mov r13, qword [rax + 0x18]
mov rsi, qword [r15 - 0x38]
mov rdi, r12
neg rdi
mov r9, 0xffffffffffffffff
nop dword [rax + rax]
lea rax, [rdi + r9]
cmp rax, 0xffffffffffffffff
je 0x14009967a
movzx eax, byte [r13 + r9 + 1]
movzx edx, byte [rsi + r9 + 1]
lea r10d, [rax - 0x41]
cmp r10b, 0x1a
setb r10b
shl r10b, 5
lea ebx, [rdx - 0x41]
cmp bl, 0x1a
setb bl
shl bl, 5
or r10b, al
or bl, dl
inc r9
cmp r10b, bl
je 0x140099600
cmp r9, r12
jb 0x1400994b9
jmp 0x14009967a
pcmpeqb xmm2, xmm1
pmovmskb r8d, xmm2
test r8d, r8d
jne 0x14009973e
mov rax, qword [rbp + 8]
add rcx, rax
add rcx, 0x10
add rax, 0x10
mov qword [rbp + 8], rax
jmp 0x140099471
shl r14, 4
lea rdx, [r14 + r14*4]
sar rdx, 4
movabs rax, 0xcccccccccccccccd
imul rax, rdx
lea r9, [rax - 0x10]
and r9, qword [rbp + 0x20]
movdqu xmm0, xmmword [rcx + r9]
pcmpeqd xmm1, xmm1
pcmpeqb xmm0, xmm1
psllw xmm0, 7
pmovmskb r10d, xmm0
movdqu xmm0, xmmword [rcx + rax]
pcmpeqb xmm0, xmm1
pmovmskb edx, xmm0
test r10d, r10d
je 0x1400996d1
bsr r10w, r10w
xor r10d, 0xf
jmp 0x1400996d6
mov r10w, 0x10
mov r11, qword [rbp + 0x18]
or edx, 0x10000
tzcnt edx, edx
add r10d, edx
mov dl, 0x80
cmp r10w, 0xf
ja 0x1400996f6
inc qword [r11 + 0x10]
mov dl, 0xff
mov byte [rcx + rax], dl
mov byte [r9 + rcx + 0x10], dl
dec qword [r11 + 0x18]
movups xmm0, xmmword [r8]
movdqu xmm1, xmmword [r8 + 0x10]
movdqu xmm2, xmmword [r8 + 0x20]
movdqu xmm3, xmmword [r8 + 0x30]
movaps xmmword [rbp - 0x60], xmm0
movdqu xmm0, xmmword [r8 + 0x40]
movdqa xmmword [rbp - 0x20], xmm0
movdqa xmmword [rbp - 0x30], xmm3
movdqa xmmword [rbp - 0x40], xmm2
movdqa xmmword [rbp - 0x50], xmm1
movzx eax, byte [rbp - 0x60]
cmp al, 3
jne 0x14009974b
mov rax, qword [rbp + 0x10]
mov qword [rax], 0
jmp 0x1400997a6
movdqa xmm0, xmmword [rbp - 0x30]
movdqa xmm1, xmmword [rbp - 0x20]
mov rcx, qword [rbp + 0x10]
movdqu xmmword [rcx + 0x10], xmm1
movdqu xmmword [rcx], xmm0
cmp al, 2
jb 0x140099793
mov r8, qword [rbp - 0x58]
mov rax, qword [r8]
mov rdx, qword [r8 + 8]
lea rcx, [r8 + 0x18]
mov qword [rbp + 0x20], r8
mov r8, qword [r8 + 0x10]
call qword [rax + 0x10]
mov rcx, qword [0x14026d258]
xor edx, edx
mov r8, qword [rbp + 0x20]
call qword [case.0x14001f69e.0]
lea rcx, [rbp - 0x38]
mov rax, qword [rbp - 0x50]
mov rdx, qword [rbp - 0x48]
mov r8, qword [rbp - 0x40]
call qword [rax + 0x10]
nop
add rsp, 0xb8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea rcx, [0x1401f37f0]
lea r8, [0x1401d4fb8]
mov edx, 0x28
call fcn.1401949c0
ud2