X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/58a0fa747eab16c1997da619c2994a9cda640b00..refs/heads/graphwork:/armsrc/crapto1.c diff --git a/armsrc/crapto1.c b/armsrc/crapto1.c index 9d491d12..74b4eea7 100644 --- a/armsrc/crapto1.c +++ b/armsrc/crapto1.c @@ -34,22 +34,29 @@ static void __attribute__((constructor)) fill_lut() static void quicksort(uint32_t* const start, uint32_t* const stop) { uint32_t *it = start + 1, *rit = stop; - + uint32_t tmp; if(it > rit) return; - while(it < rit) - if(*it <= *start) + while(it < rit) { + if(*it <= *start) { ++it; - else if(*rit > *start) + } else if(*rit > *start) { --rit; - else - *it ^= (*it ^= *rit, *rit ^= *it); + } else { + tmp = *it; + *it = *rit; + *rit = tmp; + } + } if(*rit >= *start) --rit; - if(rit != start) - *rit ^= (*rit ^= *start, *start ^= *rit); + if(rit != start) { + tmp = *rit; + *rit = *start; + *start = tmp; + } quicksort(start, rit - 1); quicksort(rit + 1, stop); @@ -319,9 +326,11 @@ uint8_t lfsr_rollback_bit(struct Crypto1State *s, uint32_t in, int fb) { int out; uint8_t ret; - + uint32_t tmp; s->odd &= 0xffffff; - s->odd ^= (s->odd ^= s->even, s->even ^= s->odd); + tmp = s->odd; + s->odd = s->even; + s->even = tmp; out = s->even & 1; out ^= LF_POLY_EVEN & (s->even >>= 1);