Function at 0x474584
Capabilities:
Encrypt data using rc4 prga

Disassembly:
inc dword [edx]
add byte [eax], al
add byte [eax], dh
add byte [eax], bh
add byte [eax], al
add byte [eax], al
xchg esp, eax
inc esp
inc edi
add byte [esi], cl
or eax, 0x656c4554
insd dword es:[edi], dx
outsb dx, byte gs:[esi]
je 0x4744e0
insb byte es:[edi], dx
imul esp, dword [ecx + 0x73], 8
add dword [eax], eax
add byte [eax], al
mov eax, 0x4012
add byte [eax], al
add byte [eax], al
add al, byte [eax]
add byte [eax], al
mov eax, 0x4012
add byte [eax], al
add byte [edx], al
add al, 0x4e
popal
insd dword es:[edi], dx
add al, byte gs:[eax]
pushfd
adc byte [eax], al
add al, 0
add byte [eax], al
add al, byte [0x756c6156]
add al, byte gs:[eax]
add al, byte [eax]
add byte [eax], al
add byte [eax], al
add ah, ah
inc esp
in al, 0x44
inc edi
add byte [esi], cl
andps xmm0, xmmword [ebp + 0x6e]
jne 0x474558
inc ecx
insb byte es:[edi], dx
imul esp, dword [ecx + 0x73], 0x72746e45
jns 0x4744fe
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [eax], bh
inc ebp
inc edi
add byte [eax + eax], al
add byte [eax], al
add byte [edx], al
add byte [eax], al
add al, dh
and eax, dword [edi]
add byte [eax], al
add byte [eax], al
add cl, byte [eax]
push esp
jns 0x474587
dec ecx
outsb dx, byte [esi]
outsw dx, word [esi]
add al, byte [eax]
cmp byte [ebp + 0x47], al
add byte [eax + eax], al
add byte [eax], al
add al, byte [edi]
inc ecx
insb byte es:[edi], dx
imul esp, dword [ecx + 0x73], 0x27365
add al, byte [eax]
add byte [eax], al
add byte [eax], al
add byte [eax*2 + 0x24110047], bh
push esp
inc ecx
jb 0x4745b4
popal
jns 0x474581
push ebx
jns 0x4745bb
je 0x4745af
insd dword es:[edi], dx
push esp
jns 0x4745bf
dec ecx
outsb dx, byte [esi]
outsw dx, word [esi]
push esp
inc ebp
insb byte es:[edi], dx
insd dword es:[edi], dx
insd dword es:[edi], dx
outsb dx, byte gs:[esi]
je 0x47459e
insb byte es:[edi], dx
imul esp, dword [ecx + 0x73], 0x83e
add byte [eax - 0xffb8bc], dl
invalid
inc ebp
inc edi
add byte [ecx], dl
push esp
inc ecx
jb 0x4745fc
popal
jns 0x4745c9
push ebx
jns 0x474603
je 0x4745f7
insd dword es:[edi], dx
push esp
jns 0x474607
dec ecx
outsb dx, byte [esi]
outsw dx, word [esi]
push esp
push esp
inc ebp
outsb dx, byte [esi]
jne 0x47460e
inc ecx
insb byte es:[edi], dx
imul esp, dword [ecx + 0x73], 0x72746e45
jns 0x4745ea
or byte [eax], al
add byte [eax], al
loopne 0x4745f6
add al, ah
inc esp
inc edi
add bh, bh
invalid
add byte [esi], al
push ebx
jns 0x474633
jae 0x474635
je 0x474627
insd dword es:[edi], dx
insd dword es:[edi], dx
loopne 0x474609
inc edi
add byte [edx], al
add byte [ebp + 0x56530040], cl
lea eax, [eax]
push ebx
push esi
mov dl, 0xb5
mov ebx, eax
xor eax, eax
mov ecx, eax
mov esi, ebx
shr esi, cl
mov ecx, esi
and cl, 0xff
xor dl, cl
inc eax
cmp eax, 4
jne 0x4745d4
mov eax, edx
pop esi
pop ebx
ret
mov ebp, eax
xor edi, edi
mov eax, ebp
call 0xc5d3452f
call 0x4745cc
mov ebx, eax
xor esi, esi
jmp 0x47464d
movzx eax, bl
mov eax, dword [eax*4 + 0x8c794c]
cmp ebp, dword [eax + esi*8]
ret
jns 0x47459c
add byte [ebx], bh
sub al, 0xf0
je 0x47462c
cmp byte [esp], 0
je 0x47464c
movzx eax, bl
mov eax, dword [eax*4 + 0x8c794c]
cmp dword [eax + esi*8], 0
jne 0x47464c
cmp al, 0xf0
add byte [ebp + 0x20], dh
movzx eax, bl
mov eax, dword [eax*4 + 0x8c794c]
lea edi, [eax + esi*8]
cmp byte [esp], 0
jns 0x4745c1
add byte [ebp + 0x3c80f03c], cl
and al, 0
je 0x4746cd
cmp dword [edi], 0
jne 0x4746cd
inc esi
movzx eax, bl
mov eax, dword [eax*4 + 0x8c794c]
call fcn.0040cffc
cmp esi, eax
jl 0x474607
cmp byte [esp], 0
je 0x4746cb
test edi, edi
jne 0x4746c7
movzx edi, bl
mov eax, dword [edi*4 + 0x8c794c]
mov dword [esp + 4], eax
mov esi, dword [esp + 4]
test esi, esi
je 0x474685
sub esi, 4
mov esi, dword [esi]
inc esi
push esi
lea eax, [edi*4 + 0x8c794c]
mov ecx, 1
mov edx, dword [0x474580]
call fcn.0040d2b8
add esp, 4
mov eax, dword [edi*4 + 0x8c794c]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
test eax, eax
je 0x4746b9
sub eax, 4
mov eax, dword [eax]
dec eax
movzx edx, bl
mov edx, dword [edx*4 + 0x8c794c]
lea edi, [edx + eax*8]
mov dword [edi], ebp
jmp 0x4746cd
xor edi, edi
mov eax, edi
add esp, 0xc
pop ebp
pop edi
pop esi
pop ebx
ret