main ()
{
  int i.0;
  long int D.17584;
  long int D.17585;
  sizetype D.17586;
  sizetype D.17587;
  bitsizetype D.17588;
  bitsizetype D.17589;
  sizetype D.17590;
  int[0:D.17586] * a.1;
  int D.17592;
  int D.17593;
  long unsigned int D.17594;
  int[0:D.17586] * D.17595;
  void * saved_stack.2;
  long int D.17597;
  unsigned int D.17598;
  long int D.17599;
  int D.17600;
  long int D.17601;
  int D.17602;
  int D.17603;
  int i;

  i = 0;
  goto <D.17572>;
  <D.17571>:
  {
    int a[0:D.17586] [value-expr: *a.1];
    int j;

    saved_stack.2 = __builtin_stack_save ();
    try
      {
        i.0 = i;
        D.17584 = (long int) i.0;
        D.17585 = D.17584 + -1;
        D.17586 = (sizetype) D.17585;
        D.17587 = (sizetype) i.0;
        D.17588 = (bitsizetype) D.17587;
        D.17589 = D.17588 * 32;
        D.17587 = (sizetype) i.0;
        D.17590 = D.17587 * 4;
        D.17587 = (sizetype) i.0;
        D.17588 = (bitsizetype) D.17587;
        D.17589 = D.17588 * 32;
        D.17587 = (sizetype) i.0;
        D.17590 = D.17587 * 4;
        a.1 = __builtin_alloca_with_align (D.17590, 32);
        j = 0;
        goto <D.17569>;
        <D.17568>:
        D.17592 = i - j;
        D.17593 = D.17592 + -1;
        *a.1[j] = D.17593;
        j = j + 1;
        <D.17569>:
        if (j < i) goto <D.17568>; else goto <D.17570>;
        <D.17570>:
        D.17594 = (long unsigned int) i;
        D.17595 = a.1;
        compare_sorts (D.17595, D.17594, 4, compare_ints);
      }
    finally
      {
        __builtin_stack_restore (saved_stack.2);
      }
  }
  i = i + 1;
  <D.17572>:
  if (i <= 3999) goto <D.17571>; else goto <D.17573>;
  <D.17573>:
  D.17597 = time (0B);
  D.17598 = (unsigned int) D.17597;
  srandom (D.17598);
  i = 0;
  goto <D.17580>;
  <D.17579>:
  {
    struct teststruct_t a[200];
    int j;

    try
      {
        j = 0;
        goto <D.17577>;
        <D.17576>:
        D.17599 = random ();
        D.17600 = (int) D.17599;
        a[j].key = D.17600;
        D.17601 = random ();
        D.17602 = (int) D.17601;
        a[j].val = D.17602;
        j = j + 1;
        <D.17577>:
        if (j <= 199) goto <D.17576>; else goto <D.17578>;
        <D.17578>:
        compare_sorts (&a, 200, 8, compare_teststructs);
      }
    finally
      {
        a = {CLOBBER};
      }
  }
  i = i + 1;
  <D.17580>:
  if (i <= 1999) goto <D.17579>; else goto <D.17581>;
  <D.17581>:
  D.17603 = 0;
  return D.17603;
}


compare_teststructs (const void * pa, const void * pb)
{
  int D.17607;
  int a;
  int b;

  a = MEM[(const struct teststruct_t *)pa].key;
  b = MEM[(const struct teststruct_t *)pb].key;
  if (a < b) goto <D.17605>; else goto <D.17606>;
  <D.17605>:
  D.17607 = -1;
  return D.17607;
  <D.17606>:
  if (a == b) goto <D.17608>; else goto <D.17609>;
  <D.17608>:
  D.17607 = 0;
  return D.17607;
  <D.17609>:
  D.17607 = 1;
  return D.17607;
}


compare_ints (const void * pa, const void * pb)
{
  int D.17613;
  int a;
  int b;

  a = MEM[(const int *)pa];
  b = MEM[(const int *)pb];
  if (a < b) goto <D.17611>; else goto <D.17612>;
  <D.17611>:
  D.17613 = -1;
  return D.17613;
  <D.17612>:
  if (a == b) goto <D.17614>; else goto <D.17615>;
  <D.17614>:
  D.17613 = 0;
  return D.17613;
  <D.17615>:
  D.17613 = 1;
  return D.17613;
}


compare_sorts (void * base, size_t nel, size_t width, int (*<T593>) (const void *, const void *) compar)
{
  int D.17617;
  size_t len;
  void * b1;
  void * b2;
  static const char __PRETTY_FUNCTION__[14] = "compare_sorts";

  len = nel * width;
  b1 = malloc (len);
  b2 = malloc (len);
  memcpy (b1, base, len);
  memcpy (b2, base, len);
  qsort (b1, nel, width, compar);
  sgen_qsort (b2, nel, width, compar);
  D.17617 = memcmp (b1, b2, len);
  if (D.17617 != 0) goto <D.17618>; else goto <D.17619>;
  <D.17618>:
  __assert_fail ("!memcmp (b1, b2, len)", "test-sgen-qsort.c", 71, &__PRETTY_FUNCTION__);
  <D.17619>:
  free (b1);
  free (b2);
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.17620;
  long unsigned int D.17621;

  D.17621 = __builtin_object_size (__dest, 0);
  D.17620 = __builtin___memcpy_chk (__dest, __src, __len, D.17621);
  return D.17620;
}


