--- /dev/null
+/* Template for compress method; run through cpp. */
+
+#define ROUND1_STEP(a, b, c, d, e, T) e += s1(a,b,c,d,w[T]); b = rotateLeft(b, 30)
+#define ROUND2_STEP(a, b, c, d, e, T) e += s2(a,b,c,d,w[T]); b = rotateLeft(b, 30)
+#define ROUND3_STEP(a, b, c, d, e, T) e += s3(a,b,c,d,w[T]); b = rotateLeft(b, 30)
+#define ROUND4_STEP(a, b, c, d, e, T) e += s4(a,b,c,d,w[T]); b = rotateLeft(b, 30)
+
+ 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);
+ state58.save(a, b, c, d, e);
+ 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);
+ state65.save(a, b, c, d, e);
+ 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);
--- /dev/null
+/* 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)
+++ /dev/null
-/* Template for compress method; run through cpp. */
-
-#define ROUND1_STEP(a, b, c, d, e, T) e += s1(a,b,c,d,w[T]); b = rotateLeft(b, 30)
-#define ROUND2_STEP(a, b, c, d, e, T) e += s2(a,b,c,d,w[T]); b = rotateLeft(b, 30)
-#define ROUND3_STEP(a, b, c, d, e, T) e += s3(a,b,c,d,w[T]); b = rotateLeft(b, 30)
-#define ROUND4_STEP(a, b, c, d, e, T) e += s4(a,b,c,d,w[T]); b = rotateLeft(b, 30)
-
- 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);
- state58.save(a, b, c, d, e);
- 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);
- state65.save(a, b, c, d, e);
- 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);
+++ /dev/null
-/* 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)