Function at 0x4f6660
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 0x4f6b97
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 0x4f6750
movzx eax, word [edi + ebx*4 + 0xace]
mov esi, 0x10
sub esi, eax
movzx ebx, word [edi + ebx*4 + 0xacc]
mov dword [ebp - 0x20], ebx
shl ebx, cl
or bx, word [edi + 0x1708]
mov word [edi + 0x1708], bx
cmp ecx, esi
jg 0x4f66fa
add ecx, eax
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x28]
mov dword [edi + 0x170c], ecx
add edx, 0xffffffff
je 0x4f6860
jmp 0x4f66b0
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 - 0x20]
shr esi, cl
mov word [edi + 0x1708], si
lea ecx, [eax + ebx]
add ecx, 0xfffffff0
jmp 0x4f66e3
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 - 0x20], eax
lea edx, [eax + 1]
cmp edx, ecx
mov dword [ebp - 0x1c], esi
jge 0x4f6790
cmp ebx, esi
jne 0x4f6790
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 0x4f6750
jmp 0x4f6b97
cmp edx, dword [ebp - 0x14]
mov dword [ebp - 0x28], ebx
jge 0x4f67a6
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi + 0x170c]
jmp 0x4f66b0
test ebx, ebx
je 0x4f688f
cmp ebx, edi
je 0x4f69ad
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 0x4f6959
add ecx, eax
mov edi, dword [ebp - 0x10]
mov dword [edi + 0x170c], ecx
movzx edx, word [edi + 0xb0e]
mov esi, 0x10
movzx eax, word [edi + 0xb0c]
mov dword [ebp - 0x14], eax
shl eax, cl
sub esi, edx
or ax, word [edi + 0x1708]
cmp ecx, esi
jg 0x4f6902
add ecx, edx
mov edi, dword [ebp - 0x10]
mov dword [edi + 0x170c], ecx
mov edx, dword [ebp - 0x20]
add edx, 0xfffd
cmp ecx, 0xf
mov esi, dword [ebp - 0x1c]
jge 0x4f69be
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 2
mov dword [edi + 0x170c], ecx
nop dword [eax]
xor edx, edx
test esi, esi
je 0x4f6881
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 0x4f6770
mov ecx, 0x8a
mov dword [ebp - 0x14], 3
jmp 0x4f687a
cmp dword [ebp - 0x20], 9
jg 0x4f6a27
mov edx, dword [ebp - 0x10]
movzx edi, word [edx + 0xb12]
mov ecx, dword [edx + 0x170c]
mov esi, 0x10
movzx eax, word [edx + 0xb10]
mov dword [ebp - 0x18], eax
shl eax, cl
mov dword [ebp - 0x14], edi
sub esi, edi
or ax, word [edx + 0x1708]
cmp ecx, esi
jg 0x4f6af5
add ecx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x10]
mov dword [edi + 0x170c], ecx
mov edx, dword [ebp - 0x20]
add edx, 0xfffe
cmp ecx, 0xe
jge 0x4f6b9f
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 3
jmp 0x4f6853
mov edi, dword [ebp - 0x10]
mov word [edi + 0x1708], ax
mov ecx, dword [edi + 8]
mov dword [ebp - 0x18], ecx
mov esi, dword [edi + 0x14]
lea ecx, [esi + 1]
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp - 0x18]
mov byte [ecx + esi], al
mov al, byte [edi + 0x1709]
mov byte [ebp - 0x18], al
mov ecx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea eax, [esi + 1]
mov dword [edi + 0x14], eax
mov al, byte [ebp - 0x18]
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 - 0x14]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f6827
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi + 8]
mov dword [ebp - 0x18], ecx
mov esi, dword [edi + 0x14]
lea ecx, [esi + 1]
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp - 0x18]
mov byte [ecx + esi], dl
mov cl, byte [edi + 0x1709]
mov byte [ebp - 0x18], cl
mov edx, dword [edi + 8]
mov esi, dword [edi + 0x14]
lea ecx, [esi + 1]
mov dword [edi + 0x14], ecx
mov cl, byte [ebp - 0x18]
mov byte [edx + esi], cl
mov edx, dword [edi + 0x170c]
mov cl, 0x10
sub cl, dl
mov esi, dword [ebp - 0x14]
shr esi, cl
mov word [edi + 0x1708], si
lea ecx, [eax + edx]
add ecx, 0xfffffff0
jmp 0x4f67f6
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi + 0x170c]
mov dword [ebp - 0x20], edx
jmp 0x4f67fc
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 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 0x4f6853
mov edi, dword [ebp - 0x10]
movzx edx, word [edi + 0xb16]
mov ecx, dword [edi + 0x170c]
mov esi, 0x10
movzx eax, word [edi + 0xb14]
mov dword [ebp - 0x18], eax
shl eax, cl
mov dword [ebp - 0x14], edx
sub esi, edx
or ax, word [edi + 0x1708]
cmp ecx, esi
jg 0x4f6b49
add ecx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
mov dword [edi + 0x170c], ecx
add edx, 0xfff6
cmp ecx, 0xa
jge 0x4f6a8c
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 7
jmp 0x4f6853
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 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, 0xfffffff7
jmp 0x4f6853
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 - 0x21], al
mov ecx, dword [edx + 8]
mov esi, dword [edx + 0x14]
lea eax, [esi + 1]
mov dword [edx + 0x14], eax
mov al, byte [ebp - 0x21]
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 - 0x18]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f68d1
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 - 0x18]
shr edx, cl
mov ecx, eax
mov eax, edx
jmp 0x4f6a62
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 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, 0xfffffff3
jmp 0x4f6853