Function at 0x4cac10
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword [0x5e82a4]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4cae4e
sub esp, 0x38
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4caca7
cmp eax, 1
jne 0x4cac41
mov edx, dword [esp + 0x3c]
xor ecx, ecx
xor ebx, ebx
jmp 0x4cace1
mov edx, dword [esp + 0x3c]
movzx ebx, byte [edx]
test bl, bl
jne 0x4cac57
movzx ebp, byte [edx + 1]
xchg ebp, eax
test al, 0x80
xchg ebp, eax
je 0x4cac65
cmp bl, 0xff
jne 0x4caca1
movzx ebx, byte [edx + 1]
test bl, 0x80
je 0x4caca1
lea eax, [0x503518]
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.00409630
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x3c]
lea ecx, [0x529c04]
mov ebx, eax
mov eax, dword [esp + 0x40]
jmp 0x4cace1
xor ecx, ecx
xor ebx, ebx
jmp 0x4cace1
lea eax, [0x4fe94a]
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.00409630
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x3c]
lea ecx, [0x529c04]
mov ebx, eax
mov eax, dword [esp + 0x40]
test ecx, ecx
jne 0x4cad49
cmp eax, 8
jg 0x4cacfd
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], ecx
xor ebp, ebp
xor esi, esi
xor edi, edi
jmp 0x4cad83
lea eax, [0x4ff864]
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.00409630
mov eax, dword [esp + 8]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
lea ecx, [0x529c04]
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 0x4cad65
shl eax, 3
lea edx, [eax - 0x40]
neg edx
mov byte [esp + 0xf], dl
mov ecx, edx
shl edi, cl
shl esi, 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.004621e0
jmp fcn.004cac10