diff -ruN rhash-1.3.2/librhash/ripemd-160.c rhash-1.3.3/librhash/ripemd-160.c --- rhash-1.3.2/librhash/ripemd-160.c 2012-11-19 09:35:50.000000000 -0600 +++ rhash-1.3.3/librhash/ripemd-160.c 2014-08-12 11:00:18.649190694 -0500 @@ -70,184 +70,173 @@ */ static void rhash_ripemd160_process_block(unsigned *hash, const unsigned* X) { - register unsigned A = hash[0], B = hash[1], C = hash[2], - D = hash[3], E = hash[4]; - unsigned a1, b1, c1, d1, e1; - - /* rounds of the left half */ - L1(A, B, C, D, E, X[ 0], 11); - L1(E, A, B, C, D, X[ 1], 14); - L1(D, E, A, B, C, X[ 2], 15); - L1(C, D, E, A, B, X[ 3], 12); - L1(B, C, D, E, A, X[ 4], 5); - L1(A, B, C, D, E, X[ 5], 8); - L1(E, A, B, C, D, X[ 6], 7); - L1(D, E, A, B, C, X[ 7], 9); - L1(C, D, E, A, B, X[ 8], 11); - L1(B, C, D, E, A, X[ 9], 13); - L1(A, B, C, D, E, X[10], 14); - L1(E, A, B, C, D, X[11], 15); - L1(D, E, A, B, C, X[12], 6); - L1(C, D, E, A, B, X[13], 7); - L1(B, C, D, E, A, X[14], 9); - L1(A, B, C, D, E, X[15], 8); - - L2(E, A, B, C, D, X[ 7], 7); - L2(D, E, A, B, C, X[ 4], 6); - L2(C, D, E, A, B, X[13], 8); - L2(B, C, D, E, A, X[ 1], 13); - L2(A, B, C, D, E, X[10], 11); - L2(E, A, B, C, D, X[ 6], 9); - L2(D, E, A, B, C, X[15], 7); - L2(C, D, E, A, B, X[ 3], 15); - L2(B, C, D, E, A, X[12], 7); - L2(A, B, C, D, E, X[ 0], 12); - L2(E, A, B, C, D, X[ 9], 15); - L2(D, E, A, B, C, X[ 5], 9); - L2(C, D, E, A, B, X[ 2], 11); - L2(B, C, D, E, A, X[14], 7); - L2(A, B, C, D, E, X[11], 13); - L2(E, A, B, C, D, X[ 8], 12); - - L3(D, E, A, B, C, X[ 3], 11); - L3(C, D, E, A, B, X[10], 13); - L3(B, C, D, E, A, X[14], 6); - L3(A, B, C, D, E, X[ 4], 7); - L3(E, A, B, C, D, X[ 9], 14); - L3(D, E, A, B, C, X[15], 9); - L3(C, D, E, A, B, X[ 8], 13); - L3(B, C, D, E, A, X[ 1], 15); - L3(A, B, C, D, E, X[ 2], 14); - L3(E, A, B, C, D, X[ 7], 8); - L3(D, E, A, B, C, X[ 0], 13); - L3(C, D, E, A, B, X[ 6], 6); - L3(B, C, D, E, A, X[13], 5); - L3(A, B, C, D, E, X[11], 12); - L3(E, A, B, C, D, X[ 5], 7); - L3(D, E, A, B, C, X[12], 5); - - L4(C, D, E, A, B, X[ 1], 11); - L4(B, C, D, E, A, X[ 9], 12); - L4(A, B, C, D, E, X[11], 14); - L4(E, A, B, C, D, X[10], 15); - L4(D, E, A, B, C, X[ 0], 14); - L4(C, D, E, A, B, X[ 8], 15); - L4(B, C, D, E, A, X[12], 9); - L4(A, B, C, D, E, X[ 4], 8); - L4(E, A, B, C, D, X[13], 9); - L4(D, E, A, B, C, X[ 3], 14); - L4(C, D, E, A, B, X[ 7], 5); - L4(B, C, D, E, A, X[15], 6); - L4(A, B, C, D, E, X[14], 8); - L4(E, A, B, C, D, X[ 5], 6); - L4(D, E, A, B, C, X[ 6], 5); - L4(C, D, E, A, B, X[ 2], 12); - - L5(B, C, D, E, A, X[ 4], 9); - L5(A, B, C, D, E, X[ 0], 15); - L5(E, A, B, C, D, X[ 5], 5); - L5(D, E, A, B, C, X[ 9], 11); - L5(C, D, E, A, B, X[ 7], 6); - L5(B, C, D, E, A, X[12], 8); - L5(A, B, C, D, E, X[ 2], 13); - L5(E, A, B, C, D, X[10], 12); - L5(D, E, A, B, C, X[14], 5); - L5(C, D, E, A, B, X[ 1], 12); - L5(B, C, D, E, A, X[ 3], 13); - L5(A, B, C, D, E, X[ 8], 14); - L5(E, A, B, C, D, X[11], 11); - L5(D, E, A, B, C, X[ 6], 8); - L5(C, D, E, A, B, X[15], 5); - L5(B, C, D, E, A, X[13], 6); - - a1 = A, b1 = B, c1 = C, d1 = D, e1 = E; - A = hash[0], B = hash[1], C = hash[2], - D = hash[3], E = hash[4]; + register unsigned A = hash[0], B = hash[1], C = hash[2], D = hash[3], E = hash[4]; + register unsigned a1 = hash[0], b1 = hash[1], c1 = hash[2], d1 = hash[3], e1 = hash[4]; - /* rounds of the right half */ + /* rounds of the left and right half interleaved */ + L1(a1, b1, c1, d1, e1, X[ 0], 11); R1(A, B, C, D, E, X[ 5], 8); + L1(e1, a1, b1, c1, d1, X[ 1], 14); R1(E, A, B, C, D, X[14], 9); + L1(d1, e1, a1, b1, c1, X[ 2], 15); R1(D, E, A, B, C, X[ 7], 9); + L1(c1, d1, e1, a1, b1, X[ 3], 12); R1(C, D, E, A, B, X[ 0], 11); + L1(b1, c1, d1, e1, a1, X[ 4], 5); R1(B, C, D, E, A, X[ 9], 13); + L1(a1, b1, c1, d1, e1, X[ 5], 8); R1(A, B, C, D, E, X[ 2], 15); + L1(e1, a1, b1, c1, d1, X[ 6], 7); R1(E, A, B, C, D, X[11], 15); + L1(d1, e1, a1, b1, c1, X[ 7], 9); R1(D, E, A, B, C, X[ 4], 5); + L1(c1, d1, e1, a1, b1, X[ 8], 11); R1(C, D, E, A, B, X[13], 7); + L1(b1, c1, d1, e1, a1, X[ 9], 13); R1(B, C, D, E, A, X[ 6], 7); + L1(a1, b1, c1, d1, e1, X[10], 14); R1(A, B, C, D, E, X[15], 8); + L1(e1, a1, b1, c1, d1, X[11], 15); R1(E, A, B, C, D, X[ 8], 11); + L1(d1, e1, a1, b1, c1, X[12], 6); R1(D, E, A, B, C, X[ 1], 14); + L1(c1, d1, e1, a1, b1, X[13], 7); R1(C, D, E, A, B, X[10], 14); + L1(b1, c1, d1, e1, a1, X[14], 9); R1(B, C, D, E, A, X[ 3], 12); + L1(a1, b1, c1, d1, e1, X[15], 8); R1(A, B, C, D, E, X[12], 6); + L2(e1, a1, b1, c1, d1, X[ 7], 7); R2(E, A, B, C, D, X[ 6], 9); + L2(d1, e1, a1, b1, c1, X[ 4], 6); R2(D, E, A, B, C, X[11], 13); + L2(c1, d1, e1, a1, b1, X[13], 8); R2(C, D, E, A, B, X[ 3], 15); + L2(b1, c1, d1, e1, a1, X[ 1], 13); R2(B, C, D, E, A, X[ 7], 7); + L2(a1, b1, c1, d1, e1, X[10], 11); R2(A, B, C, D, E, X[ 0], 12); + L2(e1, a1, b1, c1, d1, X[ 6], 9); R2(E, A, B, C, D, X[13], 8); + L2(d1, e1, a1, b1, c1, X[15], 7); R2(D, E, A, B, C, X[ 5], 9); + L2(c1, d1, e1, a1, b1, X[ 3], 15); R2(C, D, E, A, B, X[10], 11); + L2(b1, c1, d1, e1, a1, X[12], 7); R2(B, C, D, E, A, X[14], 7); + L2(a1, b1, c1, d1, e1, X[ 0], 12); R2(A, B, C, D, E, X[15], 7); + L2(e1, a1, b1, c1, d1, X[ 9], 15); R2(E, A, B, C, D, X[ 8], 12); + L2(d1, e1, a1, b1, c1, X[ 5], 9); R2(D, E, A, B, C, X[12], 7); + L2(c1, d1, e1, a1, b1, X[ 2], 11); R2(C, D, E, A, B, X[ 4], 6); + L2(b1, c1, d1, e1, a1, X[14], 7); R2(B, C, D, E, A, X[ 9], 15); + L2(a1, b1, c1, d1, e1, X[11], 13); R2(A, B, C, D, E, X[ 1], 13); + L2(e1, a1, b1, c1, d1, X[ 8], 12); R2(E, A, B, C, D, X[ 2], 11); + L3(d1, e1, a1, b1, c1, X[ 3], 11); R3(D, E, A, B, C, X[15], 9); + L3(c1, d1, e1, a1, b1, X[10], 13); R3(C, D, E, A, B, X[ 5], 7); + L3(b1, c1, d1, e1, a1, X[14], 6); R3(B, C, D, E, A, X[ 1], 15); + L3(a1, b1, c1, d1, e1, X[ 4], 7); R3(A, B, C, D, E, X[ 3], 11); + L3(e1, a1, b1, c1, d1, X[ 9], 14); R3(E, A, B, C, D, X[ 7], 8); + L3(d1, e1, a1, b1, c1, X[15], 9); R3(D, E, A, B, C, X[14], 6); + L3(c1, d1, e1, a1, b1, X[ 8], 13); R3(C, D, E, A, B, X[ 6], 6); + L3(b1, c1, d1, e1, a1, X[ 1], 15); R3(B, C, D, E, A, X[ 9], 14); + L3(a1, b1, c1, d1, e1, X[ 2], 14); R3(A, B, C, D, E, X[11], 12); + L3(e1, a1, b1, c1, d1, X[ 7], 8); R3(E, A, B, C, D, X[ 8], 13); + L3(d1, e1, a1, b1, c1, X[ 0], 13); R3(D, E, A, B, C, X[12], 5); + L3(c1, d1, e1, a1, b1, X[ 6], 6); R3(C, D, E, A, B, X[ 2], 14); + L3(b1, c1, d1, e1, a1, X[13], 5); R3(B, C, D, E, A, X[10], 13); + L3(a1, b1, c1, d1, e1, X[11], 12); R3(A, B, C, D, E, X[ 0], 13); + L3(e1, a1, b1, c1, d1, X[ 5], 7); R3(E, A, B, C, D, X[ 4], 7); + L3(d1, e1, a1, b1, c1, X[12], 5); R3(D, E, A, B, C, X[13], 5); + L4(c1, d1, e1, a1, b1, X[ 1], 11); R4(C, D, E, A, B, X[ 8], 15); + L4(b1, c1, d1, e1, a1, X[ 9], 12); R4(B, C, D, E, A, X[ 6], 5); + L4(a1, b1, c1, d1, e1, X[11], 14); R4(A, B, C, D, E, X[ 4], 8); + L4(e1, a1, b1, c1, d1, X[10], 15); R4(E, A, B, C, D, X[ 1], 11); + L4(d1, e1, a1, b1, c1, X[ 0], 14); R4(D, E, A, B, C, X[ 3], 14); + L4(c1, d1, e1, a1, b1, X[ 8], 15); R4(C, D, E, A, B, X[11], 14); + L4(b1, c1, d1, e1, a1, X[12], 9); R4(B, C, D, E, A, X[15], 6); + L4(a1, b1, c1, d1, e1, X[ 4], 8); R4(A, B, C, D, E, X[ 0], 14); + L4(e1, a1, b1, c1, d1, X[13], 9); R4(E, A, B, C, D, X[ 5], 6); + L4(d1, e1, a1, b1, c1, X[ 3], 14); R4(D, E, A, B, C, X[12], 9); + L4(c1, d1, e1, a1, b1, X[ 7], 5); R4(C, D, E, A, B, X[ 2], 12); + L4(b1, c1, d1, e1, a1, X[15], 6); R4(B, C, D, E, A, X[13], 9); + L4(a1, b1, c1, d1, e1, X[14], 8); R4(A, B, C, D, E, X[ 9], 12); + L4(e1, a1, b1, c1, d1, X[ 5], 6); R4(E, A, B, C, D, X[ 7], 5); + L4(d1, e1, a1, b1, c1, X[ 6], 5); R4(D, E, A, B, C, X[10], 15); + L4(c1, d1, e1, a1, b1, X[ 2], 12); R4(C, D, E, A, B, X[14], 8); + L5(b1, c1, d1, e1, a1, X[ 4], 9); R5(B, C, D, E, A, X[12] , 8); + L5(a1, b1, c1, d1, e1, X[ 0], 15); R5(A, B, C, D, E, X[15] , 5); + L5(e1, a1, b1, c1, d1, X[ 5], 5); R5(E, A, B, C, D, X[10] , 12); + L5(d1, e1, a1, b1, c1, X[ 9], 11); R5(D, E, A, B, C, X[ 4] , 9); + L5(c1, d1, e1, a1, b1, X[ 7], 6); R5(C, D, E, A, B, X[ 1] , 12); + L5(b1, c1, d1, e1, a1, X[12], 8); R5(B, C, D, E, A, X[ 5] , 5); + L5(a1, b1, c1, d1, e1, X[ 2], 13); R5(A, B, C, D, E, X[ 8] , 14); + L5(e1, a1, b1, c1, d1, X[10], 12); R5(E, A, B, C, D, X[ 7] , 6); + L5(d1, e1, a1, b1, c1, X[14], 5); R5(D, E, A, B, C, X[ 6] , 8); + L5(c1, d1, e1, a1, b1, X[ 1], 12); R5(C, D, E, A, B, X[ 2] , 13); + L5(b1, c1, d1, e1, a1, X[ 3], 13); R5(B, C, D, E, A, X[13] , 6); + L5(a1, b1, c1, d1, e1, X[ 8], 14); R5(A, B, C, D, E, X[14] , 5); + L5(e1, a1, b1, c1, d1, X[11], 11); R5(E, A, B, C, D, X[ 0] , 15); + L5(d1, e1, a1, b1, c1, X[ 6], 8); R5(D, E, A, B, C, X[ 3] , 13); + L5(c1, d1, e1, a1, b1, X[15], 5); R5(C, D, E, A, B, X[ 9] , 11); + L5(b1, c1, d1, e1, a1, X[13], 6); R5(B, C, D, E, A, X[11] , 11); /* update intermediate hash */