monoeg_g_array_new (gboolean zero_terminated, gboolean clear_, guint element_size)
{
  struct GArray * D.5494;
  struct GArrayPriv * rv;

  rv = monoeg_malloc0 (32);
  rv->zero_terminated = zero_terminated;
  rv->clear_ = clear_;
  rv->element_size = element_size;
  ensure_capacity (rv, 16);
  D.5494 = rv;
  return D.5494;
}


ensure_capacity (struct GArrayPriv * priv, guint capacity)
{
  unsigned int D.5496;
  unsigned int D.5499;
  gchar * D.5500;
  unsigned int D.5501;
  unsigned int D.5502;
  long unsigned int D.5503;
  void * D.5504;
  int D.5505;
  unsigned int D.5508;
  sizetype D.5509;
  void * D.5510;
  unsigned int D.5511;
  unsigned int D.5512;
  long unsigned int D.5513;
  guint new_capacity;

  D.5496 = priv->capacity;
  if (D.5496 >= capacity) goto <D.5497>; else goto <D.5498>;
  <D.5497>:
  return;
  <D.5498>:
  D.5499 = capacity + 63;
  new_capacity = D.5499 & 4294967232;
  D.5500 = priv->array.data;
  D.5501 = priv->element_size;
  D.5502 = D.5501 * new_capacity;
  D.5503 = (long unsigned int) D.5502;
  D.5504 = monoeg_realloc (D.5500, D.5503);
  priv->array.data = D.5504;
  D.5505 = priv->clear_;
  if (D.5505 != 0) goto <D.5506>; else goto <D.5507>;
  <D.5506>:
  D.5500 = priv->array.data;
  D.5496 = priv->capacity;
  D.5501 = priv->element_size;
  D.5508 = D.5496 * D.5501;
  D.5509 = (sizetype) D.5508;
  D.5510 = D.5500 + D.5509;
  D.5496 = priv->capacity;
  D.5511 = new_capacity - D.5496;
  D.5501 = priv->element_size;
  D.5512 = D.5511 * D.5501;
  D.5513 = (long unsigned int) D.5512;
  memset (D.5510, 0, D.5513);
  <D.5507>:
  priv->capacity = new_capacity;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.5517;
  int D.5522;
  void * D.5524;
  long unsigned int D.5525;

  D.5517 = __builtin_constant_p (__len);
  if (D.5517 != 0) goto <D.5518>; else goto <D.5519>;
  <D.5518>:
  if (__len == 0) goto <D.5520>; else goto <D.5521>;
  <D.5520>:
  D.5522 = __builtin_constant_p (__ch);
  if (D.5522 == 0) goto <D.5515>; else goto <D.5523>;
  <D.5523>:
  if (__ch != 0) goto <D.5515>; else goto <D.5516>;
  <D.5515>:
  __warn_memset_zero_len ();
  D.5524 = __dest;
  return D.5524;
  <D.5516>:
  <D.5521>:
  <D.5519>:
  D.5525 = __builtin_object_size (__dest, 0);
  D.5524 = __builtin___memset_chk (__dest, __ch, __len, D.5525);
  return D.5524;
}


monoeg_g_array_sized_new (gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size)
{
  struct GArray * D.5527;
  struct GArrayPriv * rv;

  rv = monoeg_malloc0 (32);
  rv->zero_terminated = zero_terminated;
  rv->clear_ = clear_;
  rv->element_size = element_size;
  ensure_capacity (rv, reserved_size);
  D.5527 = rv;
  return D.5527;
}


monoeg_g_array_free (struct GArray * array, gboolean free_segment)
{
  gchar * D.5531;
  gchar * D.5534;
  gchar * rv;

  rv = 0B;
  if (array == 0B) goto <D.5529>; else goto <D.5530>;
  <D.5529>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 103, "array != NULL");
  D.5531 = 0B;
  return D.5531;
  <D.5530>:
  if (free_segment != 0) goto <D.5532>; else goto <D.5533>;
  <D.5532>:
  D.5534 = array->data;
  monoeg_g_free (D.5534);
  goto <D.5535>;
  <D.5533>:
  rv = array->data;
  <D.5535>:
  monoeg_g_free (array);
  D.5531 = rv;
  return D.5531;
}


monoeg_g_array_append_vals (struct GArray * array, const void * data, guint len)
{
  struct GArray * D.5539;
  int D.5540;
  unsigned int D.5541;
  unsigned int D.5542;
  guint iftmp.0;
  int D.5544;
  unsigned int D.5548;
  gchar * D.5549;
  unsigned int D.5550;
  unsigned int D.5551;
  sizetype D.5552;
  void * D.5553;
  unsigned int D.5554;
  long unsigned int D.5555;
  int D.5556;
  long unsigned int D.5559;
  struct GArrayPriv * priv;

  priv = array;
  if (array == 0B) goto <D.5537>; else goto <D.5538>;
  <D.5537>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 122, "array != NULL");
  D.5539 = 0B;
  return D.5539;
  <D.5538>:
  D.5540 = priv->array.len;
  D.5541 = (unsigned int) D.5540;
  D.5542 = D.5541 + len;
  D.5544 = priv->zero_terminated;
  if (D.5544 != 0) goto <D.5545>; else goto <D.5546>;
  <D.5545>:
  iftmp.0 = 1;
  goto <D.5547>;
  <D.5546>:
  iftmp.0 = 0;
  <D.5547>:
  D.5548 = D.5542 + iftmp.0;
  ensure_capacity (priv, D.5548);
  D.5549 = priv->array.data;
  D.5540 = priv->array.len;
  D.5541 = (unsigned int) D.5540;
  D.5550 = priv->element_size;
  D.5551 = D.5541 * D.5550;
  D.5552 = (sizetype) D.5551;
  D.5553 = D.5549 + D.5552;
  D.5550 = priv->element_size;
  D.5554 = D.5550 * len;
  D.5555 = (long unsigned int) D.5554;
  memmove (D.5553, data, D.5555);
  D.5540 = priv->array.len;
  D.5541 = (unsigned int) D.5540;
  D.5542 = D.5541 + len;
  D.5556 = (int) D.5542;
  priv->array.len = D.5556;
  D.5544 = priv->zero_terminated;
  if (D.5544 != 0) goto <D.5557>; else goto <D.5558>;
  <D.5557>:
  D.5549 = priv->array.data;
  D.5540 = priv->array.len;
  D.5541 = (unsigned int) D.5540;
  D.5550 = priv->element_size;
  D.5551 = D.5541 * D.5550;
  D.5552 = (sizetype) D.5551;
  D.5553 = D.5549 + D.5552;
  D.5550 = priv->element_size;
  D.5559 = (long unsigned int) D.5550;
  memset (D.5553, 0, D.5559);
  <D.5558>:
  D.5539 = array;
  return D.5539;
}


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

  D.5562 = __builtin_object_size (__dest, 0);
  D.5561 = __builtin___memmove_chk (__dest, __src, __len, D.5562);
  return D.5561;
}


monoeg_g_array_insert_vals (struct GArray * array, guint index_, const void * data, guint len)
{
  int D.5564;
  _Bool D.5565;
  struct GArray * D.5568;
  int D.5569;
  unsigned int D.5570;
  unsigned int D.5571;
  unsigned int D.5572;
  gchar * D.5573;
  unsigned int D.5574;
  unsigned int D.5575;
  unsigned int D.5576;
  sizetype D.5577;
  void * D.5578;
  unsigned int D.5579;
  sizetype D.5580;
  const void * D.5581;
  unsigned int D.5582;
  unsigned int D.5583;
  long unsigned int D.5584;
  void * D.5585;
  unsigned int D.5586;
  long unsigned int D.5587;
  int D.5588;
  int D.5591;
  unsigned int D.5592;
  unsigned int D.5593;
  sizetype D.5594;
  void * D.5595;
  long unsigned int D.5596;
  struct GArrayPriv * priv;
  guint extra;

  priv = array;
  D.5564 = priv->zero_terminated;
  D.5565 = D.5564 != 0;
  extra = (guint) D.5565;
  if (array == 0B) goto <D.5566>; else goto <D.5567>;
  <D.5566>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 150, "array != NULL");
  D.5568 = 0B;
  return D.5568;
  <D.5567>:
  D.5569 = array->len;
  D.5570 = (unsigned int) D.5569;
  D.5571 = D.5570 + len;
  D.5572 = D.5571 + extra;
  ensure_capacity (priv, D.5572);
  D.5573 = priv->array.data;
  D.5574 = index_ + len;
  D.5575 = priv->element_size;
  D.5576 = D.5574 * D.5575;
  D.5577 = (sizetype) D.5576;
  D.5578 = D.5573 + D.5577;
  D.5573 = priv->array.data;
  D.5575 = priv->element_size;
  D.5579 = D.5575 * index_;
  D.5580 = (sizetype) D.5579;
  D.5581 = D.5573 + D.5580;
  D.5569 = array->len;
  D.5570 = (unsigned int) D.5569;
  D.5582 = D.5570 - index_;
  D.5575 = priv->element_size;
  D.5583 = D.5582 * D.5575;
  D.5584 = (long unsigned int) D.5583;
  memmove (D.5578, D.5581, D.5584);
  D.5573 = priv->array.data;
  D.5575 = priv->element_size;
  D.5579 = D.5575 * index_;
  D.5580 = (sizetype) D.5579;
  D.5585 = D.5573 + D.5580;
  D.5575 = priv->element_size;
  D.5586 = D.5575 * len;
  D.5587 = (long unsigned int) D.5586;
  memmove (D.5585, data, D.5587);
  D.5569 = array->len;
  D.5570 = (unsigned int) D.5569;
  D.5571 = D.5570 + len;
  D.5588 = (int) D.5571;
  array->len = D.5588;
  D.5564 = priv->zero_terminated;
  if (D.5564 != 0) goto <D.5589>; else goto <D.5590>;
  <D.5589>:
  D.5573 = priv->array.data;
  D.5591 = priv->array.len;
  D.5592 = (unsigned int) D.5591;
  D.5575 = priv->element_size;
  D.5593 = D.5592 * D.5575;
  D.5594 = (sizetype) D.5593;
  D.5595 = D.5573 + D.5594;
  D.5575 = priv->element_size;
  D.5596 = (long unsigned int) D.5575;
  memset (D.5595, 0, D.5596);
  <D.5590>:
  D.5568 = array;
  return D.5568;
}


monoeg_g_array_remove_index (struct GArray * array, guint index_)
{
  struct GArray * D.5600;
  gchar * D.5601;
  unsigned int D.5602;
  unsigned int D.5603;
  sizetype D.5604;
  void * D.5605;
  unsigned int D.5606;
  unsigned int D.5607;
  sizetype D.5608;
  const void * D.5609;
  int D.5610;
  unsigned int D.5611;
  unsigned int D.5612;
  unsigned int D.5613;
  long unsigned int D.5614;
  int D.5615;
  int D.5616;
  int D.5619;
  unsigned int D.5620;
  unsigned int D.5621;
  sizetype D.5622;
  void * D.5623;
  long unsigned int D.5624;
  struct GArrayPriv * priv;

  priv = array;
  if (array == 0B) goto <D.5598>; else goto <D.5599>;
  <D.5598>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 181, "array != NULL");
  D.5600 = 0B;
  return D.5600;
  <D.5599>:
  D.5601 = priv->array.data;
  D.5602 = priv->element_size;
  D.5603 = D.5602 * index_;
  D.5604 = (sizetype) D.5603;
  D.5605 = D.5601 + D.5604;
  D.5601 = priv->array.data;
  D.5606 = index_ + 1;
  D.5602 = priv->element_size;
  D.5607 = D.5606 * D.5602;
  D.5608 = (sizetype) D.5607;
  D.5609 = D.5601 + D.5608;
  D.5610 = array->len;
  D.5611 = (unsigned int) D.5610;
  D.5612 = D.5611 - index_;
  D.5602 = priv->element_size;
  D.5613 = D.5612 * D.5602;
  D.5614 = (long unsigned int) D.5613;
  memmove (D.5605, D.5609, D.5614);
  D.5610 = array->len;
  D.5615 = D.5610 + -1;
  array->len = D.5615;
  D.5616 = priv->zero_terminated;
  if (D.5616 != 0) goto <D.5617>; else goto <D.5618>;
  <D.5617>:
  D.5601 = priv->array.data;
  D.5619 = priv->array.len;
  D.5620 = (unsigned int) D.5619;
  D.5602 = priv->element_size;
  D.5621 = D.5620 * D.5602;
  D.5622 = (sizetype) D.5621;
  D.5623 = D.5601 + D.5622;
  D.5602 = priv->element_size;
  D.5624 = (long unsigned int) D.5602;
  memset (D.5623, 0, D.5624);
  <D.5618>:
  D.5600 = array;
  return D.5600;
}


monoeg_g_array_remove_index_fast (struct GArray * array, guint index_)
{
  struct GArray * D.5628;
  gchar * D.5629;
  unsigned int D.5630;
  unsigned int D.5631;
  sizetype D.5632;
  void * D.5633;
  int D.5634;
  int D.5635;
  unsigned int D.5636;
  unsigned int D.5637;
  sizetype D.5638;
  const void * D.5639;
  long unsigned int D.5640;
  int D.5641;
  int D.5642;
  int D.5645;
  unsigned int D.5646;
  unsigned int D.5647;
  sizetype D.5648;
  void * D.5649;
  struct GArrayPriv * priv;

  priv = array;
  if (array == 0B) goto <D.5626>; else goto <D.5627>;
  <D.5626>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 204, "array != NULL");
  D.5628 = 0B;
  return D.5628;
  <D.5627>:
  D.5629 = priv->array.data;
  D.5630 = priv->element_size;
  D.5631 = D.5630 * index_;
  D.5632 = (sizetype) D.5631;
  D.5633 = D.5629 + D.5632;
  D.5629 = priv->array.data;
  D.5634 = array->len;
  D.5635 = D.5634 + -1;
  D.5636 = (unsigned int) D.5635;
  D.5630 = priv->element_size;
  D.5637 = D.5636 * D.5630;
  D.5638 = (sizetype) D.5637;
  D.5639 = D.5629 + D.5638;
  D.5630 = priv->element_size;
  D.5640 = (long unsigned int) D.5630;
  memmove (D.5633, D.5639, D.5640);
  D.5634 = array->len;
  D.5641 = D.5634 + -1;
  array->len = D.5641;
  D.5642 = priv->zero_terminated;
  if (D.5642 != 0) goto <D.5643>; else goto <D.5644>;
  <D.5643>:
  D.5629 = priv->array.data;
  D.5645 = priv->array.len;
  D.5646 = (unsigned int) D.5645;
  D.5630 = priv->element_size;
  D.5647 = D.5646 * D.5630;
  D.5648 = (sizetype) D.5647;
  D.5649 = D.5629 + D.5648;
  D.5630 = priv->element_size;
  D.5640 = (long unsigned int) D.5630;
  memset (D.5649, 0, D.5640);
  <D.5644>:
  D.5628 = array;
  return D.5628;
}


monoeg_g_array_set_size (struct GArray * array, gint length)
{
  unsigned int length.1;
  unsigned int D.5656;
  struct GArrayPriv * priv;

  priv = array;
  if (array == 0B) goto <D.5651>; else goto <D.5652>;
  <D.5651>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 226, "array != NULL");
  return;
  <D.5652>:
  if (length < 0) goto <D.5653>; else goto <D.5654>;
  <D.5653>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 227, "length >= 0");
  return;
  <D.5654>:
  length.1 = (unsigned int) length;
  D.5656 = priv->capacity;
  if (length.1 == D.5656) goto <D.5657>; else goto <D.5658>;
  <D.5657>:
  return;
  <D.5658>:
  length.1 = (unsigned int) length;
  D.5656 = priv->capacity;
  if (length.1 > D.5656) goto <D.5659>; else goto <D.5660>;
  <D.5659>:
  length.1 = (unsigned int) length;
  ensure_capacity (priv, length.1);
  <D.5660>:
  array->len = length;
}


