Function at 0x5291a0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov rcx, qword gs:[0x28]
mov rcx, qword [rcx]
cmp rsp, qword [rcx + 0x10]
jbe 0x529526
sub rsp, 0x78
mov qword [rsp + 0x70], rbp
lea rbp, [rsp + 0x70]
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rax + 0x28]
mov rdx, qword [rsp + 0xc8]
mov qword [rsp], rdx
call rcx
mov rax, qword [rsp + 8]
mov rcx, qword [rsp + 0xb8]
cmp rcx, 0xffffffffffffffff
jne 0x5294d5
mov rcx, rax
mov rbx, qword [rsp + 0xb0]
lea rsi, [rbx + 7]
sar rsi, 0x3f
shr rsi, 0x3d
lea rsi, [rsi + rbx]
lea rsi, [rsi + 7]
sar rsi, 3
mov rdi, qword [rsp + 0xa0]
cmp rsi, rdi
jne 0x52948d
mov r8, qword [rsp + 0x88]
cmp rcx, r8
jne 0x529465
lea r9, [rax + rcx]
lea r9, [r9 + 2]
cmp rsi, r9
jl 0x52943d
lea r9, [rsi - 1]
cmp r9, rdi
jae 0x529515
mov rdi, qword [rsp + 0x98]
movzx r10d, byte [rsi + rdi - 1]
cmp r10b, 0xbc
jne 0x529415
mov r10, rsi
sub rsi, rcx
lea rcx, [rsi - 1]
mov rdx, qword [rsp + 0xa8]
cmp rcx, rdx
ja 0x529510
cmp r9, rcx
jb 0x529505
mov r9, r10
sub r10, rsi
mov r11, rdx
sub rdx, rsi
inc rdx
mov r12, rdx
neg rdx
sar rdx, 0x3f
and rdx, rcx
add rdx, rdi
shl r9, 3
sub r9, rbx
nop
test r9, r9
jl 0x529500
cmp r9, 8
sbb ebx, ebx
mov r13, rcx
mov rcx, r9
mov r14d, 0xffffffff
shr r14b, cl
and ebx, r14d
movzx r9d, byte [rdi]
mov r14d, ebx
not ebx
test r9b, bl
jne 0x5293ed
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x68], rdx
mov byte [rsp + 0x47], r14b
mov qword [rsp + 0x48], r10
mov qword [rsp + 0xb8], rax
mov qword [rsp], rdi
mov qword [rsp + 8], r13
mov qword [rsp + 0x10], r11
mov rax, qword [rsp + 0xc0]
mov qword [rsp + 0x18], rax
mov rcx, qword [rsp + 0xc8]
mov qword [rsp + 0x20], rcx
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x38], r12
call fcn.005299a0
mov rcx, qword [rsp + 0x58]
test rcx, rcx
jbe 0x5294f7
mov rbx, qword [rsp + 0x98]
movzx esi, byte [rbx]
movzx edi, byte [rsp + 0x47]
and edi, esi
mov byte [rbx], dil
mov rsi, qword [rsp + 0xb8]
nop dword [rax + rax]
test rsi, rsi
je 0x529377
mov rdi, qword [rsp + 0x60]
mov r8, rdi
sub rdi, rsi
lea rax, [rdi - 2]
mov rdx, qword [rsp + 0xa8]
cmp rdx, rax
jb 0x5294ef
xor esi, esi
jmp 0x529170
inc rsi
cmp rax, rsi
jle 0x5291a7
movzx r9d, byte [rbx + rsi]
test r9b, r9b
je 0x52916d
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
cmp rcx, rax
jbe 0x5294ea
movzx esi, byte [rdi + rbx - 2]
cmp sil, 1
jne 0x52934f
lea rax, [rdi - 1]
cmp rcx, rax
jb 0x5294e5
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x50], rax
lea rax, [0x00652bc0]
mov qword [rsp], rax
call fcn.0040e6a0
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rax + 0x38]
mov rdx, qword [rsp + 0xc8]
mov qword [rsp], rdx
mov qword [rsp + 0x10], 8
mov qword [rsp + 0x18], 8
call rcx
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rax + 0x38]
mov rdx, qword [rsp + 0xc8]
mov qword [rsp], rdx
mov rbx, qword [rsp + 0x80]
mov qword [rsp + 8], rbx
mov rbx, qword [rsp + 0x88]
mov qword [rsp + 0x10], rbx
mov rbx, qword [rsp + 0x90]
mov qword [rsp + 0x18], rbx
call rcx
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rax + 0x38]
mov rdx, qword [rsp + 0xc8]
mov qword [rsp], rdx
mov rbx, qword [rsp + 0xa8]
mov rsi, qword [rsp + 0x58]
sub rbx, rsi
inc rbx
mov rdi, rbx
neg rbx
sar rbx, 0x3f
mov r8, qword [rsp + 0x50]
and r8, rbx
mov rbx, qword [rsp + 0x98]
add rbx, r8
mov qword [rsp + 8], rbx
mov rbx, qword [rsp + 0x60]
sub rbx, rsi
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rdi
call rcx
mov rax, qword [rsp + 0xc0]
mov rax, qword [rax + 0x30]
mov rcx, qword [rsp + 0xc8]
mov qword [rsp], rcx
xorps xmm0, xmm0
movups xmmword [rsp + 8], xmm0
mov qword [rsp + 0x18], 0
call rax
mov rax, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x48]
cmp rax, rdx
je 0x52931b
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
mov qword [rsp], rcx
mov rcx, qword [rsp + 0x68]
mov qword [rsp + 8], rcx
mov qword [rsp + 0x10], rax
call fcn.00402ae0
cmp byte [rsp + 0x18], 0
je 0x5292f3
xorps xmm0, xmm0
movups xmmword [rsp + 0xd0], xmm0
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
nop
mov qword [rsp], rbx
mov qword [rsp + 8], rcx
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0x10], rax
mov byte [rsp + 0x18], 1
call fcn.00403000
mov rax, qword [rsp + 0x20]
nop dword [rax]
test rax, rax
jl 0x5293c5
mov rdi, qword [rsp + 0x60]
sub rdi, rax
lea rsi, [rdi - 2]
mov rcx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x98]
nop
jmp 0x529149
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rax, qword [0x008452b0]
mov rcx, qword [0x008452b8]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rcx
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
lea rax, [0x006653e0]
mov qword [rsp], rax
call fcn.0040e6a0
mov rax, qword [rsp + 8]
mov qword [rax + 8], 0x28
lea rcx, [0x006aab3e]
mov qword [rax], rcx
lea rcx, [0x006f4b80]
mov qword [rsp + 0xd0], rcx
mov qword [rsp + 0xd8], rax
mov rbp, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rcx, rax
mov rax, qword [rsp + 0xb8]
jmp 0x528fbc
call fcn.0046cca0
call fcn.0046cbe0
mov rcx, rax
call fcn.0046cc60
xor eax, eax
call fcn.0046cbe0
nop
call fcn.00436da0
mov rax, rcx
mov rcx, r9
call fcn.0046cca0
call fcn.0046cc60
mov rax, r9
mov rcx, rdi
nop dword [rax + rax]
call fcn.0046cbe0
nop
call fcn.0046aa00
jmp fcn.00528f60