a = rotateLeft(a + H(b, c, d) + X[ 5] + 0xfffa3942, S31) + b; d = rotateLeft(d + H(a, b, c) + X[ 8] + 0x8771f681, S32) + a; c = rotateLeft(c + H(d, a, b) + X[11] + 0x6d9d6122, S33) + d; b = rotateLeft(b + H(c, d, a) + X[14] + 0xfde5380c, S34) + c; a = rotateLeft(a + H(b, c, d) + X[ 1] + 0xa4beea44, S31) + b; d = rotateLeft(d + H(a, b, c) + X[ 4] + 0x4bdecfa9, S32) + a; c = rotateLeft(c + H(d, a, b) + X[ 7] + 0xf6bb4b60, S33) + d; b = rotateLeft(b + H(c, d, a) + X[10] + 0xbebfbc70, S34) + c; a = rotateLeft(a + H(b, c, d) + X[13] + 0x289b7ec6, S31) + b; d = rotateLeft(d + H(a, b, c) + X[ 0] + 0xeaa127fa, S32) + a; c = rotateLeft(c + H(d, a, b) + X[ 3] + 0xd4ef3085, S33) + d; b = rotateLeft(b + H(c, d, a) + X[ 6] + 0x04881d05, S34) + c; a = rotateLeft(a + H(b, c, d) + X[ 9] + 0xd9d4d039, S31) + b; d = rotateLeft(d + H(a, b, c) + X[12] + 0xe6db99e5, S32) + a; c = rotateLeft(c + H(d, a, b) + X[15] + 0x1fa27cf8, S33) + d; b = rotateLeft(b + H(c, d, a) + X[ 2] + 0xc4ac5665, S34) + c;
a = rotateLeft(a + H(b, c, d) + X[ 5] + 0xfffa3942, S31) + b; d = rotateLeft(d + H(a, b, c) + X[ 8] + 0x8771f681, S32) + a; c = rotateLeft(c + H(d, a, b) + X[11] + 0x6d9d6122, S33) + d; b = rotateLeft(b + H(c, d, a) + X[14] + 0xfde5380c, S34) + c; a = rotateLeft(a + H(b, c, d) + X[ 1] + 0xa4beea44, S31) + b; d = rotateLeft(d + H(a, b, c) + X[ 4] + 0x4bdecfa9, S32) + a; c = rotateLeft(c + H(d, a, b) + X[ 7] + 0xf6bb4b60, S33) + d; b = rotateLeft(b + H(c, d, a) + X[10] + 0xbebfbc70, S34) + c; a = rotateLeft(a + H(b, c, d) + X[13] + 0x289b7ec6, S31) + b; d = rotateLeft(d + H(a, b, c) + X[ 0] + 0xeaa127fa, S32) + a; c = rotateLeft(c + H(d, a, b) + X[ 3] + 0xd4ef3085, S33) + d; b = rotateLeft(b + H(c, d, a) + X[ 6] + 0x04881d05, S34) + c; a = rotateLeft(a + H(b, c, d) + X[ 9] + 0xd9d4d039, S31) + b; d = rotateLeft(d + H(a, b, c) + X[12] + 0xe6db99e5, S32) + a; c = rotateLeft(c + H(d, a, b) + X[15] + 0x1fa27cf8, S33) + d; b = rotateLeft(b + H(c, d, a) + X[ 2] + 0xc4ac5665, S34) + c;