a = rotateLeft(a + F(b, c, d) + X[ 0] + 0xd76aa478, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 1] + 0xe8c7b756, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 2] + 0x242070db, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 3] + 0xc1bdceee, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 4] + 0xf57c0faf, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 5] + 0x4787c62a, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 6] + 0xa8304613, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 7] + 0xfd469501, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 8] + 0x698098d8, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 9] + 0x8b44f7af, S12) + a; c = rotateLeft(c + F(d, a, b) + X[10] + 0xffff5bb1, S13) + d; b = rotateLeft(b + F(c, d, a) + X[11] + 0x895cd7be, S14) + c; a = rotateLeft(a + F(b, c, d) + X[12] + 0x6b901122, S11) + b; d = rotateLeft(d + F(a, b, c) + X[13] + 0xfd987193, S12) + a; c = rotateLeft(c + F(d, a, b) + X[14] + 0xa679438e, S13) + d; b = rotateLeft(b + F(c, d, a) + X[15] + 0x49b40821, S14) + c;
a = rotateLeft(a + F(b, c, d) + X[ 0] + 0xd76aa478, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 1] + 0xe8c7b756, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 2] + 0x242070db, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 3] + 0xc1bdceee, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 4] + 0xf57c0faf, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 5] + 0x4787c62a, S12) + a; c = rotateLeft(c + F(d, a, b) + X[ 6] + 0xa8304613, S13) + d; b = rotateLeft(b + F(c, d, a) + X[ 7] + 0xfd469501, S14) + c; a = rotateLeft(a + F(b, c, d) + X[ 8] + 0x698098d8, S11) + b; d = rotateLeft(d + F(a, b, c) + X[ 9] + 0x8b44f7af, S12) + a; c = rotateLeft(c + F(d, a, b) + X[10] + 0xffff5bb1, S13) + d; b = rotateLeft(b + F(c, d, a) + X[11] + 0x895cd7be, S14) + c; a = rotateLeft(a + F(b, c, d) + X[12] + 0x6b901122, S11) + b; d = rotateLeft(d + F(a, b, c) + X[13] + 0xfd987193, S12) + a; c = rotateLeft(c + F(d, a, b) + X[14] + 0xa679438e, S13) + d; b = rotateLeft(b + F(c, d, a) + X[15] + 0x49b40821, S14) + c;