code: static int transform(int crc, int[][] lookupTable) {
      int cb1 = lookupTable[0][crc & 0xff];
      int cb2 = lookupTable[1][(crc >>>= 8) & 0xff];
      int cb3 = lookupTable[2][(crc >>>= 8) & 0xff];
      int cb4 = lookupTable[3][(crc >>>= 8) & 0xff];
      return cb1 ^ cb2 ^ cb3 ^ cb4;
    }
docs: Helper function to transform a CRC using lookup table. Currently it is used
  for calculating CRC after adding bytes zeros to source byte array. The special
  lookup table needs to be passed in for this specific transformation
  
  @param crc
  @param lookupTable
  the first dimension is for which byte it applies to, the second
  dimension is to lookup the byte and generate the outputs.
  @return the result CRC