code: public Matrix4f scaleAround(float sx, float sy, float sz, float ox, float oy, float oz, Matrix4f dest) {
          float nm30 = m00 * ox + m10 * oy + m20 * oz + m30;
          float nm31 = m01 * ox + m11 * oy + m21 * oz + m31;
          float nm32 = m02 * ox + m12 * oy + m22 * oz + m32;
          float nm33 = m03 * ox + m13 * oy + m23 * oz + m33;
          dest._m00(m00 * sx);
          dest._m01(m01 * sx);
          dest._m02(m02 * sx);
          dest._m03(m03 * sx);
          dest._m10(m10 * sy);
          dest._m11(m11 * sy);
          dest._m12(m12 * sy);
          dest._m13(m13 * sy);
          dest._m20(m20 * sz);
          dest._m21(m21 * sz);
          dest._m22(m22 * sz);
          dest._m23(m23 * sz);
          dest._m30(-m00 * ox - m10 * oy - m20 * oz + nm30);
          dest._m31(-m01 * ox - m11 * oy - m21 * oz + nm31);
          dest._m32(-m02 * ox - m12 * oy - m22 * oz + nm32);
          dest._m33(-m03 * ox - m13 * oy - m23 * oz + nm33);
          boolean one = Math.abs(sx) == 1.0f && Math.abs(sy) == 1.0f && Math.abs(sz) == 1.0f;
          dest._properties(properties & ~(PROPERTY_PERSPECTIVE | PROPERTY_IDENTITY | PROPERTY_TRANSLATION
                  | (one ? 0 : PROPERTY_ORTHONORMAL)));
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4fc#scaleAround(float, float, float, float, float, float, org.joml.Matrix4f)