Function at 0x140221d10
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
lea rbp, [r8 - 1]
mov qword [rsp + 0x50], rdx
sar rbp, 1
mov r13, r9
mov r12, r8
mov r15, rdx
mov r14, rcx
mov rsi, rdx
cmp rdx, rbp
jge 0x140221e28
lea rsi, [rsi*2 + 2]
imul rdi, rsi, 0x58
imul rbx, rsi, 0x58
lea rdx, [r14 - 0x38]
add rdx, rdi
mov rax, qword [rdx + 0x10]
add rbx, r14
cmp qword [rdx + 0x18], 0x10
lea rcx, [rbx + 0x20]
jb 0x140221d7c
mov rdx, qword [rdx]
cmp qword [rcx + 0x18], 0x10
mov r8, qword [rcx + 0x10]
jb 0x140221d8a
mov rcx, qword [rcx]
cmp r8, rax
jne 0x140221d9f
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x140221d9f
mov eax, 1
jmp 0x140221da1
xor eax, eax
test al, al
je 0x140221dae
mov rdx, rbx
lea rcx, [r14 - 0x58]
jmp 0x140221db6
lea rdx, [rbx + 0x20]
lea rcx, [r14 - 0x38]
add rcx, rdi
call fcn.140070e50
test al, al
je 0x140221dc5
dec rsi
imul rdi, rsi, 0x58
imul rbx, r15, 0x58
add rdi, r14
mov rdx, rdi
add rbx, r14
mov rcx, rbx
call fcn.140081080
lea rdx, [rdi + 0x20]
lea rcx, [rbx + 0x20]
call fcn.140081080
mov eax, dword [rdi + 0x40]
mov r15, rsi
mov dword [rbx + 0x40], eax
movzx eax, byte [rdi + 0x44]
mov byte [rbx + 0x44], al
movzx eax, byte [rdi + 0x45]
mov byte [rbx + 0x45], al
movzx eax, byte [rdi + 0x46]
mov byte [rbx + 0x46], al
movzx eax, byte [rdi + 0x47]
mov byte [rbx + 0x47], al
movzx eax, byte [rdi + 0x48]
mov byte [rbx + 0x48], al
mov rax, qword [rdi + 0x50]
mov qword [rbx + 0x50], rax
cmp rsi, rbp
jl 0x140221d50
cmp rsi, rbp
jne 0x140221e59
mov rax, r12
cqo
and eax, 1
xor rax, rdx
cmp rax, rdx
jne 0x140221e59
imul rdx, r12, 0x58
imul rcx, r15, 0x58
add rdx, 0xffffffffffffffa8
add rdx, r14
add rcx, r14
call fcn.14022adb0
lea r15, [r12 - 1]
mov r12, qword [rsp + 0x50]
cmp r12, r15
jge 0x140221f37
nop word [rax + rax]
lea rbp, [r15 - 1]
sar rbp, 1
lea rdx, [r13 + 0x20]
imul rbx, rbp, 0x58
add rbx, r14
cmp qword [r13 + 0x38], 0x10
lea rcx, [rbx + 0x20]
jb 0x140221e91
mov rdx, qword [r13 + 0x20]
cmp qword [rcx + 0x18], 0x10
mov r8, qword [rcx + 0x10]
jb 0x140221e9f
mov rcx, qword [rcx]
cmp r8, qword [r13 + 0x30]
jne 0x140221eb5
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x140221eb5
mov eax, 1
jmp 0x140221eb7
xor eax, eax
test al, al
je 0x140221ec3
mov rdx, rbx
mov rcx, r13
jmp 0x140221ecb
lea rdx, [rbx + 0x20]
lea rcx, [r13 + 0x20]
call fcn.140070e50
test al, al
je 0x140221f37
imul rdi, rbp, 0x58
imul rbx, r15, 0x58
add rdi, r14
mov rdx, rdi
add rbx, r14
mov rcx, rbx
call fcn.140081080
lea rdx, [rdi + 0x20]
lea rcx, [rbx + 0x20]
call fcn.140081080
mov eax, dword [rdi + 0x40]
mov r15, rbp
mov dword [rbx + 0x40], eax
movzx eax, byte [rdi + 0x44]
mov byte [rbx + 0x44], al
movzx eax, byte [rdi + 0x45]
mov byte [rbx + 0x45], al
movzx eax, byte [rdi + 0x46]
mov byte [rbx + 0x46], al
movzx eax, byte [rdi + 0x47]
mov byte [rbx + 0x47], al
movzx eax, byte [rdi + 0x48]
mov byte [rbx + 0x48], al
mov rax, qword [rdi + 0x50]
mov qword [rbx + 0x50], rax
cmp r12, rbp
jl 0x140221e70
imul rbx, r15, 0x58
mov rdx, r13
add rbx, r14
mov rcx, rbx
call fcn.140081080
lea rdx, [r13 + 0x20]
lea rcx, [rbx + 0x20]
call fcn.140081080
mov eax, dword [r13 + 0x40]
mov rbp, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
mov dword [rbx + 0x40], eax
movzx eax, byte [r13 + 0x44]
mov byte [rbx + 0x44], al
movzx eax, byte [r13 + 0x45]
mov byte [rbx + 0x45], al
movzx eax, byte [r13 + 0x46]
mov byte [rbx + 0x46], al
movzx eax, byte [r13 + 0x47]
mov byte [rbx + 0x47], al
movzx eax, byte [r13 + 0x48]
mov byte [rbx + 0x48], al
mov rax, qword [r13 + 0x50]
mov qword [rbx + 0x50], rax
mov rbx, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
ret