- tmp = lfsr.a & 1;
- tmp ^= (lfsr.a & 0x40) >> 6;
-
- lfsr.a >>= 1;
- lfsr.a |= tmp << 6;
-
- tmp = lfsr.b & 1;
- tmp ^= (lfsr.b & 4) >> 2;
- tmp = ~tmp;
- tmp ^= (lfsr.b & 8) >> 3;
- tmp = ~tmp;
- tmp ^= (lfsr.b & 0x80) >> 7;
-
- lfsr.b >>= 1;
- lfsr.b |= tmp << 7;
+ //lfsr.a = lfsr.a >> 1 | (lfsr.a ^ lfsr.a >> 6) << 6;
+ // According: http://www.proxmark.org/forum/viewtopic.php?pid=5437#p5437
+ lfsr.a = (lfsr.a >> 1 | (lfsr.a ^ lfsr.a >> 6) << 6) & 0x7F;
+ lfsr.b = lfsr.b >> 1 | (lfsr.b ^ lfsr.b >> 2 ^ lfsr.b >> 3 ^ lfsr.b >> 7) << 7;