monoeg_g_queue_pop_head (struct GQueue * queue)
{
  unsigned int D.4621;
  void * D.4622;
  struct GList * D.4623;
  struct GList * D.4624;
  unsigned int D.4625;
  void * result;
  struct GList * old_head;

  if (queue == 0B) goto <D.4618>; else goto <D.4620>;
  <D.4620>:
  D.4621 = queue->length;
  if (D.4621 == 0) goto <D.4618>; else goto <D.4619>;
  <D.4618>:
  D.4622 = 0B;
  return D.4622;
  <D.4619>:
  D.4623 = queue->head;
  result = D.4623->data;
  old_head = queue->head;
  D.4624 = old_head->next;
  queue->head = D.4624;
  monoeg_g_list_free_1 (old_head);
  D.4621 = queue->length;
  D.4625 = D.4621 + 4294967295;
  queue->length = D.4625;
  D.4621 = queue->length;
  if (D.4621 != 0) goto <D.4626>; else goto <D.4627>;
  <D.4626>:
  D.4623 = queue->head;
  D.4623->prev = 0B;
  goto <D.4628>;
  <D.4627>:
  queue->tail = 0B;
  <D.4628>:
  D.4622 = result;
  return D.4622;
}


monoeg_g_queue_is_empty (struct GQueue * queue)
{
  gboolean D.4632;
  unsigned int D.4633;
  _Bool D.4634;

  if (queue == 0B) goto <D.4630>; else goto <D.4631>;
  <D.4630>:
  D.4632 = 1;
  return D.4632;
  <D.4631>:
  D.4633 = queue->length;
  D.4634 = D.4633 == 0;
  D.4632 = (gboolean) D.4634;
  return D.4632;
}


monoeg_g_queue_push_head (struct GQueue * queue, void * head)
{
  struct GList * D.4638;
  struct GList * D.4639;
  struct GList * D.4640;
  unsigned int D.4643;
  unsigned int D.4644;

  if (queue == 0B) goto <D.4636>; else goto <D.4637>;
  <D.4636>:
  return;
  <D.4637>:
  D.4638 = queue->head;
  D.4639 = monoeg_g_list_prepend (D.4638, head);
  queue->head = D.4639;
  D.4640 = queue->tail;
  if (D.4640 == 0B) goto <D.4641>; else goto <D.4642>;
  <D.4641>:
  D.4638 = queue->head;
  queue->tail = D.4638;
  <D.4642>:
  D.4643 = queue->length;
  D.4644 = D.4643 + 1;
  queue->length = D.4644;
}


monoeg_g_queue_push_tail (struct GQueue * queue, void * data)
{
  struct GList * D.4648;
  struct GList * D.4649;
  struct GList * D.4650;
  struct GList * D.4654;
  unsigned int D.4655;
  unsigned int D.4656;

  if (queue == 0B) goto <D.4646>; else goto <D.4647>;
  <D.4646>:
  return;
  <D.4647>:
  D.4648 = queue->tail;
  D.4649 = monoeg_g_list_append (D.4648, data);
  queue->tail = D.4649;
  D.4650 = queue->head;
  if (D.4650 == 0B) goto <D.4651>; else goto <D.4652>;
  <D.4651>:
  D.4648 = queue->tail;
  queue->head = D.4648;
  goto <D.4653>;
  <D.4652>:
  D.4648 = queue->tail;
  D.4654 = D.4648->next;
  queue->tail = D.4654;
  <D.4653>:
  D.4655 = queue->length;
  D.4656 = D.4655 + 1;
  queue->length = D.4656;
}


monoeg_g_queue_new ()
{
  struct GQueue * D.4658;

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


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

  if (queue == 0B) goto <D.4660>; else goto <D.4661>;
  <D.4660>:
  return;
  <D.4661>:
  D.4662 = queue->head;
  monoeg_g_list_free (D.4662);
  monoeg_g_free (queue);
}


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

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


