monoeg_g_queue_pop_head (struct GQueue * queue)
{
  unsigned int D.5465;
  void * D.5466;
  struct GList * D.5467;
  struct GList * D.5468;
  unsigned int D.5469;
  void * result;
  struct GList * old_head;

  if (queue == 0B) goto <D.5462>; else goto <D.5464>;
  <D.5464>:
  D.5465 = queue->length;
  if (D.5465 == 0) goto <D.5462>; else goto <D.5463>;
  <D.5462>:
  D.5466 = 0B;
  return D.5466;
  <D.5463>:
  D.5467 = queue->head;
  result = D.5467->data;
  old_head = queue->head;
  D.5468 = old_head->next;
  queue->head = D.5468;
  monoeg_g_list_free_1 (old_head);
  D.5465 = queue->length;
  D.5469 = D.5465 + 4294967295;
  queue->length = D.5469;
  D.5465 = queue->length;
  if (D.5465 != 0) goto <D.5470>; else goto <D.5471>;
  <D.5470>:
  D.5467 = queue->head;
  D.5467->prev = 0B;
  goto <D.5472>;
  <D.5471>:
  queue->tail = 0B;
  <D.5472>:
  D.5466 = result;
  return D.5466;
}


monoeg_g_queue_is_empty (struct GQueue * queue)
{
  gboolean D.5476;
  unsigned int D.5477;
  _Bool D.5478;

  if (queue == 0B) goto <D.5474>; else goto <D.5475>;
  <D.5474>:
  D.5476 = 1;
  return D.5476;
  <D.5475>:
  D.5477 = queue->length;
  D.5478 = D.5477 == 0;
  D.5476 = (gboolean) D.5478;
  return D.5476;
}


monoeg_g_queue_push_head (struct GQueue * queue, void * head)
{
  struct GList * D.5482;
  struct GList * D.5483;
  struct GList * D.5484;
  unsigned int D.5487;
  unsigned int D.5488;

  if (queue == 0B) goto <D.5480>; else goto <D.5481>;
  <D.5480>:
  return;
  <D.5481>:
  D.5482 = queue->head;
  D.5483 = monoeg_g_list_prepend (D.5482, head);
  queue->head = D.5483;
  D.5484 = queue->tail;
  if (D.5484 == 0B) goto <D.5485>; else goto <D.5486>;
  <D.5485>:
  D.5482 = queue->head;
  queue->tail = D.5482;
  <D.5486>:
  D.5487 = queue->length;
  D.5488 = D.5487 + 1;
  queue->length = D.5488;
}


monoeg_g_queue_push_tail (struct GQueue * queue, void * data)
{
  struct GList * D.5492;
  struct GList * D.5493;
  struct GList * D.5494;
  struct GList * D.5498;
  unsigned int D.5499;
  unsigned int D.5500;

  if (queue == 0B) goto <D.5490>; else goto <D.5491>;
  <D.5490>:
  return;
  <D.5491>:
  D.5492 = queue->tail;
  D.5493 = monoeg_g_list_append (D.5492, data);
  queue->tail = D.5493;
  D.5494 = queue->head;
  if (D.5494 == 0B) goto <D.5495>; else goto <D.5496>;
  <D.5495>:
  D.5492 = queue->tail;
  queue->head = D.5492;
  goto <D.5497>;
  <D.5496>:
  D.5492 = queue->tail;
  D.5498 = D.5492->next;
  queue->tail = D.5498;
  <D.5497>:
  D.5499 = queue->length;
  D.5500 = D.5499 + 1;
  queue->length = D.5500;
}


monoeg_g_queue_new ()
{
  struct GQueue * D.5502;

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


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

  if (queue == 0B) goto <D.5504>; else goto <D.5505>;
  <D.5504>:
  return;
  <D.5505>:
  D.5506 = queue->head;
  monoeg_g_list_free (D.5506);
  monoeg_g_free (queue);
}


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

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


