Function at 0x4f7c10
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x24
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x10], ecx
cmp dword [ebp + 8], 0
js 0x4f80fb
mov eax, dword [ebp - 0x2c]
movzx esi, word [eax + 2]
xor edx, edx
test esi, esi
sete dl
mov eax, 0x8a
mov ecx, 7
cmove ecx, eax
mov eax, 4
sub eax, edx
mov dword [ebp - 0x14], eax
xor edi, edi
dec edi
xor edx, edx
xor eax, eax
jmp 0x4f7d00
movzx eax, word [edi + ebx*4 + 0xace]
mov esi, 0x10
sub esi, eax
movzx ebx, word [edi + ebx*4 + 0xacc]
mov dword [ebp - 0x24], ebx
shl ebx, cl
or bx, word [edi + 0x1708]
mov word [edi + 0x1708], bx
cmp ecx, esi
jg 0x4f7ca2
add ecx, eax
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x20]
mov dword [edi + 0x170c], ecx
dec edx
je 0x4f7e07
jmp 0x4f7c5a
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi + 8]
mov dword [ebp - 0x14], ecx
mov esi, dword [edi + 0x14]
lea ecx, [esi + 1]
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp - 0x14]
mov byte [ecx + esi], bl
mov cl, byte [edi + 0x1709]
mov byte [ebp - 0x14], cl
mov esi, dword [edi + 8]
mov ebx, dword [edi + 0x14]
lea ecx, [ebx + 1]
mov dword [edi + 0x14], ecx
mov cl, byte [ebp - 0x14]
mov byte [esi + ebx], cl
mov ebx, dword [edi + 0x170c]
mov cl, 0x10
sub cl, bl
mov esi, dword [ebp - 0x24]
shr esi, cl
mov word [edi + 0x1708], si
lea ecx, [eax + ebx]
add ecx, 0xfffffff0
jmp 0x4f7c8d
mov ebx, esi
mov esi, edx
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x30], esi
movzx esi, word [edx + esi*4 + 6]
mov dword [ebp - 0x24], eax
lea edx, [eax + 1]
cmp edx, ecx
mov dword [ebp - 0x18], esi
jge 0x4f7d37
cmp ebx, esi
jne 0x4f7d37
mov ebx, dword [ebp - 0x30]
lea esi, [ebx + 1]
mov eax, edx
cmp ebx, dword [ebp + 8]
mov edx, esi
mov esi, dword [ebp - 0x18]
jne 0x4f7d00
jmp 0x4f80fb
cmp edx, dword [ebp - 0x14]
jge 0x4f7d4d
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi + 0x170c]
mov dword [ebp - 0x20], ebx
jmp 0x4f7c5a
test ebx, ebx
je 0x4f7e8d
cmp ebx, edi
je 0x4f7f00
mov edi, dword [ebp - 0x10]
movzx eax, word [edi + ebx*4 + 0xace]
mov ecx, dword [edi + 0x170c]
mov esi, 0x10
sub esi, eax
movzx edx, word [edi + ebx*4 + 0xacc]
mov dword [ebp - 0x14], edx
shl edx, cl
or dx, word [edi + 0x1708]
mov word [edi + 0x1708], dx
cmp ecx, esi
jg 0x4f7f14
add ecx, eax
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
mov dword [ecx + 0x170c], eax
movzx edx, word [ecx + 0xb0e]
mov esi, 0x10
mov edi, ecx
movzx eax, word [ecx + 0xb0c]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x14]
shl eax, cl
sub esi, edx
or ax, word [edi + 0x1708]
cmp ecx, esi
jg 0x4f7e36
add ecx, edx
mov edi, dword [ebp - 0x10]
mov dword [edi + 0x170c], ecx
mov edx, dword [ebp - 0x24]
add edx, 0xfffd
cmp ecx, 0xf
mov esi, dword [ebp - 0x18]
jge 0x4f7f6c
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 2
mov dword [edi + 0x170c], ecx
xor edx, edx
test esi, esi
je 0x4f7e28
xor ecx, ecx
cmp ebx, esi
sete cl
mov eax, 4
sub eax, ecx
mov dword [ebp - 0x14], eax
xor ecx, 7
mov edi, ebx
jmp 0x4f7d20
mov ecx, 0x8a
mov dword [ebp - 0x14], 3
jmp 0x4f7e21
mov edi, dword [ebp - 0x10]
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov dword [ebp - 0x14], ecx
mov esi, dword [edi + 0x14]
lea ecx, [esi + 1]
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp - 0x14]
mov byte [ecx + esi], al
mov al, byte [edi + 0x1709]
mov byte [ebp - 0x14], al
mov ecx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea eax, [esi + 1]
mov dword [edi + 0x14], eax
mov al, byte [ebp - 0x14]
mov byte [ecx + esi], al
mov eax, dword [edi + 0x170c]
mov cl, 0x10
sub cl, al
add eax, edx
add eax, 0xfffffff0
mov edx, dword [ebp - 0x1c]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f7dd5
cmp dword [ebp - 0x24], 9
jg 0x4f7fd8
mov edi, dword [ebp - 0x10]
movzx edx, word [edi + 0xb12]
mov ecx, dword [edi + 0x170c]
mov esi, 0x10
movzx eax, word [edi + 0xb10]
mov dword [ebp - 0x1c], eax
shl eax, cl
mov dword [ebp - 0x14], edx
sub esi, edx
or ax, word [edi + 0x1708]
cmp ecx, esi
jg 0x4f8041
add ecx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
mov dword [edi + 0x170c], ecx
add edx, 0xfffe
cmp ecx, 0xe
jge 0x4f808f
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 3
jmp 0x4f7e01
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + 0x170c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x24], edx
jmp 0x4f7da9
mov esi, dword [ebp - 0x10]
mov ecx, dword [esi + 8]
mov dword [ebp - 0x1c], ecx
mov edi, dword [esi + 0x14]
lea ecx, [edi + 1]
mov dword [esi + 0x14], ecx
mov ecx, dword [ebp - 0x1c]
mov byte [ecx + edi], dl
mov cl, byte [esi + 0x1709]
mov byte [ebp - 0x1c], cl
mov edx, dword [esi + 8]
mov edi, dword [esi + 0x14]
lea ecx, [edi + 1]
mov dword [esi + 0x14], ecx
mov cl, byte [ebp - 0x1c]
mov byte [edx + edi], cl
mov edx, dword [esi + 0x170c]
mov cl, 0x10
sub cl, dl
mov edi, dword [ebp - 0x14]
shr edi, cl
mov word [esi + 0x1708], di
mov ecx, esi
add eax, edx
add eax, 0xfffffff0
mov dword [ebp - 0x14], eax
jmp 0x4f7da0
mov esi, edx
movzx edx, si
shl esi, cl
or eax, esi
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea edi, [esi + 1]
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov byte [ecx + esi], al
mov eax, dword [ebp - 0x10]
mov al, byte [eax + 0x1709]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 8]
mov esi, dword [ebp - 0x10]
mov esi, dword [esi + 0x14]
lea edi, [esi + 1]
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov ebx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x10]
mov byte [ecx + esi], al
mov esi, dword [ebp - 0x18]
mov eax, dword [edi + 0x170c]
mov cl, 0x10
sub cl, al
shr edx, cl
mov ecx, eax
mov word [edi + 0x1708], dx
add ecx, 0xfffffff2
jmp 0x4f7e01
mov edx, dword [ebp - 0x10]
movzx edi, word [edx + 0xb16]
mov ecx, dword [edx + 0x170c]
mov esi, 0x10
movzx eax, word [edx + 0xb14]
mov dword [ebp - 0x1c], eax
shl eax, cl
mov dword [ebp - 0x14], edi
sub esi, edi
or ax, word [edx + 0x1708]
cmp ecx, esi
jg 0x4f816f
add ecx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
mov dword [edi + 0x170c], ecx
mov edx, dword [ebp - 0x24]
add edx, 0xfff6
cmp ecx, 0xa
jge 0x4f8103
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 7
jmp 0x4f7e01
mov edi, dword [ebp - 0x10]
mov word [edi + 0x1708], ax
mov edx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea ecx, [esi + 1]
mov dword [edi + 0x14], ecx
mov byte [edx + esi], al
mov dl, byte [edi + 0x1709]
mov ecx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea eax, [esi + 1]
mov dword [edi + 0x14], eax
mov byte [ecx + esi], dl
mov eax, dword [edi + 0x170c]
mov cl, 0x10
sub cl, al
mov esi, dword [ebp - 0x14]
add eax, esi
add eax, 0xfffffff0
mov edx, dword [ebp - 0x1c]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f7ed2
mov esi, edx
movzx edx, si
shl esi, cl
or eax, esi
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea edi, [esi + 1]
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov byte [ecx + esi], al
mov eax, dword [ebp - 0x10]
mov al, byte [eax + 0x1709]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 8]
mov esi, dword [ebp - 0x10]
mov esi, dword [esi + 0x14]
lea edi, [esi + 1]
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov ebx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x10]
mov byte [ecx + esi], al
mov esi, dword [ebp - 0x18]
mov eax, dword [edi + 0x170c]
mov cl, 0x10
sub cl, al
shr edx, cl
mov ecx, eax
mov word [edi + 0x1708], dx
add ecx, 0xfffffff3
jmp 0x4f7e01
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, edx
movzx edx, si
shl esi, cl
or eax, esi
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea edi, [esi + 1]
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov byte [ecx + esi], al
mov eax, dword [ebp - 0x10]
mov al, byte [eax + 0x1709]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 8]
mov esi, dword [ebp - 0x10]
mov esi, dword [esi + 0x14]
lea edi, [esi + 1]
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov ebx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x10]
mov byte [ecx + esi], al
mov esi, dword [ebp - 0x18]
mov eax, dword [edi + 0x170c]
mov cl, 0x10
sub cl, al
shr edx, cl
mov ecx, eax
mov word [edi + 0x1708], dx
add ecx, 0xfffffff7
jmp 0x4f7e01
mov edx, dword [ebp - 0x10]
mov word [edx + 0x1708], ax
mov edi, dword [edx + 8]
mov esi, dword [edx + 0x14]
lea ecx, [esi + 1]
mov dword [edx + 0x14], ecx
mov byte [edi + esi], al
mov al, byte [edx + 0x1709]
mov byte [ebp - 0x25], al
mov ecx, dword [edx + 8]
mov esi, dword [edx + 0x14]
lea eax, [esi + 1]
mov dword [edx + 0x14], eax
mov al, byte [ebp - 0x25]
mov byte [ecx + esi], al
mov eax, dword [edx + 0x170c]
mov cl, 0x10
sub cl, al
mov edx, dword [ebp - 0x14]
add eax, edx
add eax, 0xfffffff0
mov edx, dword [ebp - 0x1c]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f8010