Function at 0x4effc0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
push ebx
mov eax, ecx
mov dword [ebp - 0x14], edx
push esi
push edi
mov dword [ebp - 0x28], eax
xor edi, edi
mov eax, dword [eax + 8]
xor esi, esi
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x1c], eax
test eax, eax
jle 0x4f004d
lea ebx, [edx + 1]
mov edi, edi
movzx eax, byte [ebx]
lea ebx, [ebx + 3]
movzx edx, byte [ebx - 4]
add edi, 3
shl ax, 8
movsx ecx, ax
movzx eax, byte [ebx - 2]
or ecx, eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp + esi*4 - 0x48], ecx
test dl, dl
jns 0x4f0037
not edx
movzx edx, dl
mov dword [ebp + esi*4 - 0x40], edx
cmp eax, 2
jne 0x4f025d
cmp edx, 0x58
jbe 0x4f0041
mov edx, 0x58
mov dword [ebp + esi*4 - 0x40], edx
inc esi
cmp esi, eax
jl 0x4f0000
mov edx, dword [ebp - 0x14]
movzx ecx, byte [edi + edx]
movzx eax, byte [edi + edx + 1]
add edi, 2
shl cx, 8
or cx, ax
mov dword [ebp - 4], 0
mov eax, dword [ebp + 8]
movzx ebx, cx
mov ecx, dword [ebp - 0x1c]
shr eax, 1
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edi
mov dword [ebp - 0x34], 0
mov dword [ebp + 8], eax
test ecx, ecx
jle 0x4f0253
cdq
idiv ecx
xor edx, edx
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + edx*4 - 0x48]
mov esi, dword [ebp + edx*4 - 0x40]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x2c], 0
mov eax, dword [eax + 4]
imul eax, ecx
add eax, edx
cmp dword [ebp - 0x30], 0
jle 0x4f0244
add eax, eax
add ecx, ecx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x38], ecx
cmp edi, 0x2000
jge 0x4f023e
movzx eax, byte [esi + 0x531b18]
mov edx, 1
mov dword [ebp - 0x18], eax
movzx ebx, bx
lea ecx, [eax - 1]
shl edx, cl
mov ecx, dword [ebp - 4]
add ecx, dword [ebp - 0x18]
mov dword [ebp - 4], ecx
mov ecx, 0x10
sub cl, byte [ebp - 4]
lea eax, [edx - 1]
shr ebx, cl
or eax, edx
mov ecx, dword [ebp - 0xc]
and ebx, eax
cmp dword [ebp - 4], 7
mov dword [ebp - 0x20], ebx
jle 0x4f0127
mov eax, dword [ebp - 0x14]
shl ecx, 8
movzx eax, byte [edi + eax]
inc edi
or ax, cx
mov dword [ebp - 8], edi
sub dword [ebp - 4], 8
movzx ecx, ax
mov dword [ebp - 0xc], ecx
mov edi, ebx
and edi, edx
je 0x4f0132
xor ebx, edx
mov dword [ebp - 0x20], ebx
neg edi
lea eax, [edx - 1]
sbb edi, edi
and edi, edx
cmp ebx, eax
jne 0x4f0190
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 0x14]
movzx ebx, byte [edi + eax]
mov eax, ecx
shl eax, 8
mov ecx, 8
movzx edx, ax
mov eax, dword [ebp - 4]
or edx, ebx
sub cl, al
shr edx, cl
mov ecx, eax
mov eax, dword [ebp - 0xc]
mov ch, bl
shl ax, cl
mov cl, bh
mov ebx, dword [ebp - 0x20]
cwde
movzx edx, dl
or edx, eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], edx
movzx eax, byte [edi + eax + 1]
or cx, ax
add edi, 2
movzx ecx, cx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edi
jmp 0x4f01f3
mov ecx, 7
mov edx, ebx
sub ecx, dword [ebp - 0x18]
mov eax, esi
shl eax, 6
shl edx, cl
add edx, eax
mov eax, dword [ebp + 0xc]
movzx eax, word [eax + edx*2]
test ebx, ebx
je 0x4f01c3
mov ecx, dword [ebp - 0x18]
movsx edx, word [esi*2 + 0x531908]
mov ebx, dword [ebp - 0x20]
lea ecx, [ecx - 1]
sar edx, cl
add eax, edx
test edi, edi
je 0x4f01c9
neg eax
mov edx, dword [ebp - 0x10]
add edx, eax
mov dword [ebp - 0x10], edx
cmp edx, 0x7fff
jle 0x4f01e0
mov edx, 0x7fff
jmp 0x4f01ed
cmp edx, 0xffff8000
jge 0x4f01f0
mov edx, 0xffff8000
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
mov eax, dword [eax]
mov word [ecx + eax], dx
mov eax, dword [ebp - 0x18]
mov eax, dword [eax*4 + 0x5318c0]
movsx eax, byte [eax + ebx]
add esi, eax
cmp esi, 0x58
jle 0x4f021b
mov esi, 0x58
jmp 0x4f0225
xor eax, eax
test esi, esi
sets al
dec eax
and esi, eax
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x38]
inc ecx
add dword [ebp - 0x24], eax
mov ebx, dword [ebp - 0xc]
mov dword [ebp - 0x2c], ecx
cmp ecx, dword [ebp - 0x30]
jl 0x4f00c3
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x34]
inc edx
mov dword [ebp - 0x34], edx
cmp edx, ecx
jl 0x4f0092
mov eax, dword [ebp + 8]
xor edx, edx
div ecx
mov ecx, dword [ebp - 0x28]
add dword [ecx + 4], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret