/* Process each 16-word block. */ For i = 0 to N/16-1 do
/* Copy block i into X. */ For j = 0 to 15 do SetX[j] to M[i*16+j]. end /* of loop on j */
/* Save A as AA, B as BB, C as CC, and D as DD. */ AA = A BB = B CC = C DD = D
/* Round 1. */ /* Let [abcd k s i] denote the operation a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ /* Do the following 16 operations. */ [ABCD071] [DABC1122] [CDAB2173] [BCDA3224] [ABCD475] [DABC5126] [CDAB6177] [BCDA7228] [ABCD879] [DABC91210] [CDAB101711] [BCDA112212] [ABCD12713] [DABC131214] [CDAB141715] [BCDA152216]
/* Round 2. */ /* Let [abcd k s i] denote the operation a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ /* Do the following 16 operations. */ [ABCD1517] [DABC6918] [CDAB111419] [BCDA02020] [ABCD5521] [DABC10922] [CDAB151423] [BCDA42024] [ABCD9525] [DABC14926] [CDAB31427] [BCDA82028] [ABCD13529] [DABC2930] [CDAB71431] [BCDA122032]
/* Round 3. */ /* Let [abcd k s t] denote the operation a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ /* Do the following 16 operations. */ [ABCD5433] [DABC81134] [CDAB111635] [BCDA142336] [ABCD1437] [DABC41138] [CDAB71639] [BCDA102340] [ABCD13441] [DABC01142] [CDAB31643] [BCDA62344] [ABCD9445] [DABC121146] [CDAB151647] [BCDA22348]
/* Round 4. */ /* Let [abcd k s t] denote the operation a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ /* Do the following 16 operations. */ [ABCD0649] [DABC71050] [CDAB141551] [BCDA52152] [ABCD12653] [DABC31054] [CDAB101555] [BCDA12156] [ABCD8657] [DABC151058] [CDAB61559] [BCDA132160] [ABCD4661] [DABC111062] [CDAB21563] [BCDA92164]
/* Then perform the following additions. (That is increment each of the four registers by the value it had before this block was started.) */ A = A + AA B = B + BB C = C + CC D = D + DD