in src/hash.c [242:289]
static void HASH512_transform(hash512 *sh)
{
/* basic transformation step */
unsign64 a;
unsign64 b;
unsign64 c;
unsign64 d;
unsign64 e;
unsign64 f;
unsign64 g;
unsign64 h;
unsign64 t1;
unsign64 t2;
for (int j=16; j<80; j++)
sh->w[j]=theta1_512(sh->w[j-2])+sh->w[j-7]+theta0_512(sh->w[j-15])+sh->w[j-16];
a=sh->h[0];
b=sh->h[1];
c=sh->h[2];
d=sh->h[3];
e=sh->h[4];
f=sh->h[5];
g=sh->h[6];
h=sh->h[7];
for (int j=0; j<80; j++)
{
/* 80 times - mush it up */
t1=h+Sig1_512(e)+Ch(e,f,g)+K_512[j]+sh->w[j];
t2=Sig0_512(a)+Maj(a,b,c);
h=g;
g=f;
f=e;
e=d+t1;
d=c;
c=b;
b=a;
a=t1+t2;
}
sh->h[0]+=a;
sh->h[1]+=b;
sh->h[2]+=c;
sh->h[3]+=d;
sh->h[4]+=e;
sh->h[5]+=f;
sh->h[6]+=g;
sh->h[7]+=h;
}