Function at 0x4040a0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x18
movss xmm4, dword [0x4fc25c]
xor ecx, ecx
movss xmm3, dword [0x4fc3d4]
movss xmm5, dword [0x4fc794]
push esi
push edi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x14], 0x16
nop
xor eax, eax
mov dword [ebp - 0xc], 1
mov dword [ebp - 8], eax
xor edx, edx
nop
mov edi, 0x800
mov dword [ebp - 0x10], 0x11
xor esi, esi
nop
cmp ax, 3
movzx eax, dx
jae 0x404166
movd xmm2, dword [ebp - 0xc]
movaps xmm0, xmm3
add eax, dword [ebp - 4]
movzx ecx, di
cvtdq2ps xmm2, xmm2
lea eax, [eax + eax*2]
shl eax, 4
movss xmm1, dword [ecx*4 + 0x98ab20]
mulss xmm1, xmm4
mov dword [eax + 0x570fe8], 0xffffffff
mulss xmm1, xmm2
subss xmm0, xmm1
movss dword [eax + 0x570ff0], xmm0
movss xmm0, dword [ecx*4 + 0x94ab20]
mulss xmm0, xmm4
mulss xmm0, xmm2
addss xmm0, xmm3
movss dword [eax + 0x570ff4], xmm0
jmp 0x4041b4
movss xmm1, dword [0x4fc598]
add eax, ecx
movd xmm0, esi
cvtdq2ps xmm0, xmm0
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 8]
shl ecx, 4
and eax, 1
subss xmm0, xmm5
mov dword [ecx + 0x570fe8], 0xffffff
mulss xmm0, dword [0x4fc21c]
movss dword [ecx + 0x570ff0], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm1, xmm0
movss dword [ecx + 0x570ff4], xmm1
mov eax, dword [ebp - 8]
inc esi
mov ecx, dword [ebp - 4]
inc edx
add edi, 0x1000
sub dword [ebp - 0x10], 1
jne 0x404100
inc dword [ebp - 0xc]
inc eax
mov dword [ebp - 8], eax
cmp ax, 5
jb 0x4040f0
add ecx, 0x55
sub dword [ebp - 0x14], 1
mov dword [ebp - 4], ecx
jne 0x4040e0
movzx eax, byte [0x5648cb]
mov ecx, 0x56eed4
movss xmm4, dword [0x7e80bc]
mov edi, dword [0x56ad04]
movaps xmm7, xmm4
xorps xmm7, xmmword [0x4fd2b0]
movss xmm5, dword [eax*4 + 0x4e9560]
movss xmm6, dword [0x4fc3ec]
mov dword [ebp - 0x14], 0x16
nop dword [eax]
mov edx, 0x1000
mov esi, 8
nop word [eax + eax]
movzx eax, dx
add edx, 0x2000
movss dword [ecx + 4], xmm7
mov dword [ecx + 0x14], edi
movss xmm2, dword [eax*4 + 0x98ab20]
movss xmm1, dword [eax*4 + 0x94ab20]
movaps xmm0, xmm2
mulss xmm0, xmm4
mulss xmm2, xmm6
mulss xmm0, xmm5
addss xmm2, xmm3
movss dword [ecx - 4], xmm0
movaps xmm0, xmm1
mulss xmm1, xmm6
mulss xmm0, xmm4
addss xmm1, xmm3
movss dword [ecx + 0x1c], xmm2
mulss xmm0, xmm5
movss dword [ecx + 0x20], xmm1
movss dword [ecx], xmm0
add ecx, 0x30
sub esi, 1
jne 0x404240
sub dword [ebp - 0x14], 1
jne 0x404230
cmp byte [0xb242c8], 0
lea ecx, [esi + 0x7e]
jne 0x4042c5
call fcn.004d14b0
lea ecx, [esi + 0x7f]
call fcn.004d14b0
jmp 0x4042cf
mov edx, 0x7f
call fcn.004d1800
cmp byte [0x7e811b], 0
jne 0x4044c4
movsx eax, byte [0x7e8122]
mov dword [ebp - 0x14], 5
mov ecx, dword [eax*4 + 0x7d0d30]
mov eax, ecx
shr eax, 0x10
movzx eax, al
imul esi, eax, 0x1800
mov eax, ecx
and eax, 0xff00ffff
or esi, eax
mov eax, ecx
shr eax, 8
and esi, 0xffff00ff
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 3
or esi, eax
movzx eax, cl
and esi, 0xffffff00
lea eax, [eax + eax*2]
shl eax, 3
shr eax, 8
or esi, eax
xor edi, edi
movss xmm3, dword [edi + 0x990b20]
xor dl, dl
mulss xmm3, dword [0x4fc0d8]
mov ecx, 0x7e
push 2
movss xmm1, dword [edi + 0x950b20]
mulss xmm1, dword [0x4fc310]
push esi
movss xmm2, dword [0x4fc4b0]
movaps xmm0, xmm3
mulss xmm0, dword [0x4fc7f0]
push esi
addss xmm1, dword [0x4fc3d4]
sub esp, 0xc
movss dword [esp + 8], xmm3
movss dword [esp + 4], xmm3
movss dword [esp], xmm0
call fcn.004d1d50
add esp, 0x18
add edi, 0x5000
sub dword [ebp - 0x14], 1
jne 0x404334
movss xmm3, dword [0x4fc1c4]
xor dl, dl
movss xmm2, dword [0x4fc3d4]
xorps xmm1, xmm1
push 2
push esi
push esi
sub esp, 0xc
mov ecx, 0x7e
mov dword [esp + 8], 0x3d75c28f
mov dword [esp + 4], 0x3d75c28f
mov dword [esp], 0x3ef5c28f
call fcn.004d1d50
movsx eax, byte [0x7e8122]
add esp, 0x18
movss xmm3, dword [0x4fc114]
mov dl, 1
movss xmm2, dword [0x4fc2c4]
movss xmm1, dword [0x4fc504]
mov ecx, dword [eax*4 + 0x7d0d00]
mov eax, ecx
shr eax, 0x10
movzx eax, al
imul esi, eax, 0x6000
mov eax, ecx
and eax, 0xff00ffff
push 2
or esi, eax
mov eax, ecx
shr eax, 8
and esi, 0xffff00ff
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 5
or esi, eax
movzx eax, cl
and esi, 0xffffff00
mov ecx, 0x7e
lea eax, [eax + eax*2]
shl eax, 5
shr eax, 8
or esi, eax
push esi
push esi
sub esp, 0xc
mov dword [esp + 8], 0x3d23d70a
mov dword [esp + 4], 0x3d23d70a
mov dword [esp], 0x3ea3d70a
call fcn.004d1d50
movss xmm3, dword [0x4fc114]
add esp, 0x18
movss xmm2, dword [0x4fc2c4]
mov dl, 1
movss xmm1, dword [0x4fc21c]
mov ecx, 0x7e
push 2
push esi
push esi
sub esp, 0xc
mov dword [esp + 8], 0x3d23d70a
mov dword [esp + 4], 0x3d23d70a
mov dword [esp], 0x3ea3d70a
call fcn.004d1d50
add esp, 0x18
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
movss xmm2, dword [0x4fc2c4]
xor edx, edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], 2
nop dword [eax + eax]
movsx eax, byte [0x7e8122]
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x14], 3
mov ecx, dword [eax*4 + 0x7d0d00]
mov eax, ecx
shr eax, 0x10
movzx eax, al
imul esi, eax, 0x6000
mov eax, ecx
mulss xmm0, dword [0x4fc3d4]
and eax, 0xff00ffff
or esi, eax
addss xmm0, xmm2
mov eax, ecx
and esi, 0xffff00ff
shr eax, 8
movzx eax, al
movss dword [ebp - 8], xmm0
lea eax, [eax + eax*2]
shl eax, 5
or esi, eax
movzx eax, cl
and esi, 0xffffff00
lea eax, [eax + eax*2]
shl eax, 5
shr eax, 8
or esi, eax
xor edi, edi
movss xmm3, dword [0x4fc088]
mov dl, 1
movd xmm1, edi
mov ecx, 0x7e
cvtdq2ps xmm1, xmm1
push 2
push esi
push esi
sub esp, 0xc
subss xmm1, dword [0x4fc598]
mov dword [esp + 8], 0x3ca3d70a
mov dword [esp + 4], 0x3ca3d70a
mov dword [esp], 0x3e23d70a
mulss xmm1, dword [0x4fc1e0]
addss xmm1, xmm0
call fcn.004d1d50
movss xmm0, dword [ebp - 8]
add esp, 0x18
movss xmm2, dword [0x4fc2c4]
inc edi
sub dword [ebp - 0x14], 1
jne 0x404550
movsx eax, byte [0x7e8122]
xor dl, dl
movss xmm3, dword [0x4fc114]
xorps xmm1, xmm1
movss xmm2, dword [0x4fc3d4]
push 2
mov ecx, dword [eax*4 + 0x7d0d30]
mov eax, ecx
shr eax, 0x10
movzx eax, al
imul esi, eax, 0x1800
mov eax, ecx
and eax, 0xff00ffff
or esi, eax
mov eax, ecx
shr eax, 8
and esi, 0xffff00ff
movzx eax, al
lea eax, [eax + eax*2]
shl eax, 3
or esi, eax
movzx eax, cl
and esi, 0xffffff00
mov ecx, 0x7e
lea eax, [eax + eax*2]
shl eax, 3
shr eax, 8
or esi, eax
push esi
push esi
sub esp, 0xc
mov dword [esp + 8], 0x3d4ccccd
mov dword [esp + 4], 0x3d4ccccd
mov dword [esp], 0x3ecccccd
call fcn.004d1d50
movss xmm3, dword [0x4fc114]
add esp, 0x18
movss xmm2, dword [0x4fc3d4]
xor dl, dl
movss xmm1, dword [0x4fc598]
mov ecx, 0x7e
push 2
push esi
push esi
sub esp, 0xc
mov dword [esp + 8], 0x3d4ccccd
mov dword [esp + 4], 0x3d4ccccd
mov dword [esp], 0x3ecccccd
call fcn.004d1d50
mov edx, dword [ebp - 0x10]
add esp, 0x18
movss xmm2, dword [0x4fc2c4]
inc edx
sub dword [ebp - 0xc], 1
mov dword [ebp - 0x10], edx
jne 0x4044e0
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret