func Hash32(key uint32) uint32 {
	key = ^key + (key << 15)  
	key = key ^ (key >> 12)
	key = key + (key << 2)
	key = key ^ (key >> 4)
	key = key * 2057  
	key = key ^ (key >> 16)
	return key
}
Hash32 hashes a uint64
package inthash
import "math/bits"
func Hash64(key uint64) uint64 {
	key = ^key + (key << 21)  
	key = key ^ (key >> 24)
	key = (key + (key << 3)) + (key << 8)  
	key = key ^ (key >> 14)
	key = (key + (key << 2)) + (key << 4)  
	key = key ^ (key >> 28)
	key = key + (key << 31)
	return key
}
func Hash64Inv(key uint64) uint64 {
	tmp := uint64(0)
	tmp = key - (key << 31)
	key = key - (tmp << 31)
	tmp = key ^ key>>28
	key = key ^ tmp>>28
	key *= 14933078535860113213
	tmp = key ^ key>>14
	tmp = key ^ tmp>>14
	tmp = key ^ tmp>>14
	key = key ^ tmp>>14
	key *= 15244667743933553977
	tmp = key ^ key>>24
	key = key ^ tmp>>24
	tmp = ^key
	tmp = ^(key - (tmp << 21))
	tmp = ^(key - (tmp << 21))
	key = ^(key - (tmp << 21))
	return key
}