main ()
{
  long int D.16775;
  unsigned int D.16776;
  long unsigned int D.16777;
  long unsigned int D.16778;
  long int * D.16779;
  long int D.16780;
  unsigned int i.0;
  sizetype D.16782;
  sizetype D.16783;
  unsigned char * D.16784;
  long unsigned int D.16785;
  unsigned char * D.16786;
  int D.16787;
  sizetype D.16790;
  sizetype D.16791;
  unsigned char * D.16792;
  sizetype D.16793;
  sizetype D.16794;
  unsigned char * D.16795;
  unsigned char * D.16796;
  unsigned char * D.16797;
  int D.16798;
  sizetype D.16801;
  unsigned char * D.16802;
  unsigned char * D.16803;
  int D.16804;
  sizetype D.16807;
  unsigned char * D.16808;
  unsigned char * D.16809;
  int D.16810;
  int D.16813;
  unsigned char * random_mem;
  unsigned char * reference;
  unsigned char * playground;
  long int * long_random_mem;
  int i;
  int offset;
  int size;
  int src_offset;
  int dest_offset;
  static const char __PRETTY_FUNCTION__[5] = "main";

  random_mem = malloc (2048);
  reference = malloc (2048);
  playground = malloc (2048);
  D.16775 = time (0B);
  D.16776 = (unsigned int) D.16775;
  srandom (D.16776);
  long_random_mem = random_mem;
  i = 0;
  goto <D.16756>;
  <D.16755>:
  D.16777 = (long unsigned int) i;
  D.16778 = D.16777 * 8;
  D.16779 = long_random_mem + D.16778;
  D.16780 = random ();
  *D.16779 = D.16780;
  i = i + 1;
  <D.16756>:
  i.0 = (unsigned int) i;
  if (i.0 <= 255) goto <D.16755>; else goto <D.16757>;
  <D.16757>:
  offset = 0;
  goto <D.16763>;
  <D.16762>:
  size = 0;
  goto <D.16760>;
  <D.16759>:
  memcpy (reference, random_mem, 2048);
  memcpy (playground, random_mem, 2048);
  D.16782 = (sizetype) offset;
  D.16783 = D.16782 + 128;
  D.16784 = reference + D.16783;
  D.16785 = (long unsigned int) size;
  bzero (D.16784, D.16785);
  D.16782 = (sizetype) offset;
  D.16783 = D.16782 + 128;
  D.16786 = playground + D.16783;
  D.16785 = (long unsigned int) size;
  mono_gc_bzero_atomic (D.16786, D.16785);
  D.16787 = memcmp (reference, playground, 2048);
  if (D.16787 != 0) goto <D.16788>; else goto <D.16789>;
  <D.16788>:
  __assert_fail ("!memcmp (reference, playground, 2048)", "test-gc-memfuncs.c", 65, &__PRETTY_FUNCTION__);
  <D.16789>:
  size = size + 1;
  <D.16760>:
  if (size <= 256) goto <D.16759>; else goto <D.16761>;
  <D.16761>:
  offset = offset + 1;
  <D.16763>:
  if (offset <= 64) goto <D.16762>; else goto <D.16764>;
  <D.16764>:
  src_offset = -32;
  goto <D.16772>;
  <D.16771>:
  dest_offset = -32;
  goto <D.16769>;
  <D.16768>:
  size = 0;
  goto <D.16766>;
  <D.16765>:
  memcpy (reference, random_mem, 2048);
  memcpy (playground, random_mem, 2048);
  D.16790 = (sizetype) dest_offset;
  D.16791 = D.16790 + 128;
  D.16792 = reference + D.16791;
  D.16793 = (sizetype) src_offset;
  D.16794 = D.16793 + 128;
  D.16795 = reference + D.16794;
  D.16785 = (long unsigned int) size;
  memmove (D.16792, D.16795, D.16785);
  D.16790 = (sizetype) dest_offset;
  D.16791 = D.16790 + 128;
  D.16796 = playground + D.16791;
  D.16793 = (sizetype) src_offset;
  D.16794 = D.16793 + 128;
  D.16797 = playground + D.16794;
  D.16785 = (long unsigned int) size;
  mono_gc_memmove_atomic (D.16796, D.16797, D.16785);
  D.16798 = memcmp (reference, playground, 2048);
  if (D.16798 != 0) goto <D.16799>; else goto <D.16800>;
  <D.16799>:
  __assert_fail ("!memcmp (reference, playground, 2048)", "test-gc-memfuncs.c", 80, &__PRETTY_FUNCTION__);
  <D.16800>:
  memcpy (reference, random_mem, 2048);
  memcpy (playground, random_mem, 2048);
  D.16790 = (sizetype) dest_offset;
  D.16791 = D.16790 + 128;
  D.16792 = reference + D.16791;
  D.16793 = (sizetype) src_offset;
  D.16801 = D.16793 + 1024;
  D.16802 = reference + D.16801;
  D.16785 = (long unsigned int) size;
  memmove (D.16792, D.16802, D.16785);
  D.16790 = (sizetype) dest_offset;
  D.16791 = D.16790 + 128;
  D.16796 = playground + D.16791;
  D.16793 = (sizetype) src_offset;
  D.16801 = D.16793 + 1024;
  D.16803 = playground + D.16801;
  D.16785 = (long unsigned int) size;
  mono_gc_memmove_atomic (D.16796, D.16803, D.16785);
  D.16804 = memcmp (reference, playground, 2048);
  if (D.16804 != 0) goto <D.16805>; else goto <D.16806>;
  <D.16805>:
  __assert_fail ("!memcmp (reference, playground, 2048)", "test-gc-memfuncs.c", 89, &__PRETTY_FUNCTION__);
  <D.16806>:
  memcpy (reference, random_mem, 2048);
  memcpy (playground, random_mem, 2048);
  D.16790 = (sizetype) dest_offset;
  D.16807 = D.16790 + 1024;
  D.16808 = reference + D.16807;
  D.16793 = (sizetype) src_offset;
  D.16794 = D.16793 + 128;
  D.16795 = reference + D.16794;
  D.16785 = (long unsigned int) size;
  memmove (D.16808, D.16795, D.16785);
  D.16790 = (sizetype) dest_offset;
  D.16807 = D.16790 + 1024;
  D.16809 = playground + D.16807;
  D.16793 = (sizetype) src_offset;
  D.16794 = D.16793 + 128;
  D.16797 = playground + D.16794;
  D.16785 = (long unsigned int) size;
  mono_gc_memmove_atomic (D.16809, D.16797, D.16785);
  D.16810 = memcmp (reference, playground, 2048);
  if (D.16810 != 0) goto <D.16811>; else goto <D.16812>;
  <D.16811>:
  __assert_fail ("!memcmp (reference, playground, 2048)", "test-gc-memfuncs.c", 98, &__PRETTY_FUNCTION__);
  <D.16812>:
  size = size + 1;
  <D.16766>:
  if (size <= 256) goto <D.16765>; else goto <D.16767>;
  <D.16767>:
  dest_offset = dest_offset + 1;
  <D.16769>:
  if (dest_offset <= 32) goto <D.16768>; else goto <D.16770>;
  <D.16770>:
  src_offset = src_offset + 1;
  <D.16772>:
  if (src_offset <= 32) goto <D.16771>; else goto <D.16773>;
  <D.16773>:
  D.16813 = 0;
  return D.16813;
}


bzero (void * __dest, size_t __len)
{
  long unsigned int D.16815;

  D.16815 = __builtin_object_size (__dest, 0);
  __builtin___memset_chk (__dest, 0, __len, D.16815);
}


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

  D.16817 = __builtin_object_size (__dest, 0);
  D.16816 = __builtin___memcpy_chk (__dest, __src, __len, D.16817);
  return D.16816;
}


memmove (void * __dest, const void * __src, size_t __len)
{
  void * D.16819;
  long unsigned int D.16820;

  D.16820 = __builtin_object_size (__dest, 0);
  D.16819 = __builtin___memmove_chk (__dest, __src, __len, D.16820);
  return D.16819;
}


