code: private static int inv_mcol(int x) {
          int t0, t1;
          t0 = x;
          t1 = t0 ^ shift(t0, 8);
          t0 ^= FFmulX(t1);
          t1 ^= FFmulX2(t0);
          t0 ^= t1 ^ shift(t1, 16);
          return t0;
      }
docs: /*
  The following defines provide alternative definitions of FFmulX that might
  give improved performance if a fast 32-bit multiply is not available.
  
  private int FFmulX(int x) { int u = x & m1; u |= (u >> 1); return ((x & m2) << 1) ^ ((u >>> 3) | (u >>> 6)); }
  private static final int  m4 = 0x1b1b1b1b;
  private int FFmulX(int x) { int u = x & m1; return ((x & m2) << 1) ^ ((u - (u >>> 7)) & m4); }