function invert(out, a) {
	  var a00 = a[0], a01 = a[1], a02 = a[2];
	  var a10 = a[3], a11 = a[4], a12 = a[5];
	  var a20 = a[6], a21 = a[7], a22 = a[8];

	  var b01 = a22 * a11 - a12 * a21;
	  var b11 = -a22 * a10 + a12 * a20;
	  var b21 = a21 * a10 - a11 * a20;

	  // Calculate the determinant
	  var det = a00 * b01 + a01 * b11 + a02 * b21;

	  if (!det) return null
	  det = 1.0 / det;

	  out[0] = b01 * det;
	  out[1] = (-a22 * a01 + a02 * a21) * det;
	  out[2] = (a12 * a01 - a02 * a11) * det;
	  out[3] = b11 * det;
	  out[4] = (a22 * a00 - a02 * a20) * det;
	  out[5] = (-a12 * a00 + a02 * a10) * det;
	  out[6] = b21 * det;
	  out[7] = (-a21 * a00 + a01 * a20) * det;
	  out[8] = (a11 * a00 - a01 * a10) * det;

	  return out
	}
Inverts a mat3

@alias mat3.invert
@param {mat3} out the receiving matrix
@param {mat3} a the source matrix
@returns {mat3} out