processBlock method

  1. @override
void processBlock()

Process a whole block of data in extender digest.

Implementation

@override
void processBlock() {
  int? a, aa;
  int? b, bb;
  int? c, cc;
  int? d, dd;
  int? e, ee;
  int t;

  a = state[0];
  b = state[1];
  c = state[2];
  d = state[3];
  e = state[4];
  aa = state[5];
  bb = state[6];
  cc = state[7];
  dd = state[8];
  ee = state[9];

  //
  // Rounds 1 - 16
  //
  // left
  a = sum32(crotl32(a + _f1(b, c, d) + buffer[0], 11), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f1(a, b, c) + buffer[1], 14), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f1(e, a, b) + buffer[2], 15), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f1(d, e, a) + buffer[3], 12), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f1(c, d, e) + buffer[4], 5), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f1(b, c, d) + buffer[5], 8), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f1(a, b, c) + buffer[6], 7), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f1(e, a, b) + buffer[7], 9), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f1(d, e, a) + buffer[8], 11), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f1(c, d, e) + buffer[9], 13), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f1(b, c, d) + buffer[10], 14), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f1(a, b, c) + buffer[11], 15), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f1(e, a, b) + buffer[12], 6), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f1(d, e, a) + buffer[13], 7), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f1(c, d, e) + buffer[14], 9), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f1(b, c, d) + buffer[15], 8), e);
  c = rotl32(c, 10);

  // right
  aa = sum32(crotl32(aa + _f5(bb, cc, dd) + buffer[5] + 0x50a28be6, 8), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f5(aa, bb, cc) + buffer[14] + 0x50a28be6, 9), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f5(ee, aa, bb) + buffer[7] + 0x50a28be6, 9), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f5(dd, ee, aa) + buffer[0] + 0x50a28be6, 11), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f5(cc, dd, ee) + buffer[9] + 0x50a28be6, 13), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f5(bb, cc, dd) + buffer[2] + 0x50a28be6, 15), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f5(aa, bb, cc) + buffer[11] + 0x50a28be6, 15), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f5(ee, aa, bb) + buffer[4] + 0x50a28be6, 5), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f5(dd, ee, aa) + buffer[13] + 0x50a28be6, 7), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f5(cc, dd, ee) + buffer[6] + 0x50a28be6, 7), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f5(bb, cc, dd) + buffer[15] + 0x50a28be6, 8), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f5(aa, bb, cc) + buffer[8] + 0x50a28be6, 11), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f5(ee, aa, bb) + buffer[1] + 0x50a28be6, 14), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f5(dd, ee, aa) + buffer[10] + 0x50a28be6, 14), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f5(cc, dd, ee) + buffer[3] + 0x50a28be6, 12), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f5(bb, cc, dd) + buffer[12] + 0x50a28be6, 6), ee);
  cc = rotl32(cc, 10);

  t = a;
  a = aa;
  aa = t;

  //
  // Rounds 16-31
  //
  // left
  e = sum32(crotl32(e + _f2(a, b, c) + buffer[7] + 0x5a827999, 7), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f2(e, a, b) + buffer[4] + 0x5a827999, 6), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f2(d, e, a) + buffer[13] + 0x5a827999, 8), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f2(c, d, e) + buffer[1] + 0x5a827999, 13), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f2(b, c, d) + buffer[10] + 0x5a827999, 11), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f2(a, b, c) + buffer[6] + 0x5a827999, 9), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f2(e, a, b) + buffer[15] + 0x5a827999, 7), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f2(d, e, a) + buffer[3] + 0x5a827999, 15), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f2(c, d, e) + buffer[12] + 0x5a827999, 7), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f2(b, c, d) + buffer[0] + 0x5a827999, 12), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f2(a, b, c) + buffer[9] + 0x5a827999, 15), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f2(e, a, b) + buffer[5] + 0x5a827999, 9), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f2(d, e, a) + buffer[2] + 0x5a827999, 11), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f2(c, d, e) + buffer[14] + 0x5a827999, 7), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f2(b, c, d) + buffer[11] + 0x5a827999, 13), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f2(a, b, c) + buffer[8] + 0x5a827999, 12), d);
  b = rotl32(b, 10);

  // right
  ee = sum32(crotl32(ee + _f4(aa, bb, cc) + buffer[6] + 0x5c4dd124, 9), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f4(ee, aa, bb) + buffer[11] + 0x5c4dd124, 13), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f4(dd, ee, aa) + buffer[3] + 0x5c4dd124, 15), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f4(cc, dd, ee) + buffer[7] + 0x5c4dd124, 7), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f4(bb, cc, dd) + buffer[0] + 0x5c4dd124, 12), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f4(aa, bb, cc) + buffer[13] + 0x5c4dd124, 8), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f4(ee, aa, bb) + buffer[5] + 0x5c4dd124, 9), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f4(dd, ee, aa) + buffer[10] + 0x5c4dd124, 11), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f4(cc, dd, ee) + buffer[14] + 0x5c4dd124, 7), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f4(bb, cc, dd) + buffer[15] + 0x5c4dd124, 7), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f4(aa, bb, cc) + buffer[8] + 0x5c4dd124, 12), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f4(ee, aa, bb) + buffer[12] + 0x5c4dd124, 7), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f4(dd, ee, aa) + buffer[4] + 0x5c4dd124, 6), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f4(cc, dd, ee) + buffer[9] + 0x5c4dd124, 15), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f4(bb, cc, dd) + buffer[1] + 0x5c4dd124, 13), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f4(aa, bb, cc) + buffer[2] + 0x5c4dd124, 11), dd);
  bb = rotl32(bb, 10);

  t = b;
  b = bb;
  bb = t;

  //
  // Rounds 32-47
  //
  // left
  d = sum32(crotl32(d + _f3(e, a, b) + buffer[3] + 0x6ed9eba1, 11), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f3(d, e, a) + buffer[10] + 0x6ed9eba1, 13), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f3(c, d, e) + buffer[14] + 0x6ed9eba1, 6), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f3(b, c, d) + buffer[4] + 0x6ed9eba1, 7), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f3(a, b, c) + buffer[9] + 0x6ed9eba1, 14), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f3(e, a, b) + buffer[15] + 0x6ed9eba1, 9), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f3(d, e, a) + buffer[8] + 0x6ed9eba1, 13), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f3(c, d, e) + buffer[1] + 0x6ed9eba1, 15), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f3(b, c, d) + buffer[2] + 0x6ed9eba1, 14), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f3(a, b, c) + buffer[7] + 0x6ed9eba1, 8), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f3(e, a, b) + buffer[0] + 0x6ed9eba1, 13), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f3(d, e, a) + buffer[6] + 0x6ed9eba1, 6), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f3(c, d, e) + buffer[13] + 0x6ed9eba1, 5), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f3(b, c, d) + buffer[11] + 0x6ed9eba1, 12), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f3(a, b, c) + buffer[5] + 0x6ed9eba1, 7), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f3(e, a, b) + buffer[12] + 0x6ed9eba1, 5), c);
  a = rotl32(a, 10);

  // right
  dd = sum32(crotl32(dd + _f3(ee, aa, bb) + buffer[15] + 0x6d703ef3, 9), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f3(dd, ee, aa) + buffer[5] + 0x6d703ef3, 7), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f3(cc, dd, ee) + buffer[1] + 0x6d703ef3, 15), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f3(bb, cc, dd) + buffer[3] + 0x6d703ef3, 11), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f3(aa, bb, cc) + buffer[7] + 0x6d703ef3, 8), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f3(ee, aa, bb) + buffer[14] + 0x6d703ef3, 6), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f3(dd, ee, aa) + buffer[6] + 0x6d703ef3, 6), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f3(cc, dd, ee) + buffer[9] + 0x6d703ef3, 14), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f3(bb, cc, dd) + buffer[11] + 0x6d703ef3, 12), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f3(aa, bb, cc) + buffer[8] + 0x6d703ef3, 13), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f3(ee, aa, bb) + buffer[12] + 0x6d703ef3, 5), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f3(dd, ee, aa) + buffer[2] + 0x6d703ef3, 14), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f3(cc, dd, ee) + buffer[10] + 0x6d703ef3, 13), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f3(bb, cc, dd) + buffer[0] + 0x6d703ef3, 13), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f3(aa, bb, cc) + buffer[4] + 0x6d703ef3, 7), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f3(ee, aa, bb) + buffer[13] + 0x6d703ef3, 5), cc);
  aa = rotl32(aa, 10);

  t = c;
  c = cc;
  cc = t;

  //
  // Rounds 48-63
  //
  // left
  c = sum32(crotl32(c + _f4(d, e, a) + buffer[1] + 0x8f1bbcdc, 11), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f4(c, d, e) + buffer[9] + 0x8f1bbcdc, 12), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f4(b, c, d) + buffer[11] + 0x8f1bbcdc, 14), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f4(a, b, c) + buffer[10] + 0x8f1bbcdc, 15), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f4(e, a, b) + buffer[0] + 0x8f1bbcdc, 14), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f4(d, e, a) + buffer[8] + 0x8f1bbcdc, 15), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f4(c, d, e) + buffer[12] + 0x8f1bbcdc, 9), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f4(b, c, d) + buffer[4] + 0x8f1bbcdc, 8), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f4(a, b, c) + buffer[13] + 0x8f1bbcdc, 9), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f4(e, a, b) + buffer[3] + 0x8f1bbcdc, 14), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f4(d, e, a) + buffer[7] + 0x8f1bbcdc, 5), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f4(c, d, e) + buffer[15] + 0x8f1bbcdc, 6), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f4(b, c, d) + buffer[14] + 0x8f1bbcdc, 8), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f4(a, b, c) + buffer[5] + 0x8f1bbcdc, 6), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f4(e, a, b) + buffer[6] + 0x8f1bbcdc, 5), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f4(d, e, a) + buffer[2] + 0x8f1bbcdc, 12), b);
  e = rotl32(e, 10);

  // right
  cc = sum32(crotl32(cc + _f2(dd, ee, aa) + buffer[8] + 0x7a6d76e9, 15), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f2(cc, dd, ee) + buffer[6] + 0x7a6d76e9, 5), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f2(bb, cc, dd) + buffer[4] + 0x7a6d76e9, 8), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f2(aa, bb, cc) + buffer[1] + 0x7a6d76e9, 11), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f2(ee, aa, bb) + buffer[3] + 0x7a6d76e9, 14), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f2(dd, ee, aa) + buffer[11] + 0x7a6d76e9, 14), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f2(cc, dd, ee) + buffer[15] + 0x7a6d76e9, 6), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f2(bb, cc, dd) + buffer[0] + 0x7a6d76e9, 14), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f2(aa, bb, cc) + buffer[5] + 0x7a6d76e9, 6), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f2(ee, aa, bb) + buffer[12] + 0x7a6d76e9, 9), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f2(dd, ee, aa) + buffer[2] + 0x7a6d76e9, 12), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f2(cc, dd, ee) + buffer[13] + 0x7a6d76e9, 9), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f2(bb, cc, dd) + buffer[9] + 0x7a6d76e9, 12), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f2(aa, bb, cc) + buffer[7] + 0x7a6d76e9, 5), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f2(ee, aa, bb) + buffer[10] + 0x7a6d76e9, 15), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f2(dd, ee, aa) + buffer[14] + 0x7a6d76e9, 8), bb);
  ee = rotl32(ee, 10);

  t = d;
  d = dd;
  dd = t;

  //
  // Rounds 64-79
  //
  // left
  b = sum32(crotl32(b + _f5(c, d, e) + buffer[4] + 0xa953fd4e, 9), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f5(b, c, d) + buffer[0] + 0xa953fd4e, 15), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f5(a, b, c) + buffer[5] + 0xa953fd4e, 5), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f5(e, a, b) + buffer[9] + 0xa953fd4e, 11), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f5(d, e, a) + buffer[7] + 0xa953fd4e, 6), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f5(c, d, e) + buffer[12] + 0xa953fd4e, 8), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f5(b, c, d) + buffer[2] + 0xa953fd4e, 13), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f5(a, b, c) + buffer[10] + 0xa953fd4e, 12), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f5(e, a, b) + buffer[14] + 0xa953fd4e, 5), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f5(d, e, a) + buffer[1] + 0xa953fd4e, 12), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f5(c, d, e) + buffer[3] + 0xa953fd4e, 13), a);
  d = rotl32(d, 10);
  a = sum32(crotl32(a + _f5(b, c, d) + buffer[8] + 0xa953fd4e, 14), e);
  c = rotl32(c, 10);
  e = sum32(crotl32(e + _f5(a, b, c) + buffer[11] + 0xa953fd4e, 11), d);
  b = rotl32(b, 10);
  d = sum32(crotl32(d + _f5(e, a, b) + buffer[6] + 0xa953fd4e, 8), c);
  a = rotl32(a, 10);
  c = sum32(crotl32(c + _f5(d, e, a) + buffer[15] + 0xa953fd4e, 5), b);
  e = rotl32(e, 10);
  b = sum32(crotl32(b + _f5(c, d, e) + buffer[13] + 0xa953fd4e, 6), a);
  d = rotl32(d, 10);

  // right
  bb = sum32(crotl32(bb + _f1(cc, dd, ee) + buffer[12], 8), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f1(bb, cc, dd) + buffer[15], 5), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f1(aa, bb, cc) + buffer[10], 12), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f1(ee, aa, bb) + buffer[4], 9), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f1(dd, ee, aa) + buffer[1], 12), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f1(cc, dd, ee) + buffer[5], 5), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f1(bb, cc, dd) + buffer[8], 14), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f1(aa, bb, cc) + buffer[7], 6), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f1(ee, aa, bb) + buffer[6], 8), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f1(dd, ee, aa) + buffer[2], 13), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f1(cc, dd, ee) + buffer[13], 6), aa);
  dd = rotl32(dd, 10);
  aa = sum32(crotl32(aa + _f1(bb, cc, dd) + buffer[14], 5), ee);
  cc = rotl32(cc, 10);
  ee = sum32(crotl32(ee + _f1(aa, bb, cc) + buffer[0], 15), dd);
  bb = rotl32(bb, 10);
  dd = sum32(crotl32(dd + _f1(ee, aa, bb) + buffer[3], 13), cc);
  aa = rotl32(aa, 10);
  cc = sum32(crotl32(cc + _f1(dd, ee, aa) + buffer[9], 11), bb);
  ee = rotl32(ee, 10);
  bb = sum32(crotl32(bb + _f1(cc, dd, ee) + buffer[11], 11), aa);
  dd = rotl32(dd, 10);

  // do (e, ee) swap as part of assignment.
  state[0] = sum32(state[0], a);
  state[1] = sum32(state[1], b);
  state[2] = sum32(state[2], c);
  state[3] = sum32(state[3], d);
  state[4] = sum32(state[4], ee);
  state[5] = sum32(state[5], aa);
  state[6] = sum32(state[6], bb);
  state[7] = sum32(state[7], cc);
  state[8] = sum32(state[8], dd);
  state[9] = sum32(state[9], e);
}