| /* Template for recompress method; run through cpp. */ |
| |
| #define ROUND1_STEP(a, b, c, d, e, T) {e += s1(a,b,c,d,w2[T]); b = rotateLeft(b, 30);} |
| #define ROUND2_STEP(a, b, c, d, e, T) {e += s2(a,b,c,d,w2[T]); b = rotateLeft(b, 30);} |
| #define ROUND3_STEP(a, b, c, d, e, T) {e += s3(a,b,c,d,w2[T]); b = rotateLeft(b, 30);} |
| #define ROUND4_STEP(a, b, c, d, e, T) {e += s4(a,b,c,d,w2[T]); b = rotateLeft(b, 30);} |
| |
| #define ROUND1_STEP_BW(a, b, c, d, e, T) {b = rotateRight(b, 30); e -= s1(a,b,c,d,w2[T]);} |
| #define ROUND2_STEP_BW(a, b, c, d, e, T) {b = rotateRight(b, 30); e -= s2(a,b,c,d,w2[T]);} |
| #define ROUND3_STEP_BW(a, b, c, d, e, T) {b = rotateRight(b, 30); e -= s3(a,b,c,d,w2[T]);} |
| #define ROUND4_STEP_BW(a, b, c, d, e, T) {b = rotateRight(b, 30); e -= s4(a,b,c,d,w2[T]);} |
| |
| /* Condition to go backwards: if (t > step) */ |
| /* t=80-66 have no identified DV; skip. |
| ROUND4_STEP_BW(b, c, d, e, a, 79) |
| ROUND4_STEP_BW(c, d, e, a, b, 78) |
| ROUND4_STEP_BW(d, e, a, b, c, 77) |
| ROUND4_STEP_BW(e, a, b, c, d, 76) |
| ROUND4_STEP_BW(a, b, c, d, e, 75) |
| ROUND4_STEP_BW(b, c, d, e, a, 74) |
| ROUND4_STEP_BW(c, d, e, a, b, 73) |
| ROUND4_STEP_BW(d, e, a, b, c, 72) |
| ROUND4_STEP_BW(e, a, b, c, d, 71) |
| ROUND4_STEP_BW(a, b, c, d, e, 70) |
| ROUND4_STEP_BW(b, c, d, e, a, 69) |
| ROUND4_STEP_BW(c, d, e, a, b, 68) |
| ROUND4_STEP_BW(d, e, a, b, c, 67) |
| ROUND4_STEP_BW(e, a, b, c, d, 66) |
| ROUND4_STEP_BW(a, b, c, d, e, 65) |
| */ |
| if (t == 65) { |
| ROUND4_STEP_BW(b, c, d, e, a, 64) |
| ROUND4_STEP_BW(c, d, e, a, b, 63) |
| ROUND4_STEP_BW(d, e, a, b, c, 62) |
| ROUND4_STEP_BW(e, a, b, c, d, 61) |
| ROUND4_STEP_BW(a, b, c, d, e, 60) |
| |
| ROUND3_STEP_BW(b, c, d, e, a, 59) |
| ROUND3_STEP_BW(c, d, e, a, b, 58) |
| } |
| ROUND3_STEP_BW(d, e, a, b, c, 57) |
| ROUND3_STEP_BW(e, a, b, c, d, 56) |
| ROUND3_STEP_BW(a, b, c, d, e, 55) |
| ROUND3_STEP_BW(b, c, d, e, a, 54) |
| ROUND3_STEP_BW(c, d, e, a, b, 53) |
| ROUND3_STEP_BW(d, e, a, b, c, 52) |
| ROUND3_STEP_BW(e, a, b, c, d, 51) |
| ROUND3_STEP_BW(a, b, c, d, e, 50) |
| ROUND3_STEP_BW(b, c, d, e, a, 49) |
| ROUND3_STEP_BW(c, d, e, a, b, 48) |
| ROUND3_STEP_BW(d, e, a, b, c, 47) |
| ROUND3_STEP_BW(e, a, b, c, d, 46) |
| ROUND3_STEP_BW(a, b, c, d, e, 45) |
| ROUND3_STEP_BW(b, c, d, e, a, 44) |
| ROUND3_STEP_BW(c, d, e, a, b, 43) |
| ROUND3_STEP_BW(d, e, a, b, c, 42) |
| ROUND3_STEP_BW(e, a, b, c, d, 41) |
| ROUND3_STEP_BW(a, b, c, d, e, 40) |
| |
| ROUND2_STEP_BW(b, c, d, e, a, 39) |
| ROUND2_STEP_BW(c, d, e, a, b, 38) |
| ROUND2_STEP_BW(d, e, a, b, c, 37) |
| ROUND2_STEP_BW(e, a, b, c, d, 36) |
| ROUND2_STEP_BW(a, b, c, d, e, 35) |
| ROUND2_STEP_BW(b, c, d, e, a, 34) |
| ROUND2_STEP_BW(c, d, e, a, b, 33) |
| ROUND2_STEP_BW(d, e, a, b, c, 32) |
| ROUND2_STEP_BW(e, a, b, c, d, 31) |
| ROUND2_STEP_BW(a, b, c, d, e, 30) |
| ROUND2_STEP_BW(b, c, d, e, a, 29) |
| ROUND2_STEP_BW(c, d, e, a, b, 28) |
| ROUND2_STEP_BW(d, e, a, b, c, 27) |
| ROUND2_STEP_BW(e, a, b, c, d, 26) |
| ROUND2_STEP_BW(a, b, c, d, e, 25) |
| ROUND2_STEP_BW(b, c, d, e, a, 24) |
| ROUND2_STEP_BW(c, d, e, a, b, 23) |
| ROUND2_STEP_BW(d, e, a, b, c, 22) |
| ROUND2_STEP_BW(e, a, b, c, d, 21) |
| ROUND2_STEP_BW(a, b, c, d, e, 20) |
| |
| ROUND1_STEP_BW(b, c, d, e, a, 19) |
| ROUND1_STEP_BW(c, d, e, a, b, 18) |
| ROUND1_STEP_BW(d, e, a, b, c, 17) |
| ROUND1_STEP_BW(e, a, b, c, d, 16) |
| ROUND1_STEP_BW(a, b, c, d, e, 15) |
| ROUND1_STEP_BW(b, c, d, e, a, 14) |
| ROUND1_STEP_BW(c, d, e, a, b, 13) |
| ROUND1_STEP_BW(d, e, a, b, c, 12) |
| ROUND1_STEP_BW(e, a, b, c, d, 11) |
| ROUND1_STEP_BW(a, b, c, d, e, 10) |
| ROUND1_STEP_BW(b, c, d, e, a, 9) |
| ROUND1_STEP_BW(c, d, e, a, b, 8) |
| ROUND1_STEP_BW(d, e, a, b, c, 7) |
| ROUND1_STEP_BW(e, a, b, c, d, 6) |
| ROUND1_STEP_BW(a, b, c, d, e, 5) |
| ROUND1_STEP_BW(b, c, d, e, a, 4) |
| ROUND1_STEP_BW(c, d, e, a, b, 3) |
| ROUND1_STEP_BW(d, e, a, b, c, 2) |
| ROUND1_STEP_BW(e, a, b, c, d, 1) |
| ROUND1_STEP_BW(a, b, c, d, e, 0) |
| |
| hIn.save(a, b, c, d, e); |
| a = s.a; b = s.b; c = s.c; d = s.d; e = s.e; |
| |
| /* Condition to go fowards: if (t <= step) */ |
| /* Earliest restart is T=58; skip. |
| ROUND1_STEP(a, b, c, d, e, 0) |
| ROUND1_STEP(e, a, b, c, d, 1) |
| ROUND1_STEP(d, e, a, b, c, 2) |
| ROUND1_STEP(c, d, e, a, b, 3) |
| ROUND1_STEP(b, c, d, e, a, 4) |
| ROUND1_STEP(a, b, c, d, e, 5) |
| ROUND1_STEP(e, a, b, c, d, 6) |
| ROUND1_STEP(d, e, a, b, c, 7) |
| ROUND1_STEP(c, d, e, a, b, 8) |
| ROUND1_STEP(b, c, d, e, a, 9) |
| ROUND1_STEP(a, b, c, d, e, 10) |
| ROUND1_STEP(e, a, b, c, d, 11) |
| ROUND1_STEP(d, e, a, b, c, 12) |
| ROUND1_STEP(c, d, e, a, b, 13) |
| ROUND1_STEP(b, c, d, e, a, 14) |
| ROUND1_STEP(a, b, c, d, e, 15) |
| ROUND1_STEP(e, a, b, c, d, 16) |
| ROUND1_STEP(d, e, a, b, c, 17) |
| ROUND1_STEP(c, d, e, a, b, 18) |
| ROUND1_STEP(b, c, d, e, a, 19) |
| |
| ROUND2_STEP(a, b, c, d, e, 20) |
| ROUND2_STEP(e, a, b, c, d, 21) |
| ROUND2_STEP(d, e, a, b, c, 22) |
| ROUND2_STEP(c, d, e, a, b, 23) |
| ROUND2_STEP(b, c, d, e, a, 24) |
| ROUND2_STEP(a, b, c, d, e, 25) |
| ROUND2_STEP(e, a, b, c, d, 26) |
| ROUND2_STEP(d, e, a, b, c, 27) |
| ROUND2_STEP(c, d, e, a, b, 28) |
| ROUND2_STEP(b, c, d, e, a, 29) |
| ROUND2_STEP(a, b, c, d, e, 30) |
| ROUND2_STEP(e, a, b, c, d, 31) |
| ROUND2_STEP(d, e, a, b, c, 32) |
| ROUND2_STEP(c, d, e, a, b, 33) |
| ROUND2_STEP(b, c, d, e, a, 34) |
| ROUND2_STEP(a, b, c, d, e, 35) |
| ROUND2_STEP(e, a, b, c, d, 36) |
| ROUND2_STEP(d, e, a, b, c, 37) |
| ROUND2_STEP(c, d, e, a, b, 38) |
| ROUND2_STEP(b, c, d, e, a, 39) |
| |
| ROUND3_STEP(a, b, c, d, e, 40) |
| ROUND3_STEP(e, a, b, c, d, 41) |
| ROUND3_STEP(d, e, a, b, c, 42) |
| ROUND3_STEP(c, d, e, a, b, 43) |
| ROUND3_STEP(b, c, d, e, a, 44) |
| ROUND3_STEP(a, b, c, d, e, 45) |
| ROUND3_STEP(e, a, b, c, d, 46) |
| ROUND3_STEP(d, e, a, b, c, 47) |
| ROUND3_STEP(c, d, e, a, b, 48) |
| ROUND3_STEP(b, c, d, e, a, 49) |
| ROUND3_STEP(a, b, c, d, e, 50) |
| ROUND3_STEP(e, a, b, c, d, 51) |
| ROUND3_STEP(d, e, a, b, c, 52) |
| ROUND3_STEP(c, d, e, a, b, 53) |
| ROUND3_STEP(b, c, d, e, a, 54) |
| ROUND3_STEP(a, b, c, d, e, 55) |
| ROUND3_STEP(e, a, b, c, d, 56) |
| ROUND3_STEP(d, e, a, b, c, 57) |
| */ |
| if (t == 58) { |
| ROUND3_STEP(c, d, e, a, b, 58) |
| ROUND3_STEP(b, c, d, e, a, 59) |
| |
| ROUND4_STEP(a, b, c, d, e, 60) |
| ROUND4_STEP(e, a, b, c, d, 61) |
| ROUND4_STEP(d, e, a, b, c, 62) |
| ROUND4_STEP(c, d, e, a, b, 63) |
| ROUND4_STEP(b, c, d, e, a, 64) |
| } |
| ROUND4_STEP(a, b, c, d, e, 65) |
| ROUND4_STEP(e, a, b, c, d, 66) |
| ROUND4_STEP(d, e, a, b, c, 67) |
| ROUND4_STEP(c, d, e, a, b, 68) |
| ROUND4_STEP(b, c, d, e, a, 69) |
| ROUND4_STEP(a, b, c, d, e, 70) |
| ROUND4_STEP(e, a, b, c, d, 71) |
| ROUND4_STEP(d, e, a, b, c, 72) |
| ROUND4_STEP(c, d, e, a, b, 73) |
| ROUND4_STEP(b, c, d, e, a, 74) |
| ROUND4_STEP(a, b, c, d, e, 75) |
| ROUND4_STEP(e, a, b, c, d, 76) |
| ROUND4_STEP(d, e, a, b, c, 77) |
| ROUND4_STEP(c, d, e, a, b, 78) |
| ROUND4_STEP(b, c, d, e, a, 79) |