1 2byte_match_count2 (buf, n, xm, m1, m2, m3, m4) 3 unsigned *buf; 4 unsigned n; 5 unsigned xm; 6 unsigned m1, m2, m3, m4; 7{ 8 unsigned w, cnt = 0; 9 unsigned *bp; 10 11 n /= 4; 12 13 bp = buf; 14 while (bp < buf + n) 15 { 16 w = *bp++; 17 w ^= xm; 18 cnt += ((m1 & w) == 0); 19 cnt += ((m2 & w) == 0); 20 cnt += ((m3 & w) == 0); 21 cnt += ((m4 & w) == 0); 22 23 w = *bp++; 24 w ^= xm; 25 cnt += ((m1 & w) == 0); 26 cnt += ((m2 & w) == 0); 27 cnt += ((m3 & w) == 0); 28 cnt += ((m4 & w) == 0); 29 30 w = *bp++; 31 w ^= xm; 32 cnt += ((m1 & w) == 0); 33 cnt += ((m2 & w) == 0); 34 cnt += ((m3 & w) == 0); 35 cnt += ((m4 & w) == 0); 36 37 w = *bp++; 38 w ^= xm; 39 cnt += ((m1 & w) == 0); 40 cnt += ((m2 & w) == 0); 41 cnt += ((m3 & w) == 0); 42 cnt += ((m4 & w) == 0); 43 } 44 return cnt; 45} 46