Multiply this with a transposed arg.
Source
void multiplyTranspose(Matrix4 arg) {
double m00 = _m4storage[0];
double m01 = _m4storage[4];
double m02 = _m4storage[8];
double m03 = _m4storage[12];
double m10 = _m4storage[1];
double m11 = _m4storage[5];
double m12 = _m4storage[9];
double m13 = _m4storage[13];
double m20 = _m4storage[2];
double m21 = _m4storage[6];
double m22 = _m4storage[10];
double m23 = _m4storage[14];
double m30 = _m4storage[3];
double m31 = _m4storage[7];
double m32 = _m4storage[11];
double m33 = _m4storage[15];
final argStorage = arg._m4storage;
_m4storage[0] = (m00 * argStorage[0]) +
(m01 * argStorage[4]) +
(m02 * argStorage[8]) +
(m03 * argStorage[12]);
_m4storage[4] = (m00 * argStorage[1]) +
(m01 * argStorage[5]) +
(m02 * argStorage[9]) +
(m03 * argStorage[13]);
_m4storage[8] = (m00 * argStorage[2]) +
(m01 * argStorage[6]) +
(m02 * argStorage[10]) +
(m03 * argStorage[14]);
_m4storage[12] = (m00 * argStorage[3]) +
(m01 * argStorage[7]) +
(m02 * argStorage[11]) +
(m03 * argStorage[15]);
_m4storage[1] = (m10 * argStorage[0]) +
(m11 * argStorage[4]) +
(m12 * argStorage[8]) +
(m13 * argStorage[12]);
_m4storage[5] = (m10 * argStorage[1]) +
(m11 * argStorage[5]) +
(m12 * argStorage[9]) +
(m13 * argStorage[13]);
_m4storage[9] = (m10 * argStorage[2]) +
(m11 * argStorage[6]) +
(m12 * argStorage[10]) +
(m13 * argStorage[14]);
_m4storage[13] = (m10 * argStorage[3]) +
(m11 * argStorage[7]) +
(m12 * argStorage[11]) +
(m13 * argStorage[15]);
_m4storage[2] = (m20 * argStorage[0]) +
(m21 * argStorage[4]) +
(m22 * argStorage[8]) +
(m23 * argStorage[12]);
_m4storage[6] = (m20 * argStorage[1]) +
(m21 * argStorage[5]) +
(m22 * argStorage[9]) +
(m23 * argStorage[13]);
_m4storage[10] = (m20 * argStorage[2]) +
(m21 * argStorage[6]) +
(m22 * argStorage[10]) +
(m23 * argStorage[14]);
_m4storage[14] = (m20 * argStorage[3]) +
(m21 * argStorage[7]) +
(m22 * argStorage[11]) +
(m23 * argStorage[15]);
_m4storage[3] = (m30 * argStorage[0]) +
(m31 * argStorage[4]) +
(m32 * argStorage[8]) +
(m33 * argStorage[12]);
_m4storage[7] = (m30 * argStorage[1]) +
(m31 * argStorage[5]) +
(m32 * argStorage[9]) +
(m33 * argStorage[13]);
_m4storage[11] = (m30 * argStorage[2]) +
(m31 * argStorage[6]) +
(m32 * argStorage[10]) +
(m33 * argStorage[14]);
_m4storage[15] = (m30 * argStorage[3]) +
(m31 * argStorage[7]) +
(m32 * argStorage[11]) +
(m33 * argStorage[15]);
}