Function at 0x578520
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword [0x7f7460]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x57875e
sub esp, 0x38
mov eax, dword [esp + 0x40]
test eax, eax
je 0x5785b7
cmp eax, 1
jne 0x578551
mov edx, dword [esp + 0x3c]
xor ecx, ecx
xor ebx, ebx
jmp 0x5785f1
mov edx, dword [esp + 0x3c]
movzx ebx, byte [edx]
test bl, bl
jne 0x578567
movzx ebp, byte [edx + 1]
xchg ebp, eax
test al, 0x80
xchg ebp, eax
je 0x578575
cmp bl, 0xff
jne 0x5785b1
movzx ebx, byte [edx + 1]
test bl, 0x80
je 0x5785b1
lea eax, [0x6265f0]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x1d
mov eax, dword [esp + 0x28]
mov dword [esp], eax
mov dword [esp + 4], 0x1d
call fcn.00409cd0
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x3c]
lea ecx, [0x66a0d4]
mov ebx, eax
mov eax, dword [esp + 0x40]
jmp 0x5785f1
xor ecx, ecx
xor ebx, ebx
jmp 0x5785f1
lea eax, [0x61e8d2]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 0xd
mov eax, dword [esp + 0x30]
mov dword [esp], eax
mov dword [esp + 4], 0xd
call fcn.00409cd0
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x3c]
lea ecx, [0x66a0d4]
mov ebx, eax
mov eax, dword [esp + 0x40]
test ecx, ecx
jne 0x578659
cmp eax, 8
jg 0x57860d
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], ecx
xor ebp, ebp
xor esi, esi
xor edi, edi
jmp 0x578693
lea eax, [0x62056b]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 0x11
mov eax, dword [esp + 0x20]
mov dword [esp], eax
mov dword [esp + 4], 0x11
call fcn.00409cd0
mov eax, dword [esp + 8]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
lea ecx, [0x66a0d4]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
add esp, 0x38
ret
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], ebx
add esp, 0x38
ret
shl esi, 8
shl edi, 8
mov ebx, dword [esp + 0x18]
shr ebx, 0x18
movzx ecx, byte [edx + ebp]
inc ebp
or edi, ebx
or esi, ecx
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x18], esi
cmp eax, ebp
jg 0x578675
shl eax, 3
lea edx, [eax - 0x40]
neg edx
mov byte [esp + 0xf], dl
mov ecx, edx
shl esi, cl
shl edi, cl
add eax, 0xffffffe0
mov byte [esp + 0xe], al
mov ecx, eax
mov ebx, dword [esp + 0x18]
shr ebx, cl
mov dword [esp + 0x14], ebx
neg eax
mov ecx, eax
mov ebp, dword [esp + 0x18]
shl ebp, cl
shr dl, 5
movzx edx, dl
mov dword [esp + 0x18], edx
cmp al, 0x20
sbb ebx, ebx
sbb edx, edx
and ebp, ebx
not edx
or edx, eax
mov byte [esp + 0xd], dl
movzx ecx, byte [esp + 0xf]
cmp cl, 0x20
sbb eax, eax
sbb ebx, ebx
and esi, eax
and edi, eax
shr esi, cl
and esi, eax
not ebx
or ecx, ebx
mov eax, dword [esp + 0x18]
cmp eax, 1
sbb eax, eax
xor eax, 0xffffffff
mov dword [esp + 0x18], eax
movzx ebx, byte [esp + 0xe]
cmp bl, 0x20
sbb eax, eax
mov edx, dword [esp + 0x14]
and edx, eax
or edi, edx
or edi, ebp
mov edx, ecx
mov ecx, ebx
mov ebp, edi
shl edi, cl
mov ecx, edx
mov edx, ebp
sar ebp, cl
mov dword [esp + 0x4c], ebp
and edi, eax
or esi, edi
movzx ecx, byte [esp + 0xd]
sar edx, cl
mov eax, dword [esp + 0x18]
and eax, edx
or eax, esi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x54], eax
add esp, 0x38
ret
call fcn.00465ea0
jmp fcn.00578520