https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126412

--- Comment #5 from David Binderman <dcb314 at hotmail dot com> ---
The cvise script needed some tweeking, but eventually it
produced this:

void printf(...);
int crc32_tab[256];
int crc32_context = 4294967295, main_i, main_j;
long long g_9 = 9301189474272911056, g_13 = 5807806182820080170;
short g_44 = 6;
int *g_70;
static int **g_69 = &g_70;
int g_112[240] = {3};
char g_126;
static int g_170;
signed char g_253 = 10;
short **g_486;
static long long g_590 = 1;
static long long g_609 = 1;
long func_51___trans_tmp_28;
unsigned main_crc;
void crc32_byte(char b) {
  crc32_context =
      crc32_context >> 8 & 16777215 ^ crc32_tab[(crc32_context ^ b) & 255];
}
void crc32_8bytes(long long val) {
  crc32_context =
      crc32_context >> 8 & 16777215 ^ crc32_tab[(crc32_context ^ val) & 255];
  crc32_byte(val >> 8);
  crc32_byte(val >> 16);
  crc32_byte(val >> 24);
  crc32_byte(val >> 32);
  crc32_byte(val >> 40);
  crc32_byte(val >> 48);
  crc32_byte(val >> 56);
}
static int func_51() {
  long __trans_tmp_26;
  for (;;) {
    int *l_247_1_1_4 = &g_112[8];
    signed char *l_634 = &g_253;
    *g_69 = l_247_1_1_4;
    if (__trans_tmp_26)
      for (; g_170; g_170 -= 1) {
        if (g_253)
          g_126 = 0;
      }
    else if (func_51___trans_tmp_28) {
      *g_486 = 0;
      g_590 &= --g_609;
    }
    *l_634 |= 2;
    if ((short)*g_69)
      return 0;
  }
}
void main() {
  for (; main_i < 256; main_i++) {
    main_crc = main_i;
    main_j = 8;
    for (; main_j; main_j--)
      if (main_crc & 1)
        main_crc = main_crc >> 1 ^ 3988292384;
      else
        main_crc >>= 1;
    crc32_tab[main_i] = main_crc;
  }
  long long *l_8 = &g_9, *l_12 = &g_13;
  *l_12 ^= ++*l_8;
  g_44 = 0;
  for (; g_44 != 21; ++g_44)
    func_51();
  crc32_8bytes(0);
  crc32_8bytes(g_9);
  crc32_8bytes(g_13);
  printf("...checksum after hashing %s : %lX\n", "g_13",
         crc32_context ^ 4294967295);
}

Reply via email to