lyra2.go
func squeeze(state []uint64, out []byte) {
	tmp := make([]byte, blockLenBytes)
	for j := 0; j < len(out)/blockLenBytes+1; j++ {
		for i := 0; i < blockLenInt64; i++ {
			binary.LittleEndian.PutUint64(tmp[i*8:], state[i])
		}
		copy(out[j*blockLenBytes:], tmp) //be care in case of len(out[i:])<len(tmp)
		blake2bLyra(state)
	}
}
func squeeze(state []uint64, out []byte) {
	tmp := make([]byte, blockLenBytes)
	for j := 0; j < len(out)/blockLenBytes+1; j++ {
		for i := 0; i < blockLenInt64; i++ {
			binary.LittleEndian.PutUint64(tmp[i*8:], state[i])
		}
		copy(out[j*blockLenBytes:], tmp) //be care in case of len(out[i:])<len(tmp)
		blake2bLyra(state)
	}
}
/**
 * squeeze Performs a squeeze operation, using Blake2b's G function as the
 * internal permutation
 *
 * @param state      The current state of the sponge
 * @param out        Array that will receive the data squeezed
 * @param len        The number of bytes to be squeezed into the "out" array
 */