15 #define DO1(buf,i)  {adler += (buf)[i]; sum2 += adler;} 
   16 #define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1); 
   17 #define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2); 
   18 #define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4); 
   19 #define DO16(buf)   DO8(buf,0); DO8(buf,8); 
   25         if (a >= (BASE << 16)) a -= (BASE << 16); \ 
   26         if (a >= (BASE << 15)) a -= (BASE << 15); \ 
   27         if (a >= (BASE << 14)) a -= (BASE << 14); \ 
   28         if (a >= (BASE << 13)) a -= (BASE << 13); \ 
   29         if (a >= (BASE << 12)) a -= (BASE << 12); \ 
   30         if (a >= (BASE << 11)) a -= (BASE << 11); \ 
   31         if (a >= (BASE << 10)) a -= (BASE << 10); \ 
   32         if (a >= (BASE << 9)) a -= (BASE << 9); \ 
   33         if (a >= (BASE << 8)) a -= (BASE << 8); \ 
   34         if (a >= (BASE << 7)) a -= (BASE << 7); \ 
   35         if (a >= (BASE << 6)) a -= (BASE << 6); \ 
   36         if (a >= (BASE << 5)) a -= (BASE << 5); \ 
   37         if (a >= (BASE << 4)) a -= (BASE << 4); \ 
   38         if (a >= (BASE << 3)) a -= (BASE << 3); \ 
   39         if (a >= (BASE << 2)) a -= (BASE << 2); \ 
   40         if (a >= (BASE << 1)) a -= (BASE << 1); \ 
   41         if (a >= BASE) a -= BASE; \ 
   45         if (a >= (BASE << 4)) a -= (BASE << 4); \ 
   46         if (a >= (BASE << 3)) a -= (BASE << 3); \ 
   47         if (a >= (BASE << 2)) a -= (BASE << 2); \ 
   48         if (a >= (BASE << 1)) a -= (BASE << 1); \ 
   49         if (a >= BASE) a -= BASE; \ 
   52 #  define MOD(a) a %= BASE 
   53 #  define MOD4(a) a %= BASE 
   57 uLong ZEXPORT adler32(adler, 
buf, len)
 
   66     sum2 = (adler >> 16) & 0xffff;
 
   77         return adler | (sum2 << 16);
 
   93         return adler | (sum2 << 16);
 
  124     return adler | (sum2 << 16);
 
  128 uLong ZEXPORT adler32_combine(adler1, adler2, len2)
 
  138     rem = (unsigned)(len2 % BASE);
 
  139     sum1 = adler1 & 0xffff;
 
  142     sum1 += (adler2 & 0xffff) + BASE - 1;
 
  143     sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
 
  144     if (sum1 > BASE) sum1 -= BASE;
 
  145     if (sum1 > BASE) sum1 -= BASE;
 
  146     if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);
 
  147     if (sum2 > BASE) sum2 -= BASE;
 
  148     return sum1 | (sum2 << 16);