Org.BouncyCastle.Crypto.Digests.LongDigest.ProcessBlock C# (CSharp) Method

ProcessBlock() private method

private ProcessBlock ( ) : void
return void
        internal void ProcessBlock()
        {
            AdjustByteCounts();

            //
            // expand 16 word block into 80 word blocks.
            //
            for (int ti = 16; ti <= 79; ++ti)
            {
                W[ti] = Sigma1(W[ti - 2]) + W[ti - 7] + Sigma0(W[ti - 15]) + W[ti - 16];
            }

            //
            // set up working variables.
            //
            ulong a = H1;
            ulong b = H2;
            ulong c = H3;
            ulong d = H4;
            ulong e = H5;
            ulong f = H6;
            ulong g = H7;
            ulong h = H8;

			int t = 0;
			for(int i = 0; i < 10; i ++)
			{
				// t = 8 * i
				h += Sum1(e) + Ch(e, f, g) + K[t] + W[t++];
				d += h;
				h += Sum0(a) + Maj(a, b, c);

				// t = 8 * i + 1
				g += Sum1(d) + Ch(d, e, f) + K[t] + W[t++];
				c += g;
				g += Sum0(h) + Maj(h, a, b);

				// t = 8 * i + 2
				f += Sum1(c) + Ch(c, d, e) + K[t] + W[t++];
				b += f;
				f += Sum0(g) + Maj(g, h, a);

				// t = 8 * i + 3
				e += Sum1(b) + Ch(b, c, d) + K[t] + W[t++];
				a += e;
				e += Sum0(f) + Maj(f, g, h);

				// t = 8 * i + 4
				d += Sum1(a) + Ch(a, b, c) + K[t] + W[t++];
				h += d;
				d += Sum0(e) + Maj(e, f, g);

				// t = 8 * i + 5
				c += Sum1(h) + Ch(h, a, b) + K[t] + W[t++];
				g += c;
				c += Sum0(d) + Maj(d, e, f);

				// t = 8 * i + 6
				b += Sum1(g) + Ch(g, h, a) + K[t] + W[t++];
				f += b;
				b += Sum0(c) + Maj(c, d, e);

				// t = 8 * i + 7
				a += Sum1(f) + Ch(f, g, h) + K[t] + W[t++];
				e += a;
				a += Sum0(b) + Maj(b, c, d);
			}

			H1 += a;
            H2 += b;
            H3 += c;
            H4 += d;
            H5 += e;
            H6 += f;
            H7 += g;
            H8 += h;

			//
            // reset the offset and clean out the word buffer.
            //
            wOff = 0;
			Array.Clear(W, 0, 16);
		}