sima/autoconf/
sima/hosts/i386/
sima/mudlib/
sima/mudlib/kernel/
sima/mudlib/obj/
sima/mudlib/sys/
sima/synhash/mips/
#include <sys/types.h>

short hash(char *start, int len) {
    int *p;
    int o;
    int a,b,c,d,x,m;
    auto i;

#if 0
&i;
#endif
    p = (int *)((size_t)start+3 & ~3);
    o = len >> 3;
    m = (unsigned)-1 << (((size_t)start & 3) << 3);
    m = ~m;
#define X 1
#if 1
        b = p[1];
	c = p[2];
	d = p[3];
#if X
	x = p[0];
	x ^= p[4];
	x &= m;
	x ^= p[4];
	a = x;
#else
	a ^= ((p[0] ^ p[4]) & m) ^ p[4];
#endif
#else
	a = b = c = d = 0;
#endif
	p = (int *)((char*)p + o) + 4;
    i = 7;
    do {
        b ^= p[-3];
	c ^= p[-2];
	d ^= p[-1];
#if X
	x = p[-4];
	x ^= p[0];
	x &= m;
	x ^= p[0];
	a ^= x;
#else
	a ^= ((p[-4] ^ p[0]) & m) ^ p[1];
#endif
	a++,b++,c++,d++;
	p = (int *)((char*)p + o);
    } while (--i);
    return a + b + c + d;
}