in src/third_party_src/fips202.c [467:485]
void shake256(uint8_t *out, size_t outlen, const uint8_t *in, size_t inlen)
{
unsigned int i;
size_t nblocks = outlen/SHAKE256_RATE;
uint8_t t[SHAKE256_RATE];
uint64_t state[25];
shake256_absorb(state, in, inlen);
shake256_squeeze(out, nblocks, state);
out += nblocks*SHAKE256_RATE;
outlen -= nblocks*SHAKE256_RATE;
if(outlen) {
shake256_squeeze(t, 1, state);
for(i=0;i<outlen;i++)
out[i] = t[i];
}
}