pfe_l2br_wait_for_cmd_done.isra.0 (const addr_t * ISRA.22, uint32_t * status_val)
{
  uint32_t ii;
  unsigned int _4;
  volatile uint32_t * _5;
  long unsigned int _6;
  long unsigned int _7;
  unsigned int _9;
  volatile uint32_t * _10;
  long unsigned int _11;
  unsigned int _12;
  volatile uint32_t * _13;
  int _15;

  <bb 2> [local count: 69202660]:
  # DEBUG l2br s=> l2br
  goto <bb 4>; [100.00%]

  <bb 3> [local count: 1014686024]:
  # DEBUG BEGIN_STMT
  ii_2 = ii_1 + 4294967295;
  # DEBUG ii => ii_2
  # DEBUG BEGIN_STMT
  oal_time_usleep (10);
  # DEBUG BEGIN_STMT
  if (ii_2 == 0)
    goto <bb 5>; [1.00%]
  else
    goto <bb 4>; [99.00%]

  <bb 4> [local count: 1073741824]:
  # ii_1 = PHI <100(2), ii_2(3)>
  # DEBUG ii => NULL
  # DEBUG ii => ii_1
  # DEBUG BEGIN_STMT
  _4 = *ISRA.22_23(D);
  _5 = (volatile uint32_t *) _4;
  _6 ={v} *_5;
  _7 = _6 & 1;
  if (_7 == 0)
    goto <bb 3>; [94.50%]
  else
    goto <bb 5>; [5.50%]

  <bb 5> [local count: 69202661]:
  # ii_14 = PHI <ii_2(3), ii_1(4)>
  # DEBUG ii => ii_14
  # DEBUG BEGIN_STMT
  if (status_val_8(D) != 0B)
    goto <bb 6>; [70.00%]
  else
    goto <bb 7>; [30.00%]

  <bb 6> [local count: 48441862]:
  # DEBUG BEGIN_STMT
  _9 = *ISRA.22_23(D);
  _10 = (volatile uint32_t *) _9;
  _11 ={v} *_10;
  *status_val_8(D) = _11;

  <bb 7> [local count: 69202661]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _12 = *ISRA.22_23(D);
  _13 = (volatile uint32_t *) _12;
  *_13 ={v} 4294967295;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (ii_14 == 0)
    goto <bb 9>; [35.00%]
  else
    goto <bb 8>; [65.00%]

  <bb 8> [local count: 44981729]:
  # DEBUG BEGIN_STMT

  <bb 9> [local count: 69202661]:
  # _15 = PHI <110(7), 0(8)>
  return _15;

}


pfe_l2br_entry_to_cmd_args.part.0 (const struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  uint32_t * entry32;
  uint64_t action_data;
  long unsigned int _2;
  long unsigned int _3;
  long unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;
  unsigned int _12;
  volatile uint32_t * _13;
  long unsigned int _14;
  long unsigned int _15;
  short unsigned int _16;
  short unsigned int _17;
  short unsigned int _18;
  short unsigned int _19;
  unsigned int _20;
  long unsigned int _21;
  unsigned int _22;
  volatile uint32_t * _23;
  long unsigned int _24;
  <unnamed-unsigned:31> _25;
  unsigned int _26;
  volatile uint32_t * _27;
  long unsigned int _28;
  int _29;

  <bb 4> [local count: 1073741824]:

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _2 = MEM[(uint32_t *)entry_1(D)];
  _3 = _2 >> 24;
  _4 = _2 >> 8;
  _5 = _4 & 65280;
  _6 = _3 | _5;
  _7 = _2 << 8;
  _8 = _7 & 16711680;
  _9 = _6 | _8;
  _10 = _2 << 24;
  _12 = l2br_11(D)->regs.mac1_addr_reg;
  _13 = (volatile uint32_t *) _12;
  _14 = _9 | _10;
  *_13 ={v} _14;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _15 = MEM[(uint32_t *)entry_1(D) + 4B];
  _16 = (short unsigned int) _15;
  _17 = _16 >> 8;
  _18 = _16 << 8;
  _19 = _17 | _18;
  _20 = (unsigned int) _19;
  _21 = _15 & 4294901760;
  _22 = l2br_11(D)->regs.mac2_addr_reg;
  _23 = (volatile uint32_t *) _22;
  _24 = _20 | _21;
  *_23 ={v} _24;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _25 = entry_1(D)->u.mac2f_entry.action_data;
  _26 = l2br_11(D)->regs.entry_reg;
  _27 = (volatile uint32_t *) _26;
  _28 = (long unsigned int) _25;
  *_27 ={v} _28;
  # DEBUG BEGIN_STMT

  <bb 3> [local count: 1073741824]:
  # _29 = PHI <0(2)>
  return _29;

}


pfe_l2br_table_get_col_ptr.part.0 (const struct pfe_l2br_table_entry_t * entry)
{
  <unnamed-unsigned:4> _2;
  <unnamed-unsigned:4> _3;
  short unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;

  <bb 5> [local count: 1073741824]:

  <bb 2> [local count: 1073741824]:
<L0>:
  # DEBUG BEGIN_STMT
  _2 = entry_1(D)->u.mac2f_entry.flags;
  _3 = _2 & 4;
  if (_3 != 0)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  _4 = entry_1(D)->u.mac2f_entry.col_ptr;
  _5 = (long unsigned int) _4;
  // predicted unlikely by early return (on trees) predictor.

  <bb 4> [local count: 1073741824]:
  # _6 = PHI <0(2), _5(3)>
<L1>:
  return _6;

}


pfe_l2br_table_entry_match_criterion.isra.0.part.0 (const pfe_l2br_table_type_t * ISRA.16, const struct pfe_l2br_table_entry_t * entry)
{
  bool_t match;
  const struct pfe_l2br_table_t * l2br;
  const struct pfe_l2br_table_iterator_t * l2t_iter;
  const pfe_l2br_table_get_criterion_t ISRA.17;
  <unnamed type> _2;
  <unnamed-unsigned:4> _4;
  <unnamed-unsigned:4> _5;
  _Bool _6;
  <unnamed-unsigned:4> _8;
  <unnamed-unsigned:4> _9;
  _Bool _10;

  <bb 6> [local count: 1073741824]:
  # DEBUG D#6 s=> ISRA.17
  # DEBUG ISRA.17 => D#6

  <bb 2> [local count: 1073741824]:
<L0>:
  # DEBUG BEGIN_STMT
  _2 = *ISRA.16_1(D);
  switch (_2) <default: <L3> [33.33%], case 1: <L1> [33.33%], case 2: <L2> [33.33%]>

  <bb 3> [local count: 357878150]:
<L1>:
  # DEBUG BEGIN_STMT
  _4 = entry_3(D)->u.mac2f_entry.flags;
  _5 = _4 & 8;
  _6 = _5 != 0;
  match_7 = (bool_t) _6;
  # DEBUG match => match_7
  # DEBUG BEGIN_STMT
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 357878150]:
<L2>:
  # DEBUG BEGIN_STMT
  _8 = entry_3(D)->u.vlan_entry.flags;
  _9 = _8 & 8;
  _10 = _9 != 0;
  match_11 = (bool_t) _10;
  # DEBUG match => match_11
  # DEBUG BEGIN_STMT

  <bb 5> [local count: 1073634451]:
  # match_12 = PHI <0(2), match_7(3), match_11(4)>
<L3>:
  # DEBUG match => match_12
  # DEBUG BEGIN_STMT
  return match_12;

}


pfe_l2br_table_entry_match_criterion.isra.0 (const pfe_l2br_table_type_t * ISRA.16, const pfe_l2br_table_get_criterion_t ISRA.17, const struct pfe_l2br_table_entry_t * entry)
{
  bool_t match;
  <unnamed type> _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG l2br s=> l2br
  # DEBUG l2t_iter s=> l2t_iter
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT
  _2 = ISRA.17_7(D);
  switch (_2) <default: <L4> [33.33%], case 0: <L0> [33.33%], case 1: <L1> [33.33%]>

  <bb 3> [local count: 357878150]:
<L0>:
  # DEBUG BEGIN_STMT
  # DEBUG match => 1
  # DEBUG BEGIN_STMT
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 357913944]:
<L1>:
  # DEBUG D#5 => ISRA.17_7(D)
  match_9 = pfe_l2br_table_entry_match_criterion.isra.0.part.0 (ISRA.16_8(D), entry_4(D));

  <bb 5> [local count: 1073598662]:
  # match_5 = PHI <0(2), 1(3), match_9(4)>
<L4>:
  # DEBUG match => match_5
  # DEBUG BEGIN_STMT
  return match_5;

}


oal_mutex_unlock.isra.0 (const oal_mutex_t ISRA.14)
{
  errno_t retval;
  short unsigned int _2;
  int _3;
  unsigned char _4;
  void (*<T4e5>) (void) _5;

  <bb 6> [local count: 1073741824]:
  # DEBUG mutex s=> mutex

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG retval => 22
  # DEBUG BEGIN_STMT
  _2 = ISRA.14_10(D);
  if (_2 <= 255)
    goto <bb 3>; [65.00%]
  else
    goto <bb 5>; [35.00%]

  <bb 3> [local count: 697932186]:
  # DEBUG BEGIN_STMT
  _3 = (int) _2;
  _4 = mutex_alloc[_3];
  if (_4 != 0)
    goto <bb 4>; [65.00%]
  else
    goto <bb 5>; [35.00%]

  <bb 4> [local count: 453655921]:
  # DEBUG BEGIN_STMT
  _5 = SchM_Exit_Eth_43_PFE_ETH_EXCLUSIVE_AREA_ID[_3];
  _5 ();
  # DEBUG BEGIN_STMT
  # DEBUG retval => 0

  <bb 5> [local count: 1073741824]:
  # retval_6 = PHI <22(2), 22(3), 0(4)>
  # DEBUG retval => retval_6
  # DEBUG BEGIN_STMT
  return retval_6;

}


oal_mutex_lock.isra.0 (const oal_mutex_t ISRA.12)
{
  errno_t retval;
  short unsigned int _2;
  int _3;
  unsigned char _4;
  void (*<T4e5>) (void) _5;

  <bb 6> [local count: 1073741824]:
  # DEBUG mutex s=> mutex

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG retval => 22
  # DEBUG BEGIN_STMT
  _2 = ISRA.12_10(D);
  if (_2 <= 255)
    goto <bb 3>; [65.00%]
  else
    goto <bb 5>; [35.00%]

  <bb 3> [local count: 697932186]:
  # DEBUG BEGIN_STMT
  _3 = (int) _2;
  _4 = mutex_alloc[_3];
  if (_4 != 0)
    goto <bb 4>; [65.00%]
  else
    goto <bb 5>; [35.00%]

  <bb 4> [local count: 453655921]:
  # DEBUG BEGIN_STMT
  _5 = SchM_Enter_Eth_43_PFE_ETH_EXCLUSIVE_AREA_ID[_3];
  _5 ();
  # DEBUG BEGIN_STMT
  # DEBUG retval => 0

  <bb 5> [local count: 1073741824]:
  # retval_6 = PHI <22(2), 22(3), 0(4)>
  # DEBUG retval => retval_6
  # DEBUG BEGIN_STMT
  return retval_6;

}


__attribute__((pure))
pfe_l2br_table_entry_is_static (const struct pfe_l2br_table_entry_t * entry)
{
  <unnamed-unsigned:31> _1;
  long unsigned int _2;
  <unnamed type> _3;
  unsigned char _4;
  _Bool _5;
  bool_t _6;
  unsigned char _9;
  bool_t _10;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_8(D)->u.mac2f_entry.action_data;
  _2 = (long unsigned int) _1;
  # DEBUG BEGIN_STMT
  # DEBUG mac_entry => &action_data
  # DEBUG BEGIN_STMT
  _3 = entry_8(D)->type;
  if (_3 == 1)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  _9 = BIT_FIELD_REF <_2, 8, 24>;
  _4 = _9 & 64;
  _5 = _4 != 0;
  _10 = (bool_t) _5;

  <bb 4> [local count: 1073741824]:
  # _6 = PHI <_10(3), 0(2)>
  return _6;

}


pfe_l2br_table_entry_set_static (const struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry, bool_t is_static)
{
  uint32_t action_data;
  <unnamed type> _1;
  <unnamed type> _2;
  <unnamed-unsigned:31> _3;
  long unsigned int _4;
  long unsigned int action_data.10_5;
  <unnamed-unsigned:31> _6;
  errno_t _7;
  <unnamed-unsigned:1> iftmp.9_8;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG mac_entry => &action_data
  # DEBUG BEGIN_STMT
  _1 = l2br_11(D)->type;
  if (_1 != 1)
    goto <bb 7>; [35.00%]
  else
    goto <bb 3>; [65.00%]

  <bb 3> [local count: 697932186]:
  _2 = entry_12(D)->type;
  if (_2 != 1)
    goto <bb 7>; [35.00%]
  else
    goto <bb 4>; [65.00%]

  <bb 4> [local count: 453655921]:
  # DEBUG BEGIN_STMT
  _3 = entry_12(D)->u.mac2f_entry.action_data;
  _4 = (long unsigned int) _3;
  action_data = _4;
  # DEBUG BEGIN_STMT
  if (is_static_14(D) == 1)
    goto <bb 6>; [34.00%]
  else
    goto <bb 5>; [66.00%]

  <bb 5> [local count: 299412908]:

  <bb 6> [local count: 453655921]:
  # iftmp.9_8 = PHI <1(4), 0(5)>
  MEM[(union pfe_ct_mac_table_result_t *)&action_data].item.static_flag = iftmp.9_8;
  # DEBUG BEGIN_STMT
  action_data.10_5 = action_data;
  _6 = (<unnamed-unsigned:31>) action_data.10_5;
  entry_12(D)->u.mac2f_entry.action_data = _6;
  # DEBUG BEGIN_STMT

  <bb 7> [local count: 1073741824]:
  # _7 = PHI <22(3), 0(6), 22(2)>
  action_data ={v} {CLOBBER};
  return _7;

}


__attribute__((pure))
pfe_l2br_table_entry_is_fresh (const struct pfe_l2br_table_entry_t * entry)
{
  <unnamed-unsigned:31> _1;
  long unsigned int _2;
  <unnamed type> _3;
  unsigned char _4;
  _Bool _5;
  bool_t _6;
  unsigned char _9;
  bool_t _10;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_8(D)->u.mac2f_entry.action_data;
  _2 = (long unsigned int) _1;
  # DEBUG BEGIN_STMT
  # DEBUG mac_entry => &action_data
  # DEBUG BEGIN_STMT
  _3 = entry_8(D)->type;
  if (_3 == 1)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  _9 = BIT_FIELD_REF <_2, 8, 24>;
  _4 = _9 & 32;
  _5 = _4 != 0;
  _10 = (bool_t) _5;

  <bb 4> [local count: 1073741824]:
  # _6 = PHI <_10(3), 0(2)>
  return _6;

}


pfe_l2br_table_entry_set_fresh (const struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry, bool_t is_fresh)
{
  uint32_t action_data;
  <unnamed type> _1;
  <unnamed type> _2;
  <unnamed-unsigned:31> _3;
  long unsigned int _4;
  long unsigned int action_data.8_5;
  <unnamed-unsigned:31> _6;
  errno_t _7;
  <unnamed-unsigned:1> iftmp.7_8;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG mac_entry => &action_data
  # DEBUG BEGIN_STMT
  _1 = l2br_11(D)->type;
  if (_1 != 1)
    goto <bb 7>; [35.00%]
  else
    goto <bb 3>; [65.00%]

  <bb 3> [local count: 697932186]:
  _2 = entry_12(D)->type;
  if (_2 != 1)
    goto <bb 7>; [35.00%]
  else
    goto <bb 4>; [65.00%]

  <bb 4> [local count: 453655921]:
  # DEBUG BEGIN_STMT
  _3 = entry_12(D)->u.mac2f_entry.action_data;
  _4 = (long unsigned int) _3;
  action_data = _4;
  # DEBUG BEGIN_STMT
  if (is_fresh_14(D) == 1)
    goto <bb 6>; [34.00%]
  else
    goto <bb 5>; [66.00%]

  <bb 5> [local count: 299412908]:

  <bb 6> [local count: 453655921]:
  # iftmp.7_8 = PHI <1(4), 0(5)>
  MEM[(union pfe_ct_mac_table_result_t *)&action_data].item.fresh_flag = iftmp.7_8;
  # DEBUG BEGIN_STMT
  action_data.8_5 = action_data;
  _6 = (<unnamed-unsigned:31>) action_data.8_5;
  entry_12(D)->u.mac2f_entry.action_data = _6;
  # DEBUG BEGIN_STMT

  <bb 7> [local count: 1073741824]:
  # _7 = PHI <22(3), 0(6), 22(2)>
  action_data ={v} {CLOBBER};
  return _7;

}


__attribute__((pure))
pfe_l2br_table_entry_get_action_data (const struct pfe_l2br_table_entry_t * entry)
{
  <unnamed-unsigned:31> _1;
  uint64_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_3(D)->u.mac2f_entry.action_data;
  _4 = (uint64_t) _1;
  return _4;

}


pfe_l2br_table_entry_set_action_data (struct pfe_l2br_table_entry_t * entry, uint64_t action_data)
{
  <unnamed type> _1;
  <unnamed-unsigned:31> _2;
  <unnamed-unsigned:55> _3;
  errno_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_8(D)->type;
  if (_1 == 1)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _2 = (<unnamed-unsigned:31>) action_data_9(D);
  entry_8(D)->u.mac2f_entry.action_data = _2;
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 5>; [65.00%]
  else
    goto <bb 7>; [35.00%]

  <bb 5> [local count: 460635243]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = (<unnamed-unsigned:55>) action_data_9(D);
  entry_8(D)->u.vlan_entry.action_data = _3;

  <bb 6> [local count: 825707464]:
  # DEBUG BEGIN_STMT
  entry_8(D)->action_data_set = 1;
  # DEBUG BEGIN_STMT

  <bb 7> [local count: 1073741824]:
  # _4 = PHI <22(4), 0(6)>
  return _4;

}


__attribute__((pure))
pfe_l2br_table_entry_get_vlan (const struct pfe_l2br_table_entry_t * entry)
{
  <unnamed-unsigned:13> _1;
  uint32_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_3(D)->u.mac2f_entry.vlan;
  _4 = (uint32_t) _1;
  return _4;

}


pfe_l2br_table_entry_set_vlan (struct pfe_l2br_table_entry_t * entry, uint16_t vlan)
{
  <unnamed type> _1;
  <unnamed-unsigned:13> _2;
  unsigned char _3;
  unsigned char _4;
  <unnamed-unsigned:13> _5;
  unsigned char _6;
  unsigned char _7;
  errno_t _8;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_12(D)->type;
  if (_1 == 1)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  _2 = (<unnamed-unsigned:13>) vlan_13(D);
  entry_12(D)->u.mac2f_entry.vlan = _2;
  # DEBUG BEGIN_STMT
  _3 = entry_12(D)->u.mac2f_entry.field_valids;
  _4 = _3 | 2;
  entry_12(D)->u.mac2f_entry.field_valids = _4;
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 5>; [65.00%]
  else
    goto <bb 7>; [35.00%]

  <bb 5> [local count: 460635243]:
  # DEBUG BEGIN_STMT
  _5 = (<unnamed-unsigned:13>) vlan_13(D);
  entry_12(D)->u.vlan_entry.vlan = _5;
  # DEBUG BEGIN_STMT
  _6 = entry_12(D)->u.vlan_entry.field_valids;
  _7 = _6 | 1;
  entry_12(D)->u.vlan_entry.field_valids = _7;

  <bb 6> [local count: 825707464]:
  # DEBUG BEGIN_STMT
  entry_12(D)->vlan_set = 1;
  # DEBUG BEGIN_STMT

  <bb 7> [local count: 1073741824]:
  # _8 = PHI <22(4), 0(6)>
  return _8;

}


pfe_l2br_table_entry_set_mac_addr (struct pfe_l2br_table_entry_t * entry, const uint8_t * mac_addr)
{
  <unnamed type> _1;
  uint8_t[6] * _2;
  unsigned char _3;
  unsigned char _4;
  errno_t _5;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_8(D)->type;
  if (_1 == 1)
    goto <bb 3>; [20.24%]
  else
    goto <bb 4>; [79.76%]

  <bb 3> [local count: 217325345]:
  # DEBUG BEGIN_STMT
  _2 = &entry_8(D)->u.mac2f_entry.mac;
  memcpy (_2, mac_addr_9(D), 6);
  # DEBUG BEGIN_STMT
  _3 = entry_8(D)->u.mac2f_entry.field_valids;
  _4 = _3 | 1;
  entry_8(D)->u.mac2f_entry.field_valids = _4;
  # DEBUG BEGIN_STMT
  entry_8(D)->mac_addr_set = 1;
  # DEBUG BEGIN_STMT
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 856416480]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 6>; [34.00%]
  else
    goto <bb 5>; [66.00%]

  <bb 5> [local count: 565234877]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 6> [local count: 1073741824]:
  # _5 = PHI <115(4), 22(5), 0(3)>
  return _5;

}


pfe_l2br_table_entry_destroy (const struct pfe_l2br_table_entry_t * entry)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  return 0;

}


pfe_l2br_table_entry_create (const struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  <unnamed type> _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (entry_3(D) != 0B)
    goto <bb 3>; [53.47%]
  else
    goto <bb 4>; [46.53%]

  <bb 3> [local count: 574129754]:
  # DEBUG BEGIN_STMT
  memset (entry_3(D), 0, 20);
  # DEBUG BEGIN_STMT
  _1 = l2br_6(D)->type;
  entry_3(D)->type = _1;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 4> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  return entry_3(D);

}


pfe_l2br_table_destroy (struct pfe_l2br_table_t * l2br)
{
  oal_mutex_t * _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (l2br_3(D) != 0B)
    goto <bb 3>; [53.47%]
  else
    goto <bb 4>; [46.53%]

  <bb 3> [local count: 574129754]:
  # DEBUG BEGIN_STMT
  _1 = &l2br_3(D)->reg_lock;
  oal_mutex_destroy (_1);

  <bb 4> [local count: 1073741824]:
  return;

}


pfe_l2br_table_flush (struct pfe_l2br_table_t * l2br)
{
  errno_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _4 = pfe_l2br_table_flush_cmd (l2br_2(D));
  return _4;

}


pfe_l2br_table_init (struct pfe_l2br_table_t * l2br)
{
  errno_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _4 = pfe_l2br_table_init_cmd (l2br_2(D));
  return _4;

}


pfe_l2br_table_create (addr_t cbus_base_va, pfe_l2br_table_type_t type)
{
  struct pfe_l2br_table_t * l2br;
  errno_t ret;
  unsigned int _1;
  unsigned int _2;
  unsigned int _3;
  unsigned int _4;
  unsigned int _5;
  unsigned int _6;
  unsigned int _7;
  unsigned int _8;
  unsigned int _9;
  unsigned int _10;
  unsigned int _11;
  unsigned int _12;
  unsigned int _13;
  unsigned int _14;
  unsigned int _15;
  unsigned int _16;
  unsigned int _17;
  unsigned int _18;
  unsigned int _19;
  unsigned int _20;
  unsigned int _21;
  unsigned int _22;
  unsigned int _23;
  unsigned int _24;
  oal_mutex_t * _25;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG l2br => 0B
  # DEBUG BEGIN_STMT
  switch (type_30(D)) <default: <L11> [33.33%], case 1: <L0> [33.33%], case 2: <L1> [33.33%]>

  <bb 3> [local count: 357878150]:
<L0>:
  # DEBUG BEGIN_STMT
  # DEBUG l2br => &mactab_instance
  # DEBUG BEGIN_STMT
  memset (&mactab_instance, 0, 8);
  # DEBUG BEGIN_STMT
  _1 = cbus_base_va_33(D) + 590880;
  mactab_instance.regs.cmd_reg = _1;
  # DEBUG BEGIN_STMT
  _2 = cbus_base_va_33(D) + 590884;
  mactab_instance.regs.mac1_addr_reg = _2;
  # DEBUG BEGIN_STMT
  _3 = cbus_base_va_33(D) + 590888;
  mactab_instance.regs.mac2_addr_reg = _3;
  # DEBUG BEGIN_STMT
  _4 = cbus_base_va_33(D) + 590892;
  mactab_instance.regs.mac3_addr_reg = _4;
  # DEBUG BEGIN_STMT
  _5 = cbus_base_va_33(D) + 590896;
  mactab_instance.regs.mac4_addr_reg = _5;
  # DEBUG BEGIN_STMT
  _6 = cbus_base_va_33(D) + 590900;
  mactab_instance.regs.mac5_addr_reg = _6;
  # DEBUG BEGIN_STMT
  _7 = cbus_base_va_33(D) + 590904;
  mactab_instance.regs.entry_reg = _7;
  # DEBUG BEGIN_STMT
  _8 = cbus_base_va_33(D) + 590908;
  mactab_instance.regs.status_reg = _8;
  # DEBUG BEGIN_STMT
  _9 = cbus_base_va_33(D) + 590912;
  mactab_instance.regs.direct_reg = _9;
  # DEBUG BEGIN_STMT
  _10 = cbus_base_va_33(D) + 590952;
  mactab_instance.regs.free_entries_reg = _10;
  # DEBUG BEGIN_STMT
  _11 = cbus_base_va_33(D) + 590956;
  mactab_instance.regs.free_head_ptr_reg = _11;
  # DEBUG BEGIN_STMT
  _12 = cbus_base_va_33(D) + 590960;
  mactab_instance.regs.free_tail_ptr_reg = _12;
  # DEBUG BEGIN_STMT
  mactab_instance.hash_space_depth = 256;
  # DEBUG BEGIN_STMT
  mactab_instance.coll_space_depth = 256;
  # DEBUG BEGIN_STMT
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 357878150]:
<L1>:
  # DEBUG BEGIN_STMT
  # DEBUG l2br => &vlantab_instance
  # DEBUG BEGIN_STMT
  memset (&vlantab_instance, 0, 8);
  # DEBUG BEGIN_STMT
  _13 = cbus_base_va_33(D) + 590964;
  vlantab_instance.regs.cmd_reg = _13;
  # DEBUG BEGIN_STMT
  _14 = cbus_base_va_33(D) + 590968;
  vlantab_instance.regs.mac1_addr_reg = _14;
  # DEBUG BEGIN_STMT
  _15 = cbus_base_va_33(D) + 590972;
  vlantab_instance.regs.mac2_addr_reg = _15;
  # DEBUG BEGIN_STMT
  _16 = cbus_base_va_33(D) + 590976;
  vlantab_instance.regs.mac3_addr_reg = _16;
  # DEBUG BEGIN_STMT
  _17 = cbus_base_va_33(D) + 590980;
  vlantab_instance.regs.mac4_addr_reg = _17;
  # DEBUG BEGIN_STMT
  _18 = cbus_base_va_33(D) + 590984;
  vlantab_instance.regs.mac5_addr_reg = _18;
  # DEBUG BEGIN_STMT
  _19 = cbus_base_va_33(D) + 590988;
  vlantab_instance.regs.entry_reg = _19;
  # DEBUG BEGIN_STMT
  _20 = cbus_base_va_33(D) + 590992;
  vlantab_instance.regs.status_reg = _20;
  # DEBUG BEGIN_STMT
  _21 = cbus_base_va_33(D) + 590996;
  vlantab_instance.regs.direct_reg = _21;
  # DEBUG BEGIN_STMT
  _22 = cbus_base_va_33(D) + 591036;
  vlantab_instance.regs.free_entries_reg = _22;
  # DEBUG BEGIN_STMT
  _23 = cbus_base_va_33(D) + 591040;
  vlantab_instance.regs.free_head_ptr_reg = _23;
  # DEBUG BEGIN_STMT
  _24 = cbus_base_va_33(D) + 591044;
  vlantab_instance.regs.free_tail_ptr_reg = _24;
  # DEBUG BEGIN_STMT
  vlantab_instance.hash_space_depth = 64;
  # DEBUG BEGIN_STMT
  vlantab_instance.coll_space_depth = 64;
  # DEBUG BEGIN_STMT

  <bb 5> [local count: 715756301]:
  # l2br_26 = PHI <&mactab_instance(3), &vlantab_instance(4)>
<L9>:
  # DEBUG l2br => l2br_26
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  l2br_26->reg_lock = 167;
  # DEBUG BEGIN_STMT
  _25 = &l2br_26->reg_lock;
  oal_mutex_init (_25);
  # DEBUG BEGIN_STMT
  l2br_26->type = type_30(D);
  # DEBUG BEGIN_STMT
  l2br_26->cbus_base_va = cbus_base_va_33(D);
  # DEBUG BEGIN_STMT
  ret_68 = pfe_l2br_table_init_cmd (l2br_26);
  # DEBUG ret => ret_68
  # DEBUG BEGIN_STMT
  if (ret_68 != 0)
    goto <bb 6>; [29.00%]
  else
    goto <bb 7>; [71.00%]

  <bb 6> [local count: 207569327]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG l2br => 0B

  <bb 7> [local count: 1073634451]:
  # l2br_27 = PHI <0B(2), l2br_26(5), 0B(6)>
<L11>:
  # DEBUG l2br => l2br_27
  # DEBUG BEGIN_STMT
  return l2br_27;

}


pfe_l2br_table_flush_cmd (struct pfe_l2br_table_t * l2br)
{
  errno_t ret;
  <unnamed type> _1;
  unsigned char _2;
  unsigned int _3;
  volatile uint32_t * _4;
  unsigned int _5;
  volatile uint32_t * _6;
  unsigned int _7;
  volatile uint32_t * _8;
  unsigned int _9;
  volatile uint32_t * _10;
  unsigned int _11;
  volatile uint32_t * _12;
  unsigned int _13;
  volatile uint32_t * _14;
  const addr_t * _27;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = l2br_18(D)->type;
  _2 = _1 + 255;
  if (_2 <= 1)
    goto <bb 3>; [38.86%]
  else
    goto <bb 4>; [61.14%]

  <bb 3> [local count: 417256073]:
  # DEBUG BEGIN_STMT
  # DEBUG cmd => 16392
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = l2br_18(D)->regs.mac1_addr_reg;
  _4 = (volatile uint32_t *) _3;
  *_4 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = l2br_18(D)->regs.mac2_addr_reg;
  _6 = (volatile uint32_t *) _5;
  *_6 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _7 = l2br_18(D)->regs.mac3_addr_reg;
  _8 = (volatile uint32_t *) _7;
  *_8 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _9 = l2br_18(D)->regs.mac4_addr_reg;
  _10 = (volatile uint32_t *) _9;
  *_10 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _11 = l2br_18(D)->regs.mac5_addr_reg;
  _12 = (volatile uint32_t *) _11;
  *_12 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _13 = l2br_18(D)->regs.cmd_reg;
  _14 = (volatile uint32_t *) _13;
  *_14 ={v} 16392;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _27 = &MEM[(unsigned int *)l2br_18(D) + 36B];
  # DEBUG D#8 => l2br_18(D)
  ret_26 = pfe_l2br_wait_for_cmd_done.isra.0 (_27, 0B);
  # DEBUG ret => ret_26

  <bb 4> [local count: 1073741824]:
  # ret_15 = PHI <ret_26(3), 22(2)>
  # DEBUG ret => ret_15
  # DEBUG BEGIN_STMT
  return ret_15;

}


pfe_l2br_table_init_cmd (struct pfe_l2br_table_t * l2br)
{
  struct pfe_l2br_table_entry_t entry;
  uint32_t status;
  uint32_t ii;
  errno_t ret;
  unsigned int _1;
  volatile uint32_t * _2;
  long unsigned int status.6_3;
  long unsigned int _4;
  unsigned int _5;
  volatile uint32_t * _6;
  unsigned int _7;
  volatile uint32_t * _8;
  unsigned int _9;
  volatile uint32_t * _10;
  unsigned int _11;
  volatile uint32_t * _12;
  unsigned int _13;
  volatile uint32_t * _14;
  <unnamed type> _15;
  short unsigned int _16;
  short unsigned int _17;
  short unsigned int _18;
  short unsigned int _19;
  short unsigned int _20;
  short unsigned int _21;
  short unsigned int _22;
  short unsigned int _23;
  short unsigned int _24;
  long unsigned int _25;
  long unsigned int _26;
  short unsigned int _27;
  long unsigned int _28;
  short unsigned int _29;
  unsigned int _30;
  volatile uint32_t * _31;
  long unsigned int _32;
  long unsigned int _33;
  long unsigned int _35;
  unsigned int _36;
  volatile uint32_t * _37;
  long unsigned int _38;
  unsigned int _39;
  volatile uint32_t * _40;
  errno_t _42;
  const addr_t * _69;

  <bb 2> [local count: 195941922]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry = {};
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = l2br_48(D)->regs.cmd_reg;
  _2 = (volatile uint32_t *) _1;
  *_2 ={v} 1;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _69 = &MEM[(unsigned int *)l2br_48(D) + 36B];
  # DEBUG D#8 => l2br_48(D)
  ret_51 = pfe_l2br_wait_for_cmd_done.isra.0 (_69, &status);
  # DEBUG ret => ret_51
  # DEBUG BEGIN_STMT
  if (ret_51 != 0)
    goto <bb 14>; [34.00%]
  else
    goto <bb 3>; [66.00%]

  <bb 3> [local count: 129321668]:
  # DEBUG BEGIN_STMT
  status.6_3 = status;
  _4 = status.6_3 & 4;
  if (_4 == 0)
    goto <bb 14>; [21.72%]
  else
    goto <bb 4>; [78.28%]

  <bb 4> [local count: 101233002]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = l2br_48(D)->regs.mac1_addr_reg;
  _6 = (volatile uint32_t *) _5;
  *_6 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _7 = l2br_48(D)->regs.mac2_addr_reg;
  _8 = (volatile uint32_t *) _7;
  *_8 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _9 = l2br_48(D)->regs.mac3_addr_reg;
  _10 = (volatile uint32_t *) _9;
  *_10 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _11 = l2br_48(D)->regs.mac4_addr_reg;
  _12 = (volatile uint32_t *) _11;
  *_12 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _13 = l2br_48(D)->regs.mac5_addr_reg;
  _14 = (volatile uint32_t *) _13;
  *_14 ={v} 0;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ii => 0
  goto <bb 12>; [100.00%]

  <bb 5> [local count: 1034442874]:
  # DEBUG BEGIN_STMT
  _15 = l2br_48(D)->type;
  if (_15 == 1)
    goto <bb 6>; [34.00%]
  else
    goto <bb 7>; [66.00%]

  <bb 6> [local count: 351710577]:
  # DEBUG BEGIN_STMT
  _16 = l2br_48(D)->hash_space_depth;
  _17 = (short unsigned int) ii_41;
  _18 = _16 + _17;
  _19 = _18 + 1;
  entry.u.mac2f_entry.col_ptr = _19;
  # DEBUG BEGIN_STMT
  entry.u.mac2f_entry.flags = 4;
  goto <bb 9>; [100.00%]

  <bb 7> [local count: 682732297]:
  # DEBUG BEGIN_STMT
  if (_15 == 2)
    goto <bb 8>; [96.34%]
  else
    goto <bb 14>; [3.66%]

  <bb 8> [local count: 657744295]:
  # DEBUG BEGIN_STMT
  _20 = l2br_48(D)->hash_space_depth;
  _21 = (short unsigned int) ii_41;
  _22 = _20 + _21;
  _23 = _22 + 1;
  entry.u.vlan_entry.col_ptr = _23;
  # DEBUG BEGIN_STMT
  entry.u.vlan_entry.flags = 4;

  <bb 9> [local count: 1009454872]:
  # DEBUG BEGIN_STMT
  _24 = l2br_48(D)->hash_space_depth;
  _25 = (long unsigned int) _24;
  _26 = _25 + ii_41;
  ret_65 = pfe_l2br_table_write_cmd (l2br_48(D), _26, &entry);
  # DEBUG ret => ret_65
  # DEBUG BEGIN_STMT
  if (ret_65 != 0)
    goto <bb 10>; [3.66%]
  else
    goto <bb 11>; [96.34%]

  <bb 10> [local count: 36946048]:
  # ret_34 = PHI <ret_65(9)>
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 11> [local count: 972508824]:
  # DEBUG BEGIN_STMT
  ii_66 = ii_41 + 1;
  # DEBUG ii => ii_66

  <bb 12> [local count: 1073741824]:
  # ii_41 = PHI <0(4), ii_66(11)>
  # DEBUG ii => ii_41
  # DEBUG BEGIN_STMT
  _27 = l2br_48(D)->coll_space_depth;
  _28 = (long unsigned int) _27;
  if (_28 > ii_41)
    goto <bb 5>; [96.34%]
  else
    goto <bb 13>; [3.66%]

  <bb 13> [local count: 39298951]:
  # _33 = PHI <_28(12)>
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _29 = l2br_48(D)->hash_space_depth;
  _30 = l2br_48(D)->regs.free_head_ptr_reg;
  _31 = (volatile uint32_t *) _30;
  _32 = (long unsigned int) _29;
  *_31 ={v} _32;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _35 = _32 + _33;
  _36 = l2br_48(D)->regs.free_tail_ptr_reg;
  _37 = (volatile uint32_t *) _36;
  _38 = _35 + 4294967295;
  *_37 ={v} _38;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _39 = l2br_48(D)->regs.free_entries_reg;
  _40 = (volatile uint32_t *) _39;
  *_40 ={v} _33;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 14> [local count: 195941921]:
  # _42 = PHI <ret_51(2), 114(3), 22(7), ret_34(10), 0(13)>
  status ={v} {CLOBBER};
  entry ={v} {CLOBBER};
  return _42;

}


pfe_l2br_table_read_cmd (struct pfe_l2br_table_t * l2br, uint32_t addr, struct pfe_l2br_table_entry_t * entry)
{
  uint32_t * rdata;
  errno_t ret;
  short unsigned int _1;
  long unsigned int _2;
  short unsigned int _3;
  long unsigned int _4;
  long unsigned int _5;
  <unnamed type> _6;
  long unsigned int _7;
  unsigned int _8;
  volatile uint32_t * _9;
  long unsigned int _10;
  unsigned int _11;
  volatile uint32_t * _12;
  long unsigned int _13;
  unsigned int _14;
  volatile uint32_t * _15;
  long unsigned int _16;
  unsigned int _17;
  volatile uint32_t * _18;
  long unsigned int _19;
  unsigned int _20;
  volatile uint32_t * _21;
  long unsigned int _22;
  <unnamed type> _23;
  long unsigned int _24;
  long unsigned int _25;
  long unsigned int _26;
  long unsigned int _27;
  long unsigned int _28;
  long unsigned int _29;
  long unsigned int _30;
  long unsigned int _31;
  long unsigned int _32;
  short unsigned int _33;
  short unsigned int _34;
  <unnamed type> _35;
  errno_t _37;
  const addr_t * _59;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = l2br_41(D)->hash_space_depth;
  _2 = (long unsigned int) _1;
  _3 = l2br_41(D)->coll_space_depth;
  _4 = (long unsigned int) _3;
  _5 = _2 + _4;
  if (_5 <= addr_42(D))
    goto <bb 11>; [21.72%]
  else
    goto <bb 3>; [78.28%]

  <bb 3> [local count: 840525101]:
  # DEBUG BEGIN_STMT
  _6 = l2br_41(D)->type;
  if (_6 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 5>; [66.00%]

  <bb 4> [local count: 285778534]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rdata_45 = &entry_43(D)->u.mac2f_entry;
  # DEBUG rdata => rdata_45
  goto <bb 7>; [100.00%]

  <bb 5> [local count: 554746567]:
  # DEBUG BEGIN_STMT
  if (_6 == 2)
    goto <bb 6>; [65.00%]
  else
    goto <bb 11>; [35.00%]

  <bb 6> [local count: 360585268]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rdata_44 = &entry_43(D)->u.vlan_entry;
  # DEBUG rdata => rdata_44

  <bb 7> [local count: 646363803]:
  # rdata_36 = PHI <rdata_45(4), rdata_44(6)>
  # DEBUG rdata => rdata_36
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _7 = addr_42(D) << 16;
  _8 = l2br_41(D)->regs.cmd_reg;
  _9 = (volatile uint32_t *) _8;
  _10 = _7 | 6;
  *_9 ={v} _10;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _59 = &MEM[(unsigned int *)l2br_41(D) + 36B];
  # DEBUG D#8 => l2br_41(D)
  ret_48 = pfe_l2br_wait_for_cmd_done.isra.0 (_59, 0B);
  # DEBUG ret => ret_48
  # DEBUG BEGIN_STMT
  if (ret_48 != 0)
    goto <bb 11>; [34.00%]
  else
    goto <bb 8>; [66.00%]

  <bb 8> [local count: 426600109]:
  # DEBUG BEGIN_STMT
  _11 = l2br_41(D)->regs.mac1_addr_reg;
  _12 = (volatile uint32_t *) _11;
  _13 ={v} *_12;
  *rdata_36 = _13;
  # DEBUG BEGIN_STMT
  _14 = l2br_41(D)->regs.mac2_addr_reg;
  _15 = (volatile uint32_t *) _14;
  _16 ={v} *_15;
  MEM[(uint32_t *)rdata_36 + 4B] = _16;
  # DEBUG BEGIN_STMT
  _17 = l2br_41(D)->regs.mac3_addr_reg;
  _18 = (volatile uint32_t *) _17;
  _19 ={v} *_18;
  MEM[(uint32_t *)rdata_36 + 8B] = _19;
  # DEBUG BEGIN_STMT
  _20 = l2br_41(D)->regs.mac4_addr_reg;
  _21 = (volatile uint32_t *) _20;
  _22 ={v} *_21;
  MEM[(uint32_t *)rdata_36 + 12B] = _22;
  # DEBUG BEGIN_STMT
  _23 = l2br_41(D)->type;
  if (_23 == 1)
    goto <bb 9>; [34.00%]
  else
    goto <bb 10>; [66.00%]

  <bb 9> [local count: 145044037]:
  # DEBUG BEGIN_STMT
  _24 = _13 >> 24;
  _25 = _13 >> 8;
  _26 = _25 & 65280;
  _27 = _24 | _26;
  _28 = _13 << 8;
  _29 = _28 & 16711680;
  _30 = _27 | _29;
  _31 = _13 << 24;
  _32 = _30 | _31;
  # DEBUG data32 => _32
  # DEBUG BEGIN_STMT
  _33 = (short unsigned int) _16;
  _34 = _33 r>> 8;
  # DEBUG data16 => _34
  # DEBUG BEGIN_STMT
  MEM[(char * {ref-all})entry_43(D)] = _32;
  # DEBUG BEGIN_STMT
  MEM[(char * {ref-all})entry_43(D) + 4B] = _34;
  # DEBUG BEGIN_STMT
  entry_43(D)->mac_addr_set = 1;
  # DEBUG D#9 => {CLOBBER}
  # DEBUG data32 => D#9
  # DEBUG D#10 => {CLOBBER}
  # DEBUG data16 => D#10

  <bb 10> [local count: 426600109]:
  # DEBUG BEGIN_STMT
  _35 = l2br_41(D)->type;
  entry_43(D)->type = _35;
  # DEBUG BEGIN_STMT
  entry_43(D)->vlan_set = 1;
  # DEBUG BEGIN_STMT
  entry_43(D)->action_data_set = 1;
  # DEBUG BEGIN_STMT

  <bb 11> [local count: 1073741824]:
  # _37 = PHI <22(2), 22(5), ret_48(7), 0(10)>
  return _37;

}


pfe_l2br_table_write_cmd (struct pfe_l2br_table_t * l2br, uint32_t addr, struct pfe_l2br_table_entry_t * entry)
{
  uint32_t * wdata;
  short unsigned int _1;
  long unsigned int _2;
  short unsigned int _3;
  long unsigned int _4;
  long unsigned int _5;
  <unnamed type> _6;
  unsigned int _7;
  volatile uint32_t * _8;
  long unsigned int _9;
  unsigned int _10;
  volatile uint32_t * _11;
  long unsigned int _12;
  unsigned int _13;
  volatile uint32_t * _14;
  long unsigned int _15;
  unsigned int _16;
  volatile uint32_t * _17;
  long unsigned int _18;
  long unsigned int _19;
  unsigned int _20;
  volatile uint32_t * _21;
  long unsigned int _22;
  errno_t _24;
  errno_t _38;
  const addr_t * _39;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG wdata => entry_26(D)
  # DEBUG BEGIN_STMT
  _1 = l2br_28(D)->hash_space_depth;
  _2 = (long unsigned int) _1;
  _3 = l2br_28(D)->coll_space_depth;
  _4 = (long unsigned int) _3;
  _5 = _2 + _4;
  if (_5 <= addr_29(D))
    goto <bb 8>; [21.72%]
  else
    goto <bb 3>; [78.28%]

  <bb 3> [local count: 840525101]:
  # DEBUG BEGIN_STMT
  _6 = l2br_28(D)->type;
  if (_6 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 5>; [66.00%]

  <bb 4> [local count: 285778534]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  wdata_31 = &entry_26(D)->u.mac2f_entry;
  # DEBUG wdata => wdata_31
  goto <bb 7>; [100.00%]

  <bb 5> [local count: 554746567]:
  # DEBUG BEGIN_STMT
  if (_6 == 2)
    goto <bb 6>; [65.00%]
  else
    goto <bb 8>; [35.00%]

  <bb 6> [local count: 360585268]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  wdata_30 = &entry_26(D)->u.vlan_entry;
  # DEBUG wdata => wdata_30

  <bb 7> [local count: 646363803]:
  # wdata_23 = PHI <wdata_31(4), wdata_30(6)>
  # DEBUG wdata => wdata_23
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _7 = l2br_28(D)->regs.mac1_addr_reg;
  _8 = (volatile uint32_t *) _7;
  _9 = *wdata_23;
  *_8 ={v} _9;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _10 = l2br_28(D)->regs.mac2_addr_reg;
  _11 = (volatile uint32_t *) _10;
  _12 = MEM[(uint32_t *)wdata_23 + 4B];
  *_11 ={v} _12;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _13 = l2br_28(D)->regs.mac3_addr_reg;
  _14 = (volatile uint32_t *) _13;
  _15 = MEM[(uint32_t *)wdata_23 + 8B];
  *_14 ={v} _15;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _16 = l2br_28(D)->regs.mac4_addr_reg;
  _17 = (volatile uint32_t *) _16;
  _18 = MEM[(uint32_t *)wdata_23 + 12B];
  *_17 ={v} _18;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _19 = addr_29(D) << 16;
  _20 = l2br_28(D)->regs.cmd_reg;
  _21 = (volatile uint32_t *) _20;
  _22 = _19 | 7;
  *_21 ={v} _22;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _39 = &MEM[(unsigned int *)l2br_28(D) + 36B];
  # DEBUG D#8 => l2br_28(D)
  _38 = pfe_l2br_wait_for_cmd_done.isra.0 (_39, 0B);

  <bb 8> [local count: 1073741824]:
  # _24 = PHI <22(2), 22(5), _38(7)>
  return _24;

}


pfe_l2br_table_get_next (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_iterator_t * l2t_iter, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  long unsigned int _1;
  long unsigned int _2;
  long unsigned int _3;
  long unsigned int _4;
  unsigned char _5;
  long unsigned int _6;
  long unsigned int _7;
  short unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;
  errno_t _12;
  const pfe_l2br_table_type_t * _28;
  <unnamed type> _29;

  <bb 2> [local count: 95397016]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  goto <bb 9>; [100.00%]

  <bb 3> [local count: 1054092349]:
  # DEBUG BEGIN_STMT
  _1 = l2t_iter_17(D)->next_coll_addr;
  if (_1 == 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 527046174]:
  # DEBUG BEGIN_STMT
  ret_24 = pfe_l2br_table_read_cmd (l2br_18(D), _7, entry_19(D));
  # DEBUG ret => ret_24
  # DEBUG BEGIN_STMT
  l2t_iter_17(D)->cur_coll_addr = 0;
  # DEBUG BEGIN_STMT
  _2 = l2t_iter_17(D)->cur_hash_addr;
  _3 = _2 + 1;
  l2t_iter_17(D)->cur_hash_addr = _3;
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 527046174]:
  # DEBUG BEGIN_STMT
  ret_21 = pfe_l2br_table_read_cmd (l2br_18(D), _1, entry_19(D));
  # DEBUG ret => ret_21
  # DEBUG BEGIN_STMT
  _4 = l2t_iter_17(D)->next_coll_addr;
  l2t_iter_17(D)->cur_coll_addr = _4;

  <bb 6> [local count: 1054092349]:
  # ret_11 = PHI <ret_24(4), ret_21(5)>
  # DEBUG ret => ret_11
  # DEBUG BEGIN_STMT
  if (ret_11 != 0)
    goto <bb 11>; [3.66%]
  else
    goto <bb 7>; [96.34%]

  <bb 7> [local count: 1015512568]:
  # DEBUG BEGIN_STMT
  _28 = &MEM[(<unnamed type> *)l2br_18(D) + 4B];
  # DEBUG D#3 => l2br_18(D)
  _29 = MEM[(<unnamed type> *)l2t_iter_17(D)];
  # DEBUG D#4 => l2t_iter_17(D)
  _5 = pfe_l2br_table_entry_match_criterion.isra.0 (_28, _29, entry_19(D));
  if (_5 == 1)
    goto <bb 8>; [3.66%]
  else
    goto <bb 9>; [96.34%]

  <bb 8> [local count: 37167760]:
  # DEBUG BEGIN_STMT
  _6 = pfe_l2br_table_get_col_ptr (entry_19(D));
  l2t_iter_17(D)->next_coll_addr = _6;
  # DEBUG BEGIN_STMT
  goto <bb 11>; [100.00%]

  <bb 9> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _7 = l2t_iter_17(D)->cur_hash_addr;
  _8 = l2br_18(D)->hash_space_depth;
  _9 = (long unsigned int) _8;
  if (_7 < _9)
    goto <bb 3>; [50.00%]
  else
    goto <bb 10>; [50.00%]

  <bb 10> [local count: 536870912]:
  _10 = l2t_iter_17(D)->next_coll_addr;
  if (_10 != 0)
    goto <bb 3>; [96.34%]
  else
    goto <bb 11>; [3.66%]

  <bb 11> [local count: 95397015]:
  # _12 = PHI <0(8), 22(10), 22(6)>
  return _12;

}


pfe_l2br_table_get_first (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_iterator_t * l2t_iter, pfe_l2br_table_get_criterion_t crit, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  unsigned char _1;
  long unsigned int _2;
  long unsigned int _3;
  long unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;
  long unsigned int _7;
  short unsigned int _8;
  long unsigned int _9;
  errno_t _10;
  const pfe_l2br_table_type_t * _26;
  <unnamed type> _27;

  <bb 2> [local count: 113634470]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 2
  # DEBUG BEGIN_STMT
  l2t_iter_14(D)->cur_crit = crit_15(D);
  # DEBUG BEGIN_STMT
  l2t_iter_14(D)->cur_hash_addr = 0;
  l2t_iter_14(D)->cur_coll_addr = 0;
  goto <bb 7>; [100.00%]

  <bb 3> [local count: 1034442874]:
  # DEBUG BEGIN_STMT
  ret_22 = pfe_l2br_table_read_cmd (l2br_19(D), _7, entry_20(D));
  # DEBUG ret => ret_22
  # DEBUG BEGIN_STMT
  if (ret_22 != 0)
    goto <bb 8>; [3.66%]
  else
    goto <bb 4>; [96.34%]

  <bb 4> [local count: 996582265]:
  # DEBUG BEGIN_STMT
  _26 = &MEM[(<unnamed type> *)l2br_19(D) + 4B];
  # DEBUG D#3 => l2br_19(D)
  _27 = MEM[(<unnamed type> *)l2t_iter_14(D)];
  # DEBUG D#4 => l2t_iter_14(D)
  _1 = pfe_l2br_table_entry_match_criterion.isra.0 (_26, _27, entry_20(D));
  if (_1 == 1)
    goto <bb 5>; [3.66%]
  else
    goto <bb 6>; [96.34%]

  <bb 5> [local count: 36474911]:
  # DEBUG BEGIN_STMT
  _2 = pfe_l2br_table_get_col_ptr (entry_20(D));
  l2t_iter_14(D)->next_coll_addr = _2;
  # DEBUG BEGIN_STMT
  _3 = l2t_iter_14(D)->cur_hash_addr;
  _4 = _3 + 1;
  l2t_iter_14(D)->cur_hash_addr = _4;
  # DEBUG BEGIN_STMT
  goto <bb 8>; [100.00%]

  <bb 6> [local count: 960107354]:
  # DEBUG BEGIN_STMT
  _5 = l2t_iter_14(D)->cur_hash_addr;
  _6 = _5 + 1;
  l2t_iter_14(D)->cur_hash_addr = _6;

  <bb 7> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _7 = l2t_iter_14(D)->cur_hash_addr;
  _8 = l2br_19(D)->hash_space_depth;
  _9 = (long unsigned int) _8;
  if (_7 < _9)
    goto <bb 3>; [96.34%]
  else
    goto <bb 8>; [3.66%]

  <bb 8> [local count: 113634471]:
  # _10 = PHI <0(5), 2(7), 2(3)>
  return _10;

}


pfe_l2br_iterator_halt (struct pfe_l2br_table_iterator_t * inst)
{
  errno_t ret;
  long unsigned int _1;
  long unsigned int _2;
  long unsigned int _3;
  long unsigned int _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 2
  # DEBUG BEGIN_STMT
  _1 = inst_8(D)->cur_hash_addr;
  if (_1 != 0)
    goto <bb 3>; [65.00%]
  else
    goto <bb 5>; [35.00%]

  <bb 3> [local count: 697932186]:
  _2 = inst_8(D)->next_coll_addr;
  if (_2 != 0)
    goto <bb 4>; [65.00%]
  else
    goto <bb 5>; [35.00%]

  <bb 4> [local count: 453655921]:
  # DEBUG BEGIN_STMT
  _3 = _1 + 4294967295;
  inst_8(D)->cur_hash_addr = _3;
  # DEBUG BEGIN_STMT
  _4 = inst_8(D)->cur_coll_addr;
  inst_8(D)->next_coll_addr = _4;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

  <bb 5> [local count: 1073741824]:
  # ret_5 = PHI <2(2), 2(3), 0(4)>
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  return ret_5;

}


pfe_l2br_iterator_destroy (const struct pfe_l2br_table_iterator_t * inst)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  return 0;

}


pfe_l2br_iterator_create (struct pfe_l2br_table_iterator_t * loop_inst)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (loop_inst_2(D) != 0B)
    goto <bb 3>; [70.00%]
  else
    goto <bb 4>; [30.00%]

  <bb 3> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  loop_inst_2(D)->cur_hash_addr = 0;
  # DEBUG BEGIN_STMT
  loop_inst_2(D)->cur_coll_addr = 0;
  # DEBUG BEGIN_STMT
  loop_inst_2(D)->next_coll_addr = 0;
  # DEBUG BEGIN_STMT
  loop_inst_2(D)->cur_crit = 0;

  <bb 4> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  return loop_inst_2(D);

}


pfe_l2br_table_search_entry (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  short unsigned int _8;
  short unsigned int _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG D#17 => &l2br_1(D)->reg_lock
  _8 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#1 => D#17
  oal_mutex_lock.isra.0 (_8);
  # DEBUG BEGIN_STMT
  ret_6 = pfe_l2br_table_do_search_entry_nolock (l2br_1(D), entry_4(D));
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  # DEBUG D#18 => &l2br_1(D)->reg_lock
  _9 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#2 => D#18
  oal_mutex_unlock.isra.0 (_9);
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_l2br_table_add_entry (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  short unsigned int _8;
  short unsigned int _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG D#15 => &l2br_1(D)->reg_lock
  _8 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#1 => D#15
  oal_mutex_lock.isra.0 (_8);
  # DEBUG BEGIN_STMT
  ret_6 = pfe_l2br_table_do_add_entry_nolock (l2br_1(D), entry_4(D));
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  # DEBUG D#16 => &l2br_1(D)->reg_lock
  _9 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#2 => D#16
  oal_mutex_unlock.isra.0 (_9);
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_l2br_table_del_entry (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  short unsigned int _8;
  short unsigned int _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG D#13 => &l2br_1(D)->reg_lock
  _8 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#1 => D#13
  oal_mutex_lock.isra.0 (_8);
  # DEBUG BEGIN_STMT
  ret_6 = pfe_l2br_table_do_del_entry_nolock (l2br_1(D), entry_4(D));
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  # DEBUG D#14 => &l2br_1(D)->reg_lock
  _9 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#2 => D#14
  oal_mutex_unlock.isra.0 (_9);
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_l2br_table_update_entry (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  short unsigned int _8;
  short unsigned int _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG D#11 => &l2br_1(D)->reg_lock
  _8 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#1 => D#11
  oal_mutex_lock.isra.0 (_8);
  # DEBUG BEGIN_STMT
  ret_6 = pfe_l2br_table_do_update_entry_nolock (l2br_1(D), entry_4(D));
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  # DEBUG D#12 => &l2br_1(D)->reg_lock
  _9 = MEM[(const oal_mutex_t *)l2br_1(D) + 6B];
  # DEBUG D#2 => D#12
  oal_mutex_unlock.isra.0 (_9);
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_l2br_table_do_search_entry_nolock (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  uint32_t cmd;
  uint32_t status;
  <unnamed type> _1;
  short unsigned int _2;
  unsigned char _3;
  unsigned int _4;
  unsigned int _5;
  long unsigned int _6;
  <unnamed-unsigned:4> _7;
  int _8;
  int _9;
  long unsigned int _10;
  long unsigned int _11;
  unsigned char _12;
  unsigned char _13;
  unsigned int _14;
  unsigned int _15;
  long unsigned int _16;
  <unnamed-unsigned:4> _17;
  int _18;
  int _19;
  long unsigned int _20;
  long unsigned int _21;
  unsigned int _22;
  volatile uint32_t * _23;
  long unsigned int status.4_24;
  long unsigned int _25;
  long unsigned int _26;
  errno_t _28;
  const addr_t * _42;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 22
  # DEBUG BEGIN_STMT
  ret_34 = pfe_l2br_entry_to_cmd_args (l2br_31(D), entry_32(D));
  # DEBUG ret => ret_34
  # DEBUG BEGIN_STMT
  if (ret_34 != 0)
    goto <bb 13>; [34.00%]
  else
    goto <bb 3>; [66.00%]

  <bb 3> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  _1 = l2br_31(D)->type;
  if (_1 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 4> [local count: 240947665]:
  # DEBUG BEGIN_STMT
  _2 = BIT_FIELD_REF <MEM[(void *)entry_32(D)], 16, 144>;
  if (_2 == 0)
    goto <bb 13>; [21.72%]
  else
    goto <bb 5>; [78.28%]

  <bb 5> [local count: 188613832]:
  # DEBUG BEGIN_STMT
  _3 = entry_32(D)->u.mac2f_entry.field_valids;
  _4 = (unsigned int) _3;
  _5 = _4 << 8;
  _6 = _5 & 7936;
  _7 = entry_32(D)->u.mac2f_entry.port;
  _8 = (int) _7;
  _9 = _8 << 16;
  _10 = (long unsigned int) _9;
  _11 = _6 | _10;
  cmd_36 = _11 | 5;
  # DEBUG cmd => cmd_36
  goto <bb 9>; [100.00%]

  <bb 6> [local count: 467721939]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 7>; [65.00%]
  else
    goto <bb 13>; [35.00%]

  <bb 7> [local count: 304019260]:
  # DEBUG BEGIN_STMT
  _12 = entry_32(D)->vlan_set;
  if (_12 == 0)
    goto <bb 13>; [21.72%]
  else
    goto <bb 8>; [78.28%]

  <bb 8> [local count: 237986277]:
  # DEBUG BEGIN_STMT
  _13 = entry_32(D)->u.vlan_entry.field_valids;
  _14 = (unsigned int) _13;
  _15 = _14 << 8;
  _16 = _15 & 7936;
  _17 = entry_32(D)->u.vlan_entry.port;
  _18 = (int) _17;
  _19 = _18 << 16;
  _20 = (long unsigned int) _19;
  _21 = _16 | _20;
  cmd_35 = _21 | 5;
  # DEBUG cmd => cmd_35

  <bb 9> [local count: 426600109]:
  # cmd_27 = PHI <cmd_36(5), cmd_35(8)>
  # DEBUG cmd => cmd_27
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _22 = l2br_31(D)->regs.cmd_reg;
  _23 = (volatile uint32_t *) _22;
  *_23 ={v} cmd_27;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _42 = &MEM[(unsigned int *)l2br_31(D) + 36B];
  # DEBUG D#8 => l2br_31(D)
  ret_39 = pfe_l2br_wait_for_cmd_done.isra.0 (_42, &status);
  # DEBUG ret => ret_39
  # DEBUG BEGIN_STMT
  if (ret_39 != 0)
    goto <bb 13>; [34.00%]
  else
    goto <bb 10>; [66.00%]

  <bb 10> [local count: 281556072]:
  # DEBUG BEGIN_STMT
  status.4_24 = status;
  _25 = status.4_24 & 2;
  if (_25 != 0)
    goto <bb 13>; [21.72%]
  else
    goto <bb 11>; [78.28%]

  <bb 11> [local count: 220402093]:
  # DEBUG BEGIN_STMT
  _26 = status.4_24 & 16;
  if (_26 == 0)
    goto <bb 13>; [36.03%]
  else
    goto <bb 12>; [63.97%]

  <bb 12> [local count: 140991219]:
  # DEBUG BEGIN_STMT
  pfe_l2br_get_data (l2br_31(D), entry_32(D));
  # DEBUG BEGIN_STMT

  <bb 13> [local count: 1073741824]:
  # _28 = PHI <ret_34(2), 22(4), 22(7), 22(6), ret_39(9), 2(10), 2(11), 0(12)>
  status ={v} {CLOBBER};
  return _28;

}


pfe_l2br_table_do_add_entry_nolock (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  uint32_t cmd;
  uint32_t status;
  <unnamed type> _1;
  short unsigned int _2;
  unsigned char _3;
  unsigned char _4;
  unsigned int _5;
  unsigned int _6;
  long unsigned int _7;
  <unnamed-unsigned:4> _8;
  int _9;
  int _10;
  long unsigned int _11;
  long unsigned int _12;
  unsigned char _13;
  unsigned char _14;
  unsigned char _15;
  unsigned int _16;
  unsigned int _17;
  long unsigned int _18;
  <unnamed-unsigned:4> _19;
  int _20;
  int _21;
  long unsigned int _22;
  long unsigned int _23;
  unsigned int _24;
  volatile uint32_t * _25;
  long unsigned int status.3_26;
  long unsigned int _27;
  errno_t _29;
  const addr_t * _42;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 22
  # DEBUG BEGIN_STMT
  ret_35 = pfe_l2br_entry_to_cmd_args (l2br_32(D), entry_33(D));
  # DEBUG ret => ret_35
  # DEBUG BEGIN_STMT
  if (ret_35 != 0)
    goto <bb 14>; [34.00%]
  else
    goto <bb 3>; [66.00%]

  <bb 3> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  _1 = l2br_32(D)->type;
  if (_1 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 7>; [66.00%]

  <bb 4> [local count: 240947665]:
  # DEBUG BEGIN_STMT
  _2 = BIT_FIELD_REF <MEM[(void *)entry_33(D)], 16, 144>;
  if (_2 == 0)
    goto <bb 14>; [21.72%]
  else
    goto <bb 5>; [78.28%]

  <bb 5> [local count: 188613832]:
  _3 = entry_33(D)->action_data_set;
  if (_3 == 0)
    goto <bb 14>; [21.72%]
  else
    goto <bb 6>; [78.28%]

  <bb 6> [local count: 147646908]:
  # DEBUG BEGIN_STMT
  _4 = entry_33(D)->u.mac2f_entry.field_valids;
  _5 = (unsigned int) _4;
  _6 = _5 << 8;
  _7 = _6 & 7936;
  _8 = entry_33(D)->u.mac2f_entry.port;
  _9 = (int) _8;
  _10 = _9 << 16;
  _11 = (long unsigned int) _10;
  _12 = _7 | _11;
  cmd_37 = _12 | 2;
  # DEBUG cmd => cmd_37
  goto <bb 11>; [100.00%]

  <bb 7> [local count: 467721939]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 8>; [65.00%]
  else
    goto <bb 14>; [35.00%]

  <bb 8> [local count: 304019260]:
  # DEBUG BEGIN_STMT
  _13 = entry_33(D)->vlan_set;
  if (_13 == 0)
    goto <bb 14>; [21.72%]
  else
    goto <bb 9>; [78.28%]

  <bb 9> [local count: 237986277]:
  _14 = entry_33(D)->action_data_set;
  if (_14 == 0)
    goto <bb 14>; [21.72%]
  else
    goto <bb 10>; [78.28%]

  <bb 10> [local count: 186295657]:
  # DEBUG BEGIN_STMT
  _15 = entry_33(D)->u.vlan_entry.field_valids;
  _16 = (unsigned int) _15;
  _17 = _16 << 8;
  _18 = _17 & 7936;
  _19 = entry_33(D)->u.vlan_entry.port;
  _20 = (int) _19;
  _21 = _20 << 16;
  _22 = (long unsigned int) _21;
  _23 = _18 | _22;
  cmd_36 = _23 | 2;
  # DEBUG cmd => cmd_36

  <bb 11> [local count: 333942565]:
  # cmd_28 = PHI <cmd_37(6), cmd_36(10)>
  # DEBUG cmd => cmd_28
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _24 = l2br_32(D)->regs.cmd_reg;
  _25 = (volatile uint32_t *) _24;
  *_25 ={v} cmd_28;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _42 = &MEM[(unsigned int *)l2br_32(D) + 36B];
  # DEBUG D#8 => l2br_32(D)
  ret_40 = pfe_l2br_wait_for_cmd_done.isra.0 (_42, &status);
  # DEBUG ret => ret_40
  # DEBUG BEGIN_STMT
  if (ret_40 != 0)
    goto <bb 14>; [34.00%]
  else
    goto <bb 12>; [66.00%]

  <bb 12> [local count: 220402093]:
  # DEBUG BEGIN_STMT
  status.3_26 = status;
  _27 = status.3_26 & 8;
  if (_27 == 0)
    goto <bb 13>; [21.72%]
  else
    goto <bb 14>; [78.28%]

  <bb 13> [local count: 47871335]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 14> [local count: 1073741824]:
  # _29 = PHI <ret_35(2), 22(5), 22(9), 22(7), ret_40(11), 114(13), 0(12), 22(4), 22(8)>
  status ={v} {CLOBBER};
  return _29;

}


pfe_l2br_table_do_del_entry_nolock (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  uint32_t cmd;
  uint32_t status;
  <unnamed type> _1;
  short unsigned int _2;
  unsigned char _3;
  long unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;
  unsigned char _7;
  unsigned char _8;
  long unsigned int _9;
  long unsigned int _10;
  long unsigned int _11;
  unsigned int _12;
  volatile uint32_t * _13;
  errno_t _15;
  const addr_t * _28;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret_21 = pfe_l2br_entry_to_cmd_args (l2br_18(D), entry_19(D));
  # DEBUG ret => ret_21
  # DEBUG BEGIN_STMT
  if (ret_21 != 0)
    goto <bb 11>; [34.00%]
  else
    goto <bb 3>; [66.00%]

  <bb 3> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  _1 = l2br_18(D)->type;
  if (_1 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 4> [local count: 240947665]:
  # DEBUG BEGIN_STMT
  _2 = BIT_FIELD_REF <MEM[(void *)entry_19(D)], 16, 144>;
  if (_2 == 0)
    goto <bb 11>; [21.72%]
  else
    goto <bb 5>; [78.28%]

  <bb 5> [local count: 188613832]:
  # DEBUG BEGIN_STMT
  _3 = entry_19(D)->u.mac2f_entry.field_valids;
  _4 = (long unsigned int) _3;
  _5 = _4 << 8;
  _6 = _5 & 7936;
  cmd_23 = _6 | 3;
  # DEBUG cmd => cmd_23
  goto <bb 9>; [100.00%]

  <bb 6> [local count: 467721939]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 7>; [65.00%]
  else
    goto <bb 11>; [35.00%]

  <bb 7> [local count: 304019260]:
  # DEBUG BEGIN_STMT
  _7 = entry_19(D)->vlan_set;
  if (_7 == 0)
    goto <bb 11>; [21.72%]
  else
    goto <bb 8>; [78.28%]

  <bb 8> [local count: 237986277]:
  # DEBUG BEGIN_STMT
  _8 = entry_19(D)->u.vlan_entry.field_valids;
  _9 = (long unsigned int) _8;
  _10 = _9 << 8;
  _11 = _10 & 7936;
  cmd_22 = _11 | 3;
  # DEBUG cmd => cmd_22

  <bb 9> [local count: 426600109]:
  # cmd_14 = PHI <cmd_23(5), cmd_22(8)>
  # DEBUG cmd => cmd_14
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _12 = l2br_18(D)->regs.cmd_reg;
  _13 = (volatile uint32_t *) _12;
  *_13 ={v} cmd_14;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _28 = &MEM[(unsigned int *)l2br_18(D) + 36B];
  # DEBUG D#8 => l2br_18(D)
  ret_26 = pfe_l2br_wait_for_cmd_done.isra.0 (_28, &status);
  # DEBUG ret => ret_26
  # DEBUG BEGIN_STMT
  if (ret_26 != 0)
    goto <bb 10>; [34.00%]
  else
    goto <bb 11>; [66.00%]

  <bb 10> [local count: 145044037]:
  # DEBUG BEGIN_STMT

  <bb 11> [local count: 1073741824]:
  # _15 = PHI <ret_21(2), 22(4), 22(7), 22(6), ret_26(10), 0(9)>
  status ={v} {CLOBBER};
  return _15;

}


pfe_l2br_table_do_update_entry_nolock (struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  errno_t ret;
  uint32_t cmd;
  uint32_t status;
  <unnamed type> _1;
  short unsigned int _2;
  unsigned char _3;
  long unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;
  unsigned char _7;
  unsigned char _8;
  long unsigned int _9;
  long unsigned int _10;
  long unsigned int _11;
  unsigned int _12;
  volatile uint32_t * _13;
  long unsigned int status.0_14;
  long unsigned int _15;
  long unsigned int _16;
  errno_t _18;
  const addr_t * _31;

  <bb 2> [local count: 1073741823]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret_24 = pfe_l2br_entry_to_cmd_args (l2br_21(D), entry_22(D));
  # DEBUG ret => ret_24
  # DEBUG BEGIN_STMT
  if (ret_24 != 0)
    goto <bb 13>; [34.00%]
  else
    goto <bb 3>; [66.00%]

  <bb 3> [local count: 708669604]:
  # DEBUG BEGIN_STMT
  _1 = l2br_21(D)->type;
  if (_1 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 4> [local count: 240947665]:
  # DEBUG BEGIN_STMT
  _2 = BIT_FIELD_REF <MEM[(void *)entry_22(D)], 16, 144>;
  if (_2 == 0)
    goto <bb 13>; [21.72%]
  else
    goto <bb 5>; [78.28%]

  <bb 5> [local count: 188613832]:
  # DEBUG BEGIN_STMT
  _3 = entry_22(D)->u.mac2f_entry.field_valids;
  _4 = (long unsigned int) _3;
  _5 = _4 << 8;
  _6 = _5 & 7936;
  cmd_26 = _6 | 4;
  # DEBUG cmd => cmd_26
  goto <bb 9>; [100.00%]

  <bb 6> [local count: 467721938]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 7>; [65.00%]
  else
    goto <bb 13>; [35.00%]

  <bb 7> [local count: 304019260]:
  # DEBUG BEGIN_STMT
  _7 = entry_22(D)->vlan_set;
  if (_7 == 0)
    goto <bb 13>; [21.72%]
  else
    goto <bb 8>; [78.28%]

  <bb 8> [local count: 237986276]:
  # DEBUG BEGIN_STMT
  _8 = entry_22(D)->u.vlan_entry.field_valids;
  _9 = (long unsigned int) _8;
  _10 = _9 << 8;
  _11 = _10 & 7936;
  cmd_25 = _11 | 4;
  # DEBUG cmd => cmd_25

  <bb 9> [local count: 426600108]:
  # cmd_17 = PHI <cmd_26(5), cmd_25(8)>
  # DEBUG cmd => cmd_17
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _12 = l2br_21(D)->regs.cmd_reg;
  _13 = (volatile uint32_t *) _12;
  *_13 ={v} cmd_17;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _31 = &MEM[(unsigned int *)l2br_21(D) + 36B];
  # DEBUG D#8 => l2br_21(D)
  ret_29 = pfe_l2br_wait_for_cmd_done.isra.0 (_31, &status);
  # DEBUG ret => ret_29
  # DEBUG BEGIN_STMT
  if (ret_29 != 0)
    goto <bb 13>; [34.00%]
  else
    goto <bb 10>; [66.00%]

  <bb 10> [local count: 281556072]:
  # DEBUG BEGIN_STMT
  status.0_14 = status;
  _15 = status.0_14 & 2;
  if (_15 != 0)
    goto <bb 13>; [21.72%]
  else
    goto <bb 11>; [78.28%]

  <bb 11> [local count: 220402093]:
  # DEBUG BEGIN_STMT
  _16 = status.0_14 & 8;
  if (_16 == 0)
    goto <bb 12>; [21.72%]
  else
    goto <bb 13>; [78.28%]

  <bb 12> [local count: 47871335]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 13> [local count: 1073741824]:
  # _18 = PHI <ret_24(2), 22(4), 22(7), 22(6), ret_29(9), 2(10), 114(12), 0(11)>
  status ={v} {CLOBBER};
  return _18;

}


pfe_l2br_entry_to_cmd_args (const struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  <unnamed type> _1;
  int _2;
  <unnamed-unsigned:13> _4;
  unsigned int _5;
  volatile uint32_t * _6;
  long unsigned int _7;
  <unnamed-unsigned:55> _8;
  unsigned int _10;
  volatile uint32_t * _11;
  long unsigned int _12;
  <unnamed-unsigned:55> _13;
  unsigned int _14;
  volatile uint32_t * _15;
  long unsigned int _16;
  errno_t _17;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG entry32 => entry_18(D)
  # DEBUG BEGIN_STMT
  # DEBUG action_data => 0
  # DEBUG BEGIN_STMT
  _1 = l2br_20(D)->type;
  if (_1 == 1)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072224]:
  _2 = pfe_l2br_entry_to_cmd_args.part.0 (l2br_20(D), entry_18(D));
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  if (_1 == 2)
    goto <bb 5>; [65.00%]
  else
    goto <bb 6>; [35.00%]

  <bb 5> [local count: 460635243]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _4 = entry_18(D)->u.vlan_entry.vlan;
  _5 = l2br_20(D)->regs.mac1_addr_reg;
  _6 = (volatile uint32_t *) _5;
  _7 = (long unsigned int) _4;
  *_6 ={v} _7;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _8 = entry_18(D)->u.vlan_entry.action_data;
  # DEBUG D#7 => _8 & 4294967295
  # DEBUG action_data => (uint64_t) D#7
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _10 = l2br_20(D)->regs.entry_reg;
  _11 = (volatile uint32_t *) _10;
  _12 = (long unsigned int) _8;
  *_11 ={v} _12;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _13 = _8 >> 32;
  # DEBUG action_data => (long long unsigned int) _13
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _14 = l2br_20(D)->regs.direct_reg;
  _15 = (volatile uint32_t *) _14;
  _16 = (long unsigned int) _13;
  *_15 ={v} _16;
  # DEBUG BEGIN_STMT

  <bb 6> [local count: 1073741824]:
  # _17 = PHI <22(4), 0(5), _2(3)>
  return _17;

}


pfe_l2br_table_get_col_ptr (const struct pfe_l2br_table_entry_t * entry)
{
  <unnamed type> _1;
  long unsigned int _2;
  <unnamed-unsigned:4> _3;
  short unsigned int _4;
  uint32_t _5;
  uint32_t _8;
  <unnamed-unsigned:4> _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_7(D)->type;
  switch (_1) <default: <L10> [33.33%], case 1: <L0> [33.33%], case 2: <L3> [33.33%]>

  <bb 3> [local count: 357913944]:
<L0>:
  _2 = pfe_l2br_table_get_col_ptr.part.0 (entry_7(D));
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 357878150]:
<L3>:
  # DEBUG BEGIN_STMT
  _3 = entry_7(D)->u.vlan_entry.flags;
  _9 = _3 & 4;
  if (_9 != 0)
    goto <bb 5>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 5> [local count: 121678571]:
  # DEBUG BEGIN_STMT
  _4 = entry_7(D)->u.vlan_entry.col_ptr;
  _8 = (uint32_t) _4;

  <bb 6> [local count: 1073634451]:
  # _5 = PHI <_2(3), _8(5), 0(4), 0(2)>
<L10>:
  return _5;

}


pfe_l2br_get_data (const struct pfe_l2br_table_t * l2br, struct pfe_l2br_table_entry_t * entry)
{
  uint64_t vlan_action_data;
  <unnamed type> _1;
  unsigned int _2;
  volatile uint32_t * _3;
  long unsigned int _4;
  <unnamed-unsigned:31> _5;
  unsigned int _6;
  volatile uint32_t * _7;
  long unsigned int _8;
  unsigned int _9;
  volatile uint32_t * _10;
  long unsigned int _11;
  long long unsigned int _12;
  <unnamed-unsigned:55> _13;
  long long unsigned int _18;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = l2br_16(D)->type;
  if (_1 == 1)
    goto <bb 3>; [34.00%]
  else
    goto <bb 4>; [66.00%]

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  _2 = l2br_16(D)->regs.entry_reg;
  _3 = (volatile uint32_t *) _2;
  _4 ={v} *_3;
  # DEBUG mac_action_data => _4 & 2147483647
  # DEBUG BEGIN_STMT
  _5 = (<unnamed-unsigned:31>) _4;
  entry_20(D)->u.mac2f_entry.action_data = _5;
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  _6 = l2br_16(D)->regs.entry_reg;
  _7 = (volatile uint32_t *) _6;
  _8 ={v} *_7;
  vlan_action_data_17 = (uint64_t) _8;
  # DEBUG vlan_action_data => vlan_action_data_17
  # DEBUG BEGIN_STMT
  _9 = l2br_16(D)->regs.direct_reg;
  _10 = (volatile uint32_t *) _9;
  _11 ={v} *_10;
  _12 = (long long unsigned int) _11;
  _18 = _12 << 32;
  vlan_action_data_19 = vlan_action_data_17 | _18;
  # DEBUG vlan_action_data => vlan_action_data_19
  # DEBUG BEGIN_STMT
  _13 = (<unnamed-unsigned:55>) vlan_action_data_19;
  entry_20(D)->u.vlan_entry.action_data = _13;

  <bb 5> [local count: 1073741824]:
  return;

}


oal_mutex_destroy (oal_mutex_t * mutex)
{
  errno_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _4 = oal_mutex_destroy_internal (mutex_2(D));
  return _4;

}


oal_mutex_init (oal_mutex_t * mutex)
{
  errno_t _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _4 = oal_mutex_init_internal (mutex_2(D));
  return _4;

}


