anchor.diff:                                             JpegComponent component) {
       int blocksPerLine = component.blocksPerLine;
       int blocksPerColumn = component.blocksPerColumn;
  -    int samplesPerLine = (blocksPerLine << 3);
  +    int samplesPerLine = _shiftL(blocksPerLine, 3);
       Int32List R = new Int32List(64);
       Uint8List r = new Uint8List(64);
       List<Uint8List> lines = new List(blocksPerColumn * 8);
   
       int l = 0;
       for (int blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
  -      int scanLine = blockRow << 3;
  +      int scanLine = _shiftL(blockRow, 3);
         for (int i = 0; i < 8; i++) {
           lines[l++] = new Uint8List(samplesPerLine);
         }
  
positive.code: 
      // convert to 8-bit integers
      for (int i = 0; i < 64; ++i) {
        int sample = (128 + ((p[i] + 8) >> 4));
        dataOut[i] = sample < 0 ? 0 : sample > 0xFF ? 0xFF : sample;
      }
    }
  
negative.code:       }
  
        // stage 4
        int v0 = _shiftR((Jpeg.dctSqrt2 * p[0 * 8 + col] + 2048), 12);
        int v1 = _shiftR((Jpeg.dctSqrt2 * p[4 * 8 + col] + 2048), 12);
        int v2 = p[2 * 8 + col];
        int v3 = p[6 * 8 + col];
        int v4 = _shiftR((Jpeg.dctSqrt1d2 * (p[1 * 8 + col] - p[7*8 + col]) + 2048), 12);
        int v7 = _shiftR((Jpeg.dctSqrt1d2 * (p[1 * 8 + col] + p[7*8 + col]) + 2048), 12);
        int v5 = p[3 * 8 + col];
        int v6 = p[5 * 8 + col];
  
        // stage 3
        int t = _shiftR((v0 - v1 + 1), 1);
        v0 = _shiftR((v0 + v1 + 1), 1);
        v1 = t;
        t = _shiftR((v2 * Jpeg.dctSin6 + v3 * Jpeg.dctCos6 + 2048), 12);
        v2 = _shiftR((v2 * Jpeg.dctCos6 - v3 * Jpeg.dctSin6 + 2048), 12);
        v3 = t;
        t = _shiftR((v4 - v6 + 1), 1);
        v4 = _shiftR((v4 + v6 + 1), 1);
        v6 = t;
        t = _shiftR((v7 + v5 + 1), 1);
        v5 = _shiftR((v7 - v5 + 1), 1);
        v7 = t;
  
        // stage 2
        t = _shiftR((v0 - v3 + 1), 1);
        v0 = _shiftR((v0 + v3 + 1), 1);
        v3 = t;
        t = _shiftR((v1 - v2 + 1), 1);
        v1 = _shiftR((v1 + v2 + 1), 1);
        v2 = t;
        t = _shiftR((v4 * Jpeg.dctSin3 + v7 * Jpeg.dctCos3 + 2048), 12);
        v4 = _shiftR((v4 * Jpeg.dctCos3 - v7 * Jpeg.dctSin3 + 2048), 12);
        v7 = t;
        t = _shiftR((v5 * Jpeg.dctSin1 + v6 * Jpeg.dctCos1 + 2048), 12);
        v5 = _shiftR((v5 * Jpeg.dctCos1 - v6 * Jpeg.dctSin1 + 2048), 12);
        v6 = t;
  
        // stage 1
  