pfe_mac_db_get_next_addr (struct pfe_mac_db_t * db, uint8_t * addr)
{
  struct LLIST_t * item;
  const struct pfe_mac_db_list_entry_t * entry;
  errno_t ret;
  errno_t D.8906;

  <bb 2> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  entry = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &db->lock;
  _2 = oal_mutex_lock (_1);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  item = db->iterator;
  # DEBUG BEGIN_STMT
  goto <bb 6>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _3 = item - 6B;
  entry = (const struct pfe_mac_db_list_entry_t *) _3;
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _4 = db->crit.crit;
  _5 = db->crit.type;
  _6 = db->crit.owner;
  _7 = pfe_mac_db_criterion_eval (entry, _4, _5, _6);
  if (_7 == 1)
    goto <bb 7>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  _8 = db->iterator;
  _9 = _8->prNext;
  db->iterator = _9;

  <bb 6> :
  # DEBUG BEGIN_STMT
  _10 = db->iterator;
  _11 = &db->mac_list;
  if (_10 != _11)
    goto <bb 3>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 8>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  _12 = &entry->addr;
  memcpy (addr, _12, 6);
  # DEBUG BEGIN_STMT
  _13 = item->prNext;
  db->iterator = _13;
  goto <bb 10>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  ret = 2;
  # DEBUG BEGIN_STMT
  _14 = &db->mac_list;
  db->iterator = _14;

  <bb 10> :
  # DEBUG BEGIN_STMT
  _15 = &db->lock;
  _16 = oal_mutex_unlock (_15);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.8906 = ret;
  return D.8906;

}


pfe_mac_db_get_first_addr (struct pfe_mac_db_t * db, pfe_mac_db_crit_t crit, pfe_mac_type_t type, pfe_drv_id_t owner, uint8_t * addr)
{
  struct LLIST_t * item;
  const struct pfe_mac_db_list_entry_t * entry;
  errno_t ret;
  errno_t D.8894;

  <bb 2> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  entry = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &db->lock;
  _2 = oal_mutex_lock (_1);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = db->mac_list.prNext;
  _4 = &db->mac_list;
  if (_3 == _4)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  ret = 2;
  goto <bb 9>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  item = db->mac_list.prNext;
  goto <bb 8>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  _5 = item - 6B;
  entry = (const struct pfe_mac_db_list_entry_t *) _5;
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  _6 = pfe_mac_db_criterion_eval (entry, crit, type, owner);
  if (_6 == 1)
    goto <bb 9>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  item = item->prNext;

  <bb 8> :
  # DEBUG BEGIN_STMT
  _7 = &db->mac_list;
  if (item != _7)
    goto <bb 5>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 10>; [INV]
  else
    goto <bb 11>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  _8 = &entry->addr;
  memcpy (addr, _8, 6);
  # DEBUG BEGIN_STMT
  _9 = item->prNext;
  db->iterator = _9;
  # DEBUG BEGIN_STMT
  db->crit.crit = crit;
  # DEBUG BEGIN_STMT
  db->crit.owner = owner;
  # DEBUG BEGIN_STMT
  db->crit.type = type;
  goto <bb 12>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  ret = 2;

  <bb 12> :
  # DEBUG BEGIN_STMT
  _10 = &db->lock;
  _11 = oal_mutex_unlock (_10);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.8894 = ret;
  return D.8894;

}


pfe_mac_db_flush (struct pfe_mac_db_t * db, pfe_mac_db_crit_t crit, pfe_mac_type_t type, pfe_drv_id_t owner)
{
  struct pfe_mac_db_list_entry_t * entry;
  struct LLIST_t * aux;
  struct LLIST_t * item;
  errno_t ret;
  errno_t D.8842;

  <bb 2> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &db->lock;
  _2 = oal_mutex_lock (_1);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  item = db->mac_list.prNext;
  aux = item->prNext;
  goto <bb 7>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _3 = item - 6B;
  entry = (struct pfe_mac_db_list_entry_t *) _3;
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 4>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _4 = pfe_mac_db_criterion_eval (entry, crit, type, owner);
  if (_4 == 1)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = entry->iterator.prPrev;
  _6 = entry->iterator.prNext;
  _5->prNext = _6;
  # DEBUG BEGIN_STMT
  _7 = entry->iterator.prNext;
  _8 = entry->iterator.prPrev;
  _7->prPrev = _8;
  # DEBUG BEGIN_STMT
  entry->iterator.prPrev = 0B;
  # DEBUG BEGIN_STMT
  entry->iterator.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  oal_mm_free (entry);
  # DEBUG BEGIN_STMT
  entry = 0B;

  <bb 6> :
  # DEBUG BEGIN_STMT
  item = aux;
  aux = aux->prNext;

  <bb 7> :
  # DEBUG BEGIN_STMT
  _9 = &db->mac_list;
  if (item != _9)
    goto <bb 3>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  _10 = &db->lock;
  _11 = oal_mutex_unlock (_10);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.8842 = ret;
  return D.8842;

}


pfe_mac_db_del_addr (struct pfe_mac_db_t * db, const uint8_t * addr, pfe_drv_id_t owner)
{
  struct pfe_mac_db_list_entry_t * entry;
  errno_t ret;
  errno_t D.8832;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &db->lock;
  _2 = oal_mutex_lock (_1);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry = pfe_mac_db_find_by_addr (db, addr, owner);
  # DEBUG BEGIN_STMT
  if (entry == 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret = 2;
  goto <bb 7>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _3 = &entry->iterator;
  _4 = db->iterator;
  if (_3 == _4)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  _5 = db->iterator;
  _6 = _5->prNext;
  db->iterator = _6;

  <bb 6> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _7 = entry->iterator.prPrev;
  _8 = entry->iterator.prNext;
  _7->prNext = _8;
  # DEBUG BEGIN_STMT
  _9 = entry->iterator.prNext;
  _10 = entry->iterator.prPrev;
  _9->prPrev = _10;
  # DEBUG BEGIN_STMT
  entry->iterator.prPrev = 0B;
  # DEBUG BEGIN_STMT
  entry->iterator.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  oal_mm_free (entry);
  # DEBUG BEGIN_STMT
  entry = 0B;
  # DEBUG BEGIN_STMT
  ret = 0;

  <bb 7> :
  # DEBUG BEGIN_STMT
  _11 = &db->lock;
  _12 = oal_mutex_unlock (_11);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.8832 = ret;
  return D.8832;

}


pfe_mac_db_add_addr (struct pfe_mac_db_t * db, const uint8_t * addr, pfe_drv_id_t owner)
{
  struct pfe_mac_db_list_entry_t * entry;
  errno_t ret;
  errno_t D.8813;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &db->lock;
  _2 = oal_mutex_lock (_1);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry = pfe_mac_db_find_by_addr (db, addr, owner);
  # DEBUG BEGIN_STMT
  if (entry == 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  entry = oal_mm_malloc (15);
  # DEBUG BEGIN_STMT
  if (entry == 0B)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret = 11;
  goto <bb 9>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  _3 = &entry->addr;
  memcpy (_3, addr, 6);
  # DEBUG BEGIN_STMT
  entry->owner = owner;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _4 = db->mac_list.prPrev;
  entry->iterator.prPrev = _4;
  # DEBUG BEGIN_STMT
  _5 = &db->mac_list;
  entry->iterator.prNext = _5;
  # DEBUG BEGIN_STMT
  _6 = db->mac_list.prPrev;
  _7 = &entry->iterator;
  _6->prNext = _7;
  # DEBUG BEGIN_STMT
  _8 = &entry->iterator;
  db->mac_list.prPrev = _8;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _9 = db->iterator;
  _10 = &db->mac_list;
  if (_9 == _10)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  _11 = db->mac_list.prPrev;
  db->iterator = _11;

  <bb 7> :
  # DEBUG BEGIN_STMT
  ret = 0;
  goto <bb 9>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  ret = 116;

  <bb 9> :
  # DEBUG BEGIN_STMT
  _12 = &db->lock;
  _13 = oal_mutex_unlock (_12);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.8813 = ret;
  return D.8813;

}


pfe_mac_db_find_by_addr (const struct pfe_mac_db_t * db, const uint8_t * addr, pfe_drv_id_t owner)
{
  bool_t found;
  struct LLIST_t * item;
  struct pfe_mac_db_list_entry_t * entry;
  struct pfe_mac_db_list_entry_t * D.8821;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  found = 0;
  # DEBUG BEGIN_STMT
  item = db->mac_list.prNext;
  goto <bb 7>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = item - 6B;
  entry = (struct pfe_mac_db_list_entry_t *) _1;
  # DEBUG BEGIN_STMT
  _2 = entry->owner;
  if (owner == _2)
    goto <bb 4>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 4> :
  _3 = &entry->addr;
  _4 = memcmp (addr, _3, 6);
  if (_4 == 0)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  found = 1;
  # DEBUG BEGIN_STMT
  goto <bb 8>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  item = item->prNext;

  <bb 7> :
  # DEBUG BEGIN_STMT
  _5 = &db->mac_list;
  if (item != _5)
    goto <bb 3>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  if (found == 0)
    goto <bb 9>; [INV]
  else
    goto <bb 10>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  entry = 0B;

  <bb 10> :
  # DEBUG BEGIN_STMT
  D.8821 = entry;
  return D.8821;

}


pfe_mac_db_destroy (struct pfe_mac_db_t * db)
{
  struct pfe_mac_db_list_entry_t * entry;
  struct LLIST_t * aux;
  struct LLIST_t * item;
  errno_t ret;
  errno_t D.8785;

  <bb 2> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (db != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = &db->lock;
  _2 = oal_mutex_lock (_1);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  item = db->mac_list.prNext;
  aux = item->prNext;
  goto <bb 7>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _3 = item - 6B;
  entry = (struct pfe_mac_db_list_entry_t *) _3;
  # DEBUG BEGIN_STMT
  if (entry != 0B)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _4 = entry->iterator.prPrev;
  _5 = entry->iterator.prNext;
  _4->prNext = _5;
  # DEBUG BEGIN_STMT
  _6 = entry->iterator.prNext;
  _7 = entry->iterator.prPrev;
  _6->prPrev = _7;
  # DEBUG BEGIN_STMT
  entry->iterator.prPrev = 0B;
  # DEBUG BEGIN_STMT
  entry->iterator.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  oal_mm_free (entry);
  # DEBUG BEGIN_STMT
  entry = 0B;

  <bb 6> :
  # DEBUG BEGIN_STMT
  item = aux;
  aux = aux->prNext;

  <bb 7> :
  # DEBUG BEGIN_STMT
  _8 = &db->mac_list;
  if (item != _8)
    goto <bb 4>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  _9 = &db->lock;
  _10 = oal_mutex_unlock (_9);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _11 = &db->lock;
  _12 = oal_mutex_destroy (_11);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  oal_mm_free (db);

  <bb 9> :
  # DEBUG BEGIN_STMT
  D.8785 = ret;
  return D.8785;

}


pfe_mac_db_create ()
{
  struct pfe_mac_db_t * db;
  struct pfe_mac_db_t * D.8771;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  db = oal_mm_malloc (20);
  # DEBUG BEGIN_STMT
  if (db != 0B)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  memset (db, 0, 20);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &db->mac_list;
  db->mac_list.prNext = _1;
  # DEBUG BEGIN_STMT
  _2 = &db->mac_list;
  db->mac_list.prPrev = _2;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = &db->mac_list;
  db->iterator = _3;
  # DEBUG BEGIN_STMT
  db->crit.crit = 4;
  # DEBUG BEGIN_STMT
  db->lock = 0;
  # DEBUG BEGIN_STMT
  _4 = &db->lock;
  _5 = oal_mutex_init (_4);
  if (_5 != 0)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  oal_mm_free (db);
  # DEBUG BEGIN_STMT
  db = 0B;

  <bb 5> :
  # DEBUG BEGIN_STMT
  D.8771 = db;
  return D.8771;

}


pfe_mac_db_criterion_eval (const struct pfe_mac_db_list_entry_t * entry, pfe_mac_db_crit_t crit, pfe_mac_type_t type, pfe_drv_id_t owner)
{
  bool_t ret;
  bool_t D.8860;

  <bb 2> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  if (crit == 1)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = entry->owner;
  if (owner == _1)
    goto <bb 4>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  ret = 1;
  goto <bb 12>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  if (crit == 0)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  _2 = &entry->addr;
  ret = pfe_emac_check_crit_by_type (_2, type);
  goto <bb 12>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  if (crit == 2)
    goto <bb 8>; [INV]
  else
    goto <bb 10>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  _3 = entry->owner;
  if (owner == _3)
    goto <bb 9>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  _4 = &entry->addr;
  ret = pfe_emac_check_crit_by_type (_4, type);
  goto <bb 12>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  if (crit == 3)
    goto <bb 11>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  ret = 1;

  <bb 12> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.8860 = ret;
  return D.8860;

}


pfe_emac_check_crit_by_type (const uint8_t * addr, pfe_mac_type_t type)
{
  bool_t ret;
  bool_t D.8870;

  <bb 2> :
  # DEBUG BEGIN_STMT
  ret = 0;
  # DEBUG BEGIN_STMT
  if (type == 3)
    goto <bb 9>; [INV]
  else
    goto <bb 3>; [INV]

  <bb 3> :
  if (type == 1)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  _1 = pfe_emac_is_multi (addr);
  if (_1 == 1)
    goto <bb 9>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  if (type == 2)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  _2 = pfe_emac_is_broad (addr);
  if (_2 == 1)
    goto <bb 9>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 7> :
  if (type == 0)
    goto <bb 8>; [INV]
  else
    goto <bb 10>; [INV]

  <bb 8> :
  _3 = pfe_emac_is_multi (addr);
  if (_3 == 0)
    goto <bb 9>; [INV]
  else
    goto <bb 10>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  ret = 1;

  <bb 10> :
  # DEBUG BEGIN_STMT
  D.8870 = ret;
  return D.8870;

}


pfe_emac_is_multi (const uint8_t * addr)
{
  bool_t D.8879;

  <bb 2> :
  # DEBUG BEGIN_STMT
  _1 = pfe_emac_is_broad (addr);
  if (_1 == 0)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 3> :
  _2 = *addr;
  _3 = (unsigned int) _2;
  _4 = _3 & 1;
  if (_4 != 0)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  D.8879 = 1;
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  D.8879 = 0;
  // predicted unlikely by early return (on trees) predictor.

  <bb 6> :
  return D.8879;

}


pfe_emac_is_broad (const uint8_t * addr)
{
  bool_t D.8874;

  <bb 2> :
  # DEBUG BEGIN_STMT
  _1 = *addr;
  _2 = addr + 1;
  _3 = *_2;
  _4 = _1 & _3;
  _5 = addr + 2;
  _6 = *_5;
  _7 = _4 & _6;
  _8 = addr + 3;
  _9 = *_8;
  _10 = _7 & _9;
  _11 = addr + 4;
  _12 = *_11;
  _13 = _10 & _12;
  _14 = addr + 5;
  _15 = *_14;
  _16 = _13 & _15;
  if (_16 == 255)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  D.8874 = 1;
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  D.8874 = 0;
  // predicted unlikely by early return (on trees) predictor.

  <bb 5> :
  return D.8874;

}


oal_mutex_unlock (const oal_mutex_t * mutex)
{
  errno_t retval;
  errno_t D.8797;

  <bb 2> :
  # DEBUG BEGIN_STMT
  retval = 22;
  # DEBUG BEGIN_STMT
  _1 = *mutex;
  if (_1 <= 255)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _2 = *mutex;
  _3 = (int) _2;
  _4 = mutex_alloc[_3];
  if (_4 != 0)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _5 = *mutex;
  _6 = (int) _5;
  _7 = SchM_Exit_Eth_43_PFE_ETH_EXCLUSIVE_AREA_ID[_6];
  _7 ();
  # DEBUG BEGIN_STMT
  retval = 0;

  <bb 5> :
  # DEBUG BEGIN_STMT
  D.8797 = retval;
  return D.8797;

}


oal_mutex_lock (const oal_mutex_t * mutex)
{
  errno_t retval;
  errno_t D.8791;

  <bb 2> :
  # DEBUG BEGIN_STMT
  retval = 22;
  # DEBUG BEGIN_STMT
  _1 = *mutex;
  if (_1 <= 255)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _2 = *mutex;
  _3 = (int) _2;
  _4 = mutex_alloc[_3];
  if (_4 != 0)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _5 = *mutex;
  _6 = (int) _5;
  _7 = SchM_Enter_Eth_43_PFE_ETH_EXCLUSIVE_AREA_ID[_6];
  _7 ();
  # DEBUG BEGIN_STMT
  retval = 0;

  <bb 5> :
  # DEBUG BEGIN_STMT
  D.8791 = retval;
  return D.8791;

}


oal_mutex_destroy (oal_mutex_t * mutex)
{
  errno_t D.8799;

  <bb 2> :
  # DEBUG BEGIN_STMT
  D.8799 = oal_mutex_destroy_internal (mutex);
  return D.8799;

}


oal_mutex_init (oal_mutex_t * mutex)
{
  errno_t D.8773;

  <bb 2> :
  # DEBUG BEGIN_STMT
  D.8773 = oal_mutex_init_internal (mutex);
  return D.8773;

}


