monoeg_g_array_new (gboolean zero_terminated, gboolean clear_, guint element_size)
{
  struct GArray * D.4980;
  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.4980 = rv;
  return D.4980;
}


ensure_capacity (struct GArrayPriv * priv, guint capacity)
{
  unsigned int D.4982;
  unsigned int D.4985;
  unsigned int D.4986;
  unsigned int D.4987;
  long unsigned int D.4988;
  gchar * D.4989;
  void * D.4990;
  int D.4991;
  unsigned int D.4994;
  unsigned int D.4995;
  long unsigned int D.4996;
  unsigned int D.4997;
  sizetype D.4998;
  void * D.4999;
  guint new_capacity;

  D.4982 = priv->capacity;
  if (D.4982 >= capacity) goto <D.4983>; else goto <D.4984>;
  <D.4983>:
  return;
  <D.4984>:
  D.4985 = capacity + 63;
  new_capacity = D.4985 & 4294967232;
  D.4986 = priv->element_size;
  D.4987 = D.4986 * new_capacity;
  D.4988 = (long unsigned int) D.4987;
  D.4989 = priv->array.data;
  D.4990 = monoeg_realloc (D.4989, D.4988);
  priv->array.data = D.4990;
  D.4991 = priv->clear_;
  if (D.4991 != 0) goto <D.4992>; else goto <D.4993>;
  <D.4992>:
  D.4982 = priv->capacity;
  D.4994 = new_capacity - D.4982;
  D.4986 = priv->element_size;
  D.4995 = D.4994 * D.4986;
  D.4996 = (long unsigned int) D.4995;
  D.4989 = priv->array.data;
  D.4982 = priv->capacity;
  D.4986 = priv->element_size;
  D.4997 = D.4982 * D.4986;
  D.4998 = (sizetype) D.4997;
  D.4999 = D.4989 + D.4998;
  memset (D.4999, 0, D.4996);
  <D.4993>:
  priv->capacity = new_capacity;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.5003;
  int D.5008;
  void * D.5010;
  long unsigned int D.5011;

  D.5003 = __builtin_constant_p (__len);
  if (D.5003 != 0) goto <D.5004>; else goto <D.5005>;
  <D.5004>:
  if (__len == 0) goto <D.5006>; else goto <D.5007>;
  <D.5006>:
  D.5008 = __builtin_constant_p (__ch);
  if (D.5008 == 0) goto <D.5001>; else goto <D.5009>;
  <D.5009>:
  if (__ch != 0) goto <D.5001>; else goto <D.5002>;
  <D.5001>:
  __warn_memset_zero_len ();
  D.5010 = __dest;
  return D.5010;
  <D.5002>:
  <D.5007>:
  <D.5005>:
  D.5011 = __builtin_object_size (__dest, 0);
  D.5010 = __builtin___memset_chk (__dest, __ch, __len, D.5011);
  return D.5010;
}


monoeg_g_array_sized_new (gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size)
{
  struct GArray * D.5013;
  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.5013 = rv;
  return D.5013;
}


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

  rv = 0B;
  if (array == 0B) goto <D.5015>; else goto <D.5016>;
  <D.5015>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 103, "array != NULL");
  D.5017 = 0B;
  return D.5017;
  <D.5016>:
  if (free_segment != 0) goto <D.5018>; else goto <D.5019>;
  <D.5018>:
  D.5020 = array->data;
  monoeg_g_free (D.5020);
  goto <D.5021>;
  <D.5019>:
  rv = array->data;
  <D.5021>:
  monoeg_g_free (array);
  D.5017 = rv;
  return D.5017;
}


monoeg_g_array_append_vals (struct GArray * array, const void * data, guint len)
{
  struct GArray * D.5025;
  int D.5026;
  unsigned int D.5027;
  unsigned int D.5028;
  guint iftmp.0;
  int D.5030;
  unsigned int D.5034;
  unsigned int D.5035;
  unsigned int D.5036;
  long unsigned int D.5037;
  gchar * D.5038;
  unsigned int D.5039;
  sizetype D.5040;
  void * D.5041;
  int D.5042;
  long unsigned int D.5045;
  struct GArrayPriv * priv;

  priv = array;
  if (array == 0B) goto <D.5023>; else goto <D.5024>;
  <D.5023>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 122, "array != NULL");
  D.5025 = 0B;
  return D.5025;
  <D.5024>:
  D.5026 = priv->array.len;
  D.5027 = (unsigned int) D.5026;
  D.5028 = D.5027 + len;
  D.5030 = priv->zero_terminated;
  if (D.5030 != 0) goto <D.5031>; else goto <D.5032>;
  <D.5031>:
  iftmp.0 = 1;
  goto <D.5033>;
  <D.5032>:
  iftmp.0 = 0;
  <D.5033>:
  D.5034 = D.5028 + iftmp.0;
  ensure_capacity (priv, D.5034);
  D.5035 = priv->element_size;
  D.5036 = D.5035 * len;
  D.5037 = (long unsigned int) D.5036;
  D.5038 = priv->array.data;
  D.5026 = priv->array.len;
  D.5027 = (unsigned int) D.5026;
  D.5035 = priv->element_size;
  D.5039 = D.5027 * D.5035;
  D.5040 = (sizetype) D.5039;
  D.5041 = D.5038 + D.5040;
  memmove (D.5041, data, D.5037);
  D.5026 = priv->array.len;
  D.5027 = (unsigned int) D.5026;
  D.5028 = D.5027 + len;
  D.5042 = (int) D.5028;
  priv->array.len = D.5042;
  D.5030 = priv->zero_terminated;
  if (D.5030 != 0) goto <D.5043>; else goto <D.5044>;
  <D.5043>:
  D.5035 = priv->element_size;
  D.5045 = (long unsigned int) D.5035;
  D.5038 = priv->array.data;
  D.5026 = priv->array.len;
  D.5027 = (unsigned int) D.5026;
  D.5035 = priv->element_size;
  D.5039 = D.5027 * D.5035;
  D.5040 = (sizetype) D.5039;
  D.5041 = D.5038 + D.5040;
  memset (D.5041, 0, D.5045);
  <D.5044>:
  D.5025 = array;
  return D.5025;
}


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

  D.5048 = __builtin_object_size (__dest, 0);
  D.5047 = __builtin___memmove_chk (__dest, __src, __len, D.5048);
  return D.5047;
}


monoeg_g_array_insert_vals (struct GArray * array, guint index_, const void * data, guint len)
{
  int D.5050;
  _Bool D.5051;
  struct GArray * D.5054;
  int D.5055;
  unsigned int D.5056;
  unsigned int D.5057;
  unsigned int D.5058;
  unsigned int D.5059;
  unsigned int D.5060;
  unsigned int D.5061;
  long unsigned int D.5062;
  gchar * D.5063;
  unsigned int D.5064;
  sizetype D.5065;
  const void * D.5066;
  unsigned int D.5067;
  unsigned int D.5068;
  sizetype D.5069;
  void * D.5070;
  unsigned int D.5071;
  long unsigned int D.5072;
  void * D.5073;
  int D.5074;
  long unsigned int D.5077;
  int D.5078;
  unsigned int D.5079;
  unsigned int D.5080;
  sizetype D.5081;
  void * D.5082;
  struct GArrayPriv * priv;
  guint extra;

  priv = array;
  D.5050 = priv->zero_terminated;
  D.5051 = D.5050 != 0;
  extra = (guint) D.5051;
  if (array == 0B) goto <D.5052>; else goto <D.5053>;
  <D.5052>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 150, "array != NULL");
  D.5054 = 0B;
  return D.5054;
  <D.5053>:
  D.5055 = array->len;
  D.5056 = (unsigned int) D.5055;
  D.5057 = D.5056 + len;
  D.5058 = D.5057 + extra;
  ensure_capacity (priv, D.5058);
  D.5055 = array->len;
  D.5056 = (unsigned int) D.5055;
  D.5059 = D.5056 - index_;
  D.5060 = priv->element_size;
  D.5061 = D.5059 * D.5060;
  D.5062 = (long unsigned int) D.5061;
  D.5063 = priv->array.data;
  D.5060 = priv->element_size;
  D.5064 = D.5060 * index_;
  D.5065 = (sizetype) D.5064;
  D.5066 = D.5063 + D.5065;
  D.5063 = priv->array.data;
  D.5067 = index_ + len;
  D.5060 = priv->element_size;
  D.5068 = D.5067 * D.5060;
  D.5069 = (sizetype) D.5068;
  D.5070 = D.5063 + D.5069;
  memmove (D.5070, D.5066, D.5062);
  D.5060 = priv->element_size;
  D.5071 = D.5060 * len;
  D.5072 = (long unsigned int) D.5071;
  D.5063 = priv->array.data;
  D.5060 = priv->element_size;
  D.5064 = D.5060 * index_;
  D.5065 = (sizetype) D.5064;
  D.5073 = D.5063 + D.5065;
  memmove (D.5073, data, D.5072);
  D.5055 = array->len;
  D.5056 = (unsigned int) D.5055;
  D.5057 = D.5056 + len;
  D.5074 = (int) D.5057;
  array->len = D.5074;
  D.5050 = priv->zero_terminated;
  if (D.5050 != 0) goto <D.5075>; else goto <D.5076>;
  <D.5075>:
  D.5060 = priv->element_size;
  D.5077 = (long unsigned int) D.5060;
  D.5063 = priv->array.data;
  D.5078 = priv->array.len;
  D.5079 = (unsigned int) D.5078;
  D.5060 = priv->element_size;
  D.5080 = D.5079 * D.5060;
  D.5081 = (sizetype) D.5080;
  D.5082 = D.5063 + D.5081;
  memset (D.5082, 0, D.5077);
  <D.5076>:
  D.5054 = array;
  return D.5054;
}


monoeg_g_array_remove_index (struct GArray * array, guint index_)
{
  struct GArray * D.5086;
  int D.5087;
  unsigned int D.5088;
  unsigned int D.5089;
  unsigned int D.5090;
  unsigned int D.5091;
  long unsigned int D.5092;
  gchar * D.5093;
  unsigned int D.5094;
  unsigned int D.5095;
  sizetype D.5096;
  const void * D.5097;
  unsigned int D.5098;
  sizetype D.5099;
  void * D.5100;
  int D.5101;
  int D.5102;
  long unsigned int D.5105;
  int D.5106;
  unsigned int D.5107;
  unsigned int D.5108;
  sizetype D.5109;
  void * D.5110;
  struct GArrayPriv * priv;

  priv = array;
  if (array == 0B) goto <D.5084>; else goto <D.5085>;
  <D.5084>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 181, "array != NULL");
  D.5086 = 0B;
  return D.5086;
  <D.5085>:
  D.5087 = array->len;
  D.5088 = (unsigned int) D.5087;
  D.5089 = D.5088 - index_;
  D.5090 = priv->element_size;
  D.5091 = D.5089 * D.5090;
  D.5092 = (long unsigned int) D.5091;
  D.5093 = priv->array.data;
  D.5094 = index_ + 1;
  D.5090 = priv->element_size;
  D.5095 = D.5094 * D.5090;
  D.5096 = (sizetype) D.5095;
  D.5097 = D.5093 + D.5096;
  D.5093 = priv->array.data;
  D.5090 = priv->element_size;
  D.5098 = D.5090 * index_;
  D.5099 = (sizetype) D.5098;
  D.5100 = D.5093 + D.5099;
  memmove (D.5100, D.5097, D.5092);
  D.5087 = array->len;
  D.5101 = D.5087 + -1;
  array->len = D.5101;
  D.5102 = priv->zero_terminated;
  if (D.5102 != 0) goto <D.5103>; else goto <D.5104>;
  <D.5103>:
  D.5090 = priv->element_size;
  D.5105 = (long unsigned int) D.5090;
  D.5093 = priv->array.data;
  D.5106 = priv->array.len;
  D.5107 = (unsigned int) D.5106;
  D.5090 = priv->element_size;
  D.5108 = D.5107 * D.5090;
  D.5109 = (sizetype) D.5108;
  D.5110 = D.5093 + D.5109;
  memset (D.5110, 0, D.5105);
  <D.5104>:
  D.5086 = array;
  return D.5086;
}


monoeg_g_array_remove_index_fast (struct GArray * array, guint index_)
{
  struct GArray * D.5114;
  unsigned int D.5115;
  long unsigned int D.5116;
  gchar * D.5117;
  int D.5118;
  int D.5119;
  unsigned int D.5120;
  unsigned int D.5121;
  sizetype D.5122;
  const void * D.5123;
  unsigned int D.5124;
  sizetype D.5125;
  void * D.5126;
  int D.5127;
  int D.5128;
  int D.5131;
  unsigned int D.5132;
  unsigned int D.5133;
  sizetype D.5134;
  void * D.5135;
  struct GArrayPriv * priv;

  priv = array;
  if (array == 0B) goto <D.5112>; else goto <D.5113>;
  <D.5112>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 204, "array != NULL");
  D.5114 = 0B;
  return D.5114;
  <D.5113>:
  D.5115 = priv->element_size;
  D.5116 = (long unsigned int) D.5115;
  D.5117 = priv->array.data;
  D.5118 = array->len;
  D.5119 = D.5118 + -1;
  D.5120 = (unsigned int) D.5119;
  D.5115 = priv->element_size;
  D.5121 = D.5120 * D.5115;
  D.5122 = (sizetype) D.5121;
  D.5123 = D.5117 + D.5122;
  D.5117 = priv->array.data;
  D.5115 = priv->element_size;
  D.5124 = D.5115 * index_;
  D.5125 = (sizetype) D.5124;
  D.5126 = D.5117 + D.5125;
  memmove (D.5126, D.5123, D.5116);
  D.5118 = array->len;
  D.5127 = D.5118 + -1;
  array->len = D.5127;
  D.5128 = priv->zero_terminated;
  if (D.5128 != 0) goto <D.5129>; else goto <D.5130>;
  <D.5129>:
  D.5115 = priv->element_size;
  D.5116 = (long unsigned int) D.5115;
  D.5117 = priv->array.data;
  D.5131 = priv->array.len;
  D.5132 = (unsigned int) D.5131;
  D.5115 = priv->element_size;
  D.5133 = D.5132 * D.5115;
  D.5134 = (sizetype) D.5133;
  D.5135 = D.5117 + D.5134;
  memset (D.5135, 0, D.5116);
  <D.5130>:
  D.5114 = array;
  return D.5114;
}


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

  priv = array;
  if (array == 0B) goto <D.5137>; else goto <D.5138>;
  <D.5137>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 226, "array != NULL");
  return;
  <D.5138>:
  if (length < 0) goto <D.5139>; else goto <D.5140>;
  <D.5139>:
  monoeg_g_log (0B, 8, "%s:%d: assertion \'%s\' failed", "garray.c", 227, "length >= 0");
  return;
  <D.5140>:
  length.1 = (unsigned int) length;
  D.5142 = priv->capacity;
  if (length.1 == D.5142) goto <D.5143>; else goto <D.5144>;
  <D.5143>:
  return;
  <D.5144>:
  length.1 = (unsigned int) length;
  D.5142 = priv->capacity;
  if (length.1 > D.5142) goto <D.5145>; else goto <D.5146>;
  <D.5145>:
  length.1 = (unsigned int) length;
  ensure_capacity (priv, length.1);
  <D.5146>:
  array->len = length;
}


