monoeg_g_ptr_array_new ()
{
  struct GPtrArray * D.5512;

  D.5512 = monoeg_g_ptr_array_sized_new (0);
  return D.5512;
}


monoeg_g_ptr_array_sized_new (guint reserved_size)
{
  struct GPtrArray * D.5516;
  struct GPtrArrayPriv * array;

  array = monoeg_malloc0 (16);
  array->pdata = 0B;
  array->len = 0;
  array->size = 0;
  if (reserved_size != 0) goto <D.5514>; else goto <D.5515>;
  <D.5514>:
  monoeg_ptr_array_grow (array, reserved_size);
  <D.5515>:
  D.5516 = array;
  return D.5516;
}


monoeg_ptr_array_grow (struct GPtrArrayPriv * array, guint length)
{
  unsigned int D.5518;
  unsigned int D.5521;
  unsigned int D.5524;
  unsigned int D.5525;
  void * * D.5526;
  long unsigned int D.5527;
  long unsigned int D.5528;
  void * D.5529;
  guint new_length;

  D.5518 = array->len;
  new_length = D.5518 + length;
  if (array == 0B) goto <D.5519>; else goto <D.5520>;
  <D.5519>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 45, "array != NULL");
  return;
  <D.5520>:
  D.5521 = array->size;
  if (D.5521 >= new_length) goto <D.5522>; else goto <D.5523>;
  <D.5522>:
  return;
  <D.5523>:
  array->size = 1;
  goto <D.5445>;
  <D.5444>:
  D.5521 = array->size;
  D.5524 = D.5521 << 1;
  array->size = D.5524;
  <D.5445>:
  D.5521 = array->size;
  if (D.5521 < new_length) goto <D.5444>; else goto <D.5446>;
  <D.5446>:
  D.5521 = array->size;
  D.5525 = MAX_EXPR <D.5521, 16>;
  array->size = D.5525;
  D.5526 = array->pdata;
  D.5521 = array->size;
  D.5527 = (long unsigned int) D.5521;
  D.5528 = D.5527 * 8;
  D.5529 = monoeg_realloc (D.5526, D.5528);
  array->pdata = D.5529;
}


monoeg_g_ptr_array_free (struct GPtrArray * array, gboolean free_seg)
{
  void * * D.5533;
  void * * D.5536;
  void * * data;

  data = 0B;
  if (array == 0B) goto <D.5531>; else goto <D.5532>;
  <D.5531>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 88, "array != NULL");
  D.5533 = 0B;
  return D.5533;
  <D.5532>:
  if (free_seg != 0) goto <D.5534>; else goto <D.5535>;
  <D.5534>:
  D.5536 = array->pdata;
  monoeg_g_free (D.5536);
  goto <D.5537>;
  <D.5535>:
  data = array->pdata;
  <D.5537>:
  monoeg_g_free (array);
  D.5533 = data;
  return D.5533;
}


monoeg_g_ptr_array_set_size (struct GPtrArray * array, gint length)
{
  long unsigned int D.5541;
  unsigned int D.5542;
  long unsigned int D.5543;
  unsigned int length.0;
  void * * D.5547;
  long unsigned int D.5548;
  void * D.5549;
  unsigned int D.5550;
  long unsigned int D.5551;
  long unsigned int D.5552;

  if (array == 0B) goto <D.5539>; else goto <D.5540>;
  <D.5539>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 104, "array != NULL");
  return;
  <D.5540>:
  D.5541 = (long unsigned int) length;
  D.5542 = array->len;
  D.5543 = (long unsigned int) D.5542;
  if (D.5541 > D.5543) goto <D.5544>; else goto <D.5545>;
  <D.5544>:
  length.0 = (unsigned int) length;
  monoeg_ptr_array_grow (array, length.0);
  D.5547 = array->pdata;
  D.5542 = array->len;
  D.5543 = (long unsigned int) D.5542;
  D.5548 = D.5543 * 8;
  D.5549 = D.5547 + D.5548;
  length.0 = (unsigned int) length;
  D.5542 = array->len;
  D.5550 = length.0 - D.5542;
  D.5551 = (long unsigned int) D.5550;
  D.5552 = D.5551 * 8;
  memset (D.5549, 0, D.5552);
  <D.5545>:
  length.0 = (unsigned int) length;
  array->len = length.0;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.5556;
  int D.5561;
  void * D.5563;
  long unsigned int D.5564;

  D.5556 = __builtin_constant_p (__len);
  if (D.5556 != 0) goto <D.5557>; else goto <D.5558>;
  <D.5557>:
  if (__len == 0) goto <D.5559>; else goto <D.5560>;
  <D.5559>:
  D.5561 = __builtin_constant_p (__ch);
  if (D.5561 == 0) goto <D.5554>; else goto <D.5562>;
  <D.5562>:
  if (__ch != 0) goto <D.5554>; else goto <D.5555>;
  <D.5554>:
  __warn_memset_zero_len ();
  D.5563 = __dest;
  return D.5563;
  <D.5555>:
  <D.5560>:
  <D.5558>:
  D.5564 = __builtin_object_size (__dest, 0);
  D.5563 = __builtin___memset_chk (__dest, __ch, __len, D.5564);
  return D.5563;
}


monoeg_g_ptr_array_add (struct GPtrArray * array, void * data)
{
  void * * D.5568;
  unsigned int D.5569;
  unsigned int D.5570;
  unsigned int D.5571;
  long unsigned int D.5572;
  long unsigned int D.5573;
  void * * D.5574;

  if (array == 0B) goto <D.5566>; else goto <D.5567>;
  <D.5566>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 118, "array != NULL");
  return;
  <D.5567>:
  monoeg_ptr_array_grow (array, 1);
  D.5568 = array->pdata;
  D.5569 = array->len;
  D.5570 = D.5569;
  D.5571 = D.5570 + 1;
  array->len = D.5571;
  D.5572 = (long unsigned int) D.5570;
  D.5573 = D.5572 * 8;
  D.5574 = D.5568 + D.5573;
  *D.5574 = data;
}


monoeg_g_ptr_array_remove_index (struct GPtrArray * array, guint index)
{
  void * D.5578;
  void * * D.5581;
  long unsigned int D.5582;
  long unsigned int D.5583;
  void * * D.5584;
  unsigned int D.5585;
  unsigned int D.5586;
  void * D.5589;
  sizetype D.5590;
  sizetype D.5591;
  sizetype D.5592;
  void * * D.5593;
  unsigned int D.5594;
  unsigned int D.5595;
  long unsigned int D.5596;
  long unsigned int D.5597;
  long unsigned int D.5598;
  long unsigned int D.5599;
  void * * D.5600;
  void * removed_node;

  if (array == 0B) goto <D.5576>; else goto <D.5577>;
  <D.5576>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 128, "array != NULL");
  D.5578 = 0B;
  return D.5578;
  <D.5577>:
  if (0 != 0) goto <D.5579>; else goto <D.5580>;
  <D.5579>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 129, "index >= 0 || index < array->len");
  D.5578 = 0B;
  return D.5578;
  <D.5580>:
  D.5581 = array->pdata;
  D.5582 = (long unsigned int) index;
  D.5583 = D.5582 * 8;
  D.5584 = D.5581 + D.5583;
  removed_node = *D.5584;
  D.5585 = array->len;
  D.5586 = D.5585 + 4294967295;
  if (D.5586 != index) goto <D.5587>; else goto <D.5588>;
  <D.5587>:
  D.5581 = array->pdata;
  D.5582 = (long unsigned int) index;
  D.5583 = D.5582 * 8;
  D.5589 = D.5581 + D.5583;
  D.5581 = array->pdata;
  D.5590 = (sizetype) index;
  D.5591 = D.5590 + 1;
  D.5592 = D.5591 * 8;
  D.5593 = D.5581 + D.5592;
  D.5585 = array->len;
  D.5594 = D.5585 - index;
  D.5595 = D.5594 + 4294967295;
  D.5596 = (long unsigned int) D.5595;
  D.5597 = D.5596 * 8;
  memmove (D.5589, D.5593, D.5597);
  <D.5588>:
  D.5585 = array->len;
  D.5586 = D.5585 + 4294967295;
  array->len = D.5586;
  D.5581 = array->pdata;
  D.5585 = array->len;
  D.5598 = (long unsigned int) D.5585;
  D.5599 = D.5598 * 8;
  D.5600 = D.5581 + D.5599;
  *D.5600 = 0B;
  D.5578 = removed_node;
  return D.5578;
}


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

  D.5603 = __builtin_object_size (__dest, 0);
  D.5602 = __builtin___memmove_chk (__dest, __src, __len, D.5603);
  return D.5602;
}


monoeg_g_ptr_array_remove_index_fast (struct GPtrArray * array, guint index)
{
  void * D.5607;
  void * * D.5610;
  long unsigned int D.5611;
  long unsigned int D.5612;
  void * * D.5613;
  unsigned int D.5614;
  unsigned int D.5615;
  void * D.5618;
  long unsigned int D.5619;
  long unsigned int D.5620;
  sizetype D.5621;
  void * * D.5622;
  void * * D.5623;
  void * removed_node;

  if (array == 0B) goto <D.5605>; else goto <D.5606>;
  <D.5605>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 149, "array != NULL");
  D.5607 = 0B;
  return D.5607;
  <D.5606>:
  if (0 != 0) goto <D.5608>; else goto <D.5609>;
  <D.5608>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 150, "index >= 0 || index < array->len");
  D.5607 = 0B;
  return D.5607;
  <D.5609>:
  D.5610 = array->pdata;
  D.5611 = (long unsigned int) index;
  D.5612 = D.5611 * 8;
  D.5613 = D.5610 + D.5612;
  removed_node = *D.5613;
  D.5614 = array->len;
  D.5615 = D.5614 + 4294967295;
  if (D.5615 != index) goto <D.5616>; else goto <D.5617>;
  <D.5616>:
  D.5610 = array->pdata;
  D.5611 = (long unsigned int) index;
  D.5612 = D.5611 * 8;
  D.5618 = D.5610 + D.5612;
  D.5610 = array->pdata;
  D.5614 = array->len;
  D.5619 = (long unsigned int) D.5614;
  D.5620 = D.5619 * 8;
  D.5621 = D.5620 + 18446744073709551608;
  D.5622 = D.5610 + D.5621;
  memmove (D.5618, D.5622, 8);
  <D.5617>:
  D.5614 = array->len;
  D.5615 = D.5614 + 4294967295;
  array->len = D.5615;
  D.5610 = array->pdata;
  D.5614 = array->len;
  D.5619 = (long unsigned int) D.5614;
  D.5620 = D.5619 * 8;
  D.5623 = D.5610 + D.5620;
  *D.5623 = 0B;
  D.5607 = removed_node;
  return D.5607;
}


monoeg_g_ptr_array_remove (struct GPtrArray * array, void * data)
{
  gboolean D.5627;
  void * * D.5628;
  long unsigned int D.5629;
  long unsigned int D.5630;
  void * * D.5631;
  void * D.5632;
  unsigned int D.5635;
  guint i;

  if (array == 0B) goto <D.5625>; else goto <D.5626>;
  <D.5625>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 170, "array != NULL");
  D.5627 = 0;
  return D.5627;
  <D.5626>:
  i = 0;
  goto <D.5483>;
  <D.5482>:
  D.5628 = array->pdata;
  D.5629 = (long unsigned int) i;
  D.5630 = D.5629 * 8;
  D.5631 = D.5628 + D.5630;
  D.5632 = *D.5631;
  if (D.5632 == data) goto <D.5633>; else goto <D.5634>;
  <D.5633>:
  monoeg_g_ptr_array_remove_index (array, i);
  D.5627 = 1;
  return D.5627;
  <D.5634>:
  i = i + 1;
  <D.5483>:
  D.5635 = array->len;
  if (D.5635 > i) goto <D.5482>; else goto <D.5484>;
  <D.5484>:
  D.5627 = 0;
  return D.5627;
}


monoeg_g_ptr_array_remove_fast (struct GPtrArray * array, void * data)
{
  gboolean D.5639;
  void * * D.5640;
  long unsigned int D.5641;
  long unsigned int D.5642;
  void * * D.5643;
  void * D.5644;
  unsigned int D.5647;
  unsigned int D.5648;
  long unsigned int D.5651;
  long unsigned int D.5652;
  void * * D.5653;
  void * D.5654;
  guint i;

  if (array == 0B) goto <D.5637>; else goto <D.5638>;
  <D.5637>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 187, "array != NULL");
  D.5639 = 0;
  return D.5639;
  <D.5638>:
  i = 0;
  goto <D.5491>;
  <D.5490>:
  D.5640 = array->pdata;
  D.5641 = (long unsigned int) i;
  D.5642 = D.5641 * 8;
  D.5643 = D.5640 + D.5642;
  D.5644 = *D.5643;
  if (D.5644 == data) goto <D.5645>; else goto <D.5646>;
  <D.5645>:
  D.5647 = array->len;
  D.5648 = D.5647 + 4294967295;
  array->len = D.5648;
  D.5647 = array->len;
  if (D.5647 != 0) goto <D.5649>; else goto <D.5650>;
  <D.5649>:
  D.5640 = array->pdata;
  D.5641 = (long unsigned int) i;
  D.5642 = D.5641 * 8;
  D.5643 = D.5640 + D.5642;
  D.5640 = array->pdata;
  D.5647 = array->len;
  D.5651 = (long unsigned int) D.5647;
  D.5652 = D.5651 * 8;
  D.5653 = D.5640 + D.5652;
  D.5654 = *D.5653;
  *D.5643 = D.5654;
  goto <D.5655>;
  <D.5650>:
  D.5640 = array->pdata;
  D.5641 = (long unsigned int) i;
  D.5642 = D.5641 * 8;
  D.5643 = D.5640 + D.5642;
  *D.5643 = 0B;
  <D.5655>:
  D.5639 = 1;
  return D.5639;
  <D.5646>:
  i = i + 1;
  <D.5491>:
  D.5647 = array->len;
  if (D.5647 > i) goto <D.5490>; else goto <D.5492>;
  <D.5492>:
  D.5639 = 0;
  return D.5639;
}


monoeg_g_ptr_array_foreach (struct GPtrArray * array, void (*GFunc) (void *, void *) func, void * user_data)
{
  void * * D.5657;
  long unsigned int D.5658;
  long unsigned int D.5659;
  void * * D.5660;
  void * D.5661;
  unsigned int D.5662;
  guint i;

  i = 0;
  goto <D.5500>;
  <D.5499>:
  D.5657 = array->pdata;
  D.5658 = (long unsigned int) i;
  D.5659 = D.5658 * 8;
  D.5660 = D.5657 + D.5659;
  D.5661 = *D.5660;
  func (D.5661, user_data);
  i = i + 1;
  <D.5500>:
  D.5662 = array->len;
  if (D.5662 > i) goto <D.5499>; else goto <D.5501>;
  <D.5501>:
}


monoeg_g_ptr_array_sort (struct GPtrArray * array, gint (*GCompareFunc) (const void *, const void *) compare)
{
  void * * D.5665;
  unsigned int D.5666;
  long unsigned int D.5667;

  if (array == 0B) goto <D.5663>; else goto <D.5664>;
  <D.5663>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 216, "array != NULL");
  return;
  <D.5664>:
  D.5665 = array->pdata;
  D.5666 = array->len;
  D.5667 = (long unsigned int) D.5666;
  qsort (D.5665, D.5667, 8, compare);
}


monoeg_g_ptr_array_sort_with_data (struct GPtrArray * array, gint (*GCompareDataFunc) (const void *, const void *, void *) compare, void * user_data)
{
  void * * D.5671;
  unsigned int D.5672;
  long unsigned int D.5673;

  if (array == 0B) goto <D.5669>; else goto <D.5670>;
  <D.5669>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "gptrarray.c", 223, "array != NULL");
  return;
  <D.5670>:
  D.5671 = array->pdata;
  D.5672 = array->len;
  D.5673 = (long unsigned int) D.5672;
  monoeg_g_qsort_with_data (D.5671, D.5673, 8, compare, user_data);
}


