Function at 0x4c6910
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
mov ebx, ecx
mov edx, 1
mov ecx, dword [ebp + 0x14]
mov eax, edx
inc ecx
shl eax, cl
mov dword [ebx + 0x7664], ecx
dec eax
mov dword [ebx + 0x7654], ecx
dec ecx
push esi
mov esi, edx
mov dword [ebx + 0x765c], eax
shl esi, cl
mov ecx, 0x138b
push edi
lea edi, [ebx + 8]
mov byte [ebx + 0x7650], 0
mov dword [ebx + 0x764c], 0
lea eax, [esi + 2]
mov dword [ebx + 0x7660], 0
mov word [ebx + 0x7652], ax
lea edx, [esi + 1]
mov dword [ebp - 0x24], eax
or eax, 0xffffffff
mov dword [ebx + 0x7658], 0
rep stosd dword es:[edi], eax
mov dword [ebp - 4], esi
xor ecx, ecx
mov eax, 0x138b
nop dword [eax]
add eax, eax
inc ecx
cmp eax, 0x10000
jl 0x4c6990
push dword [ebp + 0x1c]
mov eax, 8
sub eax, ecx
mov ecx, ebx
push edx
push esi
mov dword [ebp - 0x18], eax
call fcn.004c6b90
mov edx, dword [ebp + 0x18]
mov eax, edx
mov esi, dword [ebp + 0x10]
neg eax
mov ecx, dword [ebp + 8]
dec esi
imul esi, edx
mov dword [ebp - 0x14], eax
add esi, ecx
mov eax, dword [ebp + 0x10]
add eax, 0xfffffffe
mov dword [ebp + 8], 1
imul eax, edx
movzx edi, byte [esi]
inc esi
mov dword [ebp + 0x14], esi
mov dword [ebp - 8], 1
add eax, ecx
mov dword [ebp + 0x18], eax
nop dword [eax]
mov ecx, dword [ebp - 8]
cmp ecx, dword [ebp + 0xc]
jne 0x4c6a15
mov ecx, dword [ebp + 8]
cmp ecx, dword [ebp + 0x10]
jne 0x4c6a04
xor esi, esi
jmp 0x4c6a10
inc ecx
mov esi, eax
add eax, dword [ebp - 0x14]
mov dword [ebp + 8], ecx
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x14], esi
xor ecx, ecx
test esi, esi
je 0x4c6a22
movzx eax, byte [esi]
inc esi
mov dword [ebp + 0x14], esi
jmp 0x4c6a25
or eax, 0xffffffff
inc ecx
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], ecx
cmp eax, 0xffffffff
je 0x4c6b63
mov edx, eax
movsx ecx, di
shl edx, 0xc
add edx, ecx
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x18]
shl ax, cl
xor ax, di
mov dword [ebp - 0x10], edx
movzx esi, ax
movsx eax, si
mov ecx, dword [ebx + eax*4 + 8]
cmp ecx, edx
jne 0x4c6a6c
movzx edi, word [ebx + eax*2 + 0x4e34]
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x18]
jmp 0x4c69f0
test ecx, ecx
js 0x4c6ad5
mov edi, dword [ebp - 0x10]
mov eax, 0x138b
sub eax, esi
mov ecx, 1
test si, si
movzx eax, ax
cmove eax, ecx
mov dword [ebp - 0x1c], eax
nop dword [eax + eax]
sub esi, eax
test si, si
lea eax, [esi + 0x138b]
movzx ecx, ax
movzx eax, si
cmovns ecx, eax
movzx ecx, cx
movsx eax, cx
mov edx, ecx
mov eax, dword [ebx + eax*4 + 8]
cmp eax, edi
je 0x4c6abf
mov esi, ecx
test eax, eax
jle 0x4c6ad5
mov eax, dword [ebp - 0x1c]
jmp 0x4c6a90
mov esi, dword [ebp + 0x14]
movsx eax, cx
movzx edi, word [ebx + eax*2 + 0x4e34]
mov eax, dword [ebp + 0x18]
jmp 0x4c69f0
push dword [ebp + 0x1c]
mov eax, dword [ebp - 4]
mov ecx, ebx
inc eax
push eax
push dword [ebp - 0x20]
call fcn.004c6b90
mov eax, dword [ebp - 0xc]
movzx ecx, word [ebx + 0x7652]
movzx edi, ax
mov eax, 0x1000
mov dword [ebp - 0x20], edi
cmp cx, ax
jge 0x4c6b25
movsx eax, si
mov esi, dword [ebp + 0x14]
mov word [ebx + eax*2 + 0x4e34], cx
inc word [ebx + 0x7652]
mov ecx, dword [ebp - 0x10]
mov dword [ebx + eax*4 + 8], ecx
mov eax, dword [ebp + 0x18]
jmp 0x4c69f0
push dword [ebp + 0x1c]
or eax, 0xffffffff
lea edi, [ebx + 8]
mov ecx, 0x138b
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x24]
mov word [ebx + 0x7652], ax
mov byte [ebx + 0x7650], 1
lea eax, [ecx + 1]
push eax
push ecx
mov ecx, ebx
call fcn.004c6b90
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x18]
jmp 0x4c69f0
push dword [ebp + 0x1c]
mov esi, dword [ebp - 4]
mov ecx, ebx
inc esi
movsx eax, di
push esi
push eax
call fcn.004c6b90
push dword [ebp + 0x1c]
mov ecx, ebx
push esi
push esi
call fcn.004c6b90
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18