#include static unsigned long crcs[] = { 0xa91cb4b8, 0x42b6fc05, 0x4e936b3e, 0x257ff0af, 0x8101726a, 0x128d71a1, 0x954714f1, 0x3a01bc97, 0xbffdea1a, 0x7d3b688b, 0x31884222, 0xa8ee1770, 0xb99321cc, 0x63a9d6ed, 0x0cad3eee, 0x7090de35, 0x2adf2f5e, 0x9e40cd88, 0x7f4fa146, 0x3561d1b8, 0xa13d3044, 0xa0c9e60f, 0x511c596b, 0x69c621e2, 0x46616ca3, 0x473c4a72, 0x458607d0, 0x8db7c1ec, 0x0be016ad, 0xdc3ebe6e, 0x3aa9025c, 0xbeac978c, 0x6dd6ba6d }; // static unsigned long targets[32] = {}; static unsigned long crcz = 0xf07a8cd3; #define STG 12 int main(int argc, char **argv) { unsigned long i, ii; unsigned long j; unsigned long sum, ssum; if (argc > 1) { i = strtoul(argv[1], 0, 0); for (ii = i ; ii < 32 ; ii++) crcs[ii] = crcs[ii+1]; } #ifdef USECRCLIN for (ii=0 ; ii < 32 ; ii++) crcs[ii] ^= crcz; #endif for (ii=0xffffffff< %.8lx\n", sum, ii|i); for (j=32 ; j ; j--) if (!(sum ^ (1< %.8lx\n", sum, ii|i); sum ^= crcz; #endif if (!sum) printf("x %.8lx -> %.8lx\n", sum, ii|i); for (j=32 ; j ; j--) if (!(sum ^ (1< %.8lx\n", sum, ii|i); /* asm( "bsfl %0, %%eax\n" "jz 1f\n" "bsrl %0, %%ecx\n" "cmpl %%eax, %%ecx\n" "jnz 2f\n" "1:\n" : : "r"(sum) : "eax", "ecx", "cc"); printf("%.8lx -> %.8lx\n", sum, ii|i); asm("2:"); sum ^= crcz; asm( "bsfl %0, %%eax\n" "jz 3f\n" "bsrl %0, %%ecx\n" "cmpl %%eax, %%ecx\n" "jnz 4f\n" "3:\n" : : "r"(sum) : "eax", "ecx", "cc"); printf("%.8lx -> %.8lx\n", sum, ii|i); asm("4:"); */ /* if (!sum) printf("x %.8lx -> %.8lx\n", sum, ii|i); for (j=32 ; j ; j--) if (!(sum ^ (1< %.8lx\n", sum, ii|i); */ } } printf("Done.\n"); return 0; }