Function at 0x14012784c
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov rax, qword [rdx + 0x10]
xor r11d, r11d
mov r14, qword [rdx]
or esi, 0xffffffff
mov r15, rdx
mov rdi, rcx
mov r8d, r11d
mov edx, r11d
movsxd rbp, dword [rax + 0x14]
mov r10, qword [rax]
lea r12d, [rsi + 2]
mov dword [rcx + 0x149c], r11d
lea r13d, [rsi + 3]
mov dword [rcx + 0x14a0], 0x23d
test ebp, ebp
jle 0x1401278e4
cmp word [r14 + rdx*4], r11w
je 0x1401278d1
movsxd rcx, dword [rdi + 0x149c]
mov esi, r8d
lea eax, [rcx + 1]
mov dword [rdi + 0x149c], eax
mov dword [rdi + rcx*4 + 0xbac], r8d
mov byte [rdx + rdi + 0x14a4], r11b
jmp 0x1401278d7
mov word [r14 + rdx*4 + 2], r11w
add r8d, r12d
add rdx, r12
cmp rdx, rbp
jl 0x1401278a5
jmp 0x140127932
cmp esi, r13d
lea eax, [rdx + 1]
mov dword [rdi + 0x149c], eax
lea ecx, [rsi + 1]
movsxd rax, edx
mov r8d, ecx
cmovge ecx, r11d
cmovge r8d, esi
mov dword [rdi + rax*4 + 0xbac], ecx
movsxd rax, ecx
mov word [r14 + rax*4], r12w
mov byte [rax + rdi + 0x14a4], r11b
dec dword [rdi + 0x1700]
test r10, r10
je 0x14012792f
movzx eax, word [r10 + rax*4 + 2]
sub dword [rdi + 0x1704], eax
mov esi, r8d
mov edx, dword [rdi + 0x149c]
cmp edx, r13d
jl 0x1401278e4
mov dword [r15 + 8], esi
mov ecx, dword [rdi + 0x149c]
mov eax, ecx
cdq
idiv r13d
mov edx, ecx
mov ebx, eax
cmp eax, r12d
jl 0x140127974
mov r8d, ebx
mov rdx, r14
mov rcx, rdi
call fcn.140127aa0
sub ebx, r12d
cmp ebx, r12d
jge 0x140127956
mov ecx, dword [rdi + 0x149c]
mov edx, ecx
movsxd rbx, dword [rdi + 0xbac]
mov r8d, r12d
movsxd rax, ecx
mov ecx, dword [rdi + rax*4 + 0xba8]
lea eax, [rdx - 1]
mov dword [rdi + 0xbac], ecx
mov rdx, r14
mov rcx, rdi
mov dword [rdi + 0x149c], eax
call fcn.140127aa0
movsxd rcx, dword [rdi + 0x14a0]
mov r8d, r12d
movsxd rdx, dword [rdi + 0xbac]
mov r9, rdx
lea eax, [rcx - 1]
mov dword [rdi + 0x14a0], eax
mov dword [rdi + rcx*4 + 0xba4], ebx
movsxd rcx, dword [rdi + 0x14a0]
lea eax, [rcx - 1]
mov dword [rdi + 0x14a0], eax
mov dword [rdi + rcx*4 + 0xba4], edx
movzx eax, word [r14 + rbx*4]
add ax, word [r14 + r9*4]
movsxd rdx, ebp
mov word [r14 + rdx*4], ax
movzx ecx, byte [rbx + rdi + 0x14a4]
movzx eax, byte [r9 + rdi + 0x14a4]
cmp cl, al
cmovb ecx, eax
add cl, r12b
mov byte [rdx + rdi + 0x14a4], cl
mov rdx, r14
mov word [r14 + r9*4 + 2], bp
mov rcx, rdi
mov word [r14 + rbx*4 + 2], bp
mov dword [rdi + 0xbac], ebp
add ebp, r12d
call fcn.140127aa0
mov ecx, dword [rdi + 0x149c]
mov edx, ecx
cmp ecx, r13d
jge 0x140127974
movsxd r8, dword [rdi + 0x14a0]
mov rdx, r15
mov rcx, rdi
lea eax, [r8 - 1]
mov dword [rdi + 0x14a0], eax
mov eax, dword [rdi + 0xbac]
mov dword [rdi + r8*4 + 0xba4], eax
call fcn.140127b6c
lea r8, [rdi + 0xb88]
mov edx, esi
mov rcx, r14
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
jmp 0x140354a60
push rbx
sub rsp, 0x30
mov rax, qword [0x1404fd7f0]
xor rax, rsp
mov qword [rsp + 0x20], rax
xor r10d, r10d
lea rax, [rsp + 2]
mov r11, rcx
sub r8, rax
lea ebx, [r10 + 1]
mov r9d, ebx
lea rax, [r8 + r9*2]
movzx ecx, word [rsp + rax]
add r10d, ecx
add r10d, r10d
mov word [rsp + r9*2], r10w
add r9, rbx
cmp r9, 0xf
jle 0x140354a8a
movsxd r9, edx
test edx, edx
js 0x140354aed
xor edx, edx
movzx r8d, word [r11 + rdx*4 + 2]
test r8d, r8d
je 0x140354ae5
movzx r10d, word [rsp + r8*2]
xor ecx, ecx
lea eax, [rbx + r10]
mov word [rsp + r8*2], ax
mov eax, r10d
sub r8d, ebx
and eax, ebx
shr r10d, 1
or ecx, eax
add ecx, ecx
test r8d, r8d
jg 0x140354aca
shr ecx, 1
mov word [r11 + rdx*4], cx
add rdx, rbx
cmp rdx, r9
jle 0x140354aaf
mov rcx, qword [rsp + 0x20]
xor rcx, rsp
call fcn.140156340
add rsp, 0x30
pop rbx
ret