X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/952a8bb59b197973e35ae187fc8acd2027ee570d..refs/heads/graphwork:/armsrc/crapto1.c diff --git a/armsrc/crapto1.c b/armsrc/crapto1.c index df0834b8..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);