#include "../common.h"
extern unsigned char T[256];
char *idhash(char *p, short *hashp) {
    unsigned char c;
    unsigned long shreg;
    unsigned char lo, hi;
    shreg = *p;
    while (isalunum(c = *++p)) {
#ifndef BRAINDEAD_COMPILER
	/* rotate 5 bit - at least gcc 2.5.8 recognizes it */
	shreg = shreg << 5 | shreg >> 27;
#else
	shreg <<= 1;
#endif
	shreg ^= c;
    }
    lo = shreg;
    shreg >>= 8;
    hi = shreg;
    hi = (T+1)[hi];
    hi ^= lo;
    hi = T[hi];
    lo = T[lo];
    lo ^= shreg;
    lo = T[lo];
    shreg >>= 8;
    lo ^= shreg;
    lo = T[lo];
    shreg >>= 8;
    lo ^= shreg;
    lo = T[lo];
    *hashp = lo | hi << 8;
    return p;
}