in src/hash.c [77:126]
static void HASH256_transform(hash256 *sh)
{
/* basic transformation step */
unsign32 a;
unsign32 b;
unsign32 c;
unsign32 d;
unsign32 e;
unsign32 f;
unsign32 g;
unsign32 h;
unsign32 t1;
unsign32 t2;
int j;
for (j=16; j<64; j++)
sh->w[j]=theta1_256(sh->w[j-2])+sh->w[j-7]+theta0_256(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 (j=0; j<64; j++)
{
/* 64 times - mush it up */
t1=h+Sig1_256(e)+Ch(e,f,g)+K_256[j]+sh->w[j];
t2=Sig0_256(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;
}