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; }