Function at 0x401117
Capabilities:
Encrypt data using rc4 prga

Disassembly:
subps xmm0, xmm1
mulps xmm0, xmm3
add edx, 4
add ebp, 4
cvtps2pi mm3, xmm0
movss xmm0, dword [ebp]
movss xmm1, dword [edx]
unpcklps xmm0, xmm1
movmskps ecx, xmm2
movaps xmm2, xmm0
movd esi, mm0
psrlq mm0, 0x20
movd eax, mm0
cvttps2pi mm0, xmm0
movlhps xmm2, xmm7
movlhps xmm6, xmm0
lea esi, [esi + esi*2]
imul eax, dword [esp + 0x20]
add esi, dword [esp + 0x1c]
add esi, eax
add edi, 3
movq mm1, mm0
pcmpeqd mm0, mm6
cmpltps xmm2, xmm6
paddd mm0, mm1
cvtpi2ps xmm1, mm0
cmp ecx, 0
jne 0x4011be
movq mm2, qword [esp]
movq mm4, mm3
psubd mm2, mm3
movq mm3, mm2
punpckldq mm2, mm4
punpckhdq mm3, mm4
packssdw mm2, mm2
packssdw mm3, mm3
mov ecx, dword [esp + 0x20]
movzx eax, byte [esi + 3]
shl eax, 0x10
movzx ebx, byte [esi]
or eax, ebx
movd mm5, eax
movzx eax, byte [ecx + esi + 3]
inc esp
xor dword [ebx], eax
inc esp
xor dword [ebx], eax
shl eax, 0x10
movzx ebx, byte [ecx + esi]
or eax, ebx
movd mm1, eax
punpckldq mm5, mm1
movzx eax, byte [esi + 4]
shl eax, 0x10
movzx ebx, byte [esi + 1]
or eax, ebx
movd mm4, eax
movzx eax, byte [ecx + esi + 4]
shl eax, 0x10
movzx ebx, byte [ecx + esi + 1]
or eax, ebx
movd mm1, eax
punpckldq mm4, mm1
movzx eax, byte [esi + 5]
shl eax, 0x10
movzx ebx, byte [esi + 2]
or eax, ebx
movd mm7, eax
movzx eax, byte [ecx + esi + 5]
shl eax, 0x10
movzx ebx, byte [ecx + esi + 2]
or eax, ebx
movd mm1, eax
punpckldq mm7, mm1
pmaddwd mm5, mm2
psrad mm5, 8
packssdw mm5, mm5
pmaddwd mm5, mm3
movd eax, mm5
add eax, 0x21
sar eax, 0x14
mov byte [edi - 3], al
pmaddwd mm4, mm2
psrad mm4, 8
packssdw mm4, mm4
pmaddwd mm4, mm3
movd eax, mm4
add eax, 0x21
sar eax, 0x14
mov byte [edi - 2], al
pmaddwd mm7, mm2
psrad mm7, 8
packssdw mm7, mm7
pmaddwd mm7, mm3
movd eax, mm7
add eax, 0x21
sar eax, 0x14
mov byte [edi - 1], al
sub dword [esp + 0x30], 1
jne 0x40108b
movmskps ecx, xmm2
cmp ecx, 0
jne 0x4012ca
subps xmm0, xmm1
mulps xmm0, xmm3
cvtps2pi mm3, xmm0
movd esi, mm0
psrlq mm0, 0x20
movd eax, mm0
lea esi, [esi + esi*2]
imul eax, dword [esp + 0x20]
add esi, dword [esp + 0x1c]
add esi, eax
movq mm2, qword [esp]
movq mm4, mm3
psubd mm2, mm3
movq mm3, mm2
punpckldq mm2, mm4
punpckhdq mm3, mm4
packssdw mm2, mm2
packssdw mm3, mm3
mov ecx, dword [esp + 0x20]
movzx eax, byte [esi + 3]
shl eax, 0x10
movzx ebx, byte [esi]
or eax, ebx
movd mm5, eax
movzx eax, byte [ecx + esi + 3]
shl eax, 0x10
movzx ebx, byte [ecx + esi]
or eax, ebx
movd mm1, eax
punpckldq mm5, mm1
movzx eax, byte [esi + 4]
shl eax, 0x10
movzx ebx, byte [esi + 1]
or eax, ebx
movd mm4, eax
movzx eax, byte [ecx + esi + 4]
shl eax, 0x10
movzx ebx, byte [ecx + esi + 1]
or eax, ebx
movd mm1, eax
punpckldq mm4, mm1
movzx eax, byte [esi + 5]
shl eax, 0x10
movzx ebx, byte [esi + 2]
or eax, ebx
movd mm7, eax
movzx eax, byte [ecx + esi + 5]
shl eax, 0x10
movzx ebx, byte [ecx + esi + 2]
or eax, ebx
movd mm1, eax
punpckldq mm7, mm1
pmaddwd mm5, mm2
psrad mm5, 8
packssdw mm5, mm5
pmaddwd mm5, mm3
movd eax, mm5
add eax, 0x21
sar eax, 0x14
mov byte [edi], al
pmaddwd mm4, mm2
psrad mm4, 8
packssdw mm4, mm4
pmaddwd mm4, mm3
movd eax, mm4
add eax, 0x21
sar eax, 0x14
mov byte [edi + 1], al
pmaddwd mm7, mm2
psrad mm7, 8
packssdw mm7, mm7
pmaddwd mm7, mm3
movd eax, mm7
add eax, 0x21
sar eax, 0x14
mov byte [edi + 2], al
emms
add esp, 8
pop ebp
pop ebx
pop edi
pop esi
ret