void decode_key(char *buf, uint32_t *keyret) { char key[4] = { 0 }; int a = -17; int b = 0; int c = 3; int d = 3; int i, j = 15; for (i = 0; i < 32; i++) { j += a + b + c + 19; if (buf[j % 187] & (1 << d)) key[i / 8] |= 1 << i % 8; d = (d + 5) % 8; a += 17; if (a >= 51) a = -17; b += 7; if (b >= 28) b = 0; c += 3; if (c >= 33) c = 0; } memcpy(keyret, key, 4); }