anchor.diff:                     t1:= para1.ps;
                      t2:= para2.ps;
   
  -                   for i:=0 to dotsize do
  -                   begin
  -                        arr1[0]:= t1[i];
  -                        arr2[0]:= t1[i];
  -
  -                        asm
  -                          movss xmm0, [arr1]
  -                          movss xmm1, [arr2]
  -                          movss xmm2, [t3]
  -
  -                          mulps xmm0, xmm1
  -
  -                          addps xmm2, xmm0
  -
  -                          movss [t3],xmm2
  -
  -                        end;
  -
  +                   asm
  +                      movups xmm0, [t1]
  +                      movups xmm1, [t2]
  +
  +                      mulps xmm0, xmm1
  +
  +                      haddps xmm0, xmm0
  +                      haddps xmm0, xmm0
  +
  +                      movups [t3], xmm0
                      end;
   
                      Dot:= t3[0];
  
positive.code:               //is a intric name dpps. I cant let you pass an imm8
                //because i cant
  
                //Dot size. Get to from the 0 pos to dotsize pos
                function Dot(para1,para2: floatp4; dotsize: byte): single;
                var t1,t2,t3, arr1, arr2: TArr1Single;
                    i: shortint;
                begin
  
negative.code: operator - (para1, para2: floatp4) sub: floatp4;
  operator * (para1, para2: floatp4) mul: floatp4;
  operator / (para1, para2: floatp4) divide: floatp4;
  
  operator and (para1, para2: floatp4) andv: floatp4;
  operator or (para1, para2: floatp4) orv: floatp4;
  operator xor (para1, para2: floatp4) xorv: floatp4;
  operator not (para1: floatp4) notv: floatp4;
  
  operator > (para1, para2: floatp4) big: boolean;
  operator < (para1, para2: floatp4) less: boolean;
  operator >= (para1, para2: floatp4) bige: boolean;
  operator <= (para1, para2: floatp4) lesse: boolean;
  
  function ArrEqual(para1, para2: floatp4): boolean;
  //function Sign(para1: floatp4): floatp4;
  
  function set_floatp4_ss(a: single): floatp4;
  function set_floatp4(a: TArr1Single): floatp4;
  
  function Dot(para1,para2: floatp4): single;
  function Max(para1,para2: floatp4): floatp4;
  function Min(para1,para2: floatp4): floatp4;
  function Sqrt(para1, para2: floatp4): floatp4;
  
  function Shuffle(para1, para2: floatp4; np3, np2, np1, np0: byte): floatp4;
  
  implementation
  
                function ArrEqual(para1, para2: floatp4): boolean;
                var t1, t2, t3: TArr1Single;
                begin
                       t1:= para1.mainPack;
                       t2:= para2.mainPack;
  
                       asm
                          movups xmm0, [t1]
                          movups xmm1, [t2]
  
                          cmpps xmm0, xmm1, 0
  
                          movups [t3],xmm0
                       end;
  
                       ArrEqual:= (t3[0] = $FFFFFFFF);
                end;
  
                {function Sign(para1: floatp4): floatp4;
                var t1: array [0..3] of integer;
                    t2, t3: TArr1Single;
  
                begin
                    t1[0]:= $ffffffff; t1[2]:= $ffffffff;
                    t1[1]:= $ffffffff; t1[3]:= $ffffffff;
  
                    t2[0]:=1; t2[1]:=1; t2[2]:=1; t2[3]:=1;
  
                    asm
                       movups xmm0, [para1]
                       movups xmm1, [t2]
                       movups
  
                    end;
  
                end;}
  
                operator > (para1, para2: floatp4) big: boolean;
                var t1, t2, t3: TArr1Single;
                begin
                       t1:= para1.mainPack;
                       t2:= para2.mainPack;
  
                       asm
                          movups xmm0, [t1]
                          movups xmm1, [t2]
  
                          cmpps xmm0, xmm1, 5
  
                          movups [t3],xmm0
                       end;
  
                       big:= (t3[0] = $FFFFFFFF);
                end;
  
                operator < (para1, para2: floatp4) less: boolean;
                var t1, t2, t3: TArr1Single;
                begin
                       t1:= para1.mainPack;
                       t2:= para2.mainPack;
  
                       asm
                          movups xmm0, [t1]
                          movups xmm1, [t2]
  
                          cmpps xmm0, xmm1, 1
  
                          movups [t3],xmm0
                       end;
  
                       less:= (t3[0] = $FFFFFFFF);
                end;
  
                operator >= (para1, para2: floatp4) bige: boolean;
                var t1, t2, t3: TArr1Single;
                begin
                       t1:= para1.mainPack;
                       t2:= para2.mainPack;
  
                       asm
                          movups xmm0, [t1]
                          movups xmm1, [t2]
  
                          cmpps xmm0, xmm1, 6
  
                          movups [t3],xmm0
                       end;
  
                       bige:= (t3[0] = $FFFFFFFF);
                end;
  
  
                operator <= (para1, para2: floatp4) lesse: boolean;
                var t1, t2, t3: TArr1Single;
                begin
                       t1:= para1.mainPack;
                       t2:= para2.mainPack;
  
                       asm
                          movups xmm0, [t1]
                          movups xmm1, [t2]
  
                          cmpps xmm0, xmm1, 2
  
                          movups [t3],xmm0
                       end;
  
                       lesse:= (t3[0] = $FFFFFFFF);
                end;
  
                function Shuffle(para1, para2: floatp4; np3, np2, np1, np0: byte): floatp4;
                var t1,t2, t3: TArr1Single;
                begin
  
                     Shuffle:= floatp4.Create;
  
                     t1:= para1.mainPack; t2:= para2.mainPack;
  
                     asm
                          movups xmm0, [t1]
                          movups xmm1, [t2]
  
                          shufps xmm0, xmm1, $e4
  
                          movups [t3],xmm0
                     end;
  
                     Shuffle.n3:= t3[np3];
                     Shuffle.n2:= t3[np2];
                     Shuffle.n1:= t3[np1];
                     Shuffle.n0:= t3[np0];
  
                end;
  
                function set_floatp4_ss(a: single): floatp4;
                begin
                     set_floatp4_ss:= floatp4.Create;
                     set_floatp4_ss.n0 := a;
                end;
  
                function set_floatp4(a: TArr1Single): floatp4;
                begin
                      set_floatp4:= floatp4.Crt5198(a);
                end;
  
                constructor floatp4.Crt5198(a: TArr1Single);
                begin
  