public void mul4f(Matrix4fMapped left, Matrix4fMapped right) {
float rmX3 = right.m03;
float rmX2 = right.m02;
float rmX1 = right.m01;
float rmX0 = right.m00;
final float lm03 = left.m03;
this.m03 = lm03 * rmX0 + left.m13 * rmX1 + left.m23 * rmX2 + left.m33 * rmX3;
final float lm02 = left.m02;
this.m02 = lm02 * rmX0 + left.m12 * rmX1 + left.m22 * rmX2 + left.m32 * rmX3;
final float lm01 = left.m01;
this.m01 = lm01 * rmX0 + left.m11 * rmX1 + left.m21 * rmX2 + left.m31 * rmX3;
final float lm00 = left.m00;
this.m00 = lm00 * rmX0 + left.m10 * rmX1 + left.m20 * rmX2 + left.m30 * rmX3;
rmX3 = right.m13;
rmX2 = right.m12;
rmX1 = right.m11;
rmX0 = right.m10;
final float lm13 = left.m13;
final float lm12 = left.m12;
final float lm11 = left.m11;
final float lm10 = left.m10;
this.m13 = lm03 * rmX0 + lm13 * rmX1 + left.m23 * rmX2 + left.m33 * rmX3;
this.m12 = lm02 * rmX0 + lm12 * rmX1 + left.m22 * rmX2 + left.m32 * rmX3;
this.m11 = lm01 * rmX0 + lm11 * rmX1 + left.m21 * rmX2 + left.m31 * rmX3;
this.m10 = lm00 * rmX0 + lm10 * rmX1 + left.m20 * rmX2 + left.m30 * rmX3;
rmX3 = right.m23;
rmX2 = right.m22;
rmX1 = right.m21;
rmX0 = right.m20;
final float lm23 = left.m23;
final float lm22 = left.m22;
final float lm21 = left.m21;
final float lm20 = left.m20;
this.m23 = lm03 * rmX0 + lm13 * rmX1 + lm23 * rmX2 + left.m33 * rmX3;
this.m22 = lm02 * rmX0 + lm12 * rmX1 + lm22 * rmX2 + left.m32 * rmX3;
this.m21 = lm01 * rmX0 + lm11 * rmX1 + lm21 * rmX2 + left.m31 * rmX3;
this.m20 = lm00 * rmX0 + lm10 * rmX1 + lm20 * rmX2 + left.m30 * rmX3;
rmX3 = right.m33;
rmX2 = right.m32;
rmX1 = right.m31;
rmX0 = right.m30;
this.m33 = lm03 * rmX0 + lm13 * rmX1 + lm23 * rmX2 + left.m33 * rmX3;
this.m32 = lm02 * rmX0 + lm12 * rmX1 + lm22 * rmX2 + left.m32 * rmX3;
this.m31 = lm01 * rmX0 + lm11 * rmX1 + lm21 * rmX2 + left.m31 * rmX3;
this.m30 = lm00 * rmX0 + lm10 * rmX1 + lm20 * rmX2 + left.m30 * rmX3;
}