a = rotateLeft(a + G(b, c, d) + X[ 1] + 0xf61e2562, S21) + b; d = rotateLeft(d + G(a, b, c) + X[ 6] + 0xc040b340, S22) + a; c = rotateLeft(c + G(d, a, b) + X[11] + 0x265e5a51, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 0] + 0xe9b6c7aa, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 5] + 0xd62f105d, S21) + b; d = rotateLeft(d + G(a, b, c) + X[10] + 0x02441453, S22) + a; c = rotateLeft(c + G(d, a, b) + X[15] + 0xd8a1e681, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 4] + 0xe7d3fbc8, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 9] + 0x21e1cde6, S21) + b; d = rotateLeft(d + G(a, b, c) + X[14] + 0xc33707d6, S22) + a; c = rotateLeft(c + G(d, a, b) + X[ 3] + 0xf4d50d87, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 8] + 0x455a14ed, S24) + c; a = rotateLeft(a + G(b, c, d) + X[13] + 0xa9e3e905, S21) + b; d = rotateLeft(d + G(a, b, c) + X[ 2] + 0xfcefa3f8, S22) + a; c = rotateLeft(c + G(d, a, b) + X[ 7] + 0x676f02d9, S23) + d; b = rotateLeft(b + G(c, d, a) + X[12] + 0x8d2a4c8a, S24) + c;
a = rotateLeft(a + G(b, c, d) + X[ 1] + 0xf61e2562, S21) + b; d = rotateLeft(d + G(a, b, c) + X[ 6] + 0xc040b340, S22) + a; c = rotateLeft(c + G(d, a, b) + X[11] + 0x265e5a51, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 0] + 0xe9b6c7aa, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 5] + 0xd62f105d, S21) + b; d = rotateLeft(d + G(a, b, c) + X[10] + 0x02441453, S22) + a; c = rotateLeft(c + G(d, a, b) + X[15] + 0xd8a1e681, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 4] + 0xe7d3fbc8, S24) + c; a = rotateLeft(a + G(b, c, d) + X[ 9] + 0x21e1cde6, S21) + b; d = rotateLeft(d + G(a, b, c) + X[14] + 0xc33707d6, S22) + a; c = rotateLeft(c + G(d, a, b) + X[ 3] + 0xf4d50d87, S23) + d; b = rotateLeft(b + G(c, d, a) + X[ 8] + 0x455a14ed, S24) + c; a = rotateLeft(a + G(b, c, d) + X[13] + 0xa9e3e905, S21) + b; d = rotateLeft(d + G(a, b, c) + X[ 2] + 0xfcefa3f8, S22) + a; c = rotateLeft(c + G(d, a, b) + X[ 7] + 0x676f02d9, S23) + d; b = rotateLeft(b + G(c, d, a) + X[12] + 0x8d2a4c8a, S24) + c;