return sl + good;\r
}\r
static struct Crypto1State* check_pfx_parity_ex(uint32_t prefix, uint32_t odd, uint32_t even, struct Crypto1State* sl) {\r
- struct Crypto1State s;\r
+ \r
uint32_t c = 0;\r
\r
- s.odd = odd ^ fastfwd[1][c];\r
- s.even = even ^ fastfwd[0][c];\r
- \r
- lfsr_rollback_bit(&s, 0, 0);\r
- lfsr_rollback_bit(&s, 0, 0);\r
- lfsr_rollback_bit(&s, 0, 0);\r
+ sl->odd = odd ^ fastfwd[1][c];\r
+ sl->even = even ^ fastfwd[0][c];\r
\r
- lfsr_rollback_word(&s, 0, 0);\r
- lfsr_rollback_word(&s, prefix | c << 5, 1);\r
+ lfsr_rollback_bit(sl, 0, 0);\r
+ lfsr_rollback_bit(sl, 0, 0);\r
+ lfsr_rollback_bit(sl, 0, 0);\r
+ lfsr_rollback_word(sl, 0, 0);\r
+ lfsr_rollback_word(sl, prefix | c << 5, 1);\r
\r
- sl->odd = s.odd;\r
- sl->even = s.even;\r
return ++sl;\r
}\r
\r
goto out;\r
}\r
\r
- // for(o = odd; *o + 1; ++o)\r
- // for(e = even; *e + 1; ++e)\r
- // for(top = 0; top < 64; ++top) {\r
- // *o += 1 << 21;\r
- // *e += (!(top & 7) + 1) << 21;\r
- // s = check_pfx_parity_ex(pfx, *o, *e, s);\r
- // }\r
- for(o = odd; *o != -1; ++o)\r
- for(e = even; *e != -1; ++e)\r
+ for(o = odd; *o + 1; ++o)\r
+ for(e = even; *e + 1; ++e)\r
for(top = 0; top < 64; ++top) {\r
- *o = (*o & 0x1fffff) | (top << 21);\r
- *e = (*e & 0x1fffff) | (top >> 3) << 21;\r
+ *o += 1 << 21;\r
+ *e += (!(top & 7) + 1) << 21;\r
s = check_pfx_parity_ex(pfx, *o, *e, s);\r
}\r
\r
- s->odd = s->even = -1; \r
+ // in this version, -1 signifies end of states \r
+ s->odd = s->even = -1;\r
+\r
out:\r
free(odd);\r
free(even);\r
return statelist;\r
-}\r
+}
\ No newline at end of file