unsigned long xdl_adler32(unsigned long adler, unsigned char const *buf, unsigned int len) { int k; unsigned long s1 = adler & 0xffff; unsigned long s2 = (adler >> 16) & 0xffff; if (!buf) return 1; while (len > 0) { k = len < NMAX ? len :NMAX; len -= k; while (k >= 16) { DO16(buf); buf += 16; k -= 16; } if (k != 0) do { s1 += *buf++; s2 += s1; } while (--k); s1 %= BASE; s2 %= BASE; } return(s2 << 16) | s1; } void f(){ while(1) if(2) 3; else 4; }