Function at 0x4f6a10
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 0x4f6e7a
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
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 - 0x18], eax
lea edx, [eax + 1]
cmp edx, ecx
mov dword [ebp - 0x1c], esi
jge 0x4f6a79
cmp ebx, esi
je 0x4f6bfd
cmp edx, dword [ebp - 0x14]
jge 0x4f6b27
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi + 0x170c]
mov dword [ebp - 0x28], ebx
movzx eax, word [edi + ebx*4 + 0xace]
mov esi, 0x10
sub esi, eax
movzx ebx, word [edi + ebx*4 + 0xacc]
mov dword [ebp - 0x18], ebx
shl ebx, cl
or bx, word [edi + 0x1708]
mov word [edi + 0x1708], bx
cmp ecx, esi
jg 0x4f6ad6
add ecx, eax
mov edi, dword [ebp - 0x10]
mov dword [edi + 0x170c], ecx
dec edx
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x28]
je 0x4f6be1
jmp 0x4f6a8e
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 - 0x18]
shr esi, cl
mov word [edi + 0x1708], si
lea ecx, [eax + ebx]
add ecx, 0xfffffff0
jmp 0x4f6ac1
test ebx, ebx
je 0x4f6d55
cmp ebx, edi
je 0x4f6cd5
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 0x4f6c7d
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 - 0x20], eax
mov ecx, dword [ebp - 0x14]
shl eax, cl
sub esi, edx
or ax, word [edi + 0x1708]
cmp ecx, esi
jg 0x4f6c26
add ecx, edx
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
mov dword [edi + 0x170c], ecx
add edx, 0xfffd
cmp ecx, 0xf
jge 0x4f6ce9
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 0x4f6c18
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
mov ebx, dword [ebp - 0x30]
lea esi, [ebx + 1]
mov eax, edx
cmp ebx, dword [ebp + 8]
mov edx, esi
mov esi, dword [ebp - 0x1c]
jne 0x4f6a55
jmp 0x4f6e7a
mov ecx, 0x8a
mov dword [ebp - 0x14], 3
jmp 0x4f6bfb
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 - 0x20]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f6bb2
mov esi, dword [ebp - 0x10]
mov ecx, dword [esi + 8]
mov dword [ebp - 0x20], ecx
mov edi, dword [esi + 0x14]
lea ecx, [edi + 1]
mov dword [esi + 0x14], ecx
mov ecx, dword [ebp - 0x20]
mov byte [ecx + edi], dl
mov cl, byte [esi + 0x1709]
mov byte [ebp - 0x20], cl
mov edx, dword [esi + 8]
mov edi, dword [esi + 0x14]
lea ecx, [edi + 1]
mov dword [esi + 0x14], ecx
mov cl, byte [ebp - 0x20]
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 0x4f6b7a
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + 0x170c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
jmp 0x4f6b83
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 - 0x28], 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 - 0x28]
mov edi, dword [ebp - 0x10]
mov byte [ecx + esi], al
mov esi, dword [ebp - 0x1c]
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 0x4f6bdb
mov edi, dword [ebp - 0x10]
mov edx, dword [edi + 0x170c]
movzx eax, word [edi + 0x1708]
cmp dword [ebp - 0x18], 9
jg 0x4f6de5
movzx ecx, word [edi + 0xb12]
mov dword [ebp - 0x14], ecx
movzx esi, word [edi + 0xb10]
mov dword [ebp - 0x20], esi
mov ecx, edx
shl esi, cl
or eax, esi
mov esi, dword [ebp - 0x14]
mov ecx, 0x10
sub ecx, esi
cmp edx, ecx
jg 0x4f6e12
mov ecx, edx
add ecx, esi
mov esi, dword [ebp - 0x1c]
mov dword [edi + 0x170c], ecx
mov edx, dword [ebp - 0x18]
add edx, 0xfffe
cmp ecx, 0xe
jge 0x4f6e8b
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 3
jmp 0x4f6bdb
mov esi, dword [ebp - 0x1c]
mov dword [edi + 0x170c], ecx
mov edx, dword [ebp - 0x18]
add edx, 0xfff6
cmp ecx, 0xa
jl 0x4f6eed
jmp 0x4f6f00
movzx ecx, word [edi + 0xb16]
mov dword [ebp - 0x14], ecx
movzx esi, word [edi + 0xb14]
mov dword [ebp - 0x20], esi
mov ecx, edx
shl esi, cl
or eax, esi
mov esi, dword [ebp - 0x14]
mov ecx, 0x10
sub ecx, esi
cmp edx, ecx
jle 0x4f6e82
jmp 0x4f6f62
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov dword [ebp - 0x24], ecx
mov edx, esi
mov esi, dword [edi + 0x14]
lea edi, [esi + 1]
mov ecx, dword [ebp - 0x10]
mov dword [ecx + 0x14], edi
mov ecx, dword [ebp - 0x24]
mov byte [ecx + esi], al
mov ecx, dword [ebp - 0x10]
mov al, byte [ecx + 0x1709]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x10]
mov edi, dword [ecx + 0x14]
lea ecx, [edi + 1]
mov esi, dword [ebp - 0x10]
mov dword [esi + 0x14], ecx
mov ecx, dword [ebp - 0x24]
mov byte [ecx + edi], al
mov edi, dword [ebp - 0x10]
mov eax, dword [edi + 0x170c]
mov cl, 0x10
sub cl, al
add eax, edx
add eax, 0xfffffff0
mov edx, dword [ebp - 0x20]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f6d97
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edx
add ecx, esi
jmp 0x4f6dc5
movzx esi, dx
mov dword [ebp - 0x18], esi
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0x14]
lea esi, [edx + 1]
mov dword [edi + 0x14], esi
mov byte [ecx + edx], al
mov al, byte [edi + 0x1709]
mov edx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea edi, [esi + 1]
mov ecx, ebx
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov ebx, ecx
mov edi, dword [ebp - 0x10]
mov byte [edx + esi], al
mov esi, dword [ebp - 0x1c]
mov edx, dword [edi + 0x170c]
mov cl, 0x10
sub cl, dl
mov eax, dword [ebp - 0x18]
shr eax, cl
mov ecx, edx
mov word [edi + 0x1708], ax
add ecx, 0xfffffff3
jmp 0x4f6bdb
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 7
jmp 0x4f6bdb
movzx esi, dx
mov dword [ebp - 0x18], esi
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0x14]
lea esi, [edx + 1]
mov dword [edi + 0x14], esi
mov byte [ecx + edx], al
mov al, byte [edi + 0x1709]
mov edx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea edi, [esi + 1]
mov ecx, ebx
mov ebx, dword [ebp - 0x10]
mov dword [ebx + 0x14], edi
mov ebx, ecx
mov edi, dword [ebp - 0x10]
mov byte [edx + esi], al
mov esi, dword [ebp - 0x1c]
mov edx, dword [edi + 0x170c]
mov cl, 0x10
sub cl, dl
mov eax, dword [ebp - 0x18]
shr eax, cl
mov ecx, edx
mov word [edi + 0x1708], ax
add ecx, 0xfffffff7
jmp 0x4f6bdb
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov dword [ebp - 0x24], ecx
mov edx, esi
mov esi, dword [edi + 0x14]
lea edi, [esi + 1]
mov ecx, dword [ebp - 0x10]
mov dword [ecx + 0x14], edi
mov ecx, dword [ebp - 0x24]
mov byte [ecx + esi], al
mov ecx, dword [ebp - 0x10]
mov al, byte [ecx + 0x1709]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x10]
mov edi, dword [ecx + 0x14]
lea ecx, [edi + 1]
mov esi, dword [ebp - 0x10]
mov dword [esi + 0x14], ecx
mov ecx, dword [ebp - 0x24]
mov byte [ecx + edi], al
mov edi, dword [ebp - 0x10]
mov eax, dword [edi + 0x170c]
mov cl, 0x10
sub cl, al
add eax, edx
add eax, 0xfffffff0
mov edx, dword [ebp - 0x20]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f6dc5