+\r
+struct Crypto1State* lfsr_common_prefix_ex(uint32_t pfx, uint8_t ks[8])\r
+{\r
+ struct Crypto1State *statelist, *s;\r
+ uint32_t *odd, *even, *o, *e, top;\r
+\r
+ odd = lfsr_prefix_ks(ks, 1);\r
+ even = lfsr_prefix_ks(ks, 0);\r
+\r
+ s = statelist = malloc((sizeof *statelist) << 20);\r
+ if(!s || !odd || !even) {\r
+ free(statelist);\r
+ statelist = 0;\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
+\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
+}
\ No newline at end of file