Function at 0x40fa50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov eax, esp
sub esp, 4
and esp, 0xfffffff0
mov dword [esp], eax
mov ebp, esp
lea esp, [ebp - 0x120]
push ebx
push esi
push edi
mov edx, dword [eax + 8]
mov esi, dword [eax + 0xc]
lea edi, [ebp - 0x120]
mov ecx, 2
mov eax, dword [esi + 0x10]
or eax, dword [esi + 0x20]
jne 0x40fb07
movq mm0, qword [esi + 0x10]
movq mm1, qword [esi + 0x20]
por mm0, qword [esi + 0x30]
por mm1, qword [esi + 0x40]
por mm0, qword [esi + 0x50]
por mm1, qword [esi + 0x60]
por mm0, qword [esi + 0x70]
por mm1, mm0
packsswb mm1, mm1
movd eax, mm1
test eax, eax
jne 0x40fb07
movq mm0, qword [esi]
punpckhwd mm1, mm0
punpcklwd mm0, mm0
psrad mm1, 0x10
psrad mm0, 0x10
cvtpi2ps xmm3, mm1
cvtpi2ps xmm0, mm0
movlhps xmm0, xmm3
mulps xmm0, xmmword [edx]
movaps xmm1, xmm0
movaps xmm2, xmm0
movaps xmm3, xmm0
shufps xmm0, xmm0, 0
shufps xmm1, xmm1, 0x55
shufps xmm2, xmm2, 0xaa
shufps xmm3, xmm3, 0xff
movaps xmmword [edi], xmm0
movaps xmmword [edi + 0x10], xmm0
movaps xmmword [edi + 0x20], xmm1
movaps xmmword [edi + 0x30], xmm1
movaps xmmword [edi + 0x40], xmm2
movaps xmmword [edi + 0x50], xmm2
movaps xmmword [edi + 0x60], xmm3
movaps xmmword [edi + 0x70], xmm3
jmp 0x40fd36
movq mm0, qword [esi]
movq mm1, qword [esi + 0x20]
movq mm2, qword [esi + 0x40]
movq mm3, qword [esi + 0x60]
punpckhwd mm4, mm0
punpcklwd mm0, mm0
punpckhwd mm5, mm1
punpcklwd mm1, mm1
psrad mm4, 0x10
psrad mm0, 0x10
cvtpi2ps xmm4, mm4
cvtpi2ps xmm0, mm0
psrad mm5, 0x10
psrad mm1, 0x10
cvtpi2ps xmm5, mm5
cvtpi2ps xmm1, mm1
punpckhwd mm6, mm2
punpcklwd mm2, mm2
punpckhwd mm7, mm3
punpcklwd mm3, mm3
psrad mm6, 0x10
psrad mm2, 0x10
cvtpi2ps xmm6, mm6
cvtpi2ps xmm2, mm2
psrad mm7, 0x10
psrad mm3, 0x10
cvtpi2ps xmm7, mm7
cvtpi2ps xmm3, mm3
movlhps xmm0, xmm4
movlhps xmm1, xmm5
mulps xmm0, xmmword [edx]
mulps xmm1, xmmword [edx + 0x40]
movlhps xmm2, xmm6
movlhps xmm3, xmm7
mulps xmm2, xmmword [edx + 0x80]
mulps xmm3, xmmword [edx + 0xc0]
movaps xmm4, xmm0
movaps xmm5, xmm1
subps xmm0, xmm2
subps xmm1, xmm3
addps xmm4, xmm2
addps xmm5, xmm3
mulps xmm1, xmmword [0xee3670]
subps xmm1, xmm5
movaps xmm6, xmm4
movaps xmm7, xmm0
subps xmm4, xmm5
subps xmm0, xmm1
addps xmm6, xmm5
addps xmm7, xmm1
movaps xmmword [ebp - 0x10], xmm4
movaps xmmword [ebp - 0x20], xmm0
movq mm4, qword [esi + 0x10]
movq mm0, qword [esi + 0x30]
movq mm5, qword [esi + 0x50]
movq mm1, qword [esi + 0x70]
punpckhwd mm6, mm4
punpcklwd mm4, mm4
punpckhwd mm2, mm0
punpcklwd mm0, mm0
psrad mm6, 0x10
psrad mm4, 0x10
cvtpi2ps xmm4, mm6
cvtpi2ps xmm2, mm4
psrad mm2, 0x10
psrad mm0, 0x10
cvtpi2ps xmm0, mm2
cvtpi2ps xmm3, mm0
punpckhwd mm7, mm5
punpcklwd mm5, mm5
punpckhwd mm3, mm1
punpcklwd mm1, mm1
movlhps xmm2, xmm4
movlhps xmm3, xmm0
psrad mm7, 0x10
psrad mm5, 0x10
cvtpi2ps xmm4, mm7
cvtpi2ps xmm5, mm5
psrad mm3, 0x10
psrad mm1, 0x10
cvtpi2ps xmm0, mm3
cvtpi2ps xmm1, mm1
mulps xmm2, xmmword [edx + 0x20]
mulps xmm3, xmmword [edx + 0x60]
movlhps xmm5, xmm4
movlhps xmm1, xmm0
mulps xmm5, xmmword [edx + 0xa0]
mulps xmm1, xmmword [edx + 0xe0]
movaps xmm4, xmm2
movaps xmm0, xmm5
addps xmm2, xmm1
addps xmm5, xmm3
subps xmm4, xmm1
subps xmm0, xmm3
movaps xmm1, xmm2
subps xmm2, xmm5
addps xmm1, xmm5
mulps xmm2, xmmword [0xee3670]
movaps xmm3, xmm0
addps xmm0, xmm4
mulps xmm0, xmmword [0xee3680]
mulps xmm3, xmmword [0xee36a0]
mulps xmm4, xmmword [0xee3690]
addps xmm3, xmm0
subps xmm4, xmm0
subps xmm3, xmm1
movaps xmm5, xmm6
movaps xmm0, xmm7
addps xmm6, xmm1
addps xmm7, xmm3
subps xmm5, xmm1
subps xmm0, xmm3
subps xmm2, xmm3
movaps xmm1, xmm6
unpcklps xmm6, xmm7
unpckhps xmm1, xmm7
movaps xmm3, xmm0
unpcklps xmm0, xmm5
unpckhps xmm3, xmm5
movaps xmm7, xmmword [ebp - 0x20]
movaps xmm5, xmmword [ebp - 0x10]
movaps xmmword [ebp - 0x20], xmm0
movaps xmmword [ebp - 0x10], xmm3
addps xmm4, xmm2
movaps xmm0, xmm7
movaps xmm3, xmm5
addps xmm7, xmm2
addps xmm5, xmm4
subps xmm0, xmm2
subps xmm3, xmm4
movaps xmm2, xmm7
unpcklps xmm7, xmm3
unpckhps xmm2, xmm3
movaps xmm4, xmm5
unpcklps xmm5, xmm0
unpckhps xmm4, xmm0
movaps xmm3, xmm6
shufps xmm6, xmm7, 0x44
shufps xmm3, xmm7, 0xee
movaps xmm0, xmm1
shufps xmm1, xmm2, 0x44
shufps xmm0, xmm2, 0xee
movaps xmm7, xmmword [ebp - 0x20]
movaps xmm2, xmmword [ebp - 0x10]
movaps xmmword [edi], xmm6
movaps xmmword [edi + 0x20], xmm3
movaps xmmword [edi + 0x40], xmm1
movaps xmmword [edi + 0x60], xmm0
movaps xmm6, xmm5
shufps xmm5, xmm7, 0x44
shufps xmm6, xmm7, 0xee
movaps xmm3, xmm4
shufps xmm4, xmm2, 0x44
shufps xmm3, xmm2, 0xee
movaps xmmword [edi + 0x10], xmm5
movaps xmmword [edi + 0x30], xmm6
movaps xmmword [edi + 0x50], xmm4
movaps xmmword [edi + 0x70], xmm3
add esi, 8
add edx, 0x10
add edi, 0x80
dec ecx
jne 0x40fa78
prefetchnta byte [esi + 0x70]
prefetchnta byte [esi + 0x90]
prefetchnta byte [esi + 0xb0]
prefetchnta byte [esi + 0xd0]
mov eax, dword [ebp]
lea esi, [ebp - 0x120]
mov edi, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
mov ecx, 2
movaps xmm0, xmmword [esi]
movaps xmm1, xmmword [esi + 0x40]
movaps xmm2, xmmword [esi + 0x80]
movaps xmm3, xmmword [esi + 0xc0]
movaps xmm4, xmm0
movaps xmm5, xmm1
subps xmm0, xmm2
subps xmm1, xmm3
addps xmm4, xmm2
addps xmm5, xmm3
mulps xmm1, xmmword [0xee3670]
subps xmm1, xmm5
movaps xmm6, xmm4
movaps xmm7, xmm0
subps xmm4, xmm5
subps xmm0, xmm1
addps xmm6, xmm5
addps xmm7, xmm1
movaps xmmword [ebp - 0x10], xmm4
movaps xmmword [ebp - 0x20], xmm0
movaps xmm2, xmmword [esi + 0x20]
movaps xmm3, xmmword [esi + 0x60]
movaps xmm5, xmmword [esi + 0xa0]
movaps xmm1, xmmword [esi + 0xe0]
movaps xmm4, xmm2
movaps xmm0, xmm5
addps xmm2, xmm1
addps xmm5, xmm3
subps xmm4, xmm1
subps xmm0, xmm3
movaps xmm1, xmm2
subps xmm2, xmm5
addps xmm1, xmm5
mulps xmm2, xmmword [0xee3670]
movaps xmm3, xmm0
addps xmm0, xmm4
mulps xmm0, xmmword [0xee3680]
mulps xmm3, xmmword [0xee36a0]
mulps xmm4, xmmword [0xee3690]
addps xmm3, xmm0
subps xmm4, xmm0
subps xmm3, xmm1
movaps xmm5, xmm6
movaps xmm0, xmm7
addps xmm6, xmm1
addps xmm7, xmm3
subps xmm5, xmm1
subps xmm0, xmm3
subps xmm2, xmm3
movaps xmm1, xmmword [0xee36b0]
mulps xmm6, xmm1
mulps xmm7, xmm1
mulps xmm5, xmm1
mulps xmm0, xmm1
movhlps xmm3, xmm6
movhlps xmm1, xmm7
cvtps2pi mm0, xmm6
cvtps2pi mm1, xmm7
cvtps2pi mm2, xmm3
cvtps2pi mm3, xmm1
packssdw mm0, mm2
packssdw mm1, mm3
movhlps xmm6, xmm5
movhlps xmm7, xmm0
cvtps2pi mm4, xmm5
cvtps2pi mm5, xmm0
cvtps2pi mm6, xmm6
cvtps2pi mm7, xmm7
packssdw mm4, mm6
packssdw mm5, mm7
packsswb mm0, mm5
packsswb mm1, mm4
movaps xmm3, xmmword [ebp - 0x20]
movaps xmm1, xmmword [ebp - 0x10]
movaps xmm6, xmmword [0xee36b0]
addps xmm4, xmm2
movaps xmm5, xmm3
movaps xmm0, xmm1
addps xmm3, xmm2
addps xmm1, xmm4
subps xmm5, xmm2
subps xmm0, xmm4
mulps xmm3, xmm6
mulps xmm1, xmm6
mulps xmm5, xmm6
mulps xmm0, xmm6
movhlps xmm7, xmm3
movhlps xmm2, xmm1
cvtps2pi mm2, xmm3
cvtps2pi mm3, xmm1
cvtps2pi mm6, xmm7
cvtps2pi mm7, xmm2
packssdw mm2, mm6
packssdw mm3, mm7
movhlps xmm4, xmm5
movhlps xmm6, xmm0
cvtps2pi mm5, xmm5
cvtps2pi mm4, xmm0
cvtps2pi mm6, xmm4
cvtps2pi mm7, xmm6
packssdw mm5, mm6
packssdw mm4, mm7
movq mm6, qword [0xee36c0]
packsswb mm2, mm3
packsswb mm4, mm5
paddb mm0, mm6
paddb mm1, mm6
paddb mm2, mm6
paddb mm4, mm6
movq mm7, mm0
punpcklbw mm0, mm1
punpckhbw mm7, mm1
movq mm3, mm2
punpcklbw mm2, mm4
punpckhbw mm3, mm4
movq mm5, mm0
punpcklwd mm0, mm2
punpckhwd mm5, mm2
movq mm6, mm3
punpcklwd mm3, mm7
punpckhwd mm6, mm7
movq mm1, mm0
punpckldq mm0, mm3
punpckhdq mm1, mm3
movq mm4, mm5
punpckldq mm5, mm6
punpckhdq mm4, mm6
mov edx, dword [edi]
mov ebx, dword [edi + 4]
movq qword [edx + eax], mm0
movq qword [ebx + eax], mm1
mov edx, dword [edi + 8]
mov ebx, dword [edi + 0xc]
movq qword [edx + eax], mm5
movq qword [ebx + eax], mm4
add esi, 0x10
add edi, 0x10
dec ecx
jne 0x40fd76
emms
pop edi
pop esi
pop ebx
mov esp, ebp
pop esp
pop ebp
ret