anchor.diff:  	// |M| = |A|*|D| + |B|*|C| - tr((A#B)(D#C))
   	detM = _mm_sub_ps(detM, tr);
   
  -	const __m128 adjSignMask = _mm_castsi128_ps(_mm_setr_epi32(0x00000000, 0x80000000, 0x80000000, 0x00000000));
  +	const __m128 adjSignMask = _mm_setr_ps(1.f, -1.f, -1.f, 1.f));
   	// (1/|M|, -1/|M|, -1/|M|, 1/|M|)
  -	__m128 rDetM = _mm_xor_ps(_mm_div_ps(_mm_set1_ps(1.f), detM), adjSignMask);
  +	__m128 rDetM = _mm_div_ps(adjSignMask, detM);
   
   	X_ = _mm_mul_ps(X_, rDetM);
   	Y_ = _mm_mul_ps(Y_, rDetM);
  
positive.code: 	Matrix4 r;
  
  	// apply adjugate and store, here we combine adjugate shuffle and store shuffle
  	// btw adjuagate fuction: Adj(Vec) = VecXor(VecSwizzle(Vec, 3,1,2,0), adjSignMask)
  	r.mVec[0] = VecShuffle(X_, Z_, 3,1,3,1);
  	r.mVec[1] = VecShuffle(X_, Z_, 2,0,2,0);
  	r.mVec[2] = VecShuffle(Y_, W_, 3,1,3,1);
  
negative.code: 	Matrix4 r;
  
  	// apply adjugate and store, here we combine adjugate shuffle and store shuffle
  	r.mVec[0] = VecShuffle(X_, Y_, 3,1,3,1);
  	r.mVec[1] = VecShuffle(X_, Y_, 2,0,2,0);
  	r.mVec[2] = VecShuffle(Z_, W_, 3,1,3,1);
  