monoeg_g_queue_pop_head (struct GQueue * queue)
{
  unsigned int D.5054;
  void * D.5055;
  struct GList * D.5056;
  struct GList * D.5057;
  unsigned int D.5058;
  void * result;
  struct GList * old_head;

  if (queue == 0B) goto <D.5051>; else goto <D.5053>;
  <D.5053>:
  D.5054 = queue->length;
  if (D.5054 == 0) goto <D.5051>; else goto <D.5052>;
  <D.5051>:
  D.5055 = 0B;
  return D.5055;
  <D.5052>:
  D.5056 = queue->head;
  result = D.5056->data;
  old_head = queue->head;
  D.5057 = old_head->next;
  queue->head = D.5057;
  monoeg_g_list_free_1 (old_head);
  D.5054 = queue->length;
  D.5058 = D.5054 + 4294967295;
  queue->length = D.5058;
  D.5054 = queue->length;
  if (D.5054 != 0) goto <D.5059>; else goto <D.5060>;
  <D.5059>:
  D.5056 = queue->head;
  D.5056->prev = 0B;
  goto <D.5061>;
  <D.5060>:
  queue->tail = 0B;
  <D.5061>:
  D.5055 = result;
  return D.5055;
}


monoeg_g_queue_is_empty (struct GQueue * queue)
{
  gboolean D.5065;
  unsigned int D.5066;
  _Bool D.5067;

  if (queue == 0B) goto <D.5063>; else goto <D.5064>;
  <D.5063>:
  D.5065 = 1;
  return D.5065;
  <D.5064>:
  D.5066 = queue->length;
  D.5067 = D.5066 == 0;
  D.5065 = (gboolean) D.5067;
  return D.5065;
}


monoeg_g_queue_push_head (struct GQueue * queue, void * head)
{
  struct GList * D.5071;
  struct GList * D.5072;
  struct GList * D.5073;
  unsigned int D.5076;
  unsigned int D.5077;

  if (queue == 0B) goto <D.5069>; else goto <D.5070>;
  <D.5069>:
  return;
  <D.5070>:
  D.5071 = queue->head;
  D.5072 = monoeg_g_list_prepend (D.5071, head);
  queue->head = D.5072;
  D.5073 = queue->tail;
  if (D.5073 == 0B) goto <D.5074>; else goto <D.5075>;
  <D.5074>:
  D.5071 = queue->head;
  queue->tail = D.5071;
  <D.5075>:
  D.5076 = queue->length;
  D.5077 = D.5076 + 1;
  queue->length = D.5077;
}


monoeg_g_queue_push_tail (struct GQueue * queue, void * data)
{
  struct GList * D.5081;
  struct GList * D.5082;
  struct GList * D.5083;
  struct GList * D.5087;
  unsigned int D.5088;
  unsigned int D.5089;

  if (queue == 0B) goto <D.5079>; else goto <D.5080>;
  <D.5079>:
  return;
  <D.5080>:
  D.5081 = queue->tail;
  D.5082 = monoeg_g_list_append (D.5081, data);
  queue->tail = D.5082;
  D.5083 = queue->head;
  if (D.5083 == 0B) goto <D.5084>; else goto <D.5085>;
  <D.5084>:
  D.5081 = queue->tail;
  queue->head = D.5081;
  goto <D.5086>;
  <D.5085>:
  D.5081 = queue->tail;
  D.5087 = D.5081->next;
  queue->tail = D.5087;
  <D.5086>:
  D.5088 = queue->length;
  D.5089 = D.5088 + 1;
  queue->length = D.5089;
}


monoeg_g_queue_new ()
{
  struct GQueue * D.5091;

  D.5091 = monoeg_malloc0 (24);
  return D.5091;
}


monoeg_g_queue_free (struct GQueue * queue)
{
  struct GList * D.5095;

  if (queue == 0B) goto <D.5093>; else goto <D.5094>;
  <D.5093>:
  return;
  <D.5094>:
  D.5095 = queue->head;
  monoeg_g_list_free (D.5095);
  monoeg_g_free (queue);
}


monoeg_g_queue_foreach (struct GQueue * queue, void (*GFunc) (void *, void *) func, void * user_data)
{
  struct GList * D.5097;

  D.5097 = queue->head;
  monoeg_g_list_foreach (D.5097, func, user_data);
}


