123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- /* 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)
|