monoeg_g_queue_pop_head (struct GQueue * queue)
{
  unsigned int D.4601;
  void * D.4602;
  struct GList * D.4603;
  struct GList * D.4604;
  unsigned int D.4605;
  void * result;
  struct GList * old_head;

  if (queue == 0B) goto <D.4598>; else goto <D.4600>;
  <D.4600>:
  D.4601 = queue->length;
  if (D.4601 == 0) goto <D.4598>; else goto <D.4599>;
  <D.4598>:
  D.4602 = 0B;
  return D.4602;
  <D.4599>:
  D.4603 = queue->head;
  result = D.4603->data;
  old_head = queue->head;
  D.4604 = old_head->next;
  queue->head = D.4604;
  monoeg_g_list_free_1 (old_head);
  D.4601 = queue->length;
  D.4605 = D.4601 + 4294967295;
  queue->length = D.4605;
  D.4601 = queue->length;
  if (D.4601 != 0) goto <D.4606>; else goto <D.4607>;
  <D.4606>:
  D.4603 = queue->head;
  D.4603->prev = 0B;
  goto <D.4608>;
  <D.4607>:
  queue->tail = 0B;
  <D.4608>:
  D.4602 = result;
  return D.4602;
}


monoeg_g_queue_is_empty (struct GQueue * queue)
{
  gboolean D.4612;
  unsigned int D.4613;
  _Bool D.4614;

  if (queue == 0B) goto <D.4610>; else goto <D.4611>;
  <D.4610>:
  D.4612 = 1;
  return D.4612;
  <D.4611>:
  D.4613 = queue->length;
  D.4614 = D.4613 == 0;
  D.4612 = (gboolean) D.4614;
  return D.4612;
}


monoeg_g_queue_push_head (struct GQueue * queue, void * head)
{
  struct GList * D.4618;
  struct GList * D.4619;
  struct GList * D.4620;
  unsigned int D.4623;
  unsigned int D.4624;

  if (queue == 0B) goto <D.4616>; else goto <D.4617>;
  <D.4616>:
  return;
  <D.4617>:
  D.4618 = queue->head;
  D.4619 = monoeg_g_list_prepend (D.4618, head);
  queue->head = D.4619;
  D.4620 = queue->tail;
  if (D.4620 == 0B) goto <D.4621>; else goto <D.4622>;
  <D.4621>:
  D.4618 = queue->head;
  queue->tail = D.4618;
  <D.4622>:
  D.4623 = queue->length;
  D.4624 = D.4623 + 1;
  queue->length = D.4624;
}


monoeg_g_queue_push_tail (struct GQueue * queue, void * data)
{
  struct GList * D.4628;
  struct GList * D.4629;
  struct GList * D.4630;
  struct GList * D.4634;
  unsigned int D.4635;
  unsigned int D.4636;

  if (queue == 0B) goto <D.4626>; else goto <D.4627>;
  <D.4626>:
  return;
  <D.4627>:
  D.4628 = queue->tail;
  D.4629 = monoeg_g_list_append (D.4628, data);
  queue->tail = D.4629;
  D.4630 = queue->head;
  if (D.4630 == 0B) goto <D.4631>; else goto <D.4632>;
  <D.4631>:
  D.4628 = queue->tail;
  queue->head = D.4628;
  goto <D.4633>;
  <D.4632>:
  D.4628 = queue->tail;
  D.4634 = D.4628->next;
  queue->tail = D.4634;
  <D.4633>:
  D.4635 = queue->length;
  D.4636 = D.4635 + 1;
  queue->length = D.4636;
}


monoeg_g_queue_new ()
{
  struct GQueue * D.4638;

  D.4638 = monoeg_malloc0 (12);
  return D.4638;
}


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

  if (queue == 0B) goto <D.4640>; else goto <D.4641>;
  <D.4640>:
  return;
  <D.4641>:
  D.4642 = queue->head;
  monoeg_g_list_free (D.4642);
  monoeg_g_free (queue);
}


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

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


