func pack28(in []uint32) uint32 {
	return in[0] |
		in[1]<<1 |
		in[2]<<2 |
		in[3]<<3 |
		in[4]<<4 |
		in[5]<<5 |
		in[6]<<6 |
		in[7]<<7 |
		in[8]<<8 |
		in[9]<<9 |
		in[10]<<10 |
		in[11]<<11 |
		in[12]<<12 |
		in[13]<<13 |
		in[14]<<14 |
		in[15]<<15 |
		in[16]<<16 |
		in[17]<<17 |
		in[18]<<18 |
		in[19]<<19 |
		in[20]<<20 |
		in[21]<<21 |
		in[22]<<22 |
		in[23]<<23 |
		in[24]<<24 |
		in[25]<<25 |
		in[26]<<26 |
		in[27]<<27
}
func pack28(in []uint32) uint32 {
	return in[0] |
		in[1]<<1 |
		in[2]<<2 |
		in[3]<<3 |
		in[4]<<4 |
		in[5]<<5 |
		in[6]<<6 |
		in[7]<<7 |
		in[8]<<8 |
		in[9]<<9 |
		in[10]<<10 |
		in[11]<<11 |
		in[12]<<12 |
		in[13]<<13 |
		in[14]<<14 |
		in[15]<<15 |
		in[16]<<16 |
		in[17]<<17 |
		in[18]<<18 |
		in[19]<<19 |
		in[20]<<20 |
		in[21]<<21 |
		in[22]<<22 |
		in[23]<<23 |
		in[24]<<24 |
		in[25]<<25 |
		in[26]<<26 |
		in[27]<<27
}
func pack28 ( in [ ] uint32 ) uint32 { return in [ 0 ] | in [ 1 ] << 1 | in [ 2 ] << 2 | in [ 3 ] << 3 | in [ 4 ] << 4 | in [ 5 ] << 5 | in [ 6 ] << 6 | in [ 7 ] << 7 | in [ 8 ] << 8 | in [ 9 ] << 9 | in [ 10 ] << 10 | in [ 11 ] << 11 | in [ 12 ] << 12 | in [ 13 ] << 13 | in [ 14 ] << 14 | in [ 15 ] << 15 | in [ 16 ] << 16 | in [ 17 ] << 17 | in [ 18 ] << 18 | in [ 19 ] << 19 | in [ 20 ] << 20 | in [ 21 ] << 21 | in [ 22 ] << 22 | in [ 23 ] << 23 | in [ 24 ] << 24 | in [ 25 ] << 25 | in [ 26 ] << 26 | in [ 27 ] << 27 }
// pack28 packs 28 values from in using 1 bit each
pack28 packs 28 values from in using 1 bit each