Function at 0x4f6930
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 0x4f6d9a
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 0x4f6999
cmp ebx, esi
je 0x4f6b1d
cmp edx, dword [ebp - 0x14]
jge 0x4f6a47
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 0x4f69f6
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 0x4f6b01
jmp 0x4f69ae
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 0x4f69e1
test ebx, ebx
je 0x4f6c75
cmp ebx, edi
je 0x4f6bf5
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 0x4f6b9d
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 0x4f6b46
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 0x4f6c09
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 0x4f6b38
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 0x4f6975
jmp 0x4f6d9a
mov ecx, 0x8a
mov dword [ebp - 0x14], 3
jmp 0x4f6b1b
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 0x4f6ad2
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 0x4f6a9a
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + 0x170c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
jmp 0x4f6aa3
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 0x4f6afb
mov edi, dword [ebp - 0x10]
mov edx, dword [edi + 0x170c]
movzx eax, word [edi + 0x1708]
cmp dword [ebp - 0x18], 9
jg 0x4f6d05
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 0x4f6d32
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 0x4f6dab
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 3
jmp 0x4f6afb
mov esi, dword [ebp - 0x1c]
mov dword [edi + 0x170c], ecx
mov edx, dword [ebp - 0x18]
add edx, 0xfff6
cmp ecx, 0xa
jl 0x4f6e0d
jmp 0x4f6e20
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 0x4f6da2
jmp 0x4f6e82
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 0x4f6cb7
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edx
add ecx, esi
jmp 0x4f6ce5
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 0x4f6afb
shl edx, cl
or eax, edx
mov word [edi + 0x1708], ax
add ecx, 7
jmp 0x4f6afb
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 0x4f6afb
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 0x4f6ce5