main ()
{
  int i.0;
  long int D.18114;
  long int D.18115;
  sizetype D.18116;
  sizetype D.18117;
  bitsizetype D.18118;
  bitsizetype D.18119;
  sizetype D.18120;
  int[0:D.18116] * a.1;
  int D.18122;
  int D.18123;
  int[0:D.18116] * D.18124;
  long unsigned int D.18125;
  void * saved_stack.2;
  long int D.18127;
  unsigned int D.18128;
  long int D.18129;
  int D.18130;
  long int D.18131;
  int D.18132;
  int D.18133;
  int i;

  i = 0;
  goto <D.18102>;
  <D.18101>:
  {
    int a[0:D.18116] [value-expr: *a.1];
    int j;

    saved_stack.2 = __builtin_stack_save ();
    try
      {
        i.0 = i;
        D.18114 = (long int) i.0;
        D.18115 = D.18114 + -1;
        D.18116 = (sizetype) D.18115;
        D.18117 = (sizetype) i.0;
        D.18118 = (bitsizetype) D.18117;
        D.18119 = D.18118 * 32;
        D.18117 = (sizetype) i.0;
        D.18120 = D.18117 * 4;
        D.18117 = (sizetype) i.0;
        D.18118 = (bitsizetype) D.18117;
        D.18119 = D.18118 * 32;
        D.18117 = (sizetype) i.0;
        D.18120 = D.18117 * 4;
        a.1 = __builtin_alloca_with_align (D.18120, 32);
        j = 0;
        goto <D.18099>;
        <D.18098>:
        D.18122 = i - j;
        D.18123 = D.18122 + -1;
        *a.1[j] = D.18123;
        j = j + 1;
        <D.18099>:
        if (j < i) goto <D.18098>; else goto <D.18100>;
        <D.18100>:
        D.18124 = a.1;
        D.18125 = (long unsigned int) i;
        compare_sorts (D.18124, D.18125, 4, compare_ints);
      }
    finally
      {
        __builtin_stack_restore (saved_stack.2);
      }
  }
  i = i + 1;
  <D.18102>:
  if (i <= 3999) goto <D.18101>; else goto <D.18103>;
  <D.18103>:
  D.18127 = time (0B);
  D.18128 = (unsigned int) D.18127;
  srandom (D.18128);
  i = 0;
  goto <D.18110>;
  <D.18109>:
  {
    struct teststruct_t a[200];
    int j;

    try
      {
        j = 0;
        goto <D.18107>;
        <D.18106>:
        D.18129 = random ();
        D.18130 = (int) D.18129;
        a[j].key = D.18130;
        D.18131 = random ();
        D.18132 = (int) D.18131;
        a[j].val = D.18132;
        j = j + 1;
        <D.18107>:
        if (j <= 199) goto <D.18106>; else goto <D.18108>;
        <D.18108>:
        compare_sorts (&a, 200, 8, compare_teststructs);
      }
    finally
      {
        a = {CLOBBER};
      }
  }
  i = i + 1;
  <D.18110>:
  if (i <= 1999) goto <D.18109>; else goto <D.18111>;
  <D.18111>:
  D.18133 = 0;
  return D.18133;
}


compare_teststructs (const void * pa, const void * pb)
{
  int D.18137;
  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.18135>; else goto <D.18136>;
  <D.18135>:
  D.18137 = -1;
  return D.18137;
  <D.18136>:
  if (a == b) goto <D.18138>; else goto <D.18139>;
  <D.18138>:
  D.18137 = 0;
  return D.18137;
  <D.18139>:
  D.18137 = 1;
  return D.18137;
}


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

  a = MEM[(const int *)pa];
  b = MEM[(const int *)pb];
  if (a < b) goto <D.18141>; else goto <D.18142>;
  <D.18141>:
  D.18143 = -1;
  return D.18143;
  <D.18142>:
  if (a == b) goto <D.18144>; else goto <D.18145>;
  <D.18144>:
  D.18143 = 0;
  return D.18143;
  <D.18145>:
  D.18143 = 1;
  return D.18143;
}


compare_sorts (void * base, size_t nel, size_t width, int (*<T594>) (const void *, const void *) compar)
{
  int D.18147;
  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.18147 = memcmp (b1, b2, len);
  if (D.18147 != 0) goto <D.18148>; else goto <D.18149>;
  <D.18148>:
  __assert_fail ("!memcmp (b1, b2, len)", "test-sgen-qsort.c", 71, &__PRETTY_FUNCTION__);
  <D.18149>:
  free (b1);
  free (b2);
}


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

  D.18151 = __builtin_object_size (__dest, 0);
  D.18150 = __builtin___memcpy_chk (__dest, __src, __len, D.18151);
  return D.18150;
}


