void decodeKey (const unsigned char *key, unsigned char *deckey) { unsigned char seq [] = {6, 0, 2, 9, 3, 11, 1, 7, 5, 4, 10, 8}; unsigned long n = 330078017; unsigned char i = 11; do { seq [i] = key [seq [i]]; if (seq [i] < 8) { seq [i] ^= n & 7; n >>= 3; } else seq [i] ^= i & 1; deckey [i] = seq [i]; } while (i--); }