monoeg_g_queue_pop_head (struct GQueue * queue)
{
  unsigned int D.4951;
  void * D.4952;
  struct GList * D.4953;
  struct GList * D.4954;
  unsigned int D.4955;
  void * result;
  struct GList * old_head;

  if (queue == 0B) goto <D.4948>; else goto <D.4950>;
  <D.4950>:
  D.4951 = queue->length;
  if (D.4951 == 0) goto <D.4948>; else goto <D.4949>;
  <D.4948>:
  D.4952 = 0B;
  return D.4952;
  <D.4949>:
  D.4953 = queue->head;
  result = D.4953->data;
  old_head = queue->head;
  D.4954 = old_head->next;
  queue->head = D.4954;
  monoeg_g_list_free_1 (old_head);
  D.4951 = queue->length;
  D.4955 = D.4951 + 4294967295;
  queue->length = D.4955;
  D.4951 = queue->length;
  if (D.4951 != 0) goto <D.4956>; else goto <D.4957>;
  <D.4956>:
  D.4953 = queue->head;
  D.4953->prev = 0B;
  goto <D.4958>;
  <D.4957>:
  queue->tail = 0B;
  <D.4958>:
  D.4952 = result;
  return D.4952;
}


monoeg_g_queue_is_empty (struct GQueue * queue)
{
  gboolean D.4962;
  unsigned int D.4963;
  _Bool D.4964;

  if (queue == 0B) goto <D.4960>; else goto <D.4961>;
  <D.4960>:
  D.4962 = 1;
  return D.4962;
  <D.4961>:
  D.4963 = queue->length;
  D.4964 = D.4963 == 0;
  D.4962 = (gboolean) D.4964;
  return D.4962;
}


monoeg_g_queue_push_head (struct GQueue * queue, void * head)
{
  struct GList * D.4968;
  struct GList * D.4969;
  struct GList * D.4970;
  unsigned int D.4973;
  unsigned int D.4974;

  if (queue == 0B) goto <D.4966>; else goto <D.4967>;
  <D.4966>:
  return;
  <D.4967>:
  D.4968 = queue->head;
  D.4969 = monoeg_g_list_prepend (D.4968, head);
  queue->head = D.4969;
  D.4970 = queue->tail;
  if (D.4970 == 0B) goto <D.4971>; else goto <D.4972>;
  <D.4971>:
  D.4968 = queue->head;
  queue->tail = D.4968;
  <D.4972>:
  D.4973 = queue->length;
  D.4974 = D.4973 + 1;
  queue->length = D.4974;
}


monoeg_g_queue_push_tail (struct GQueue * queue, void * data)
{
  struct GList * D.4978;
  struct GList * D.4979;
  struct GList * D.4980;
  struct GList * D.4984;
  unsigned int D.4985;
  unsigned int D.4986;

  if (queue == 0B) goto <D.4976>; else goto <D.4977>;
  <D.4976>:
  return;
  <D.4977>:
  D.4978 = queue->tail;
  D.4979 = monoeg_g_list_append (D.4978, data);
  queue->tail = D.4979;
  D.4980 = queue->head;
  if (D.4980 == 0B) goto <D.4981>; else goto <D.4982>;
  <D.4981>:
  D.4978 = queue->tail;
  queue->head = D.4978;
  goto <D.4983>;
  <D.4982>:
  D.4978 = queue->tail;
  D.4984 = D.4978->next;
  queue->tail = D.4984;
  <D.4983>:
  D.4985 = queue->length;
  D.4986 = D.4985 + 1;
  queue->length = D.4986;
}


monoeg_g_queue_new ()
{
  struct GQueue * D.4988;

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


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

  if (queue == 0B) goto <D.4990>; else goto <D.4991>;
  <D.4990>:
  return;
  <D.4991>:
  D.4992 = queue->head;
  monoeg_g_list_free (D.4992);
  monoeg_g_free (queue);
}


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

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


