rol32
(a) += (b), (b) = rol32((b), 5), (b) ^= (a), (a) = rol32((a), 16), \
(c) += (d), (d) = rol32((d), 8), (d) ^= (c), \
(a) += (d), (d) = rol32((d), 7), (d) ^= (a), \
(c) += (b), (b) = rol32((b), 13), (b) ^= (c), (c) = rol32((c), 16))
b += rol32(a + f + K[i] + m[i], 7);
b += rol32(a + f + K[i + 1] + m[i + 1], 12);
b += rol32(a + f + K[i + 2] + m[i + 2], 17);
b += rol32(a + f + K[i + 3] + m[i + 3], 22);
b += rol32(a + f + K[i] + m[(5*i + 1) % 16], 5);
b += rol32(a + f + K[i + 1] + m[(5*i + 6) % 16], 9);
b += rol32(a + f + K[i + 2] + m[(5*i + 11) % 16], 14);
b += rol32(a + f + K[i + 3] + m[5*i % 16], 20);
b += rol32(a + f + K[i] + m[(3*i + 5) % 16], 4);
b += rol32(a + f + K[i + 1] + m[(3*i + 8) % 16], 11);
b += rol32(a + f + K[i + 2] + m[(3*i + 11) % 16], 16);
b += rol32(a + f + K[i + 3] + m[(3*i + 14) % 16], 23);
b += rol32(a + f + K[i] + m[7*i % 16], 6);
b += rol32(a + f + K[i + 1] + m[(7*i + 7) % 16], 10);
b += rol32(a + f + K[i + 2] + m[(7*i + 14) % 16], 15);
b += rol32(a + f + K[i + 3] + m[(7*i + 5) % 16], 21);
k = rol32(k, 15);
hash = rol32(hash, 13);
k = rol32(k, 15);
hash = rol32(hash, 13);
k = rol32(k, 15);