main ()
{
  int i.0;
  long int D.17728;
  long int D.17729;
  sizetype D.17730;
  sizetype D.17731;
  bitsizetype D.17732;
  bitsizetype D.17733;
  sizetype D.17734;
  int[0:D.17730] * a.1;
  int D.17736;
  int D.17737;
  int[0:D.17730] * a.2;
  long unsigned int D.17739;
  void * saved_stack.3;
  long int D.17741;
  unsigned int D.17742;
  long int D.17743;
  int D.17744;
  long int D.17745;
  int D.17746;
  int D.17747;

  {
    int i;

    i = 0;
    goto <D.17716>;
    <D.17715>:
    {
      int a[0:D.17730] [value-expr: *a.1];
      int j;

      saved_stack.3 = __builtin_stack_save ();
      try
        {
          i.0 = i;
          D.17728 = (long int) i.0;
          D.17729 = D.17728 + -1;
          D.17730 = (sizetype) D.17729;
          D.17731 = (sizetype) i.0;
          D.17732 = (bitsizetype) D.17731;
          D.17733 = D.17732 * 32;
          D.17731 = (sizetype) i.0;
          D.17734 = D.17731 * 4;
          D.17731 = (sizetype) i.0;
          D.17732 = (bitsizetype) D.17731;
          D.17733 = D.17732 * 32;
          D.17731 = (sizetype) i.0;
          D.17734 = D.17731 * 4;
          a.1 = __builtin_alloca_with_align (D.17734, 32);
          j = 0;
          goto <D.17713>;
          <D.17712>:
          D.17736 = i - j;
          D.17737 = D.17736 + -1;
          *a.1[j] = D.17737;
          j = j + 1;
          <D.17713>:
          if (j < i) goto <D.17712>; else goto <D.17714>;
          <D.17714>:
          a.2 = a.1;
          D.17739 = (long unsigned int) i;
          compare_sorts (a.2, D.17739, 4, compare_ints);
        }
      finally
        {
          __builtin_stack_restore (saved_stack.3);
        }
    }
    i = i + 1;
    <D.17716>:
    if (i <= 3999) goto <D.17715>; else goto <D.17717>;
    <D.17717>:
    D.17741 = time (0B);
    D.17742 = (unsigned int) D.17741;
    srandom (D.17742);
    i = 0;
    goto <D.17724>;
    <D.17723>:
    {
      struct teststruct_t a[200];
      int j;

      try
        {
          j = 0;
          goto <D.17721>;
          <D.17720>:
          D.17743 = random ();
          D.17744 = (int) D.17743;
          a[j].key = D.17744;
          D.17745 = random ();
          D.17746 = (int) D.17745;
          a[j].val = D.17746;
          j = j + 1;
          <D.17721>:
          if (j <= 199) goto <D.17720>; else goto <D.17722>;
          <D.17722>:
          compare_sorts (&a, 200, 8, compare_teststructs);
        }
      finally
        {
          a = {CLOBBER};
        }
    }
    i = i + 1;
    <D.17724>:
    if (i <= 1999) goto <D.17723>; else goto <D.17725>;
    <D.17725>:
    D.17747 = 0;
    return D.17747;
  }
  D.17747 = 0;
  return D.17747;
}


compare_teststructs (const void * pa, const void * pb)
{
  int D.17751;
  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.17749>; else goto <D.17750>;
  <D.17749>:
  D.17751 = -1;
  return D.17751;
  <D.17750>:
  if (a == b) goto <D.17752>; else goto <D.17753>;
  <D.17752>:
  D.17751 = 0;
  return D.17751;
  <D.17753>:
  D.17751 = 1;
  return D.17751;
}


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

  a = MEM[(const int *)pa];
  b = MEM[(const int *)pb];
  if (a < b) goto <D.17755>; else goto <D.17756>;
  <D.17755>:
  D.17757 = -1;
  return D.17757;
  <D.17756>:
  if (a == b) goto <D.17758>; else goto <D.17759>;
  <D.17758>:
  D.17757 = 0;
  return D.17757;
  <D.17759>:
  D.17757 = 1;
  return D.17757;
}


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


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.17765;
  long unsigned int D.17766;

  D.17766 = __builtin_object_size (__dest, 0);
  D.17765 = __builtin___memcpy_chk (__dest, __src, __len, D.17766);
  return D.17765;
}


