in src/hash.c [491:523]
void SHA3_squeeze(sha3 *sh,char *buff,int len)
{
int done;
int m=0;
unsign64 el;
/* extract by columns */
done=0;
for (;;)
{
for (int j=0; j<5; j++)
{
for (int i=0; i<5; i++)
{
el=sh->S[i][j];
for (int k=0; k<8; k++)
{
buff[m++]=(el&0xff);
if (m>=len || m%sh->rate==0)
{
done=1;
break;
}
el>>=8;
}
if (done) break;
}
if (done) break;
}
if (m>=len) break;
done=0;
SHA3_transform(sh);
}
}