Function at 0x4178f4
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffec
mov esi, eax
mov dword [esp], 7
mov dword [esp + 4], 0x20
mov dword [esp + 8], 0x80
mov eax, dword [esi + 0x990]
mov dword [esp + 0xc], eax
jmp 0x417c47
mov edx, dword [esi + 0x24]
and dword [esi + 0x149c], edx
xor ecx, ecx
mov dword [esi + 0x54], ecx
mov edx, dword [esi]
mov eax, dword [esi + 0x149c]
mov bl, byte [edx + eax]
dec eax
and eax, dword [esi + 0x24]
mov edx, dword [esi]
cmp bl, byte [edx + eax]
jne 0x41797c
mov dword [esi + 0x58], 1
jmp 0x417953
inc dword [esi + 0x58]
mov ecx, dword [esi + 0x149c]
mov eax, dword [esi + 0x58]
add ecx, eax
and ecx, dword [esi + 0x24]
mov edx, dword [esi]
cmp bl, byte [edx + ecx]
jne 0x41796f
cmp eax, 0x100
jl 0x417950
cmp dword [esi + 0x58], 7
jl 0x41797c
mov dword [esi + 0x54], 1
mov eax, dword [esi + 0x149c]
mov ecx, dword [esi]
xor edx, edx
mov dl, byte [ecx + eax + 2]
mov ecx, dword [esi]
movzx ecx, byte [ecx + eax + 1]
mov edx, dword [edx*4 + 0x4436fc]
shl edx, 0xa
mov ecx, dword [ecx*4 + 0x4436fc]
shl ecx, 4
add edx, ecx
mov ecx, dword [esi]
movzx ecx, byte [ecx + eax]
add edx, ecx
mov ecx, edx
mov edx, dword [esi]
and ecx, 0x3ffff
movzx edx, byte [edx + eax + 3]
mov edx, dword [edx*4 + 0x4436fc]
shl edx, 6
add ecx, edx
and ecx, 0x3ffff
mov dword [esp + 0x10], ecx
mov ecx, dword [esi]
mov edx, dword [esi + 0x10]
mov edi, dword [esi + 0x149c]
movzx eax, byte [ecx + eax + 4]
mov ecx, dword [esi + 0x10]
mov eax, dword [eax*4 + 0x4436fc]
shl eax, 8
add eax, dword [esp + 0x10]
and eax, dword [esi + 0x1c]
mov edx, dword [edx + eax*4]
and edx, dword [esi + 0x24]
mov dword [ecx + eax*4], edi
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x149c]
mov dword [eax + ecx*4], edx
test byte [esi + 0x149c], 0xf
jne 0x417a3f
cmp dword [esi + 0x54], 0
jne 0x417a3f
mov dword [esi + 0x58], 0x1f
mov ecx, edx
mov eax, esi
mov edx, 1
call fcn.004166f4
cmp dword [esi + 0x58], 0x80
jge 0x417a3f
xor eax, eax
mov dword [esi + 0x54], eax
cmp dword [esi + 0x54], 0
je 0x417c0c
mov edx, dword [esp + 0xc]
sub edx, dword [esi + 0x149c]
and edx, dword [esi + 0x24]
cmp edx, dword [esi + 0x58]
jbe 0x417c0c
cmp byte [esi + 0x14a1], 0
jne 0x417a77
mov ecx, dword [esi + 0x54]
cmp ecx, dword [esi + 0x149c]
ja 0x417c0c
mov eax, dword [esi + 0x149c]
inc eax
and eax, dword [esi + 0x24]
mov dword [esi + 0x149c], eax
xor ecx, ecx
jmp 0x417b7e
mov eax, dword [esi + 0x149c]
mov edx, dword [esi]
mov ebx, dword [esi]
movzx edx, byte [edx + eax]
inc eax
and eax, dword [esi + 0x24]
movzx eax, byte [ebx + eax]
shl eax, 8
mov bl, byte [esi + 0x149c]
add edx, eax
mov eax, edx
mov edx, dword [esi + 4]
and eax, 0x3fff
mov byte [edx + eax], bl
mov eax, dword [esi + 0x149c]
mov edx, dword [esi]
mov ebx, dword [esi]
movzx edx, byte [edx + eax + 2]
movzx ebx, byte [ebx + eax + 1]
mov edx, dword [edx*4 + 0x4436fc]
shl edx, 0xa
mov ebx, dword [ebx*4 + 0x4436fc]
shl ebx, 4
add edx, ebx
mov ebx, dword [esi]
movzx eax, byte [ebx + eax]
add edx, eax
mov bx, word [esi + 0x149c]
and edx, 0x3ffff
mov eax, edx
mov edx, dword [esi + 8]
mov word [edx + eax*2], bx
mov edx, dword [esi + 0x149c]
mov ebx, dword [esi]
movzx ebx, byte [ebx + edx + 3]
mov ebx, dword [ebx*4 + 0x4436fc]
shl ebx, 6
add eax, ebx
mov ebx, dword [esi + 0xc]
and eax, 0x3ffff
mov dword [ebx + eax*4], edx
mov edx, dword [esi]
mov ebx, dword [esi + 0x149c]
mov edi, dword [esi + 0x10]
movzx edx, byte [edx + ebx + 4]
mov edx, dword [edx*4 + 0x4436fc]
shl edx, 8
add eax, edx
mov edx, dword [esi + 0x10]
and eax, dword [esi + 0x1c]
mov edx, dword [edx + eax*4]
and edx, dword [esi + 0x24]
mov dword [edi + eax*4], ebx
mov ebx, dword [esi]
movzx ebx, byte [ebx + edx]
xor eax, ebx
test al, 0xf
je 0x417b61
xor edx, edx
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x149c]
mov dword [eax + ebx*4], edx
mov eax, dword [esi + 0x149c]
inc eax
and eax, dword [esi + 0x24]
mov dword [esi + 0x149c], eax
inc ecx
mov edx, dword [esi + 0x58]
dec edx
cmp ecx, edx
jl 0x417a8e
lea ebx, [esi + 0x14b0]
mov edx, dword [esi + 0x60a4]
mov eax, ebx
call fcn.0042e934
cmp dword [esi + 0x54], 1
jne 0x417bc1
mov eax, ebx
mov edx, 5
call fcn.0042e934
mov edx, dword [esi + 0x58]
mov eax, ebx
add edx, 0xfffffffc
call fcn.0042e934
jmp 0x417c47
mov eax, ebx
mov edx, 4
call fcn.0042e934
sub dword [esi + 0x54], 2
mov edx, dword [esi + 0x54]
mov eax, ebx
shr edx, 0x10
call fcn.0042e934
mov edx, dword [esi + 0x54]
mov eax, ebx
shr edx, 8
and edx, 0xff
call fcn.0042e934
xor edx, edx
mov eax, ebx
mov dl, byte [esi + 0x54]
call fcn.0042e934
mov edx, dword [esi + 0x58]
mov eax, ebx
add edx, 0xffffffe0
call fcn.0042e934
jmp 0x417c47
mov edi, ebx
lea ebp, [esi + 0x14b0]
and edi, 0xff
mov eax, ebp
mov edx, edi
call fcn.0042e934
cmp edi, dword [esi + 0x60a4]
jne 0x417c37
mov eax, ebp
mov edx, 1
call fcn.0042e934
mov ecx, dword [esi + 0x149c]
inc ecx
and ecx, dword [esi + 0x24]
mov dword [esi + 0x149c], ecx
lea ebx, [esi + 0x990]
mov edi, dword [esi + 0x149c]
cmp edi, dword [ebx]
jne 0x417c62
mov eax, ebx
call fcn.00419cc8
mov dl, 1
jmp 0x417c64
xor edx, edx
test dl, dl
je 0x417923
add esp, 0x14
pop ebp
pop edi
pop esi
pop ebx
ret