monoeg_g_queue_pop_head (struct GQueue * queue)
{
  unsigned int D.7210;
  void * D.7211;
  struct GList * D.7212;
  struct GList * D.7213;
  unsigned int D.7214;
  void * result;
  struct GList * old_head;

  if (queue == 0B) goto <D.7207>; else goto <D.7209>;
  <D.7209>:
  D.7210 = queue->length;
  if (D.7210 == 0) goto <D.7207>; else goto <D.7208>;
  <D.7207>:
  D.7211 = 0B;
  return D.7211;
  <D.7208>:
  D.7212 = queue->head;
  result = D.7212->data;
  old_head = queue->head;
  D.7213 = old_head->next;
  queue->head = D.7213;
  monoeg_g_list_free_1 (old_head);
  D.7210 = queue->length;
  D.7214 = D.7210 + 4294967295;
  queue->length = D.7214;
  D.7210 = queue->length;
  if (D.7210 != 0) goto <D.7215>; else goto <D.7216>;
  <D.7215>:
  D.7212 = queue->head;
  D.7212->prev = 0B;
  goto <D.7217>;
  <D.7216>:
  queue->tail = 0B;
  <D.7217>:
  D.7211 = result;
  return D.7211;
}


monoeg_g_queue_is_empty (struct GQueue * queue)
{
  gboolean D.7221;
  unsigned int D.7222;
  _Bool D.7223;

  if (queue == 0B) goto <D.7219>; else goto <D.7220>;
  <D.7219>:
  D.7221 = 1;
  return D.7221;
  <D.7220>:
  D.7222 = queue->length;
  D.7223 = D.7222 == 0;
  D.7221 = (gboolean) D.7223;
  return D.7221;
}


monoeg_g_queue_push_head (struct GQueue * queue, void * head)
{
  struct GList * D.7227;
  struct GList * D.7228;
  struct GList * D.7229;
  unsigned int D.7232;
  unsigned int D.7233;

  if (queue == 0B) goto <D.7225>; else goto <D.7226>;
  <D.7225>:
  return;
  <D.7226>:
  D.7227 = queue->head;
  D.7228 = monoeg_g_list_prepend (D.7227, head);
  queue->head = D.7228;
  D.7229 = queue->tail;
  if (D.7229 == 0B) goto <D.7230>; else goto <D.7231>;
  <D.7230>:
  D.7227 = queue->head;
  queue->tail = D.7227;
  <D.7231>:
  D.7232 = queue->length;
  D.7233 = D.7232 + 1;
  queue->length = D.7233;
}


monoeg_g_queue_push_tail (struct GQueue * queue, void * data)
{
  struct GList * D.7237;
  struct GList * D.7238;
  struct GList * D.7239;
  struct GList * D.7243;
  unsigned int D.7244;
  unsigned int D.7245;

  if (queue == 0B) goto <D.7235>; else goto <D.7236>;
  <D.7235>:
  return;
  <D.7236>:
  D.7237 = queue->tail;
  D.7238 = monoeg_g_list_append (D.7237, data);
  queue->tail = D.7238;
  D.7239 = queue->head;
  if (D.7239 == 0B) goto <D.7240>; else goto <D.7241>;
  <D.7240>:
  D.7237 = queue->tail;
  queue->head = D.7237;
  goto <D.7242>;
  <D.7241>:
  D.7237 = queue->tail;
  D.7243 = D.7237->next;
  queue->tail = D.7243;
  <D.7242>:
  D.7244 = queue->length;
  D.7245 = D.7244 + 1;
  queue->length = D.7245;
}


monoeg_g_queue_new ()
{
  struct GQueue * D.7247;

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


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

  if (queue == 0B) goto <D.7249>; else goto <D.7250>;
  <D.7249>:
  return;
  <D.7250>:
  D.7251 = queue->head;
  monoeg_g_list_free (D.7251);
  monoeg_g_free (queue);
}


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

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


