anchor.diff:                              r, R);
   
           int offset = 0;
  -        int sample = (blockCol << 3);
  +        int sample = _shiftL(blockCol, 3);
           for (int j = 0; j < 8; j++) {
             Uint8List line = lines[scanLine + j];
             for (int i = 0; i < 8; i++) {
  
positive.code:           appData[4] == 0x65 && appData[5] == 0) {
          adobe = new JpegAdobe();
          adobe.version = appData[6];
          adobe.flags0 = (appData[7] << 8) | appData[8];
          adobe.flags1 = (appData[9] << 8) | appData[10];
          adobe.transformCode = appData[11];
        }
      }
  
negative.code:           p[5 + row] == 0 &&
            p[6 + row] == 0 &&
            p[7 + row] == 0) {
          int t = _shiftR((Jpeg.dctSqrt2 * p[0 + row] + 512), 10);
          p.fillRange(row, row + 8, t);
          continue;
        }
  
        // stage 4
        int v0 = _shiftR((Jpeg.dctSqrt2 * p[0 + row] + 128), 8);
        int v1 = _shiftR((Jpeg.dctSqrt2 * p[4 + row] + 128), 8);
        int v2 = p[2 + row];
        int v3 = p[6 + row];
        int v4 = _shiftR((Jpeg.dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128), 8);
        int v7 = _shiftR((Jpeg.dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128), 8);
        int v5 = _shiftL(p[3 + row], 4);
        int v6 = _shiftL(p[5 + row], 4);
  
        // 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 + 128), 8);
        v2 = _shiftR((v2 * Jpeg.dctCos6 - v3 * Jpeg.dctSin6 + 128), 8);
        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
  