Function at 0x4ac730
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4ac9f5
sub esp, 0x38
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
call fcn.0044e6b0
movzx eax, byte [esp + 0x10]
test al, al
je 0x4ac77d
mov eax, 1
jmp 0x4ac7a1
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], ecx
call fcn.0044e6b0
movzx eax, byte [esp + 0x10]
xor eax, 1
test al, al
jne 0x4ac7d2
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
mov dword [esp + 0xc], 0x7fefffff
mov dword [esp + 8], 0xffffffff
call fcn.0044e710
movzx eax, byte [esp + 0x10]
test al, al
je 0x4ac7e6
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x48], eax
add esp, 0x38
ret
mov dword [esp + 4], 0
mov dword [esp], 0
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp + 8], ecx
call fcn.0044e710
movzx eax, byte [esp + 0x10]
test al, al
jne 0x4ac836
mov eax, dword [esp + 0x40]
mov ecx, eax
shr eax, 0x14
and eax, 0x7ff
test eax, eax
jne 0x4ac830
mov eax, dword [esp + 0x3c]
xor edx, edx
jmp 0x4ac9d9
mov edx, dword [esp + 0x3c]
jmp 0x4ac84a
mov dword [esp + 0x44], 1
mov dword [esp + 0x48], 0x7ff80000
add esp, 0x38
ret
add eax, 0xfffffc01
and ecx, 0x800fffff
or ecx, 0x100000
test eax, 1
je 0x4ac86f
shl ecx, 1
mov ebx, edx
shr edx, 0x1f
or ecx, edx
shl ebx, 1
jmp 0x4ac871
mov ebx, edx
mov dword [esp + 0x30], eax
shl ecx, 1
mov edx, ebx
shr ebx, 0x1f
or ebx, ecx
shl edx, 1
mov ecx, 0x200000
xor ebp, ebp
xor esi, esi
xor edi, edi
xor ebp, ebp
mov dword [esp + 0x20], ebp
xor ebp, ebp
mov dword [esp + 0x24], ebp
jmp 0x4ac8e1
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], edx
shl ebp, 1
shr esi, 0x1f
or esi, ebp
mov ebp, dword [esp + 0x28]
shl ebp, 1
mov eax, dword [esp + 0x1c]
shr eax, 1
shl edx, 0x1f
or edx, eax
mov eax, dword [esp + 0x34]
shr eax, 1
mov dword [esp + 0x20], ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
mov eax, ebp
mov ebp, edx
mov edx, eax
mov eax, dword [esp + 0x30]
mov eax, esi
mov esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], edx
test ecx, ecx
setne al
test ebp, ebp
setne dl
or edx, eax
test dl, dl
je 0x4ac970
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], edi
mov dword [esp + 0x2c], ebx
add esi, ebp
mov edx, ecx
adc ecx, edi
cmp ebx, ecx
seta al
xchg edi, ebx
sete bl
xchg edi, ebx
mov ebx, dword [esp + 0x28]
cmp esi, ebx
setbe bl
and edi, ebx
or edi, eax
xchg edi, eax
test al, al
xchg edi, eax
je 0x4ac953
mov eax, ebp
add ebp, esi
mov edi, ecx
adc edi, edx
mov ebx, ebp
mov ebp, dword [esp + 0x28]
sub ebp, esi
mov esi, ebp
mov ebp, dword [esp + 0x2c]
sbb ebp, ecx
mov ecx, dword [esp + 0x20]
add ecx, eax
mov eax, dword [esp + 0x24]
adc eax, edx
jmp 0x4ac899
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
jmp 0x4ac899
test ebx, ebx
setne al
mov ecx, dword [esp + 0x28]
test ecx, ecx
setne cl
or ecx, eax
test cl, cl
je 0x4ac998
mov eax, dword [esp + 0x20]
mov ecx, eax
and eax, 1
add eax, ecx
mov ecx, dword [esp + 0x24]
adc ecx, 0
jmp 0x4ac9a0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
sar edx, 1
shr eax, 1
mov ebx, ecx
shl ecx, 0x1f
or ecx, eax
shr ebx, 1
lea eax, [edx + 0x3fe]
shl eax, 0x14
add ecx, 0
adc eax, ebx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], eax
add esp, 0x38
ret
shl ecx, 1
mov ebx, eax
shr eax, 0x1f
or ecx, eax
shl ebx, 1
dec edx
mov eax, ebx
test ecx, 0x100000
sete bl
and ebx, 1
test bl, bl
jne 0x4ac9cb
lea ebx, [edx + 1]
mov edx, eax
mov eax, ebx
jmp 0x4ac84a
call fcn.004649b0
jmp fcn.004ac730