sima/autoconf/
sima/hosts/i386/
sima/mudlib/
sima/mudlib/kernel/
sima/mudlib/obj/
sima/mudlib/sys/
sima/synhash/mips/
#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;
}