a = rotateLeft(a + G(b, c, d) + X[ 0] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 4] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[ 8] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[12] + 0x5a827999, S24); a = rotateLeft(a + G(b, c, d) + X[ 1] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 5] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[ 9] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[13] + 0x5a827999, S24); a = rotateLeft(a + G(b, c, d) + X[ 2] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 6] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[10] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[14] + 0x5a827999, S24); a = rotateLeft(a + G(b, c, d) + X[ 3] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 7] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[11] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[15] + 0x5a827999, S24);
a = rotateLeft(a + G(b, c, d) + X[ 0] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 4] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[ 8] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[12] + 0x5a827999, S24); a = rotateLeft(a + G(b, c, d) + X[ 1] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 5] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[ 9] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[13] + 0x5a827999, S24); a = rotateLeft(a + G(b, c, d) + X[ 2] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 6] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[10] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[14] + 0x5a827999, S24); a = rotateLeft(a + G(b, c, d) + X[ 3] + 0x5a827999, S21); d = rotateLeft(d + G(a, b, c) + X[ 7] + 0x5a827999, S22); c = rotateLeft(c + G(d, a, b) + X[11] + 0x5a827999, S23); b = rotateLeft(b + G(c, d, a) + X[15] + 0x5a827999, S24);