Parsed function:pfe_rtable_entry_to_5t.part.0
Parsed function:pfe_rtable_entry_set_dip.part.0
Parsed function:pfe_rtable_entry_set_sip.part.0
Parsed function:pfe_rtable_add_entry_validate.isra.0
Parsed function:pfe_rtable_phys_entry_get_pa.part.0
Parsed function:pfe_rtable_entry_get_hash.isra.0
Parsed function:pfe_rtable_get_free_stats_index.isra.0
Parsed function:oal_mutex_unlock.isra.0
Parsed function:oal_mutex_lock.isra.0
Parsed function:pfe_rtable_clear_stats
Parsed function:pfe_rtable_get_stats
Parsed function:pfe_rtable_get_next
Parsed function:pfe_rtable_get_first
Parsed function:pfe_rtable_match_criterion
Parsed function:pfe_rtable_entry_to_5t_out
Parsed function:pfe_rtable_entry_to_5t
Parsed function:pfe_rtable_get_entry_size
Parsed function:pfe_rtable_destroy
Parsed function:pfe_rtable_get_size
Parsed function:pfe_rtable_create
Parsed function:pfe_rtable_destroy_stats_table
Parsed function:pfe_rtable_create_stats_table
Parsed function:pfe_rtable_do_timeouts
Parsed function:pfe_rtable_del_entry_nolock
Parsed function:pfe_rtable_del_entry
Parsed function:pfe_rtable_add_entry
Parsed function:pfe_rtable_add_entry_id
Parsed function:pfe_rtable_add_entry_link
Parsed function:pfe_rtable_add_entry_get_phys_pa
Parsed function:pfe_rtable_entry_is_duplicate
Parsed function:pfe_rtable_entry_get_stats_index
Parsed function:pfe_rtable_entry_get_child
Parsed function:pfe_rtable_entry_set_child
Parsed function:pfe_rtable_entry_get_refptr
Parsed function:pfe_rtable_entry_set_refptr
Parsed function:pfe_rtable_entry_set_callback
Parsed function:pfe_rtable_entry_get_route_id
Parsed function:pfe_rtable_entry_set_route_id
Parsed function:pfe_rtable_entry_set_timeout
Parsed function:pfe_rtable_entry_get_action_flags
Parsed function:pfe_rtable_entry_get_id5t
Parsed function:pfe_rtable_entry_set_id5t
Parsed function:pfe_rtable_entry_set_out_pppoe_sid
Parsed function:pfe_rtable_entry_set_out_inner_vlan
Parsed function:pfe_rtable_entry_get_out_vlan
Parsed function:pfe_rtable_entry_set_out_vlan
Parsed function:pfe_rtable_entry_set_out_mac_addrs
Parsed function:pfe_rtable_entry_remove_ttl_decrement
Parsed function:pfe_rtable_entry_set_ttl_decrement
Parsed function:pfe_rtable_entry_set_out_dport
Parsed function:pfe_rtable_entry_set_out_sport
Parsed function:pfe_rtable_entry_set_out_dip
Parsed function:pfe_rtable_entry_set_out_sip
Parsed function:pfe_rtable_entry_set_dstif
Parsed function:pfe_rtable_entry_set_dstif_id
Parsed function:pfe_rtable_entry_get_proto
Parsed function:pfe_rtable_entry_set_proto
Parsed function:pfe_rtable_entry_get_dport
Parsed function:pfe_rtable_entry_set_dport
Parsed function:pfe_rtable_entry_get_sport
Parsed function:pfe_rtable_entry_set_sport
Parsed function:pfe_rtable_entry_get_dip
Parsed function:pfe_rtable_entry_set_dip
Parsed function:pfe_rtable_entry_get_sip
Parsed function:pfe_rtable_entry_set_sip
Parsed function:pfe_rtable_entry_set_5t
Parsed function:pfe_rtable_entry_free
Parsed function:pfe_rtable_entry_create
Parsed function:pfe_rtable_phys_entry_get_va
Parsed function:pfe_rtable_phys_entry_get_pa
Parsed function:pfe_rtable_phys_entry_is_pool
Parsed function:pfe_rtable_phys_entry_is_htable
Parsed function:pfe_rtable_invalidate
Parsed function:pfe_get_crc32_be
Parsed function:pfe_rtable_get_by_phys_entry_va
Parsed function:pfe_rtable_free_stats_index
Parsed function:fifo_get
Parsed function:fifo_put
Parsed function:oal_mutex_destroy
Parsed function:oal_mutex_init
Dump after hash based groups
Congruence classes: 74 (unique hash values: 74), with total: 83 items
Class size histogram [num of members]: number of classe number of classess
[1]: 65 classes
[2]: 9 classes


Dump after WPA based types groups
Congruence classes: 77 (unique hash values: 74), with total: 83 items
Class size histogram [num of members]: number of classe number of classess
[1]: 71 classes
[2]: 6 classes


Worklist has been filled with: 34
Address reference subdivision created: 0 new classes.
Dump after callgraph-based congruence reduction
Congruence classes: 78 (unique hash values: 74), with total: 83 items
Class size histogram [num of members]: number of classe number of classess
[1]: 73 classes
[2]: 5 classes


Init called for 10 items (12.05%).
Dump after full equality comparison of groups
Congruence classes: 83 (unique hash values: 74), with total: 83 items
Class size histogram [num of members]: number of classe number of classess
[1]: 83 classes


Worklist has been filled with: 37
Address reference subdivision created: 0 new classes.
Congruence classes: 83 (unique hash values: 74), with total: 83 items
Class size histogram [num of members]: number of classe number of classess
[1]: 83 classes



Item count: 83
Congruent classes before: 83, after: 83
Average class size before: 1.00, after: 1.00
Average non-singular class size: 0.00, count: 0
Equal symbols: 0
Fraction of visited symbols: 0.00%

pfe_rtable_entry_to_5t.part.0 (const struct pfe_rtable_entry_t * entry, struct pfe_5_tuple_t * tuple)
{
  errno_t ret;
  struct pfe_ct_rtable_entry_t * _2;
  short unsigned int _3;
  short unsigned int _4;
  short unsigned int _6;
  short unsigned int _7;
  unsigned char _8;

  <bb 4> [local count: 1073741824]:

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = entry_1(D)->phys_entry;
  _3 = _2->sport;
  _4 = _3 r>> 8;
  tuple_5(D)->sport = _4;
  # DEBUG BEGIN_STMT
  _6 = _2->dport;
  _7 = _6 r>> 8;
  tuple_5(D)->dport = _7;
  # DEBUG BEGIN_STMT
  _8 = _2->proto;
  tuple_5(D)->proto = _8;

  <bb 3> [local count: 1073741824]:
  # ret_9 = PHI <0(2)>
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  return ret_9;

}


pfe_rtable_entry_set_dip.part.0 (struct pfe_rtable_entry_t * entry, const struct pfe_ip_addr_t * ip_addr)
{
  struct pfe_ct_rtable_entry_t * _2;
  unsigned char _3;
  uint32_t * _4;
  const union 
{
  uint16_t v6[8];
} * _6;
  struct pfe_ct_rtable_entry_t * _7;
  int _8;

  <bb 7> [local count: 1073741824]:

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = entry_1(D)->phys_entry;
  _3 = _2->flag_ipv6;
  if (_3 != 255)
    goto <bb 3>; [79.76%]
  else
    goto <bb 5>; [20.24%]

  <bb 3> [local count: 856416480]:
  if (_3 != 1)
    goto <bb 4>; [35.00%]
  else
    goto <bb 5>; [65.00%]

  <bb 4> [local count: 299745768]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 773996057]:
  # DEBUG BEGIN_STMT
  _4 = &_2->ipv.v6.dip[0];
  _6 = &ip_addr_5(D)->v6;
  memcpy (_4, _6, 16);
  # DEBUG BEGIN_STMT
  _7 = entry_1(D)->phys_entry;
  _7->flag_ipv6 = 1;

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

}


pfe_rtable_entry_set_sip.part.0 (struct pfe_rtable_entry_t * entry, const struct pfe_ip_addr_t * ip_addr)
{
  struct pfe_ct_rtable_entry_t * _2;
  unsigned char _3;
  uint32_t * _4;
  const union 
{
  uint16_t v6[8];
} * _6;
  struct pfe_ct_rtable_entry_t * _7;
  int _8;

  <bb 7> [local count: 1073741824]:

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = entry_1(D)->phys_entry;
  _3 = _2->flag_ipv6;
  if (_3 != 255)
    goto <bb 3>; [79.76%]
  else
    goto <bb 5>; [20.24%]

  <bb 3> [local count: 856416480]:
  if (_3 != 1)
    goto <bb 4>; [35.00%]
  else
    goto <bb 5>; [65.00%]

  <bb 4> [local count: 299745768]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 773996057]:
  # DEBUG BEGIN_STMT
  _4 = &_2->ipv.v6.sip[0];
  _6 = &ip_addr_5(D)->v6;
  memcpy (_4, _6, 16);
  # DEBUG BEGIN_STMT
  _7 = entry_1(D)->phys_entry;
  _7->flag_ipv6 = 1;

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

}


pfe_rtable_add_entry_validate.isra.0 (struct pfe_rtable_t * rtable, struct pfe_rtable_entry_t * entry, struct pfe_ct_rtable_entry_t * ISRA.50)
{
  struct pfe_ct_rtable_entry_t * _2;
  unsigned char _3;
  <unnamed type> iftmp.18_4;
  struct pfe_ct_rtable_entry_t * _6;
  struct pfe_rtable_entry_tag * iftmp.19_8;
  struct pfe_rtable_entry_tag * iftmp.19_9;
  struct LLIST_Struct * _10;
  struct LLIST_t * _11;
  struct LLIST_t * _12;
  long unsigned int _13;
  struct pfe_class_t * _14;
  long unsigned int _15;
  long unsigned int _16;

  <bb 11> [local count: 1073741824]:
  # DEBUG phys_entry_temp s=> phys_entry_temp

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = entry_1(D)->phys_entry;
  _3 = _2->flag_ipv6;
  if (_3 == 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 3>; [50.00%]

  <bb 3> [local count: 536870913]:

  <bb 4> [local count: 1073741824]:
  # iftmp.18_4 = PHI <16777216(2), 50331648(3)>
  _2->flags = iftmp.18_4;
  # DEBUG BEGIN_STMT
  _6 = ISRA.50_31(D);
  if (_6 != 0B)
    goto <bb 5>; [53.47%]
  else
    goto <bb 6>; [46.53%]

  <bb 5> [local count: 574129754]:
  iftmp.19_8 = pfe_rtable_get_by_phys_entry_va (rtable_7(D), _6);

  <bb 6> [local count: 1073741824]:
  # iftmp.19_9 = PHI <0B(4), iftmp.19_8(5)>
  entry_1(D)->prev = iftmp.19_9;
  # DEBUG BEGIN_STMT
  entry_1(D)->next = 0B;
  # DEBUG BEGIN_STMT
  if (iftmp.19_9 != 0B)
    goto <bb 7>; [70.00%]
  else
    goto <bb 8>; [30.00%]

  <bb 7> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  iftmp.19_9->next = entry_1(D);

  <bb 8> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _10 = rtable_7(D)->active_entries.prPrev;
  entry_1(D)->list_entry.prPrev = _10;
  # DEBUG BEGIN_STMT
  _11 = &rtable_7(D)->active_entries;
  entry_1(D)->list_entry.prNext = _11;
  # DEBUG BEGIN_STMT
  _12 = &entry_1(D)->list_entry;
  _10->prNext = _12;
  # DEBUG BEGIN_STMT
  rtable_7(D)->active_entries.prPrev = _12;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_1(D)->rtable = rtable_7(D);
  # DEBUG BEGIN_STMT
  _13 = rtable_7(D)->active_entries_count;
  if (_13 == 0)
    goto <bb 9>; [33.00%]
  else
    goto <bb 10>; [67.00%]

  <bb 9> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _14 = rtable_7(D)->class;
  pfe_class_rtable_lookup_enable (_14);

  <bb 10> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _15 = rtable_7(D)->active_entries_count;
  _16 = _15 + 1;
  rtable_7(D)->active_entries_count = _16;
  # DEBUG BEGIN_STMT
  return;

}


pfe_rtable_phys_entry_get_pa.part.0 (struct pfe_rtable_t * rtable, struct pfe_ct_rtable_entry_t * phys_entry_va)
{
  struct pfe_ct_rtable_entry_t * pa;
  unsigned char _3;
  unsigned int phys_entry_va.7_4;
  unsigned int _5;
  unsigned int _6;

  <bb 5> [local count: 1073741824]:

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _3 = pfe_rtable_phys_entry_is_pool (rtable_1(D), phys_entry_va_2(D));
  if (_3 == 1)
    goto <bb 3>; [55.78%]
  else
    goto <bb 4>; [44.22%]

  <bb 3> [local count: 598933190]:
  # DEBUG BEGIN_STMT
  phys_entry_va.7_4 = (unsigned int) phys_entry_va_2(D);
  _5 = rtable_1(D)->pool_va_pa_offset;
  _6 = phys_entry_va.7_4 - _5;
  pa_7 = (struct pfe_ct_rtable_entry_t *) _6;
  # DEBUG pa => pa_7

  <bb 4> [local count: 1073741824]:
  # pa_8 = PHI <0B(2), pa_7(3)>
  # DEBUG pa => pa_8
  # DEBUG BEGIN_STMT
  return pa_8;

}


pfe_rtable_entry_get_hash.isra.0 (struct pfe_ct_rtable_entry_t * * ISRA.37, pfe_ipv_type_t ipv_type, uint32_t hash_mask)
{
  uint32_t temp;
  uint32_t sport;
  uint32_t crc_ipv6;
  int32_t jj;
  struct pfe_ct_rtable_entry_t * _3;
  long unsigned int _4;
  short unsigned int _5;
  short unsigned int _6;
  short unsigned int _7;
  short unsigned int _8;
  unsigned int _9;
  long unsigned int _10;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _16;
  long unsigned int _17;
  long unsigned int _18;
  long unsigned int _19;
  long unsigned int _20;
  long unsigned int _21;
  long unsigned int _22;
  long unsigned int _23;
  long unsigned int _24;
  long unsigned int _25;
  unsigned char _27;
  long unsigned int _28;
  short unsigned int _30;
  short unsigned int _31;
  short unsigned int _32;
  short unsigned int _33;
  unsigned int _34;
  struct pfe_ct_rtable_entry_t * _36;
  long unsigned int _38;
  struct pfe_ct_rtable_entry_t * _42;
  short unsigned int _43;
  short unsigned int _44;
  short unsigned int _45;
  short unsigned int _46;
  unsigned int _47;
  long unsigned int _48;
  long unsigned int _49;
  long unsigned int _50;
  long unsigned int _51;
  long unsigned int _53;
  long unsigned int _55;
  long unsigned int _56;
  long unsigned int _57;
  long unsigned int _58;
  long unsigned int _59;
  long unsigned int _60;
  long unsigned int _61;
  long unsigned int _62;
  long unsigned int _63;
  long unsigned int _64;
  long unsigned int _66;
  long unsigned int _67;
  long unsigned int _68;
  long unsigned int _69;
  long unsigned int _70;
  long unsigned int _71;
  long unsigned int _72;
  long unsigned int _73;
  long unsigned int _74;
  long unsigned int _75;
  long unsigned int _77;
  long unsigned int _78;
  long unsigned int _79;
  long unsigned int _80;
  long unsigned int _81;
  long unsigned int _82;
  long unsigned int _83;
  long unsigned int _84;
  long unsigned int _85;
  long unsigned int _86;
  long unsigned int _88;
  long unsigned int _89;
  long unsigned int _90;
  long unsigned int _91;
  long unsigned int _92;
  long unsigned int _93;
  long unsigned int _94;
  long unsigned int _95;
  long unsigned int _96;
  long unsigned int _97;
  unsigned char _99;
  long unsigned int _100;
  short unsigned int _102;
  short unsigned int _103;
  short unsigned int _104;
  short unsigned int _105;
  unsigned int _106;
  long unsigned int _110;
  long unsigned int _111;

  <bb 2> [local count: 858993456]:
  # DEBUG entry s=> entry
  # DEBUG BEGIN_STMT
  # DEBUG temp => 0
  # DEBUG BEGIN_STMT
  # DEBUG crc => 4294967295
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (ipv_type_1(D) == 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 429496728]:
  # DEBUG BEGIN_STMT
  _3 = *ISRA.37_118(D);
  _4 = _3->ipv.v4.sip;
  _5 = _3->sport;
  _6 = _5 >> 8;
  _7 = _5 << 8;
  _8 = _6 | _7;
  _9 = (unsigned int) _8;
  _10 = _9 << 8;
  _11 = _10 & 16711680;
  _12 = _9 << 24;
  _13 = _11 | _12;
  _14 = _4 ^ _13;
  sport = _14;
  # DEBUG BEGIN_STMT
  temp_15 = pfe_get_crc32_be (4294967295, &sport, 4);
  # DEBUG temp => temp_15
  # DEBUG BEGIN_STMT
  _16 = _3->ipv.v4.dip;
  _17 = _16 >> 24;
  _18 = _16 >> 8;
  _19 = _18 & 65280;
  _20 = _17 | _19;
  _21 = _16 << 8;
  _22 = _21 & 16711680;
  _23 = _20 | _22;
  _24 = _16 << 24;
  _25 = _23 | _24;
  temp_26 = temp_15 + _25;
  # DEBUG temp => temp_26
  # DEBUG BEGIN_STMT
  _27 = _3->proto;
  _28 = (long unsigned int) _27;
  temp_29 = temp_26 + _28;
  # DEBUG temp => temp_29
  # DEBUG BEGIN_STMT
  _30 = _3->dport;
  _31 = _30 >> 8;
  _32 = _30 << 8;
  _33 = _31 | _32;
  _34 = (unsigned int) _33;
  temp_35 = temp_29 + _34;
  # DEBUG temp => temp_35
  goto <bb 8>; [100.00%]

  <bb 4> [local count: 429496728]:
  # DEBUG BEGIN_STMT
  if (ipv_type_1(D) == 1)
    goto <bb 10>; [50.00%]
  else
    goto <bb 9>; [50.00%]

  <bb 10> [local count: 214748364]:
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 858993459]:
  # DEBUG BEGIN_STMT
  _36 = *ISRA.37_118(D);
  _38 = _36->ipv.v6.sip[jj_37];
  crc_ipv6_40 = _38 + crc_ipv6_39;
  # DEBUG crc_ipv6 => crc_ipv6_40
  # DEBUG BEGIN_STMT
  jj_41 = jj_37 + 1;
  # DEBUG jj => jj_41

  <bb 6> [local count: 1073741824]:
  # crc_ipv6_39 = PHI <crc_ipv6_40(5), 0(10)>
  # jj_37 = PHI <jj_41(5), 0(10)>
  # DEBUG jj => jj_37
  # DEBUG crc_ipv6 => crc_ipv6_39
  # DEBUG BEGIN_STMT
  if (jj_37 != 4)
    goto <bb 5>; [80.00%]
  else
    goto <bb 7>; [20.00%]

  <bb 7> [local count: 214748365]:
  # crc_ipv6_52 = PHI <crc_ipv6_39(6)>
  # DEBUG BEGIN_STMT
  _42 = *ISRA.37_118(D);
  _43 = _42->sport;
  _44 = _43 >> 8;
  _45 = _43 << 8;
  _46 = _44 | _45;
  _47 = (unsigned int) _46;
  _48 = _47 << 8;
  _49 = _48 & 16711680;
  _50 = _47 << 24;
  _51 = _49 | _50;
  _53 = _51 ^ crc_ipv6_52;
  sport = _53;
  # DEBUG BEGIN_STMT
  temp_54 = pfe_get_crc32_be (4294967295, &sport, 4);
  # DEBUG temp => temp_54
  # DEBUG BEGIN_STMT
  _55 = _42->ipv.v6.dip[0];
  _56 = _55 >> 24;
  _57 = _55 >> 8;
  _58 = _57 & 65280;
  _59 = _56 | _58;
  _60 = _55 << 8;
  _61 = _60 & 16711680;
  _62 = _59 | _61;
  _63 = _55 << 24;
  _64 = _62 | _63;
  temp_65 = temp_54 + _64;
  # DEBUG temp => temp_65
  # DEBUG BEGIN_STMT
  _66 = _42->ipv.v6.dip[1];
  _67 = _66 >> 24;
  _68 = _66 >> 8;
  _69 = _68 & 65280;
  _70 = _67 | _69;
  _71 = _66 << 8;
  _72 = _71 & 16711680;
  _73 = _70 | _72;
  _74 = _66 << 24;
  _75 = _73 | _74;
  temp_76 = temp_65 + _75;
  # DEBUG temp => temp_76
  # DEBUG BEGIN_STMT
  _77 = _42->ipv.v6.dip[2];
  _78 = _77 >> 24;
  _79 = _77 >> 8;
  _80 = _79 & 65280;
  _81 = _78 | _80;
  _82 = _77 << 8;
  _83 = _82 & 16711680;
  _84 = _81 | _83;
  _85 = _77 << 24;
  _86 = _84 | _85;
  temp_87 = temp_76 + _86;
  # DEBUG temp => temp_87
  # DEBUG BEGIN_STMT
  _88 = _42->ipv.v6.dip[3];
  _89 = _88 >> 24;
  _90 = _88 >> 8;
  _91 = _90 & 65280;
  _92 = _89 | _91;
  _93 = _88 << 8;
  _94 = _93 & 16711680;
  _95 = _92 | _94;
  _96 = _88 << 24;
  _97 = _95 | _96;
  temp_98 = temp_87 + _97;
  # DEBUG temp => temp_98
  # DEBUG BEGIN_STMT
  _99 = _42->proto;
  _100 = (long unsigned int) _99;
  temp_101 = temp_98 + _100;
  # DEBUG temp => temp_101
  # DEBUG BEGIN_STMT
  _102 = _42->dport;
  _103 = _102 >> 8;
  _104 = _102 << 8;
  _105 = _103 | _104;
  _106 = (unsigned int) _105;
  temp_107 = temp_101 + _106;
  # DEBUG temp => temp_107

  <bb 8> [local count: 644245093]:
  # temp_108 = PHI <temp_35(3), temp_107(7)>
  # DEBUG temp => temp_108
  # DEBUG BEGIN_STMT
  _110 = temp_108 & hash_mask_109(D);

  <bb 9> [local count: 858993458]:
  # _111 = PHI <0(4), _110(8)>
  sport ={v} {CLOBBER};
  return _111;

}


pfe_rtable_get_free_stats_index.isra.0 (const uint16_t ISRA.31)
{
  uint8_t index;
  int _2;
  unsigned char _3;
  int _4;
  short unsigned int _6;
  short unsigned int _8;
  short unsigned int _9;
  short unsigned int _10;
  short unsigned int _12;
  short unsigned int _13;

  <bb 10> [local count: 114863532]:
  # DEBUG rtable s=> rtable

  <bb 2> [local count: 114863532]:
  # DEBUG BEGIN_STMT
  # DEBUG index => 1
  # DEBUG BEGIN_STMT
  goto <bb 6>; [100.00%]

  <bb 3> [local count: 1014686025]:
  # DEBUG BEGIN_STMT
  _2 = (int) index_1;
  _3 = stats_tbl_index[_2];
  if (_3 == 0)
    goto <bb 4>; [5.50%]
  else
    goto <bb 5>; [94.50%]

  <bb 4> [local count: 55807731]:
  # _4 = PHI <_2(3)>
  # _12 = PHI <_6(3)>
  # _13 = PHI <_8(3)>
  # index_14 = PHI <index_1(3)>
  # DEBUG BEGIN_STMT
  stats_tbl_index[_4] = 1;
  # DEBUG BEGIN_STMT
  goto <bb 7>; [100.00%]

  <bb 5> [local count: 958878293]:
  # DEBUG BEGIN_STMT
  index_5 = index_1 + 1;
  # DEBUG index => index_5

  <bb 6> [local count: 1073741824]:
  # index_1 = PHI <1(2), index_5(5)>
  # DEBUG index => index_1
  # DEBUG BEGIN_STMT
  _6 = (short unsigned int) index_1;
  _8 = ISRA.31_19(D);
  if (_6 < _8)
    goto <bb 3>; [94.50%]
  else
    goto <bb 7>; [5.50%]

  <bb 7> [local count: 114863532]:
  # _9 = PHI <_12(4), _6(6)>
  # _10 = PHI <_13(4), _8(6)>
  # index_15 = PHI <index_14(4), index_1(6)>
  # DEBUG BEGIN_STMT
  if (_9 == _10)
    goto <bb 8>; [34.00%]
  else
    goto <bb 9>; [66.00%]

  <bb 8> [local count: 39053601]:
  # DEBUG BEGIN_STMT
  # DEBUG index => 0

  <bb 9> [local count: 114863532]:
  # index_11 = PHI <index_15(7), 0(8)>
  # DEBUG index => index_11
  # DEBUG BEGIN_STMT
  return index_11;

}


oal_mutex_unlock.isra.0 (const oal_mutex_t ISRA.29)
{
  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.29_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.27)
{
  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.27_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;

}


pfe_rtable_clear_stats (const struct pfe_rtable_t * rtable, uint8_t conntrack_index)
{
  uint16_t offset;
  errno_t ret;
  short unsigned int _1;
  short unsigned int _2;
  struct pfe_class_t * _3;
  long unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG offset => 0
  # DEBUG BEGIN_STMT
  _1 = (short unsigned int) conntrack_index_9(D);
  _2 = rtable_11(D)->conntrack_stats_table_size;
  if (_1 > _2)
    goto <bb 4>; [52.23%]
  else
    goto <bb 3>; [47.77%]

  <bb 3> [local count: 512926469]:
  # DEBUG BEGIN_STMT
  offset_12 = _1 * 8;
  # DEBUG offset => offset_12
  # DEBUG BEGIN_STMT
  _3 = rtable_11(D)->class;
  _4 = rtable_11(D)->conntrack_stats_table_addr;
  _5 = (long unsigned int) offset_12;
  _6 = _4 + _5;
  ret_14 = pfe_class_write_dmem (_3, -1, _6, &pfe_rtable_clear_stats_stat, 8);
  # DEBUG ret => ret_14

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

}


pfe_rtable_get_stats (const struct pfe_rtable_t * rtable, struct pfe_ct_conntrack_stats_t * stat, uint8_t conntrack_index)
{
  uint16_t offset;
  struct pfe_ct_conntrack_stats_t stats;
  errno_t ret;
  uint32_t i;
  short unsigned int _1;
  struct pfe_class_t * _2;
  long int i.25_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;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _15;
  long unsigned int _16;
  long unsigned int _17;
  long unsigned int _18;
  long unsigned int _19;
  long unsigned int _20;
  long unsigned int _21;
  long unsigned int _22;
  long unsigned int _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;
  struct pfe_class_t * _31;
  long unsigned int _32;

  <bb 2> [local count: 114863532]:
  # DEBUG BEGIN_STMT
  # DEBUG i => 0
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG offset => 0
  # DEBUG BEGIN_STMT
  _1 = (short unsigned int) conntrack_index_38(D);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  memset (stat_41(D), 0, 8);
  # DEBUG BEGIN_STMT
  offset_43 = _1 * 8;
  # DEBUG offset => offset_43
  # DEBUG BEGIN_STMT
  goto <bb 5>; [100.00%]

  <bb 3> [local count: 1014686025]:
  # DEBUG BEGIN_STMT
  memset (&stats, 0, 8);
  # DEBUG BEGIN_STMT
  _2 = rtable_40(D)->class;
  i.25_3 = (long int) i_33;
  _4 = rtable_40(D)->conntrack_stats_table_addr;
  _5 = (long unsigned int) offset_43;
  _6 = _4 + _5;
  ret_47 = pfe_class_read_dmem (_2, i.25_3, &stats, _6, 8);
  # DEBUG ret => ret_47
  # DEBUG BEGIN_STMT
  if (ret_47 != 0)
    goto <bb 6>; [5.50%]
  else
    goto <bb 4>; [94.50%]

  <bb 4> [local count: 958878293]:
  # DEBUG BEGIN_STMT
  _7 = stat_41(D)->hit;
  _8 = stats.hit;
  _9 = _8 >> 24;
  _10 = _8 >> 8;
  _11 = _10 & 65280;
  _12 = _9 | _11;
  _13 = _8 << 8;
  _14 = _13 & 16711680;
  _15 = _12 | _14;
  _16 = _8 << 24;
  _17 = _15 | _16;
  _18 = _7 + _17;
  stat_41(D)->hit = _18;
  # DEBUG BEGIN_STMT
  _19 = stat_41(D)->hit_bytes;
  _20 = stats.hit_bytes;
  _21 = _20 >> 24;
  _22 = _20 >> 8;
  _23 = _22 & 65280;
  _24 = _21 | _23;
  _25 = _20 << 8;
  _26 = _25 & 16711680;
  _27 = _24 | _26;
  _28 = _20 << 24;
  _29 = _27 | _28;
  _30 = _19 + _29;
  stat_41(D)->hit_bytes = _30;
  # DEBUG BEGIN_STMT
  i_50 = i_33 + 1;
  # DEBUG i => i_50

  <bb 5> [local count: 1073741824]:
  # i_33 = PHI <0(2), i_50(4)>
  # ret_34 = PHI <0(2), 0(4)>
  # DEBUG ret => ret_34
  # DEBUG i => i_33
  # DEBUG BEGIN_STMT
  _31 = rtable_40(D)->class;
  _32 = pfe_class_get_num_of_pes (_31);
  if (_32 > i_33)
    goto <bb 3>; [94.50%]
  else
    goto <bb 6>; [5.50%]

  <bb 6> [local count: 114863532]:
  # ret_35 = PHI <ret_47(3), ret_34(5)>
  # DEBUG ret => ret_35
  # DEBUG BEGIN_STMT
  stats ={v} {CLOBBER};
  return ret_35;

}


pfe_rtable_get_next (struct pfe_rtable_t * rtable)
{
  bool_t match;
  struct pfe_rtable_entry_t * entry;
  struct LLIST_Struct * _1;
  struct LLIST_t * _2;
  struct LLIST_t * _3;
  int _4;
  struct LLIST_Struct * _5;
  <unnamed type> _6;
  union pfe_rtable_criterion_arg_t * _7;
  unsigned char _8;
  struct LLIST_t * _9;
  short unsigned int _26;
  short unsigned int _27;

  <bb 2> [local count: 141584257]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT
  _1 = rtable_18(D)->active_entries.prNext;
  _2 = &rtable_18(D)->active_entries;
  if (_1 != _2)
    goto <bb 4>; [85.10%]
  else
    goto <bb 13>; [14.90%]

  <bb 4> [local count: 120488203]:
  # DEBUG BEGIN_STMT
  _3 = rtable_18(D)->cur_item;
  if (_2 == _3)
    goto <bb 13>; [26.22%]
  else
    goto <bb 6>; [73.78%]

  <bb 6> [local count: 88896196]:
  # DEBUG BEGIN_STMT
  # DEBUG D#16 => &rtable_18(D)->lock
  _26 = MEM[(const oal_mutex_t *)rtable_18(D) + 60B];
  # DEBUG D#1 => D#16
  oal_mutex_lock.isra.0 (_26);
  # DEBUG BEGIN_STMT
  goto <bb 15>; [100.00%]

  <bb 7> [local count: 1014686024]:
  # DEBUG BEGIN_STMT
  _4 = _9 - 52B;
  entry_21 = (struct pfe_rtable_entry_t *) _4;
  # DEBUG entry => entry_21
  # DEBUG BEGIN_STMT
  _5 = _9->prNext;
  rtable_18(D)->cur_item = _5;
  # DEBUG BEGIN_STMT
  if (_9 != 52B)
    goto <bb 8>; [53.47%]
  else
    goto <bb 10>; [46.53%]

  <bb 8> [local count: 542552617]:
  # DEBUG BEGIN_STMT
  _6 = rtable_18(D)->cur_crit;
  _7 = &rtable_18(D)->cur_crit_arg;
  _8 = pfe_rtable_match_criterion (_6, _7, entry_21);
  if (_8 == 1)
    goto <bb 11>; [5.50%]
  else
    goto <bb 10>; [94.50%]

  <bb 10> [local count: 984845630]:
  # entry_16 = PHI <entry_21(7), entry_21(8)>

  <bb 15> [local count: 1073741824]:
  # entry_10 = PHI <entry_16(10), entry_19(D)(6)>
  # DEBUG entry => entry_10
  # DEBUG BEGIN_STMT
  _9 = rtable_18(D)->cur_item;
  if (_2 != _9)
    goto <bb 7>; [94.50%]
  else
    goto <bb 11>; [5.50%]

  <bb 11> [local count: 88896194]:
  # entry_11 = PHI <entry_21(8), entry_10(15)>
  # match_13 = PHI <1(8), 0(15)>
  # DEBUG match => match_13
  # DEBUG entry => entry_11
  # DEBUG BEGIN_STMT
  # DEBUG D#17 => &rtable_18(D)->lock
  _27 = MEM[(const oal_mutex_t *)rtable_18(D) + 60B];
  # DEBUG D#2 => D#17
  oal_mutex_unlock.isra.0 (_27);
  # DEBUG match => match_13
  # DEBUG entry => entry_11
  # DEBUG BEGIN_STMT
  if (match_13 != 1)
    goto <bb 14>; [44.22%]
  else
    goto <bb 13>; [55.78%]

  <bb 14> [local count: 39309897]:

  <bb 13> [local count: 141584255]:
  # entry_12 = PHI <entry_11(11), 0B(2), 0B(14), 0B(4)>
  # DEBUG match => NULL
  # DEBUG entry => entry_12
  # DEBUG BEGIN_STMT
  return entry_12;

}


pfe_rtable_get_first (struct pfe_rtable_t * rtable, pfe_rtable_get_criterion_t crit, void * arg)
{
  bool_t known_crit;
  bool_t match;
  struct pfe_rtable_entry_t * entry;
  struct LLIST_t * item;
  struct pfe_5_tuple_t * _1;
  struct LLIST_Struct * _2;
  struct LLIST_t * _3;
  int _4;
  struct LLIST_Struct * _5;
  <unnamed type> _6;
  union pfe_rtable_criterion_arg_t * _7;
  unsigned char _8;
  unsigned int _24;
  unsigned int _27;
  short unsigned int _38;
  short unsigned int _39;

  <bb 2> [local count: 272546913]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG entry => 0B
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT
  # DEBUG known_crit => 1
  # DEBUG BEGIN_STMT
  rtable_20(D)->cur_crit = crit_21(D);
  # DEBUG BEGIN_STMT
  switch (crit_21(D)) <default: <L7> [16.67%], case 0 ... 2: <L23> [16.67%], case 3: <L3> [16.67%], case 4: <L4> [16.67%], case 5: <L6> [16.67%], case 6: <L5> [16.67%]>

  <bb 3> [local count: 45433570]:
<L3>:
  # DEBUG BEGIN_STMT
  rtable_20(D)->cur_crit_arg.iface = arg_23(D);
  # DEBUG BEGIN_STMT
  goto <bb 8>; [100.00%]

  <bb 4> [local count: 45433570]:
<L4>:
  # DEBUG BEGIN_STMT
  _27 = MEM[(char * {ref-all})arg_23(D)];
  MEM[(char * {ref-all})rtable_20(D) + 68B] = _27;
  # DEBUG BEGIN_STMT
  goto <bb 8>; [100.00%]

  <bb 5> [local count: 45433570]:
<L5>:
  # DEBUG BEGIN_STMT
  _24 = MEM[(char * {ref-all})arg_23(D)];
  MEM[(char * {ref-all})rtable_20(D) + 68B] = _24;
  # DEBUG BEGIN_STMT
  goto <bb 8>; [100.00%]

  <bb 6> [local count: 45433570]:
<L6>:
  # DEBUG BEGIN_STMT
  _1 = &rtable_20(D)->cur_crit_arg.five_tuple;
  memcpy (_1, arg_23(D), 50);
  # DEBUG BEGIN_STMT
  goto <bb 8>; [100.00%]

  <bb 7> [local count: 45433570]:
<L7>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG known_crit => 0
  # DEBUG BEGIN_STMT

  <bb 8> [local count: 272601423]:
  # known_crit_14 = PHI <1(2), 1(3), 1(4), 1(5), 1(6), 0(7)>
<L23>:
  # DEBUG known_crit => known_crit_14
  # DEBUG BEGIN_STMT
  _2 = rtable_20(D)->active_entries.prNext;
  _3 = &rtable_20(D)->active_entries;
  if (_2 != _3)
    goto <bb 9>; [85.10%]
  else
    goto <bb 17>; [14.90%]

  <bb 9> [local count: 231983810]:
  if (known_crit_14 == 1)
    goto <bb 10>; [38.32%]
  else
    goto <bb 17>; [61.68%]

  <bb 10> [local count: 88896196]:
  # DEBUG BEGIN_STMT
  # DEBUG D#14 => &rtable_20(D)->lock
  _38 = MEM[(const oal_mutex_t *)rtable_20(D) + 60B];
  # DEBUG D#1 => D#14
  oal_mutex_lock.isra.0 (_38);
  # DEBUG BEGIN_STMT
  item_32 = rtable_20(D)->active_entries.prNext;
  # DEBUG item => item_32
  goto <bb 14>; [100.00%]

  <bb 11> [local count: 1014686025]:
  # DEBUG BEGIN_STMT
  _4 = item_9 - 52B;
  entry_33 = (struct pfe_rtable_entry_t *) _4;
  # DEBUG entry => entry_33
  # DEBUG BEGIN_STMT
  _5 = item_9->prNext;
  rtable_20(D)->cur_item = _5;
  # DEBUG BEGIN_STMT
  if (item_9 != 52B)
    goto <bb 12>; [53.47%]
  else
    goto <bb 13>; [46.53%]

  <bb 12> [local count: 542552618]:
  # DEBUG BEGIN_STMT
  _6 = rtable_20(D)->cur_crit;
  _7 = &rtable_20(D)->cur_crit_arg;
  _8 = pfe_rtable_match_criterion (_6, _7, entry_33);
  if (_8 == 1)
    goto <bb 15>; [5.50%]
  else
    goto <bb 13>; [94.50%]

  <bb 13> [local count: 984845631]:
  # DEBUG BEGIN_STMT
  item_36 = item_9->prNext;
  # DEBUG item => item_36

  <bb 14> [local count: 1073741824]:
  # item_9 = PHI <item_32(10), item_36(13)>
  # entry_10 = PHI <0B(10), entry_33(13)>
  # DEBUG entry => entry_10
  # DEBUG item => item_9
  # DEBUG BEGIN_STMT
  if (_3 != item_9)
    goto <bb 11>; [94.50%]
  else
    goto <bb 15>; [5.50%]

  <bb 15> [local count: 88896194]:
  # entry_11 = PHI <entry_33(12), entry_10(14)>
  # match_13 = PHI <1(12), 0(14)>
  # DEBUG match => match_13
  # DEBUG entry => entry_11
  # DEBUG BEGIN_STMT
  # DEBUG D#15 => &rtable_20(D)->lock
  _39 = MEM[(const oal_mutex_t *)rtable_20(D) + 60B];
  # DEBUG D#2 => D#15
  oal_mutex_unlock.isra.0 (_39);
  # DEBUG match => match_13
  # DEBUG entry => entry_11
  # DEBUG BEGIN_STMT
  if (match_13 != 1)
    goto <bb 16>; [44.22%]
  else
    goto <bb 17>; [55.78%]

  <bb 16> [local count: 39309897]:

  <bb 17> [local count: 272601421]:
  # entry_12 = PHI <entry_11(15), 0B(8), 0B(16), 0B(9)>
  # DEBUG match => NULL
  # DEBUG entry => entry_12
  # DEBUG BEGIN_STMT
  return entry_12;

}


pfe_rtable_match_criterion (pfe_rtable_get_criterion_t crit, const union pfe_rtable_criterion_arg_t * arg, struct pfe_rtable_entry_t * entry)
{
  struct pfe_5_tuple_t five_tuple;
  bool_t match;
  struct pfe_ct_rtable_entry_t * _1;
  unsigned char _2;
  _Bool _3;
  struct pfe_ct_rtable_entry_t * _4;
  unsigned char _5;
  _Bool _6;
  struct pfe_phy_if_t * _7;
  <unnamed type> _8;
  struct pfe_ct_rtable_entry_t * _9;
  <unnamed type> _10;
  _Bool _11;
  unsigned char _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _15;
  struct pfe_ct_rtable_entry_t * _16;
  long unsigned int _17;
  _Bool _18;
  int _19;
  const struct pfe_5_tuple_t * _20;
  int _21;
  _Bool _22;
  int iftmp.0_24;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  switch (crit_26(D)) <default: <L14> [12.50%], case 0: <L18> [12.50%], case 1: <L1> [12.50%], case 2: <L2> [12.50%], case 3: <L3> [12.50%], case 4: <L4> [12.50%], case 5: <L10> [12.50%], case 6: <L9> [12.50%]>

  <bb 3> [local count: 134217728]:
<L1>:
  # DEBUG BEGIN_STMT
  _1 = entry_29(D)->phys_entry;
  _2 = _1->flag_ipv6;
  _3 = _2 == 0;
  match_36 = (bool_t) _3;
  # DEBUG match => match_36
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 4> [local count: 134217728]:
<L2>:
  # DEBUG BEGIN_STMT
  _4 = entry_29(D)->phys_entry;
  _5 = _4->flag_ipv6;
  _6 = _5 == 1;
  match_35 = (bool_t) _6;
  # DEBUG match => match_35
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 5> [local count: 134217728]:
<L3>:
  # DEBUG BEGIN_STMT
  _7 = arg_28(D)->iface;
  _8 = pfe_phy_if_get_id (_7);
  _9 = entry_29(D)->phys_entry;
  _10 = _9->e_phy_if;
  _11 = _8 == _10;
  match_34 = (bool_t) _11;
  # DEBUG match => match_34
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 6> [local count: 134217728]:
<L4>:
  # DEBUG BEGIN_STMT
  _12 = entry_29(D)->route_id_valid;
  if (_12 == 1)
    goto <bb 7>; [34.00%]
  else
    goto <bb 8>; [66.00%]

  <bb 7> [local count: 45634028]:
  _13 = arg_28(D)->route_id;
  _14 = entry_29(D)->route_id;
  if (_13 == _14)
    goto <bb 9>; [34.00%]
  else
    goto <bb 8>; [66.00%]

  <bb 8> [local count: 118702159]:

  <bb 9> [local count: 134217728]:
  # iftmp.0_24 = PHI <1(7), 0(8)>
  match_33 = (bool_t) iftmp.0_24;
  # DEBUG match => match_33
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 10> [local count: 134217728]:
<L9>:
  # DEBUG BEGIN_STMT
  _15 = arg_28(D)->id5t;
  _16 = entry_29(D)->phys_entry;
  _17 = _16->id5t;
  _18 = _15 == _17;
  match_30 = (bool_t) _18;
  # DEBUG match => match_30
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 11> [local count: 134217728]:
<L10>:
  # DEBUG BEGIN_STMT
  _19 = pfe_rtable_entry_to_5t (entry_29(D), &five_tuple);
  if (_19 != 0)
    goto <bb 14>; [50.00%]
  else
    goto <bb 12>; [50.00%]

  <bb 12> [local count: 67108864]:
  # DEBUG BEGIN_STMT
  _20 = &arg_28(D)->five_tuple;
  _21 = memcmp (&five_tuple, _20, 50);
  _22 = _21 == 0;
  match_32 = (bool_t) _22;
  # DEBUG match => match_32
  goto <bb 14>; [100.00%]

  <bb 13> [local count: 134217728]:
<L14>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT

  <bb 14> [local count: 1073741824]:
  # match_23 = PHI <1(2), match_36(3), match_35(4), match_34(5), match_33(9), match_30(10), match_32(12), 0(13), 0(11)>
<L18>:
  # DEBUG match => match_23
  # DEBUG BEGIN_STMT
  five_tuple ={v} {CLOBBER};
  return match_23;

}


pfe_rtable_entry_to_5t_out (const struct pfe_rtable_entry_t * entry, struct pfe_5_tuple_t * tuple)
{
  struct pfe_ct_rtable_entry_t * _1;
  unsigned char _2;
  union 
{
  uint16_t v6[8];
} * _3;
  uint32_t * _4;
  union 
{
  uint16_t v6[8];
} * _5;
  struct pfe_ct_rtable_entry_t * _6;
  uint32_t * _7;
  struct pfe_ct_rtable_entry_t * _8;
  struct pfe_ct_rtable_entry_t * _9;
  short unsigned int _10;
  short unsigned int _11;
  short unsigned int _12;
  short unsigned int _13;
  unsigned char _14;
  unsigned int _20;
  unsigned int _22;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  memset (tuple_17(D), 0, 50);
  # DEBUG BEGIN_STMT
  _1 = entry_19(D)->phys_entry;
  _2 = _1->flag_ipv6;
  if (_2 == 1)
    goto <bb 3>; [20.24%]
  else
    goto <bb 4>; [79.76%]

  <bb 3> [local count: 217325345]:
  # DEBUG BEGIN_STMT
  _3 = &tuple_17(D)->src_ip.v6;
  _4 = &_1->args.ipv.v6.sip[0];
  memcpy (_3, _4, 16);
  # DEBUG BEGIN_STMT
  _5 = &tuple_17(D)->dst_ip.v6;
  _6 = entry_19(D)->phys_entry;
  _7 = &_6->args.ipv.v6.dip[0];
  memcpy (_5, _7, 16);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 856416480]:
  # DEBUG BEGIN_STMT
  _20 = MEM[(char * {ref-all})_1 + 76B];
  MEM[(char * {ref-all})tuple_17(D)] = _20;
  # DEBUG BEGIN_STMT
  _8 = entry_19(D)->phys_entry;
  _22 = MEM[(char * {ref-all})_8 + 80B];
  MEM[(char * {ref-all})tuple_17(D) + 22B] = _22;
  # DEBUG BEGIN_STMT
  tuple_17(D)->src_ip.is_ipv4 = 1;
  # DEBUG BEGIN_STMT
  tuple_17(D)->dst_ip.is_ipv4 = 1;

  <bb 5> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _9 = entry_19(D)->phys_entry;
  _10 = _9->args.sport;
  _11 = _10 r>> 8;
  tuple_17(D)->sport = _11;
  # DEBUG BEGIN_STMT
  _12 = _9->args.dport;
  _13 = _12 r>> 8;
  tuple_17(D)->dport = _13;
  # DEBUG BEGIN_STMT
  _14 = _9->proto;
  tuple_17(D)->proto = _14;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  return 0;

}


pfe_rtable_entry_to_5t (const struct pfe_rtable_entry_t * entry, struct pfe_5_tuple_t * tuple)
{
  errno_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  unsigned char _2;
  struct pfe_ct_rtable_entry_t * _4;
  union 
{
  uint16_t v6[8];
} * _7;
  uint32_t * _8;
  union 
{
  uint16_t v6[8];
} * _9;
  struct pfe_ct_rtable_entry_t * _10;
  uint32_t * _11;
  unsigned int _18;
  unsigned int _20;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  memset (tuple_13(D), 0, 50);
  # DEBUG BEGIN_STMT
  _1 = entry_15(D)->phys_entry;
  _2 = _1->flag_ipv6;
  if (_2 == 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _18 = MEM[(char * {ref-all})_1 + 16B];
  MEM[(char * {ref-all})tuple_13(D)] = _18;
  # DEBUG BEGIN_STMT
  _4 = entry_15(D)->phys_entry;
  _20 = MEM[(char * {ref-all})_4 + 20B];
  MEM[(char * {ref-all})tuple_13(D) + 22B] = _20;
  # DEBUG BEGIN_STMT
  tuple_13(D)->src_ip.is_ipv4 = 1;
  # DEBUG BEGIN_STMT
  tuple_13(D)->dst_ip.is_ipv4 = 1;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  if (_2 == 1)
    goto <bb 5>; [32.03%]
  else
    goto <bb 7>; [67.97%]

  <bb 5> [local count: 171959753]:
  # DEBUG BEGIN_STMT
  _7 = &tuple_13(D)->src_ip.v6;
  _8 = &_1->ipv.v6.sip[0];
  memcpy (_7, _8, 16);
  # DEBUG BEGIN_STMT
  _9 = &tuple_13(D)->dst_ip.v6;
  _10 = entry_15(D)->phys_entry;
  _11 = &_10->ipv.v6.dip[0];
  memcpy (_9, _11, 16);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT

  <bb 6> [local count: 708830666]:
  ret_3 = pfe_rtable_entry_to_5t.part.0 (entry_15(D), tuple_13(D));

  <bb 7> [local count: 1073741824]:
  # ret_24 = PHI <22(4), ret_3(6)>
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  return ret_24;

}


pfe_rtable_get_entry_size ()
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  return 128;

}


pfe_rtable_destroy (struct pfe_rtable_t * rtable)
{
  unsigned int _1;
  unsigned int _2;
  struct fifo_t * _3;
  struct pfe_class_t * _4;
  long unsigned int _5;
  oal_mutex_t * _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (rtable_11(D) != 0B)
    goto <bb 3>; [70.00%]
  else
    goto <bb 10>; [30.00%]

  <bb 3> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  _1 = rtable_11(D)->htable_base_va;
  if (_1 != 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 375809639]:
  # DEBUG BEGIN_STMT
  rtable_11(D)->htable_base_va = 0;

  <bb 5> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  _2 = rtable_11(D)->pool_base_va;
  if (_2 != 0)
    goto <bb 6>; [50.00%]
  else
    goto <bb 7>; [50.00%]

  <bb 6> [local count: 375809639]:
  # DEBUG BEGIN_STMT
  rtable_11(D)->pool_base_va = 0;

  <bb 7> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  _3 = rtable_11(D)->pool_va;
  if (_3 != 0B)
    goto <bb 8>; [0.00%]
  else
    goto <bb 9>; [100.00%]

  <bb 8> [count: 0]:
  # DEBUG BEGIN_STMT
  fifo_destroy (_3);
  # DEBUG BEGIN_STMT
  rtable_11(D)->pool_va = 0B;

  <bb 9> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  _4 = rtable_11(D)->class;
  _5 = rtable_11(D)->conntrack_stats_table_addr;
  pfe_rtable_destroy_stats_table (_4, _5);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _6 = &rtable_11(D)->lock;
  oal_mutex_destroy (_6);
  # DEBUG BEGIN_STMT
  oal_mm_free (rtable_11(D));

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

}


pfe_rtable_get_size (const struct pfe_rtable_t * rtable)
{
  uint32_t ret;
  long unsigned int _1;
  long unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = rtable_4(D)->pool_size;
  _2 = rtable_4(D)->htable_size;
  ret_5 = _1 + _2;
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  return ret_5;

}


pfe_rtable_create (struct pfe_class_t * class, addr_t htable_base_va, uint32_t htable_size, addr_t pool_base_va, uint32_t pool_size, struct pfe_l2br_t * bridge)
{
  errno_t ret;
  uint32_t ii;
  struct pfe_ct_rtable_entry_t * table_va;
  struct pfe_rtable_t * rtable;
  oal_mutex_t * _1;
  void * htable_base_va.24_2;
  void * _3;
  unsigned int _4;
  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 _11;
  unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _15;
  long unsigned int _16;
  long unsigned int _17;
  long unsigned int _18;
  unsigned int _19;
  unsigned int _20;
  unsigned int _21;
  unsigned int _22;
  unsigned int _23;
  unsigned int _24;
  long unsigned int _25;
  int _26;
  long unsigned int _27;
  struct fifo_t * _28;
  unsigned int _29;
  struct fifo_t * _30;
  long unsigned int _31;
  struct pfe_ct_rtable_entry_t * _32;
  long unsigned int _33;
  struct LLIST_t * _34;
  struct pfe_rtable_t * _36;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rtable_41 = oal_mm_malloc (140);
  # DEBUG rtable => rtable_41
  # DEBUG BEGIN_STMT
  if (rtable_41 == 0B)
    goto <bb 16>; [15.47%]
  else
    goto <bb 3>; [84.53%]

  <bb 3> [local count: 907633965]:
  # DEBUG BEGIN_STMT
  memset (rtable_41, 0, 140);
  # DEBUG BEGIN_STMT
  rtable_41->lock = 169;
  # DEBUG BEGIN_STMT
  _1 = &rtable_41->lock;
  oal_mutex_init (_1);
  # DEBUG BEGIN_STMT
  rtable_41->htable_base_va = htable_base_va_45(D);
  # DEBUG BEGIN_STMT
  htable_base_va.24_2 = (void *) htable_base_va_45(D);
  _3 = oal_mm_virt_to_phys_contig (htable_base_va.24_2);
  _4 = (unsigned int) _3;
  rtable_41->htable_base_pa = _4;
  # DEBUG BEGIN_STMT
  rtable_41->htable_size = htable_size_49(D);
  # DEBUG BEGIN_STMT
  _5 = rtable_41->htable_base_va;
  _6 = htable_size_49(D) * 128;
  _7 = _5 + _6;
  _8 = _7 + 4294967295;
  rtable_41->htable_end_va = _8;
  # DEBUG BEGIN_STMT
  _9 = _4 + _6;
  _10 = _9 + 4294967295;
  rtable_41->htable_end_pa = _10;
  # DEBUG BEGIN_STMT
  rtable_41->pool_base_va = pool_base_va_53(D);
  # DEBUG BEGIN_STMT
  _11 = pool_base_va_53(D) - htable_base_va_45(D);
  _12 = _4 + _11;
  rtable_41->pool_base_pa = _12;
  # DEBUG BEGIN_STMT
  rtable_41->pool_size = pool_size_56(D);
  # DEBUG BEGIN_STMT
  _13 = pool_size_56(D) * 128;
  _14 = _13 + pool_base_va_53(D);
  _15 = _14 + 4294967295;
  rtable_41->pool_end_va = _15;
  # DEBUG BEGIN_STMT
  _16 = _12 + _13;
  _17 = _16 + 4294967295;
  rtable_41->pool_end_pa = _17;
  # DEBUG BEGIN_STMT
  rtable_41->bridge = bridge_60(D);
  # DEBUG BEGIN_STMT
  rtable_41->class = class_62(D);
  # DEBUG BEGIN_STMT
  rtable_41->active_entries_count = 0;
  # DEBUG BEGIN_STMT
  rtable_41->conntrack_stats_table_size = 20;
  # DEBUG BEGIN_STMT
  memset (&stats_tbl_index, 0, 21);
  # DEBUG BEGIN_STMT
  _18 = pfe_rtable_create_stats_table (class_62(D), 21);
  rtable_41->conntrack_stats_table_addr = _18;
  # DEBUG BEGIN_STMT
  _19 = rtable_41->htable_base_va;
  if (_19 == 0)
    goto <bb 5>; [9.39%]
  else
    goto <bb 4>; [90.61%]

  <bb 4> [local count: 822407135]:
  _20 = rtable_41->pool_base_va;
  if (_20 == 0)
    goto <bb 5>; [29.93%]
  else
    goto <bb 6>; [70.07%]

  <bb 5> [local count: 331373285]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  pfe_rtable_destroy (rtable_41);
  # DEBUG BEGIN_STMT
  goto <bb 16>; [100.00%]

  <bb 6> [local count: 576260679]:
  # DEBUG BEGIN_STMT
  _21 = rtable_41->htable_base_pa;
  _22 = _19 - _21;
  rtable_41->htable_va_pa_offset = _22;
  # DEBUG BEGIN_STMT
  _23 = rtable_41->pool_base_pa;
  _24 = _20 - _23;
  rtable_41->pool_va_pa_offset = _24;
  # DEBUG BEGIN_STMT
  _25 = rtable_41->htable_size;
  _26 = pfe_class_set_rtable (class_62(D), _21, _25, 128);
  if (_26 != 0)
    goto <bb 7>; [99.96%]
  else
    goto <bb 8>; [0.04%]

  <bb 7> [local count: 576030174]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  pfe_rtable_destroy (rtable_41);
  # DEBUG BEGIN_STMT
  goto <bb 16>; [100.00%]

  <bb 8> [local count: 230504]:
  # DEBUG BEGIN_STMT
  pfe_rtable_invalidate (rtable_41);
  # DEBUG BEGIN_STMT
  _27 = rtable_41->pool_size;
  _28 = fifo_create (_27, &pfe_rtable_fifo.instance, &pfe_rtable_fifo.data);
  rtable_41->pool_va = _28;
  # DEBUG BEGIN_STMT
  if (_28 == 0B)
    goto <bb 9>; [4.25%]
  else
    goto <bb 10>; [95.75%]

  <bb 9> [local count: 9796]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  pfe_rtable_destroy (rtable_41);
  # DEBUG BEGIN_STMT
  goto <bb 16>; [100.00%]

  <bb 10> [local count: 220708]:
  # DEBUG BEGIN_STMT
  _29 = rtable_41->pool_base_va;
  table_va_75 = (struct pfe_ct_rtable_entry_t *) _29;
  # DEBUG table_va => table_va_75
  # DEBUG BEGIN_STMT
  # DEBUG ii => 0
  goto <bb 14>; [100.00%]

  <bb 11> [local count: 1949698]:
  # DEBUG BEGIN_STMT
  _30 = rtable_41->pool_va;
  _31 = ii_35 * 128;
  _32 = table_va_75 + _31;
  ret_79 = fifo_put (_30, _32);
  # DEBUG ret => ret_79
  # DEBUG BEGIN_STMT
  if (ret_79 != 0)
    goto <bb 12>; [5.50%]
  else
    goto <bb 13>; [94.50%]

  <bb 12> [local count: 107233]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  pfe_rtable_destroy (rtable_41);
  # DEBUG BEGIN_STMT
  goto <bb 16>; [100.00%]

  <bb 13> [local count: 1842464]:
  # DEBUG BEGIN_STMT
  ii_80 = ii_35 + 1;
  # DEBUG ii => ii_80

  <bb 14> [local count: 2063172]:
  # ii_35 = PHI <0(10), ii_80(13)>
  # DEBUG ii => ii_35
  # DEBUG BEGIN_STMT
  _33 = rtable_41->pool_size;
  if (_33 > ii_35)
    goto <bb 11>; [94.50%]
  else
    goto <bb 15>; [5.50%]

  <bb 15> [local count: 113474]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _34 = &rtable_41->active_entries;
  rtable_41->active_entries.prNext = _34;
  # DEBUG BEGIN_STMT
  rtable_41->active_entries.prPrev = _34;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 16> [local count: 1073741822]:
  # _36 = PHI <0B(2), 0B(5), 0B(7), 0B(9), 0B(12), rtable_41(15)>
  return _36;

}


pfe_rtable_destroy_stats_table (struct pfe_class_t * class, uint32_t table_address)
{
  errno_t res;
  struct pfe_ct_class_mmap_t mmap;
  struct pfe_ct_conntrack_statistics_t temp;
  long unsigned int _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;
  long unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  temp = {};
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG res => 0
  # DEBUG BEGIN_STMT
  if (table_address_15(D) == 0)
    goto <bb 6>; [67.00%]
  else
    goto <bb 3>; [33.00%]

  <bb 3> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  res_18 = pfe_class_get_mmap (class_16(D), 0, &mmap);
  # DEBUG res => res_18
  # DEBUG BEGIN_STMT
  if (res_18 != 0)
    goto <bb 6>; [67.00%]
  else
    goto <bb 4>; [33.00%]

  <bb 4> [local count: 116930485]:
  # DEBUG BEGIN_STMT
  _1 = mmap.conntrack_statistics;
  _2 = _1 >> 24;
  _3 = _1 >> 8;
  _4 = _3 & 65280;
  _5 = _2 | _4;
  _6 = _1 << 8;
  _7 = _6 & 16711680;
  _8 = _5 | _7;
  _9 = _1 << 24;
  _10 = _8 | _9;
  res_20 = pfe_class_write_dmem (class_16(D), -1, _10, &temp, 8);
  # DEBUG res => res_20
  # DEBUG BEGIN_STMT
  if (res_20 != 0)
    goto <bb 6>; [67.00%]
  else
    goto <bb 5>; [33.00%]

  <bb 5> [local count: 38587060]:
  # DEBUG BEGIN_STMT
  pfe_class_dmem_heap_free (class_16(D), table_address_15(D));

  <bb 6> [local count: 1073741824]:
  # res_11 = PHI <0(2), res_18(3), res_20(4), 0(5)>
  # DEBUG res => res_11
  # DEBUG BEGIN_STMT
  temp ={v} {CLOBBER};
  mmap ={v} {CLOBBER};
  return res_11;

}


pfe_rtable_create_stats_table (struct pfe_class_t * class, uint16_t conntrack_count)
{
  struct pfe_ct_class_mmap_t mmap;
  errno_t res;
  struct pfe_ct_conntrack_statistics_t temp;
  uint32_t size;
  addr_t addr;
  long unsigned int _1;
  short 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;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _15;
  long unsigned int _16;
  long unsigned int _17;
  long unsigned int _18;
  long unsigned int _19;
  long unsigned int _20;
  long unsigned int _21;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  temp = {};
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (long unsigned int) conntrack_count_26(D);
  size_27 = _1 * 8;
  # DEBUG size => size_27
  # DEBUG BEGIN_STMT
  addr_30 = pfe_class_dmem_heap_alloc (class_28(D), size_27);
  # DEBUG addr => addr_30
  # DEBUG BEGIN_STMT
  if (addr_30 == 0)
    goto <bb 6>; [67.00%]
  else
    goto <bb 3>; [33.00%]

  <bb 3> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  res_32 = pfe_class_get_mmap (class_28(D), 0, &mmap);
  # DEBUG res => res_32
  # DEBUG BEGIN_STMT
  if (res_32 != 0)
    goto <bb 6>; [67.00%]
  else
    goto <bb 4>; [33.00%]

  <bb 4> [local count: 116930485]:
  # DEBUG BEGIN_STMT
  _2 = conntrack_count_26(D) r>> 8;
  temp.conntrack_count = _2;
  # DEBUG BEGIN_STMT
  _3 = addr_30 >> 24;
  _4 = addr_30 >> 8;
  _5 = _4 & 65280;
  _6 = _3 | _5;
  _7 = addr_30 << 8;
  _8 = _7 & 16711680;
  _9 = _6 | _8;
  _10 = addr_30 << 24;
  _11 = _9 | _10;
  temp.stats_table = _11;
  # DEBUG BEGIN_STMT
  _12 = mmap.conntrack_statistics;
  _13 = _12 >> 24;
  _14 = _12 >> 8;
  _15 = _14 & 65280;
  _16 = _13 | _15;
  _17 = _12 << 8;
  _18 = _17 & 16711680;
  _19 = _16 | _18;
  _20 = _12 << 24;
  _21 = _19 | _20;
  res_36 = pfe_class_write_dmem (class_28(D), -1, _21, &temp, 8);
  # DEBUG res => res_36
  # DEBUG BEGIN_STMT
  if (res_36 != 0)
    goto <bb 5>; [33.00%]
  else
    goto <bb 6>; [67.00%]

  <bb 5> [local count: 38587060]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  pfe_class_dmem_heap_free (class_28(D), addr_30);
  # DEBUG BEGIN_STMT
  # DEBUG addr => 0

  <bb 6> [local count: 1073741824]:
  # addr_22 = PHI <addr_30(2), 0(3), addr_30(4), 0(5)>
  # DEBUG addr => addr_22
  # DEBUG BEGIN_STMT
  temp ={v} {CLOBBER};
  mmap ={v} {CLOBBER};
  return addr_22;

}


pfe_rtable_do_timeouts (struct pfe_rtable_t * rtable)
{
  uint8_t flags;
  struct pfe_rtable_entry_t * entry;
  struct LLIST_t to_be_removed_list;
  struct LLIST_t * item;
  int _1;
  struct pfe_ct_rtable_entry_t * _2;
  long unsigned int _3;
  unsigned char _4;
  unsigned char _5;
  long unsigned int _6;
  long unsigned int _7;
  long unsigned int _8;
  void (*<Tc9d>) (void *, pfe_rtable_cbk_event_t) _9;
  void * _10;
  struct LLIST_Struct * _11;
  struct LLIST_t * _12;
  struct LLIST_t * _13;
  int _14;
  short unsigned int _46;
  short unsigned int _47;

  <bb 2> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG D#20 => &rtable_22(D)->lock
  _46 = MEM[(const oal_mutex_t *)rtable_22(D) + 60B];
  # DEBUG D#1 => D#20
  oal_mutex_lock.isra.0 (_46);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  to_be_removed_list.prNext = &to_be_removed_list;
  # DEBUG BEGIN_STMT
  to_be_removed_list.prPrev = &to_be_removed_list;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  item_27 = rtable_22(D)->active_entries.prNext;
  # DEBUG item => item_27
  goto <bb 15>; [100.00%]

  <bb 3> [local count: 955630220]:
  # DEBUG BEGIN_STMT
  _1 = item_15 - 52B;
  entry_34 = (struct pfe_rtable_entry_t *) _1;
  # DEBUG entry => entry_34
  # DEBUG BEGIN_STMT
  _2 = entry_34->phys_entry;
  flags_35 = _2->status;
  # DEBUG flags => flags_35
  # DEBUG BEGIN_STMT
  _3 = entry_34->timeout;
  if (_3 == 4294967295)
    goto <bb 4>; [20.24%]
  else
    goto <bb 5>; [79.76%]

  <bb 4> [local count: 193419556]:
  # DEBUG BEGIN_STMT
  // predicted unlikely by continue predictor.
  goto <bb 14>; [100.00%]

  <bb 5> [local count: 762210664]:
  # DEBUG BEGIN_STMT
  _4 = flags_35 & 1;
  if (_4 != 0)
    goto <bb 6>; [50.00%]
  else
    goto <bb 7>; [50.00%]

  <bb 6> [local count: 381105332]:
  # DEBUG BEGIN_STMT
  entry_34->curr_timeout = _3;
  # DEBUG BEGIN_STMT
  _5 = flags_35 & 254;
  _2->status = _5;
  goto <bb 14>; [100.00%]

  <bb 7> [local count: 381105332]:
  # DEBUG BEGIN_STMT
  _6 = entry_34->curr_timeout;
  if (_6 != 0)
    goto <bb 8>; [50.00%]
  else
    goto <bb 9>; [50.00%]

  <bb 8> [local count: 190552666]:
  # DEBUG BEGIN_STMT
  _7 = _6 + 4294967295;
  entry_34->curr_timeout = _7;
  goto <bb 10>; [100.00%]

  <bb 9> [local count: 190552666]:
  # DEBUG BEGIN_STMT
  entry_34->curr_timeout = 0;

  <bb 10> [local count: 381105332]:
  # DEBUG BEGIN_STMT
  _8 = entry_34->curr_timeout;
  if (_8 == 0)
    goto <bb 11>; [50.00%]
  else
    goto <bb 14>; [50.00%]

  <bb 11> [local count: 190552666]:
  # DEBUG BEGIN_STMT
  _9 = entry_34->callback;
  if (_9 != 0B)
    goto <bb 12>; [70.00%]
  else
    goto <bb 13>; [30.00%]

  <bb 12> [local count: 133386866]:
  # DEBUG BEGIN_STMT
  _10 = entry_34->callback_arg;
  _9 (_10, 0);

  <bb 13> [local count: 190552666]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _11 = to_be_removed_list.prPrev;
  entry_34->list_to_remove_entry.prPrev = _11;
  # DEBUG BEGIN_STMT
  entry_34->list_to_remove_entry.prNext = &to_be_removed_list;
  # DEBUG BEGIN_STMT
  _12 = &entry_34->list_to_remove_entry;
  _11->prNext = _12;
  # DEBUG BEGIN_STMT
  to_be_removed_list.prPrev = _12;

  <bb 14> [local count: 955630222]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  item_45 = item_15->prNext;
  # DEBUG item => item_45

  <bb 15> [local count: 1073741821]:
  # item_15 = PHI <item_27(2), item_45(14)>
  # DEBUG item => item_15
  # DEBUG BEGIN_STMT
  _13 = &rtable_22(D)->active_entries;
  if (_13 != item_15)
    goto <bb 3>; [89.00%]
  else
    goto <bb 16>; [11.00%]

  <bb 16> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  item_28 = to_be_removed_list.prNext;
  # DEBUG item => item_28
  goto <bb 18>; [100.00%]

  <bb 17> [local count: 955630224]:
  # DEBUG BEGIN_STMT
  _14 = item_16 - 60B;
  entry_31 = (struct pfe_rtable_entry_t *) _14;
  # DEBUG entry => entry_31
  # DEBUG BEGIN_STMT
  pfe_rtable_del_entry_nolock (rtable_22(D), entry_31);
  # DEBUG err => NULL
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  item_33 = item_16->prNext;
  # DEBUG item => item_33

  <bb 18> [local count: 1073741824]:
  # item_16 = PHI <item_28(16), item_33(17)>
  # DEBUG item => item_16
  # DEBUG BEGIN_STMT
  if (&to_be_removed_list != item_16)
    goto <bb 17>; [89.00%]
  else
    goto <bb 19>; [11.00%]

  <bb 19> [local count: 118111601]:
  # DEBUG BEGIN_STMT
  # DEBUG D#21 => &rtable_22(D)->lock
  _47 = MEM[(const oal_mutex_t *)rtable_22(D) + 60B];
  # DEBUG D#2 => D#21
  oal_mutex_unlock.isra.0 (_47);
  to_be_removed_list ={v} {CLOBBER};
  return;

}


pfe_rtable_del_entry_nolock (struct pfe_rtable_t * rtable, struct pfe_rtable_entry_t * entry)
{
  pfe_ct_rtable_flags_t valid_tmp;
  struct pfe_ct_rtable_entry_t * next_phys_entry_pa;
  struct pfe_ct_rtable_entry_t * _1;
  unsigned char _2;
  struct pfe_ct_rtable_entry_t * _3;
  short unsigned int _4;
  short unsigned int _5;
  unsigned char _6;
  struct pfe_ct_rtable_entry_t * _7;
  short unsigned int _8;
  short unsigned int _9;
  unsigned char _10;
  struct pfe_rtable_entry_tag * _11;
  struct pfe_ct_rtable_entry_t * _12;
  struct pfe_ct_rtable_entry_t * _13;
  struct pfe_rtable_entry_tag * _14;
  struct pfe_ct_rtable_entry_t * _15;
  struct pfe_rtable_entry_tag * _16;
  struct pfe_ct_rtable_entry_t * _17;
  struct pfe_rtable_entry_tag * _18;
  struct pfe_ct_rtable_entry_t * _19;
  unsigned char _20;
  struct fifo_t * _21;
  struct pfe_rtable_entry_tag * _22;
  struct pfe_ct_rtable_entry_t * _23;
  long unsigned int next_phys_entry_pa.20_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;
  long unsigned int _33;
  struct LLIST_t * _34;
  struct LLIST_t * _35;
  struct LLIST_Struct * _36;
  struct LLIST_Struct * _37;
  struct LLIST_Struct * _38;
  struct LLIST_Struct * _39;
  struct pfe_rtable_entry_tag * _40;
  struct pfe_ct_rtable_entry_t * _41;
  struct pfe_ct_rtable_entry_t * _42;
  struct LLIST_t * _43;
  struct LLIST_t * _44;
  struct LLIST_Struct * _45;
  struct LLIST_Struct * _46;
  struct LLIST_Struct * _47;
  struct LLIST_Struct * _48;
  struct pfe_ct_rtable_entry_t * _49;
  unsigned char _50;
  struct pfe_rtable_entry_tag * _51;
  struct pfe_ct_rtable_entry_t * _52;
  struct pfe_ct_rtable_entry_t * _53;
  struct pfe_rtable_entry_tag * _54;
  struct pfe_ct_rtable_entry_t * _55;
  long unsigned int _56;
  struct pfe_rtable_entry_tag * _57;
  struct pfe_ct_rtable_entry_t * _58;
  struct pfe_ct_rtable_entry_t * _59;
  struct fifo_t * _60;
  struct pfe_ct_rtable_entry_t * _61;
  struct LLIST_t * _62;
  struct LLIST_t * _63;
  struct LLIST_Struct * _64;
  struct LLIST_Struct * _65;
  struct LLIST_Struct * _66;
  struct LLIST_Struct * _67;
  struct pfe_rtable_entry_tag * _68;
  struct pfe_rtable_entry_tag * _69;
  struct pfe_rtable_entry_tag * _70;
  struct pfe_ct_rtable_entry_t * _71;
  long unsigned int _72;
  long unsigned int _73;
  struct pfe_rtable_t * _140;

  <bb 2> [local count: 1073741823]:
  # DEBUG BEGIN_STMT
  # DEBUG next_phys_entry_pa => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _140 = MEM[(struct pfe_rtable_t * *)entry_83(D)];
  # DEBUG D#7 => entry_83(D)
  # DEBUG INLINE_ENTRY pfe_rtable_entry_is_in_table
  # DEBUG entry => D#7
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (_140 != 0B)
    goto <bb 3>; [70.00%]
  else
    goto <bb 23>; [30.00%]

  <bb 3> [local count: 751619277]:
  # DEBUG ret => 1
  # DEBUG BEGIN_STMT
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  _1 = entry_83(D)->phys_entry;
  _2 = pfe_rtable_phys_entry_is_htable (rtable_84(D), _1);
  if (_2 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 15>; [66.00%]

  <bb 4> [local count: 255550554]:
  # DEBUG BEGIN_STMT
  _1->flags = 0;
  # DEBUG BEGIN_STMT
  _3 = entry_83(D)->temp_phys_entry;
  _4 = _3->conntrack_stats_index;
  if (_4 != 0)
    goto <bb 5>; [33.00%]
  else
    goto <bb 6>; [67.00%]

  <bb 5> [local count: 84331683]:
  # DEBUG BEGIN_STMT
  _5 = _4 >> 8;
  _6 = (unsigned char) _5;
  pfe_rtable_clear_stats (rtable_84(D), _6);
  # DEBUG BEGIN_STMT
  _7 = entry_83(D)->temp_phys_entry;
  _8 = _7->conntrack_stats_index;
  _9 = _8 >> 8;
  _10 = (unsigned char) _9;
  pfe_rtable_free_stats_index (_10);

  <bb 6> [local count: 255550553]:
  # DEBUG BEGIN_STMT
  _11 = entry_83(D)->next;
  if (_11 != 0B)
    goto <bb 7>; [70.00%]
  else
    goto <bb 12>; [30.00%]

  <bb 7> [local count: 178885388]:
  # DEBUG BEGIN_STMT
  _12 = _11->phys_entry;
  valid_tmp_118 = _12->flags;
  # DEBUG valid_tmp => valid_tmp_118
  # DEBUG BEGIN_STMT
  _12->flags = 0;
  # DEBUG BEGIN_STMT
  __asm__ __volatile__(" dmb" :  :  : "memory");
  # DEBUG BEGIN_STMT
  oal_time_usleep (10);
  # DEBUG BEGIN_STMT
  _13 = entry_83(D)->phys_entry;
  _14 = entry_83(D)->next;
  _15 = _14->phys_entry;
  memcpy (_13, _15, 128);
  # DEBUG BEGIN_STMT
  _16 = entry_83(D)->next;
  _17 = _16->phys_entry;
  memset (_17, 0, 128);
  # DEBUG BEGIN_STMT
  _18 = entry_83(D)->next;
  _19 = _18->phys_entry;
  _20 = pfe_rtable_phys_entry_is_pool (rtable_84(D), _19);
  if (_20 == 1)
    goto <bb 8>; [20.24%]
  else
    goto <bb 9>; [79.76%]

  <bb 8> [local count: 36206402]:
  # DEBUG BEGIN_STMT
  _21 = rtable_84(D)->pool_va;
  fifo_put (_21, _19);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 9> [local count: 178885388]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _22 = entry_83(D)->next;
  _23 = entry_83(D)->phys_entry;
  _22->phys_entry = _23;
  # DEBUG BEGIN_STMT
  next_phys_entry_pa_126 = pfe_rtable_phys_entry_get_pa (rtable_84(D), _23);
  # DEBUG next_phys_entry_pa => next_phys_entry_pa_126
  # DEBUG BEGIN_STMT
  next_phys_entry_pa.20_24 = (long unsigned int) next_phys_entry_pa_126;
  _25 = next_phys_entry_pa.20_24 >> 24;
  _26 = next_phys_entry_pa.20_24 >> 8;
  _27 = _26 & 65280;
  _28 = _25 | _27;
  _29 = next_phys_entry_pa.20_24 << 8;
  _30 = _29 & 16711680;
  _31 = _28 | _30;
  _32 = next_phys_entry_pa.20_24 << 24;
  _33 = _31 | _32;
  _23->rt_orig = _33;
  # DEBUG BEGIN_STMT
  _34 = &entry_83(D)->list_entry;
  _35 = rtable_84(D)->cur_item;
  if (_34 == _35)
    goto <bb 10>; [30.00%]
  else
    goto <bb 11>; [70.00%]

  <bb 10> [local count: 53665616]:
  # DEBUG BEGIN_STMT
  _36 = entry_83(D)->list_entry.prNext;
  rtable_84(D)->cur_item = _36;

  <bb 11> [local count: 178885388]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _37 = entry_83(D)->list_entry.prPrev;
  _38 = entry_83(D)->list_entry.prNext;
  _37->prNext = _38;
  # DEBUG BEGIN_STMT
  _39 = entry_83(D)->list_entry.prNext;
  _39->prPrev = _37;
  # DEBUG BEGIN_STMT
  entry_83(D)->list_entry.prPrev = 0B;
  # DEBUG BEGIN_STMT
  entry_83(D)->list_entry.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _23->flags = valid_tmp_118;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _40 = entry_83(D)->prev;
  _22->prev = _40;
  # DEBUG BEGIN_STMT
  entry_83(D)->prev = 0B;
  # DEBUG BEGIN_STMT
  entry_83(D)->next = 0B;
  # DEBUG BEGIN_STMT
  _41 = entry_83(D)->temp_phys_entry;
  entry_83(D)->phys_entry = _41;
  goto <bb 21>; [100.00%]

  <bb 12> [local count: 76665166]:
  # DEBUG BEGIN_STMT
  __asm__ __volatile__(" dmb" :  :  : "memory");
  # DEBUG BEGIN_STMT
  oal_time_usleep (10);
  # DEBUG BEGIN_STMT
  _42 = entry_83(D)->phys_entry;
  memset (_42, 0, 128);
  # DEBUG BEGIN_STMT
  _43 = &entry_83(D)->list_entry;
  _44 = rtable_84(D)->cur_item;
  if (_43 == _44)
    goto <bb 13>; [30.00%]
  else
    goto <bb 14>; [70.00%]

  <bb 13> [local count: 22999550]:
  # DEBUG BEGIN_STMT
  _45 = _44->prNext;
  rtable_84(D)->cur_item = _45;

  <bb 14> [local count: 76665166]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _46 = entry_83(D)->list_entry.prPrev;
  _47 = entry_83(D)->list_entry.prNext;
  _46->prNext = _47;
  # DEBUG BEGIN_STMT
  _48 = entry_83(D)->list_entry.prNext;
  _48->prPrev = _46;
  # DEBUG BEGIN_STMT
  entry_83(D)->list_entry.prPrev = 0B;
  # DEBUG BEGIN_STMT
  entry_83(D)->list_entry.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_83(D)->prev = 0B;
  # DEBUG BEGIN_STMT
  entry_83(D)->next = 0B;
  # DEBUG BEGIN_STMT
  _49 = entry_83(D)->temp_phys_entry;
  entry_83(D)->phys_entry = _49;
  goto <bb 21>; [100.00%]

  <bb 15> [local count: 496068722]:
  # DEBUG BEGIN_STMT
  _50 = pfe_rtable_phys_entry_is_pool (rtable_84(D), _1);
  if (_50 == 1)
    goto <bb 16>; [20.24%]
  else
    goto <bb 21>; [79.76%]

  <bb 16> [local count: 100404309]:
  # DEBUG BEGIN_STMT
  _51 = entry_83(D)->prev;
  _52 = _51->phys_entry;
  valid_tmp_85 = _52->flags;
  # DEBUG valid_tmp => valid_tmp_85
  # DEBUG BEGIN_STMT
  _52->flags = 0;
  # DEBUG BEGIN_STMT
  _1->flags = 0;
  # DEBUG BEGIN_STMT
  oal_time_usleep (10);
  # DEBUG BEGIN_STMT
  _53 = entry_83(D)->phys_entry;
  _54 = entry_83(D)->prev;
  _55 = _54->phys_entry;
  _56 = _53->next;
  _55->next = _56;
  # DEBUG BEGIN_STMT
  __asm__ __volatile__(" dmb" :  :  : "memory");
  # DEBUG BEGIN_STMT
  _57 = entry_83(D)->prev;
  _58 = _57->phys_entry;
  _58->flags = valid_tmp_85;
  # DEBUG BEGIN_STMT
  _59 = entry_83(D)->phys_entry;
  memset (_59, 0, 128);
  # DEBUG BEGIN_STMT
  _60 = rtable_84(D)->pool_va;
  _61 = entry_83(D)->phys_entry;
  fifo_put (_60, _61);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _62 = &entry_83(D)->list_entry;
  _63 = rtable_84(D)->cur_item;
  if (_62 == _63)
    goto <bb 17>; [30.00%]
  else
    goto <bb 18>; [70.00%]

  <bb 17> [local count: 30121293]:
  # DEBUG BEGIN_STMT
  _64 = _63->prNext;
  rtable_84(D)->cur_item = _64;

  <bb 18> [local count: 100404309]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _65 = entry_83(D)->list_entry.prPrev;
  _66 = entry_83(D)->list_entry.prNext;
  _65->prNext = _66;
  # DEBUG BEGIN_STMT
  _67 = entry_83(D)->list_entry.prNext;
  _67->prPrev = _65;
  # DEBUG BEGIN_STMT
  entry_83(D)->list_entry.prPrev = 0B;
  # DEBUG BEGIN_STMT
  entry_83(D)->list_entry.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _68 = entry_83(D)->prev;
  _69 = entry_83(D)->next;
  _68->next = _69;
  # DEBUG BEGIN_STMT
  _70 = entry_83(D)->next;
  if (_70 != 0B)
    goto <bb 19>; [70.00%]
  else
    goto <bb 20>; [30.00%]

  <bb 19> [local count: 70283017]:
  # DEBUG BEGIN_STMT
  _70->prev = _68;

  <bb 20> [local count: 100404309]:
  # DEBUG BEGIN_STMT
  entry_83(D)->prev = 0B;
  # DEBUG BEGIN_STMT
  entry_83(D)->next = 0B;
  # DEBUG BEGIN_STMT
  _71 = entry_83(D)->temp_phys_entry;
  entry_83(D)->phys_entry = _71;

  <bb 21> [local count: 751619277]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_83(D)->rtable = 0B;
  # DEBUG BEGIN_STMT
  _72 = rtable_84(D)->active_entries_count;
  if (_72 != 0)
    goto <bb 22>; [50.00%]
  else
    goto <bb 23>; [50.00%]

  <bb 22> [local count: 375809638]:
  # DEBUG BEGIN_STMT
  _73 = _72 + 4294967295;
  rtable_84(D)->active_entries_count = _73;
  # DEBUG BEGIN_STMT

  <bb 23> [local count: 1073741824]:
  # DEBUG ret => NULL
  # DEBUG ret => NULL
  return 0;

}


pfe_rtable_del_entry (struct pfe_rtable_t * rtable, struct pfe_rtable_entry_t * entry)
{
  errno_t ret;
  long unsigned int _1;
  struct pfe_class_t * _2;
  short unsigned int _12;
  short unsigned int _13;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG D#18 => &rtable_4(D)->lock
  _12 = MEM[(const oal_mutex_t *)rtable_4(D) + 60B];
  # DEBUG D#1 => D#18
  oal_mutex_lock.isra.0 (_12);
  # DEBUG BEGIN_STMT
  ret_9 = pfe_rtable_del_entry_nolock (rtable_4(D), entry_7(D));
  # DEBUG ret => ret_9
  # DEBUG BEGIN_STMT
  _1 = rtable_4(D)->active_entries_count;
  if (_1 == 0)
    goto <bb 3>; [33.00%]
  else
    goto <bb 4>; [67.00%]

  <bb 3> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _2 = rtable_4(D)->class;
  pfe_class_rtable_lookup_disable (_2);

  <bb 4> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG D#19 => &rtable_4(D)->lock
  _13 = MEM[(const oal_mutex_t *)rtable_4(D) + 60B];
  # DEBUG D#2 => D#19
  oal_mutex_unlock.isra.0 (_13);
  # DEBUG BEGIN_STMT
  return ret_9;

}


pfe_rtable_add_entry (struct pfe_rtable_t * rtable, struct pfe_rtable_entry_t * entry)
{
  errno_t ret;
  struct pfe_rtable_phys_entry_infor_t * phys_entry_temp;
  unsigned char _1;
  struct pfe_ct_rtable_entry_t * _2;
  struct pfe_ct_rtable_entry_t * _3;
  struct pfe_ct_rtable_entry_t * _4;
  struct pfe_ct_rtable_entry_t * _5;
  long unsigned int _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _15;
  errno_t _16;
  short unsigned int _37;
  short unsigned int _38;
  short unsigned int _39;
  struct pfe_ct_rtable_entry_t * _40;

  <bb 2> [local count: 1073741823]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG D#11 => &rtable_19(D)->lock
  _37 = MEM[(const oal_mutex_t *)rtable_19(D) + 60B];
  # DEBUG D#1 => D#11
  oal_mutex_lock.isra.0 (_37);
  # DEBUG BEGIN_STMT
  _1 = pfe_rtable_entry_is_duplicate (rtable_19(D), entry_22(D));
  if (_1 == 1)
    goto <bb 3>; [12.50%]
  else
    goto <bb 4>; [87.50%]

  <bb 3> [local count: 134217728]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG D#13 => &rtable_19(D)->lock
  _38 = MEM[(const oal_mutex_t *)rtable_19(D) + 60B];
  # DEBUG D#2 => D#13
  oal_mutex_unlock.isra.0 (_38);
  # DEBUG BEGIN_STMT
  goto <bb 8>; [100.00%]

  <bb 4> [local count: 939524095]:
  # DEBUG BEGIN_STMT
  phys_entry_temp_25 = oal_mm_malloc (16);
  # DEBUG phys_entry_temp => phys_entry_temp_25
  # DEBUG BEGIN_STMT
  if (phys_entry_temp_25 == 0B)
    goto <bb 8>; [19.44%]
  else
    goto <bb 5>; [80.56%]

  <bb 5> [local count: 756880612]:
  # DEBUG BEGIN_STMT
  memset (phys_entry_temp_25, 0, 16);
  # DEBUG BEGIN_STMT
  ret_28 = pfe_rtable_add_entry_id (rtable_19(D), entry_22(D), phys_entry_temp_25);
  # DEBUG ret => ret_28
  # DEBUG BEGIN_STMT
  if (ret_28 == 0)
    goto <bb 6>; [33.00%]
  else
    goto <bb 7>; [67.00%]

  <bb 6> [local count: 249770602]:
  # DEBUG BEGIN_STMT
  _2 = phys_entry_temp_25->new_phys_entry_va;
  _3 = entry_22(D)->temp_phys_entry;
  memcpy (_2, _3, 128);
  # DEBUG BEGIN_STMT
  _4 = phys_entry_temp_25->new_phys_entry_va;
  entry_22(D)->phys_entry = _4;
  # DEBUG BEGIN_STMT
  _5 = phys_entry_temp_25->new_phys_entry_pa;
  _6 = (long unsigned int) _5;
  _7 = _6 >> 24;
  _8 = _6 >> 8;
  _9 = _8 & 65280;
  _10 = _7 | _9;
  _11 = _6 << 8;
  _12 = _11 & 16711680;
  _13 = _10 | _12;
  _14 = _6 << 24;
  _15 = _13 | _14;
  _4->rt_orig = _15;
  # DEBUG BEGIN_STMT
  _4->i_phy_if = 10;
  # DEBUG BEGIN_STMT
  __asm__ __volatile__(" dmb" :  :  : "memory");
  # DEBUG BEGIN_STMT
  _40 = MEM[(struct pfe_ct_rtable_entry_t * *)phys_entry_temp_25 + 8B];
  # DEBUG D#8 => phys_entry_temp_25
  pfe_rtable_add_entry_validate.isra.0 (rtable_19(D), entry_22(D), _40);

  <bb 7> [local count: 756880612]:
  # DEBUG BEGIN_STMT
  # DEBUG D#12 => &rtable_19(D)->lock
  _39 = MEM[(const oal_mutex_t *)rtable_19(D) + 60B];
  # DEBUG D#2 => D#12
  oal_mutex_unlock.isra.0 (_39);
  # DEBUG BEGIN_STMT

  <bb 8> [local count: 1073741824]:
  # _16 = PHI <116(3), 116(4), ret_28(7)>
  return _16;

}


pfe_rtable_add_entry_id (struct pfe_rtable_t * rtable, struct pfe_rtable_entry_t * entry, struct pfe_rtable_phys_entry_infor_t * phys_entry_temp)
{
  uint8_t index;
  errno_t ret;
  struct pfe_ct_rtable_entry_t * hash_table_va;
  pfe_ipv_type_t ipv_type;
  struct pfe_l2br_domain_t * domain;
  struct pfe_ct_rtable_entry_t * _1;
  unsigned char _2;
  _Bool _3;
  unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;
  long unsigned int _7;
  struct pfe_ct_rtable_entry_t * _8;
  <unnamed type> _9;
  unsigned char _10;
  short unsigned int _11;
  struct pfe_ct_rtable_entry_t * _12;
  short unsigned int _13;
  <unnamed type> _14;
  long unsigned int _15;
  long unsigned int _16;
  long unsigned int _17;
  long unsigned int _18;
  long unsigned int _19;
  long unsigned int _20;
  long unsigned int _21;
  long unsigned int _22;
  long unsigned int _23;
  long unsigned int _24;
  long unsigned int _25;
  struct pfe_l2br_t * _26;
  short unsigned int _27;
  short unsigned int _28;
  short unsigned int _29;
  unsigned int _30;
  void * _31;
  unsigned char _32;
  short unsigned int _33;
  short unsigned int _34;
  struct pfe_ct_rtable_entry_t * _35;
  struct pfe_ct_rtable_entry_t * _36;
  long unsigned int _37;
  long unsigned int _38;
  struct pfe_ct_rtable_entry_t * _39;
  <unnamed type> _40;
  long unsigned int _41;
  long unsigned int _42;
  long unsigned int _43;
  long unsigned int _44;
  long unsigned int _45;
  long unsigned int _46;
  long unsigned int _47;
  long unsigned int _48;
  long unsigned int _49;
  long unsigned int _50;
  long unsigned int _51;
  struct fifo_t * _52;
  void * _53;
  long unsigned int _54;
  long unsigned int _55;
  struct pfe_ct_rtable_entry_t * _56;
  short unsigned int _65;
  short unsigned int _85;
  struct pfe_ct_rtable_entry_t * * _86;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_61(D)->phys_entry;
  _2 = _1->flag_ipv6;
  _3 = _2 != 0;
  ipv_type_62 = (pfe_ipv_type_t) _3;
  # DEBUG ipv_type => ipv_type_62
  # DEBUG BEGIN_STMT
  _4 = rtable_63(D)->htable_base_va;
  hash_table_va_64 = (struct pfe_ct_rtable_entry_t *) _4;
  # DEBUG hash_table_va => hash_table_va_64
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = rtable_63(D)->htable_size;
  _6 = _5 + 4294967295;
  _86 = &MEM[(struct pfe_ct_rtable_entry_t * *)entry_61(D) + 4B];
  # DEBUG D#6 => entry_61(D)
  _7 = pfe_rtable_entry_get_hash.isra.0 (_86, ipv_type_62, _6);
  phys_entry_temp_66(D)->hash = _7;
  # DEBUG BEGIN_STMT
  _8 = entry_61(D)->temp_phys_entry;
  _8->flags = 0;
  # DEBUG BEGIN_STMT
  _9 = _8->status;
  _10 = _9 & 254;
  _8->status = _10;
  # DEBUG BEGIN_STMT
  _85 = MEM[(short unsigned int *)rtable_63(D) + 136B];
  # DEBUG D#3 => rtable_63(D)
  index_71 = pfe_rtable_get_free_stats_index.isra.0 (_85);
  # DEBUG index => index_71
  # DEBUG BEGIN_STMT
  _11 = (short unsigned int) index_71;
  _12 = entry_61(D)->temp_phys_entry;
  _13 = _11 << 8;
  _12->conntrack_stats_index = _13;
  # DEBUG BEGIN_STMT
  _14 = _12->actions;
  _15 = (long unsigned int) _14;
  _16 = _15 >> 24;
  _17 = _15 >> 8;
  _18 = _17 & 65280;
  _19 = _16 | _18;
  _20 = _15 << 8;
  _21 = _20 & 16711680;
  _22 = _19 | _21;
  _23 = _15 << 24;
  _24 = _22 | _23;
  _25 = _24 & 4194306;
  if (_25 != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 7>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _26 = rtable_63(D)->bridge;
  if (_26 != 0B)
    goto <bb 4>; [53.47%]
  else
    goto <bb 7>; [46.53%]

  <bb 4> [local count: 287064877]:
  # DEBUG BEGIN_STMT
  _27 = _12->args.vlan;
  _28 = _27 >> 8;
  _29 = _27 << 8;
  _65 = _28 | _29;
  _30 = (unsigned int) _65;
  _31 = (void *) _30;
  domain_74 = pfe_l2br_get_first_domain (_26, 1, _31);
  # DEBUG domain => domain_74
  # DEBUG BEGIN_STMT
  if (domain_74 != 0B)
    goto <bb 5>; [53.47%]
  else
    goto <bb 6>; [46.53%]

  <bb 5> [local count: 153493589]:
  # DEBUG BEGIN_STMT
  pfe_l2br_get_vlan_stats_index (domain_74);
  _32 = pfe_l2br_get_vlan_stats_index (domain_74);
  _33 = (short unsigned int) _32;
  _34 = _33 << 8;
  _35 = entry_61(D)->temp_phys_entry;
  _35->args.vlan_stats_index = _34;
  goto <bb 7>; [100.00%]

  <bb 6> [local count: 133571287]:
  # DEBUG BEGIN_STMT
  _36 = entry_61(D)->temp_phys_entry;
  _36->args.vlan_stats_index = 0;

  <bb 7> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _37 = phys_entry_temp_66(D)->hash;
  _38 = _37 * 128;
  _39 = hash_table_va_64 + _38;
  _40 = _39->flags;
  _41 = (long unsigned int) _40;
  _42 = _41 >> 24;
  _43 = _41 >> 8;
  _44 = _43 & 65280;
  _45 = _42 | _44;
  _46 = _41 << 8;
  _47 = _46 & 16711680;
  _48 = _45 | _47;
  _49 = _41 << 24;
  _50 = _48 | _49;
  _51 = _50 & 1;
  if (_51 == 0)
    goto <bb 8>; [67.00%]
  else
    goto <bb 9>; [33.00%]

  <bb 8> [local count: 719407022]:
  # DEBUG BEGIN_STMT
  phys_entry_temp_66(D)->new_phys_entry_va = _39;
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  goto <bb 10>; [100.00%]

  <bb 9> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  _52 = rtable_63(D)->pool_va;
  _53 = fifo_get (_52);
  phys_entry_temp_66(D)->new_phys_entry_va = _53;
  # DEBUG BEGIN_STMT
  if (_53 == 0B)
    goto <bb 11>; [18.75%]
  else
    goto <bb 10>; [81.25%]

  <bb 10> [local count: 1007304048]:
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  _54 = phys_entry_temp_66(D)->hash;
  _55 = _54 * 128;
  _56 = hash_table_va_64 + _55;
  phys_entry_temp_66(D)->last_phys_entry_va = _56;
  # DEBUG BEGIN_STMT
  ret_84 = pfe_rtable_add_entry_link (rtable_63(D), phys_entry_temp_66(D));
  # DEBUG ret => ret_84

  <bb 11> [local count: 1073741823]:
  # ret_57 = PHI <2(9), ret_84(10)>
  # DEBUG ret => ret_57
  # DEBUG BEGIN_STMT
  return ret_57;

}


pfe_rtable_add_entry_link (struct pfe_rtable_t * rtable, struct pfe_rtable_phys_entry_infor_t * phys_entry_temp)
{
  pfe_ct_rtable_flags_t valid_tmp;
  errno_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  struct pfe_ct_rtable_entry_t * _2;
  unsigned char _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;
  long unsigned int _11;
  long unsigned int _12;
  struct pfe_ct_rtable_entry_t * _13;
  struct pfe_ct_rtable_entry_t * _14;
  struct pfe_ct_rtable_entry_t * _15;
  long unsigned int _16;
  struct pfe_ct_rtable_entry_t * _17;
  struct pfe_ct_rtable_entry_t * _18;
  long unsigned int _19;
  long unsigned int _20;
  long unsigned int _21;
  long unsigned int _22;
  long unsigned int _23;
  long unsigned int _24;
  long unsigned int _25;
  long unsigned int _26;
  long unsigned int _27;
  struct pfe_ct_rtable_entry_t * _28;
  long unsigned int _29;
  struct pfe_ct_rtable_entry_t * _30;

  <bb 2> [local count: 357913939]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = phys_entry_temp_34(D)->new_phys_entry_va;
  _1->flags = 0;
  # DEBUG BEGIN_STMT
  ret_38 = pfe_rtable_add_entry_get_phys_pa (rtable_36(D), phys_entry_temp_34(D));
  # DEBUG ret => ret_38
  # DEBUG BEGIN_STMT
  if (ret_38 == 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 8>; [50.00%]

  <bb 3> [local count: 178956970]:
  # DEBUG BEGIN_STMT
  _2 = phys_entry_temp_34(D)->new_phys_entry_va;
  _3 = pfe_rtable_phys_entry_is_htable (rtable_36(D), _2);
  if (_3 == 1)
    goto <bb 4>; [34.00%]
  else
    goto <bb 9>; [66.00%]

  <bb 9> [local count: 118111600]:
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 60845370]:
  # DEBUG BEGIN_STMT
  _2->next = 0;
  goto <bb 8>; [100.00%]

  <bb 5> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  _4 = _16 >> 24;
  _5 = _16 >> 8;
  _6 = _5 & 65280;
  _7 = _4 | _6;
  _8 = _16 << 8;
  _9 = _8 & 16711680;
  _10 = _7 | _9;
  _11 = _16 << 24;
  _12 = _10 | _11;
  _13 = (struct pfe_ct_rtable_entry_t *) _12;
  _14 = pfe_rtable_phys_entry_get_va (rtable_36(D), _13);
  phys_entry_temp_34(D)->last_phys_entry_va = _14;

  <bb 6> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _15 = phys_entry_temp_34(D)->last_phys_entry_va;
  _16 = _15->next;
  if (_16 != 0)
    goto <bb 5>; [89.00%]
  else
    goto <bb 7>; [11.00%]

  <bb 7> [local count: 118111601]:
  # _17 = PHI <_15(6)>
  # DEBUG BEGIN_STMT
  valid_tmp_39 = _17->flags;
  # DEBUG valid_tmp => valid_tmp_39
  # DEBUG BEGIN_STMT
  _17->flags = 0;
  # DEBUG BEGIN_STMT
  oal_time_usleep (10);
  # DEBUG BEGIN_STMT
  _18 = phys_entry_temp_34(D)->new_phys_entry_pa;
  _19 = (long unsigned int) _18;
  _20 = _19 >> 24;
  _21 = _19 >> 8;
  _22 = _21 & 65280;
  _23 = _20 | _22;
  _24 = _19 << 8;
  _25 = _24 & 16711680;
  _26 = _23 | _25;
  _27 = _19 << 24;
  _28 = phys_entry_temp_34(D)->last_phys_entry_va;
  _29 = _26 | _27;
  _28->next = _29;
  # DEBUG BEGIN_STMT
  __asm__ __volatile__(" dmb" :  :  : "memory");
  # DEBUG BEGIN_STMT
  _30 = phys_entry_temp_34(D)->last_phys_entry_va;
  _30->flags = valid_tmp_39;

  <bb 8> [local count: 357913940]:
  # DEBUG BEGIN_STMT
  return ret_38;

}


pfe_rtable_add_entry_get_phys_pa (struct pfe_rtable_t * rtable, struct pfe_rtable_phys_entry_infor_t * phys_entry_temp)
{
  errno_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  struct pfe_ct_rtable_entry_t * _2;
  unsigned char _3;
  struct fifo_t * _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  _1 = phys_entry_temp_8(D)->new_phys_entry_va;
  _2 = pfe_rtable_phys_entry_get_pa (rtable_9(D), _1);
  phys_entry_temp_8(D)->new_phys_entry_pa = _2;
  # DEBUG BEGIN_STMT
  if (_2 == 0B)
    goto <bb 3>; [30.00%]
  else
    goto <bb 5>; [70.00%]

  <bb 3> [local count: 322122547]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = pfe_rtable_phys_entry_is_pool (rtable_9(D), _1);
  if (_3 != 0)
    goto <bb 4>; [33.00%]
  else
    goto <bb 5>; [67.00%]

  <bb 4> [local count: 106300441]:
  # DEBUG BEGIN_STMT
  _4 = rtable_9(D)->pool_va;
  fifo_put (_4, _1);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT

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

}


pfe_rtable_entry_is_duplicate (struct pfe_rtable_t * rtable, struct pfe_rtable_entry_t * entry)
{
  struct LLIST_t * item;
  bool_t match;
  union pfe_rtable_criterion_arg_t arg;
  struct pfe_rtable_entry_t * entry2;
  int _1;
  struct LLIST_Struct * _2;
  struct LLIST_t * _3;
  int _4;
  unsigned char _5;

  <bb 2> [local count: 328181520]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = pfe_rtable_entry_to_5t (entry_11(D), &arg.five_tuple);
  if (_1 != 0)
    goto <bb 7>; [50.00%]
  else
    goto <bb 3>; [50.00%]

  <bb 3> [local count: 164090760]:
  # DEBUG BEGIN_STMT
  _2 = rtable_13(D)->active_entries.prNext;
  _3 = &rtable_13(D)->active_entries;
  if (_2 != _3)
    goto <bb 8>; [70.00%]
  else
    goto <bb 7>; [30.00%]

  <bb 8> [local count: 114863532]:
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 1014686024]:
  # DEBUG BEGIN_STMT
  _4 = item_7 - 52B;
  entry2_14 = (struct pfe_rtable_entry_t *) _4;
  # DEBUG entry2 => entry2_14
  # DEBUG BEGIN_STMT
  _5 = pfe_rtable_match_criterion (5, &arg, entry2_14);
  if (_5 == 1)
    goto <bb 7>; [5.50%]
  else
    goto <bb 5>; [94.50%]

  <bb 5> [local count: 958878294]:
  # DEBUG BEGIN_STMT
  item_16 = item_7->prNext;
  # DEBUG item => item_16

  <bb 6> [local count: 1073741824]:
  # item_7 = PHI <item_16(5), _2(8)>
  # DEBUG item => item_7
  # DEBUG BEGIN_STMT
  if (_3 != item_7)
    goto <bb 4>; [94.50%]
  else
    goto <bb 7>; [5.50%]

  <bb 7> [local count: 328181520]:
  # match_6 = PHI <0(2), 0(3), 1(4), 0(6)>
  # DEBUG match => match_6
  # DEBUG BEGIN_STMT
  arg ={v} {CLOBBER};
  return match_6;

}


pfe_rtable_entry_get_stats_index (const struct pfe_rtable_entry_t * entry)
{
  uint8_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;
  short unsigned int _3;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_5(D)->phys_entry;
  _2 = _1->conntrack_stats_index;
  _3 = _2 >> 8;
  ret_6 = (uint8_t) _3;
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_rtable_entry_get_child (const struct pfe_rtable_entry_t * entry)
{
  struct pfe_rtable_entry_t * ptr;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ptr_3 = entry_2(D)->child;
  # DEBUG ptr => ptr_3
  # DEBUG BEGIN_STMT
  return ptr_3;

}


pfe_rtable_entry_set_child (struct pfe_rtable_entry_t * entry, struct pfe_rtable_entry_t * child)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  entry_2(D)->child = child_3(D);
  return;

}


pfe_rtable_entry_get_refptr (struct pfe_rtable_entry_t * entry)
{
  void * ptr;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ptr_3 = entry_2(D)->refptr;
  # DEBUG ptr => ptr_3
  # DEBUG BEGIN_STMT
  return ptr_3;

}


pfe_rtable_entry_set_refptr (struct pfe_rtable_entry_t * entry, void * refptr)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  entry_2(D)->refptr = refptr_3(D);
  return;

}


pfe_rtable_entry_set_callback (struct pfe_rtable_entry_t * entry, void (*pfe_rtable_callback_t) (void *, pfe_rtable_cbk_event_t) cbk, void * arg)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  entry_2(D)->callback = cbk_3(D);
  # DEBUG BEGIN_STMT
  entry_2(D)->callback_arg = arg_5(D);
  return;

}


pfe_rtable_entry_get_route_id (const struct pfe_rtable_entry_t * entry, uint32_t * route_id)
{
  errno_t ret;
  unsigned char _1;
  long unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_6(D)->route_id_valid;
  if (_1 == 1)
    goto <bb 3>; [48.89%]
  else
    goto <bb 4>; [51.11%]

  <bb 3> [local count: 524952378]:
  # DEBUG BEGIN_STMT
  _2 = entry_6(D)->route_id;
  *route_id_7(D) = _2;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


pfe_rtable_entry_set_route_id (struct pfe_rtable_entry_t * entry, uint32_t route_id)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  entry_2(D)->route_id = route_id_3(D);
  # DEBUG BEGIN_STMT
  entry_2(D)->route_id_valid = 1;
  return;

}


pfe_rtable_entry_set_timeout (struct pfe_rtable_entry_t * entry, uint32_t timeout)
{
  uint32_t elapsed;
  struct pfe_rtable_t * _1;
  long unsigned int _2;
  long unsigned int _3;
  long unsigned int _4;
  struct pfe_rtable_t * _5;
  short unsigned int _19;
  short unsigned int _20;
  long unsigned int _21;

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

  <bb 3> [local count: 574129754]:
  # DEBUG BEGIN_STMT
  # DEBUG D#9 => &_1->lock
  _19 = MEM[(const oal_mutex_t *)_1 + 60B];
  # DEBUG D#1 => D#9
  oal_mutex_lock.isra.0 (_19);

  <bb 4> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = entry_10(D)->timeout;
  if (_2 == 4294967295)
    goto <bb 5>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 5> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  entry_10(D)->curr_timeout = timeout_13(D);
  goto <bb 9>; [100.00%]

  <bb 6> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  _3 = entry_10(D)->curr_timeout;
  elapsed_12 = _2 - _3;
  # DEBUG elapsed => elapsed_12
  # DEBUG BEGIN_STMT
  if (elapsed_12 >= timeout_13(D))
    goto <bb 7>; [50.00%]
  else
    goto <bb 8>; [50.00%]

  <bb 7> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  entry_10(D)->curr_timeout = 0;
  goto <bb 9>; [100.00%]

  <bb 8> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  _21 = _3 - _2;
  _4 = timeout_13(D) + _21;
  entry_10(D)->curr_timeout = _4;

  <bb 9> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  entry_10(D)->timeout = timeout_13(D);
  # DEBUG BEGIN_STMT
  _5 = entry_10(D)->rtable;
  if (_5 != 0B)
    goto <bb 10>; [53.47%]
  else
    goto <bb 11>; [46.53%]

  <bb 10> [local count: 574129754]:
  # DEBUG BEGIN_STMT
  # DEBUG D#10 => &_5->lock
  _20 = MEM[(const oal_mutex_t *)_5 + 60B];
  # DEBUG D#2 => D#10
  oal_mutex_unlock.isra.0 (_20);

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

}


pfe_rtable_entry_get_action_flags (struct pfe_rtable_entry_t * entry)
{
  pfe_ct_route_actions_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  <unnamed type> _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;
  long unsigned int _11;
  long unsigned int _12;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_14(D)->phys_entry;
  _2 = _1->actions;
  _3 = (long unsigned int) _2;
  _4 = _3 >> 24;
  _5 = _3 >> 8;
  _6 = _5 & 65280;
  _7 = _4 | _6;
  _8 = _3 << 8;
  _9 = _8 & 16711680;
  _10 = _7 | _9;
  _11 = _3 << 24;
  _12 = _10 | _11;
  ret_15 = (pfe_ct_route_actions_t) _12;
  # DEBUG ret => ret_15
  # DEBUG BEGIN_STMT
  return ret_15;

}


pfe_rtable_entry_get_id5t (const struct pfe_rtable_entry_t * entry, uint32_t * id5t)
{
  struct pfe_ct_rtable_entry_t * _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;
  long unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;
  long unsigned int _11;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_13(D)->phys_entry;
  _2 = _1->id5t;
  _3 = _2 >> 24;
  _4 = _2 >> 8;
  _5 = _4 & 65280;
  _6 = _3 | _5;
  _7 = _2 << 8;
  _8 = _7 & 16711680;
  _9 = _6 | _8;
  _10 = _2 << 24;
  _11 = _9 | _10;
  *id5t_14(D) = _11;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  return 0;

}


pfe_rtable_entry_set_id5t (struct pfe_rtable_entry_t * entry, uint32_t id5t)
{
  long unsigned int _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;
  long unsigned int _8;
  struct pfe_ct_rtable_entry_t * _9;
  long unsigned int _10;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = id5t_11(D) >> 24;
  _2 = id5t_11(D) >> 8;
  _3 = _2 & 65280;
  _4 = _1 | _3;
  _5 = id5t_11(D) << 8;
  _6 = _5 & 16711680;
  _7 = _4 | _6;
  _8 = id5t_11(D) << 24;
  _9 = entry_13(D)->phys_entry;
  _10 = _7 | _8;
  _9->id5t = _10;
  return;

}


pfe_rtable_entry_set_out_pppoe_sid (struct pfe_rtable_entry_t * entry, uint16_t sid)
{
  uint32_t flags;
  struct pfe_ct_rtable_entry_t * _1;
  <unnamed type> _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;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  short unsigned int _14;
  long unsigned int _15;
  <unnamed type> _16;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_19(D)->phys_entry;
  _2 = _1->actions;
  _3 = (long unsigned int) _2;
  _4 = _3 >> 24;
  _5 = _3 >> 8;
  _6 = _5 & 65280;
  _7 = _4 | _6;
  _8 = _3 << 8;
  _9 = _8 & 16711680;
  _10 = _7 | _9;
  _11 = _3 << 24;
  flags_20 = _10 | _11;
  # DEBUG flags => flags_20
  # DEBUG BEGIN_STMT
  _12 = flags_20 & 2048;
  if (_12 != 0)
    goto <bb 5>; [50.00%]
  else
    goto <bb 3>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _13 = flags_20 & 1;
  if (_13 == 0)
    goto <bb 5>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 4> [local count: 268435456]:
  # DEBUG BEGIN_STMT
  _14 = sid_21(D) r>> 8;
  _1->args.pppoe_sid = _14;
  # DEBUG BEGIN_STMT
  _15 = _3 | 67108864;
  _16 = (<unnamed type>) _15;
  _1->actions = _16;

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

}


pfe_rtable_entry_set_out_inner_vlan (struct pfe_rtable_entry_t * entry, uint16_t vlan)
{
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;
  <unnamed type> _3;
  long unsigned int _4;
  long unsigned int _5;
  <unnamed type> _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_8(D)->phys_entry;
  _2 = vlan_9(D) r>> 8;
  _1->args.vlan1 = _2;
  # DEBUG BEGIN_STMT
  _3 = _1->actions;
  _4 = (long unsigned int) _3;
  _5 = _4 | 524288;
  _6 = (<unnamed type>) _5;
  _1->actions = _6;
  return;

}


pfe_rtable_entry_get_out_vlan (const struct pfe_rtable_entry_t * entry)
{
  uint16_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  <unnamed type> _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;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  short unsigned int _14;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  _1 = entry_17(D)->phys_entry;
  _2 = _1->actions;
  _3 = (long unsigned int) _2;
  _4 = _3 >> 24;
  _5 = _3 >> 8;
  _6 = _5 & 65280;
  _7 = _4 | _6;
  _8 = _3 << 8;
  _9 = _8 & 16711680;
  _10 = _7 | _9;
  _11 = _3 << 24;
  _12 = _10 | _11;
  _13 = _12 & 4194306;
  if (_13 != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _14 = _1->args.vlan;
  ret_18 = _14 r>> 8;
  # DEBUG ret => ret_18

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

}


pfe_rtable_entry_set_out_vlan (struct pfe_rtable_entry_t * entry, uint16_t vlan, bool_t replace)
{
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;
  <unnamed type> _3;
  long unsigned int _4;
  long unsigned int _5;
  long unsigned int _6;
  <unnamed type> _7;
  long unsigned int _8;
  <unnamed type> _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_12(D)->phys_entry;
  _2 = vlan_13(D) r>> 8;
  _1->args.vlan = _2;
  # DEBUG BEGIN_STMT
  _3 = _1->actions;
  _4 = (long unsigned int) _3;
  _5 = _4 & 4261396479;
  # DEBUG BEGIN_STMT
  if (replace_15(D) != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _6 = _5 | 16384;
  _7 = (<unnamed type>) _6;
  _1->actions = _7;
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _8 = _5 | 33554432;
  _9 = (<unnamed type>) _8;
  _1->actions = _9;

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

}


pfe_rtable_entry_set_out_mac_addrs (struct pfe_rtable_entry_t * entry, const uint8_t * smac, const uint8_t * dmac)
{
  struct pfe_ct_rtable_entry_t * _1;
  uint8_t[6] * _2;
  struct pfe_ct_rtable_entry_t * _3;
  uint8_t[6] * _4;
  struct pfe_ct_rtable_entry_t * _5;
  <unnamed type> _6;
  long unsigned int _7;
  long unsigned int _8;
  <unnamed type> _9;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_11(D)->phys_entry;
  _2 = &_1->args.smac;
  memcpy (_2, smac_12(D), 6);
  # DEBUG BEGIN_STMT
  _3 = entry_11(D)->phys_entry;
  _4 = &_3->args.dmac;
  memcpy (_4, dmac_14(D), 6);
  # DEBUG BEGIN_STMT
  _5 = entry_11(D)->phys_entry;
  _6 = _5->actions;
  _7 = (long unsigned int) _6;
  _8 = _7 | 16777216;
  _9 = (<unnamed type>) _8;
  _5->actions = _9;
  return;

}


pfe_rtable_entry_remove_ttl_decrement (struct pfe_rtable_entry_t * entry)
{
  struct pfe_ct_rtable_entry_t * _1;
  <unnamed type> _2;
  long unsigned int _3;
  long unsigned int _4;
  <unnamed type> _5;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_7(D)->phys_entry;
  _2 = _1->actions;
  _3 = (long unsigned int) _2;
  _4 = _3 & 2147483647;
  _5 = (<unnamed type>) _4;
  _1->actions = _5;
  return;

}


pfe_rtable_entry_set_ttl_decrement (struct pfe_rtable_entry_t * entry)
{
  struct pfe_ct_rtable_entry_t * _1;
  <unnamed type> _2;
  long unsigned int _3;
  long unsigned int _4;
  <unnamed type> _5;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_7(D)->phys_entry;
  _2 = _1->actions;
  _3 = (long unsigned int) _2;
  _4 = _3 | 2147483648;
  _5 = (<unnamed type>) _4;
  _1->actions = _5;
  return;

}


pfe_rtable_entry_set_out_dport (struct pfe_rtable_entry_t * entry, uint16_t output_dport)
{
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;
  <unnamed type> _3;
  long unsigned int _4;
  long unsigned int _5;
  <unnamed type> _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_8(D)->phys_entry;
  _2 = output_dport_9(D) r>> 8;
  _1->args.dport = _2;
  # DEBUG BEGIN_STMT
  _3 = _1->actions;
  _4 = (long unsigned int) _3;
  _5 = _4 | 4096;
  _6 = (<unnamed type>) _5;
  _1->actions = _6;
  return;

}


pfe_rtable_entry_set_out_sport (const struct pfe_rtable_entry_t * entry, uint16_t output_sport)
{
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;
  <unnamed type> _3;
  long unsigned int _4;
  long unsigned int _5;
  <unnamed type> _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_8(D)->phys_entry;
  _2 = output_sport_9(D) r>> 8;
  _1->args.sport = _2;
  # DEBUG BEGIN_STMT
  _3 = _1->actions;
  _4 = (long unsigned int) _3;
  _5 = _4 | 1024;
  _6 = (<unnamed type>) _5;
  _1->actions = _6;
  return;

}


pfe_rtable_entry_set_out_dip (struct pfe_rtable_entry_t * entry, const struct pfe_ip_addr_t * output_dip)
{
  errno_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  unsigned char _2;
  unsigned char _3;
  struct pfe_ct_rtable_entry_t * _4;
  unsigned char _5;
  uint32_t * _6;
  const union 
{
  uint16_t v6[8];
} * _7;
  struct pfe_ct_rtable_entry_t * _8;
  struct pfe_ct_rtable_entry_t * _9;
  <unnamed type> _10;
  long unsigned int _11;
  long unsigned int _12;
  <unnamed type> _13;
  unsigned int _18;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_16(D)->phys_entry;
  _2 = _1->flag_ipv6;
  if (_2 != 255)
    goto <bb 3>; [66.00%]
  else
    goto <bb 5>; [34.00%]

  <bb 3> [local count: 708669605]:
  _3 = output_dip_17(D)->is_ipv4;
  if (_3 != 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  _18 = MEM[(char * {ref-all})output_dip_17(D)];
  MEM[(char * {ref-all})_1 + 80B] = _18;
  # DEBUG BEGIN_STMT
  _4 = entry_16(D)->phys_entry;
  _4->flag_ipv6 = 0;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  goto <bb 10>; [100.00%]

  <bb 5> [local count: 719407023]:
  # DEBUG BEGIN_STMT
  if (_2 != 255)
    goto <bb 7>; [78.28%]
  else
    goto <bb 11>; [21.72%]

  <bb 7> [local count: 563151818]:
  _5 = output_dip_17(D)->is_ipv4;
  if (_5 == 0)
    goto <bb 9>; [47.77%]
  else
    goto <bb 11>; [52.23%]

  <bb 9> [local count: 269017623]:
  # DEBUG BEGIN_STMT
  _6 = &_1->args.ipv.v6.dip[0];
  _7 = &output_dip_17(D)->v6;
  memcpy (_6, _7, 16);
  # DEBUG BEGIN_STMT
  _8 = entry_16(D)->phys_entry;
  _8->flag_ipv6 = 1;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT

  <bb 10> [local count: 623352426]:
  # DEBUG BEGIN_STMT
  _9 = entry_16(D)->phys_entry;
  _10 = _9->actions;
  _11 = (long unsigned int) _10;
  _12 = _11 | 2048;
  _13 = (<unnamed type>) _12;
  _9->actions = _13;

  <bb 11> [local count: 1073741824]:
  # ret_24 = PHI <22(7), 0(10), 22(5)>
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  return ret_24;

}


pfe_rtable_entry_set_out_sip (struct pfe_rtable_entry_t * entry, const struct pfe_ip_addr_t * output_sip)
{
  errno_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  unsigned char _2;
  unsigned char _3;
  struct pfe_ct_rtable_entry_t * _4;
  unsigned char _5;
  uint32_t * _6;
  const union 
{
  uint16_t v6[8];
} * _7;
  struct pfe_ct_rtable_entry_t * _8;
  struct pfe_ct_rtable_entry_t * _9;
  <unnamed type> _10;
  long unsigned int _11;
  long unsigned int _12;
  <unnamed type> _13;
  unsigned int _18;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_16(D)->phys_entry;
  _2 = _1->flag_ipv6;
  if (_2 != 255)
    goto <bb 3>; [66.00%]
  else
    goto <bb 5>; [34.00%]

  <bb 3> [local count: 708669605]:
  _3 = output_sip_17(D)->is_ipv4;
  if (_3 != 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  _18 = MEM[(char * {ref-all})output_sip_17(D)];
  MEM[(char * {ref-all})_1 + 76B] = _18;
  # DEBUG BEGIN_STMT
  _4 = entry_16(D)->phys_entry;
  _4->flag_ipv6 = 0;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  goto <bb 10>; [100.00%]

  <bb 5> [local count: 719407023]:
  # DEBUG BEGIN_STMT
  if (_2 != 255)
    goto <bb 7>; [78.28%]
  else
    goto <bb 11>; [21.72%]

  <bb 7> [local count: 563151818]:
  _5 = output_sip_17(D)->is_ipv4;
  if (_5 == 0)
    goto <bb 9>; [47.77%]
  else
    goto <bb 11>; [52.23%]

  <bb 9> [local count: 269017623]:
  # DEBUG BEGIN_STMT
  _6 = &_1->args.ipv.v6.sip[0];
  _7 = &output_sip_17(D)->v6;
  memcpy (_6, _7, 16);
  # DEBUG BEGIN_STMT
  _8 = entry_16(D)->phys_entry;
  _8->flag_ipv6 = 1;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT

  <bb 10> [local count: 623352426]:
  # DEBUG BEGIN_STMT
  _9 = entry_16(D)->phys_entry;
  _10 = _9->actions;
  _11 = (long unsigned int) _10;
  _12 = _11 | 512;
  _13 = (<unnamed type>) _12;
  _9->actions = _13;

  <bb 11> [local count: 1073741824]:
  # ret_24 = PHI <22(7), 0(10), 22(5)>
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  return ret_24;

}


pfe_rtable_entry_set_dstif (struct pfe_rtable_entry_t * entry, const struct pfe_phy_if_t * iface)
{
  errno_t ret;
  pfe_ct_phy_if_id_t if_id;
  struct pfe_ct_rtable_entry_t * _5;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG if_id => 10
  # DEBUG BEGIN_STMT
  if_id_3 = pfe_phy_if_get_id (iface_2(D));
  # DEBUG if_id => if_id_3
  # DEBUG BEGIN_STMT
  # DEBUG entry => entry_4(D)
  # DEBUG if_id => if_id_3
  # DEBUG INLINE_ENTRY pfe_rtable_entry_set_dstif_id
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (if_id_3 > 9)
    goto <bb 4>; [35.00%]
  else
    goto <bb 3>; [65.00%]

  <bb 3> [local count: 697932186]:
  # DEBUG BEGIN_STMT
  _5 = entry_4(D)->phys_entry;
  _5->e_phy_if = if_id_3;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

  <bb 4> [local count: 1073741824]:
  # ret_6 = PHI <22(2), 0(3)>
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  # DEBUG entry => NULL
  # DEBUG if_id => NULL
  # DEBUG ret => NULL
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_rtable_entry_set_dstif_id (struct pfe_rtable_entry_t * entry, pfe_ct_phy_if_id_t if_id)
{
  errno_t ret;
  struct pfe_ct_rtable_entry_t * _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (if_id_4(D) > 9)
    goto <bb 4>; [35.00%]
  else
    goto <bb 3>; [65.00%]

  <bb 3> [local count: 697932186]:
  # DEBUG BEGIN_STMT
  _1 = entry_6(D)->phys_entry;
  _1->e_phy_if = if_id_4(D);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


pfe_rtable_entry_get_proto (const struct pfe_rtable_entry_t * entry)
{
  uint8_t ret;
  struct pfe_ct_rtable_entry_t * _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_3(D)->phys_entry;
  ret_4 = _1->proto;
  # DEBUG ret => ret_4
  # DEBUG BEGIN_STMT
  return ret_4;

}


pfe_rtable_entry_set_proto (struct pfe_rtable_entry_t * entry, uint8_t proto)
{
  struct pfe_ct_rtable_entry_t * _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_3(D)->phys_entry;
  _1->proto = proto_4(D);
  return;

}


pfe_rtable_entry_get_dport (const struct pfe_rtable_entry_t * entry)
{
  uint16_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_4(D)->phys_entry;
  _2 = _1->dport;
  ret_5 = _2 r>> 8;
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  return ret_5;

}


pfe_rtable_entry_set_dport (struct pfe_rtable_entry_t * entry, uint16_t dport)
{
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_4(D)->phys_entry;
  _2 = dport_5(D) r>> 8;
  _1->dport = _2;
  return;

}


pfe_rtable_entry_get_sport (const struct pfe_rtable_entry_t * entry)
{
  uint16_t ret;
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = entry_4(D)->phys_entry;
  _2 = _1->sport;
  ret_5 = _2 r>> 8;
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  return ret_5;

}


pfe_rtable_entry_set_sport (struct pfe_rtable_entry_t * entry, uint16_t sport)
{
  struct pfe_ct_rtable_entry_t * _1;
  short unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = entry_4(D)->phys_entry;
  _2 = sport_5(D) r>> 8;
  _1->sport = _2;
  return;

}


pfe_rtable_entry_get_dip (struct pfe_rtable_entry_t * entry, struct pfe_ip_addr_t * ip_addr)
{
  struct pfe_5_tuple_t tuple;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  pfe_rtable_entry_to_5t (entry_2(D), &tuple);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  memcpy (ip_addr_4(D), &tuple.dst_ip, 22);
  tuple ={v} {CLOBBER};
  return;

}


pfe_rtable_entry_set_dip (struct pfe_rtable_entry_t * entry, const struct pfe_ip_addr_t * ip_addr)
{
  unsigned char _1;
  struct pfe_ct_rtable_entry_t * _2;
  unsigned char _3;
  unsigned char _4;
  struct pfe_ct_rtable_entry_t * _5;
  errno_t _8;
  int _9;
  unsigned int _13;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = ip_addr_11(D)->is_ipv4;
  if (_1 != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _2 = entry_12(D)->phys_entry;
  _3 = _2->flag_ipv6;
  _4 = _3 + 255;
  if (_4 <= 253)
    goto <bb 6>; [21.72%]
  else
    goto <bb 4>; [78.28%]

  <bb 4> [local count: 420262550]:
  # DEBUG BEGIN_STMT
  _13 = MEM[(char * {ref-all})ip_addr_11(D)];
  MEM[(char * {ref-all})_2 + 20B] = _13;
  # DEBUG BEGIN_STMT
  _5 = entry_12(D)->phys_entry;
  _5->flag_ipv6 = 0;
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 536870912]:
  _9 = pfe_rtable_entry_set_dip.part.0 (entry_12(D), ip_addr_11(D));

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

}


pfe_rtable_entry_get_sip (struct pfe_rtable_entry_t * entry, struct pfe_ip_addr_t * ip_addr)
{
  struct pfe_5_tuple_t tuple;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  pfe_rtable_entry_to_5t (entry_2(D), &tuple);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  memcpy (ip_addr_4(D), &tuple.src_ip, 22);
  tuple ={v} {CLOBBER};
  return;

}


pfe_rtable_entry_set_sip (struct pfe_rtable_entry_t * entry, const struct pfe_ip_addr_t * ip_addr)
{
  unsigned char _1;
  struct pfe_ct_rtable_entry_t * _2;
  unsigned char _3;
  unsigned char _4;
  struct pfe_ct_rtable_entry_t * _5;
  errno_t _8;
  int _9;
  unsigned int _13;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = ip_addr_11(D)->is_ipv4;
  if (_1 != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _2 = entry_12(D)->phys_entry;
  _3 = _2->flag_ipv6;
  _4 = _3 + 255;
  if (_4 <= 253)
    goto <bb 6>; [21.72%]
  else
    goto <bb 4>; [78.28%]

  <bb 4> [local count: 420262550]:
  # DEBUG BEGIN_STMT
  _13 = MEM[(char * {ref-all})ip_addr_11(D)];
  MEM[(char * {ref-all})_2 + 16B] = _13;
  # DEBUG BEGIN_STMT
  _5 = entry_12(D)->phys_entry;
  _5->flag_ipv6 = 0;
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 536870912]:
  _9 = pfe_rtable_entry_set_sip.part.0 (entry_12(D), ip_addr_11(D));

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

}


pfe_rtable_entry_set_5t (struct pfe_rtable_entry_t * entry, const struct pfe_5_tuple_t * tuple)
{
  errno_t ret;
  const struct pfe_ip_addr_t * _1;
  const struct pfe_ip_addr_t * _2;
  short unsigned int _3;
  short unsigned int _4;
  unsigned char _5;
  short unsigned int _15;
  struct pfe_ct_rtable_entry_t * _16;
  short unsigned int _17;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &tuple_8(D)->src_ip;
  ret_12 = pfe_rtable_entry_set_sip (entry_10(D), _1);
  # DEBUG ret => ret_12
  # DEBUG BEGIN_STMT
  if (ret_12 == 0)
    goto <bb 3>; [33.00%]
  else
    goto <bb 5>; [67.00%]

  <bb 3> [local count: 354334802]:
  # DEBUG BEGIN_STMT
  _2 = &tuple_8(D)->dst_ip;
  ret_14 = pfe_rtable_entry_set_dip (entry_10(D), _2);
  # DEBUG ret => ret_14
  # DEBUG BEGIN_STMT
  if (ret_14 == 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 177167401]:
  # DEBUG BEGIN_STMT
  _3 = tuple_8(D)->sport;
  # DEBUG entry => entry_10(D)
  # DEBUG sport => _3
  # DEBUG INLINE_ENTRY pfe_rtable_entry_set_sport
  # DEBUG BEGIN_STMT
  _16 = entry_10(D)->phys_entry;
  _17 = _3 r>> 8;
  _16->sport = _17;
  # DEBUG entry => NULL
  # DEBUG sport => NULL
  # DEBUG BEGIN_STMT
  _4 = tuple_8(D)->dport;
  # DEBUG entry => entry_10(D)
  # DEBUG dport => _4
  # DEBUG INLINE_ENTRY pfe_rtable_entry_set_dport
  # DEBUG BEGIN_STMT
  _15 = _4 r>> 8;
  _16->dport = _15;
  # DEBUG entry => NULL
  # DEBUG dport => NULL
  # DEBUG BEGIN_STMT
  _5 = tuple_8(D)->proto;
  # DEBUG entry => entry_10(D)
  # DEBUG proto => _5
  # DEBUG INLINE_ENTRY pfe_rtable_entry_set_proto
  # DEBUG BEGIN_STMT
  _16->proto = _5;

  <bb 5> [local count: 1073741824]:
  # ret_6 = PHI <ret_12(2), ret_14(3), 0(4)>
  # DEBUG entry => NULL
  # DEBUG proto => NULL
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_rtable_entry_free (struct pfe_rtable_entry_t * entry)
{
  struct pfe_ct_rtable_entry_t * _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (entry_4(D) != 0B)
    goto <bb 3>; [70.00%]
  else
    goto <bb 6>; [30.00%]

  <bb 3> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  _1 = entry_4(D)->temp_phys_entry;
  if (_1 != 0B)
    goto <bb 4>; [53.47%]
  else
    goto <bb 5>; [46.53%]

  <bb 4> [local count: 401890828]:
  # DEBUG BEGIN_STMT
  oal_mm_free (_1);

  <bb 5> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  oal_mm_free (entry_4(D));

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

}


pfe_rtable_entry_create ()
{
  struct pfe_rtable_entry_t * entry;
  void * _1;
  struct pfe_ct_rtable_entry_t * _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_7 = oal_mm_malloc (68);
  # DEBUG entry => entry_7
  # DEBUG BEGIN_STMT
  if (entry_7 != 0B)
    goto <bb 3>; [53.47%]
  else
    goto <bb 6>; [46.53%]

  <bb 3> [local count: 574129754]:
  # DEBUG BEGIN_STMT
  memset (entry_7, 0, 68);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = oal_mm_malloc (128);
  entry_7->temp_phys_entry = _1;
  # DEBUG BEGIN_STMT
  if (_1 == 0B)
    goto <bb 4>; [14.90%]
  else
    goto <bb 5>; [85.10%]

  <bb 4> [local count: 85545333]:
  # DEBUG BEGIN_STMT
  oal_mm_free (entry_7);
  # DEBUG BEGIN_STMT
  # DEBUG entry => 0B
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 488584420]:
  # DEBUG BEGIN_STMT
  memset (_1, 0, 128);
  # DEBUG BEGIN_STMT
  _2 = entry_7->temp_phys_entry;
  entry_7->phys_entry = _2;
  # DEBUG BEGIN_STMT
  entry_7->rtable = 0B;
  # DEBUG BEGIN_STMT
  entry_7->timeout = 4294967295;
  # DEBUG BEGIN_STMT
  entry_7->curr_timeout = 4294967295;
  # DEBUG BEGIN_STMT
  entry_7->route_id = 0;
  # DEBUG BEGIN_STMT
  entry_7->route_id_valid = 0;
  # DEBUG BEGIN_STMT
  entry_7->callback = 0B;
  # DEBUG BEGIN_STMT
  entry_7->callback_arg = 0B;
  # DEBUG BEGIN_STMT
  entry_7->refptr = 0B;
  # DEBUG BEGIN_STMT
  entry_7->child = 0B;
  # DEBUG BEGIN_STMT
  _2->flag_ipv6 = 255;

  <bb 6> [local count: 1073741824]:
  # entry_3 = PHI <entry_7(2), 0B(4), entry_7(5)>
  # DEBUG entry => entry_3
  # DEBUG BEGIN_STMT
  return entry_3;

}


pfe_rtable_phys_entry_get_va (struct pfe_rtable_t * rtable, struct pfe_ct_rtable_entry_t * phys_entry_pa)
{
  struct pfe_ct_rtable_entry_t * va;
  unsigned char _1;
  unsigned int _2;
  unsigned int phys_entry_pa.16_3;
  unsigned int _4;
  unsigned char _5;
  unsigned int _6;
  unsigned int phys_entry_pa.17_7;
  unsigned int _8;

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

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  _2 = rtable_11(D)->htable_va_pa_offset;
  phys_entry_pa.16_3 = (unsigned int) phys_entry_pa_12(D);
  _4 = _2 + phys_entry_pa.16_3;
  va_14 = (struct pfe_ct_rtable_entry_t *) _4;
  # DEBUG va => va_14
  goto <bb 6>; [100.00%]

  <bb 4> [local count: 708669605]:
  # DEBUG BEGIN_STMT
  _5 = pfe_rtable_phys_entry_is_pool (rtable_11(D), phys_entry_pa_12(D));
  if (_5 == 1)
    goto <bb 5>; [55.78%]
  else
    goto <bb 6>; [44.22%]

  <bb 5> [local count: 395295905]:
  # DEBUG BEGIN_STMT
  _6 = rtable_11(D)->pool_va_pa_offset;
  phys_entry_pa.17_7 = (unsigned int) phys_entry_pa_12(D);
  _8 = _6 + phys_entry_pa.17_7;
  va_13 = (struct pfe_ct_rtable_entry_t *) _8;
  # DEBUG va => va_13

  <bb 6> [local count: 1073741824]:
  # va_9 = PHI <va_14(3), va_13(5), 0B(4)>
  # DEBUG va => va_9
  # DEBUG BEGIN_STMT
  return va_9;

}


pfe_rtable_phys_entry_get_pa (struct pfe_rtable_t * rtable, struct pfe_ct_rtable_entry_t * phys_entry_va)
{
  struct pfe_ct_rtable_entry_t * pa;
  unsigned char _1;
  unsigned int phys_entry_va.6_2;
  unsigned int _3;
  unsigned int _4;

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

  <bb 3> [local count: 365072220]:
  # DEBUG BEGIN_STMT
  phys_entry_va.6_2 = (unsigned int) phys_entry_va_9(D);
  _3 = rtable_8(D)->htable_va_pa_offset;
  _4 = phys_entry_va.6_2 - _3;
  pa_10 = (struct pfe_ct_rtable_entry_t *) _4;
  # DEBUG pa => pa_10
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 708669600]:
  pa_6 = pfe_rtable_phys_entry_get_pa.part.0 (rtable_8(D), phys_entry_va_9(D));

  <bb 5> [local count: 1073741824]:
  # pa_5 = PHI <pa_10(3), pa_6(4)>
  # DEBUG pa => pa_5
  # DEBUG BEGIN_STMT
  return pa_5;

}


pfe_rtable_phys_entry_is_pool (const struct pfe_rtable_t * rtable, const struct pfe_ct_rtable_entry_t * phys_entry)
{
  bool_t ret;
  unsigned int _1;
  unsigned int phys_entry.8_2;
  unsigned int _3;
  unsigned int _4;
  unsigned int _5;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = rtable_8(D)->pool_base_va;
  phys_entry.8_2 = (unsigned int) phys_entry_9(D);
  if (_1 <= phys_entry.8_2)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870913]:
  _3 = rtable_8(D)->pool_end_va;
  if (phys_entry.8_2 < _3)
    goto <bb 7>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 4> [local count: 805306369]:
  # DEBUG BEGIN_STMT
  _4 = rtable_8(D)->pool_base_pa;
  if (phys_entry.8_2 >= _4)
    goto <bb 5>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 5> [local count: 402653184]:
  _5 = rtable_8(D)->pool_end_pa;
  if (phys_entry.8_2 < _5)
    goto <bb 7>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 6> [local count: 603979777]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

  <bb 7> [local count: 1073741824]:
  # ret_6 = PHI <1(3), 1(5), 0(6)>
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_rtable_phys_entry_is_htable (const struct pfe_rtable_t * rtable, const struct pfe_ct_rtable_entry_t * phys_entry)
{
  bool_t ret;
  unsigned int _1;
  unsigned int phys_entry.12_2;
  unsigned int _3;
  unsigned int _4;
  unsigned int _5;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = rtable_8(D)->htable_base_va;
  phys_entry.12_2 = (unsigned int) phys_entry_9(D);
  if (_1 <= phys_entry.12_2)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870913]:
  _3 = rtable_8(D)->htable_end_va;
  if (phys_entry.12_2 < _3)
    goto <bb 7>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 4> [local count: 805306369]:
  # DEBUG BEGIN_STMT
  _4 = rtable_8(D)->htable_base_pa;
  if (phys_entry.12_2 >= _4)
    goto <bb 5>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 5> [local count: 402653184]:
  _5 = rtable_8(D)->htable_end_pa;
  if (phys_entry.12_2 < _5)
    goto <bb 7>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 6> [local count: 603979777]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

  <bb 7> [local count: 1073741824]:
  # ret_6 = PHI <1(3), 1(5), 0(6)>
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  return ret_6;

}


pfe_rtable_invalidate (struct pfe_rtable_t * rtable)
{
  struct pfe_ct_rtable_entry_t * table;
  uint32_t ii;
  unsigned int _1;
  long unsigned int _2;
  struct pfe_ct_rtable_entry_t * _3;
  long unsigned int _4;
  unsigned int _5;
  long unsigned int _6;
  struct pfe_ct_rtable_entry_t * _7;
  long unsigned int _8;
  short unsigned int _25;
  short unsigned int _26;

  <bb 2> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = rtable_14(D)->htable_base_va;
  table_15 = (struct pfe_ct_rtable_entry_t *) _1;
  # DEBUG table => table_15
  # DEBUG BEGIN_STMT
  # DEBUG D#4 => &rtable_14(D)->lock
  _25 = MEM[(const oal_mutex_t *)rtable_14(D) + 60B];
  # DEBUG D#1 => D#4
  oal_mutex_lock.isra.0 (_25);
  # DEBUG BEGIN_STMT
  # DEBUG ii => 0
  goto <bb 4>; [100.00%]

  <bb 3> [local count: 955630220]:
  # DEBUG BEGIN_STMT
  _2 = ii_9 * 128;
  _3 = table_15 + _2;
  _3->flags = 0;
  # DEBUG BEGIN_STMT
  _3->next = 0;
  # DEBUG BEGIN_STMT
  ii_24 = ii_9 + 1;
  # DEBUG ii => ii_24

  <bb 4> [local count: 1073741821]:
  # ii_9 = PHI <0(2), ii_24(3)>
  # DEBUG ii => ii_9
  # DEBUG BEGIN_STMT
  _4 = rtable_14(D)->htable_size;
  if (_4 > ii_9)
    goto <bb 3>; [89.00%]
  else
    goto <bb 5>; [11.00%]

  <bb 5> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  _5 = rtable_14(D)->pool_base_va;
  table_17 = (struct pfe_ct_rtable_entry_t *) _5;
  # DEBUG table => table_17
  # DEBUG BEGIN_STMT
  # DEBUG ii => 0
  goto <bb 7>; [100.00%]

  <bb 6> [local count: 955630224]:
  # DEBUG BEGIN_STMT
  _6 = ii_10 * 128;
  _7 = table_17 + _6;
  _7->flags = 0;
  # DEBUG BEGIN_STMT
  _7->next = 0;
  # DEBUG BEGIN_STMT
  ii_21 = ii_10 + 1;
  # DEBUG ii => ii_21

  <bb 7> [local count: 1073741824]:
  # ii_10 = PHI <0(5), ii_21(6)>
  # DEBUG ii => ii_10
  # DEBUG BEGIN_STMT
  _8 = rtable_14(D)->pool_size;
  if (_8 > ii_10)
    goto <bb 6>; [89.00%]
  else
    goto <bb 8>; [11.00%]

  <bb 8> [local count: 118111601]:
  # DEBUG BEGIN_STMT
  # DEBUG D#5 => &rtable_14(D)->lock
  _26 = MEM[(const oal_mutex_t *)rtable_14(D) + 60B];
  # DEBUG D#2 => D#5
  oal_mutex_unlock.isra.0 (_26);
  return;

}


pfe_get_crc32_be (uint32_t crc, uint8_t * data, uint16_t len)
{
  const uint8_t * tempdata;
  uint32_t tempcrc;
  uint16_t length;
  uint8_t i;
  unsigned char _1;
  long unsigned int _2;
  long unsigned int _3;
  long unsigned int _4;
  signed int tempcrc.2_5;
  long unsigned int iftmp.1_12;

  <bb 2> [local count: 14744043]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG length => len_13(D)
  # DEBUG BEGIN_STMT
  # DEBUG tempcrc => crc_14(D)
  # DEBUG BEGIN_STMT
  # DEBUG tempdata => data_15(D)
  # DEBUG BEGIN_STMT
  goto <bb 9>; [100.00%]

  <bb 3> [local count: 119292716]:
  # DEBUG BEGIN_STMT
  _1 = *tempdata_11;
  _2 = (long unsigned int) _1;
  _3 = _2 << 24;
  tempcrc_18 = _3 ^ tempcrc_10;
  # DEBUG tempcrc => tempcrc_18
  # DEBUG BEGIN_STMT
  tempdata_19 = tempdata_11 + 1;
  # DEBUG tempdata => tempdata_19
  # DEBUG BEGIN_STMT
  # DEBUG i => 0
  goto <bb 7>; [100.00%]

  <bb 4> [local count: 954449108]:
  # DEBUG BEGIN_STMT
  _4 = tempcrc_9 << 1;
  tempcrc.2_5 = (signed int) tempcrc_9;
  if (tempcrc.2_5 < 0)
    goto <bb 6>; [41.00%]
  else
    goto <bb 5>; [59.00%]

  <bb 5> [local count: 563124975]:

  <bb 6> [local count: 954449110]:
  # iftmp.1_12 = PHI <79764919(4), 0(5)>
  tempcrc_21 = _4 ^ iftmp.1_12;
  # DEBUG tempcrc => tempcrc_21
  # DEBUG BEGIN_STMT
  i_22 = i_7 + 1;
  # DEBUG i => i_22

  <bb 7> [local count: 1073741824]:
  # i_7 = PHI <0(3), i_22(6)>
  # tempcrc_9 = PHI <tempcrc_18(3), tempcrc_21(6)>
  # DEBUG tempcrc => tempcrc_9
  # DEBUG i => i_7
  # DEBUG BEGIN_STMT
  if (i_7 != 8)
    goto <bb 4>; [88.89%]
  else
    goto <bb 8>; [11.11%]

  <bb 8> [local count: 119292717]:
  # tempcrc_16 = PHI <tempcrc_9(7)>
  # DEBUG BEGIN_STMT
  length_20 = length_8 + 65535;
  # DEBUG length => length_20

  <bb 9> [local count: 134036760]:
  # length_8 = PHI <len_13(D)(2), length_20(8)>
  # tempcrc_10 = PHI <crc_14(D)(2), tempcrc_16(8)>
  # tempdata_11 = PHI <data_15(D)(2), tempdata_19(8)>
  # DEBUG tempdata => tempdata_11
  # DEBUG tempcrc => tempcrc_10
  # DEBUG length => length_8
  # DEBUG BEGIN_STMT
  if (length_8 != 0)
    goto <bb 3>; [89.00%]
  else
    goto <bb 10>; [11.00%]

  <bb 10> [local count: 14744044]:
  # tempcrc_6 = PHI <tempcrc_10(9)>
  # DEBUG BEGIN_STMT
  return tempcrc_6;

}


pfe_rtable_get_by_phys_entry_va (const struct pfe_rtable_t * rtable, const struct pfe_ct_rtable_entry_t * phys_entry_va)
{
  bool_t match;
  struct pfe_rtable_entry_t * entry;
  struct LLIST_t * item;
  struct LLIST_Struct * _1;
  const struct LLIST_t * _2;
  int _3;
  struct pfe_ct_rtable_entry_t * _4;
  struct pfe_rtable_entry_t * _9;

  <bb 2> [local count: 106967420]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT
  _1 = rtable_11(D)->active_entries.prNext;
  _2 = &rtable_11(D)->active_entries;
  if (_1 != _2)
    goto <bb 10>; [91.73%]
  else
    goto <bb 8>; [8.27%]

  <bb 10> [local count: 98121214]:
  goto <bb 6>; [100.00%]

  <bb 3> [local count: 1014686026]:
  # DEBUG BEGIN_STMT
  _3 = item_5 - 52B;
  entry_13 = (struct pfe_rtable_entry_t *) _3;
  # DEBUG entry => entry_13
  # DEBUG BEGIN_STMT
  if (item_5 != 52B)
    goto <bb 4>; [70.00%]
  else
    goto <bb 5>; [30.00%]

  <bb 4> [local count: 710280219]:
  # DEBUG BEGIN_STMT
  _4 = entry_13->phys_entry;
  if (_4 == phys_entry_va_14(D))
    goto <bb 7>; [5.50%]
  else
    goto <bb 5>; [94.50%]

  <bb 5> [local count: 975620614]:
  # DEBUG BEGIN_STMT
  item_15 = item_5->prNext;
  # DEBUG item => item_15

  <bb 6> [local count: 1073741824]:
  # item_5 = PHI <item_15(5), _1(10)>
  # entry_6 = PHI <entry_13(5), entry_12(D)(10)>
  # DEBUG entry => entry_6
  # DEBUG item => item_5
  # DEBUG BEGIN_STMT
  if (_2 != item_5)
    goto <bb 3>; [94.50%]
  else
    goto <bb 7>; [5.50%]

  <bb 7> [local count: 98121212]:
  # entry_7 = PHI <entry_6(6), entry_13(4)>
  # match_8 = PHI <0(6), 1(4)>
  # DEBUG match => match_8
  # DEBUG entry => entry_7
  # DEBUG BEGIN_STMT
  if (match_8 == 1)
    goto <bb 9>; [55.78%]
  else
    goto <bb 8>; [44.22%]

  <bb 8> [local count: 52235406]:
  # DEBUG match => NULL
  # DEBUG entry => NULL
  # DEBUG BEGIN_STMT

  <bb 9> [local count: 106967418]:
  # _9 = PHI <entry_7(7), 0B(8)>
  return _9;

}


pfe_rtable_free_stats_index (uint8_t index)
{
  int _1;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (index_3(D) <= 20)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _1 = (int) index_3(D);
  stats_tbl_index[_1] = 0;

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

}


fifo_get (struct fifo_t * const fifo)
{
  void * ret;
  long unsigned int _1;
  long unsigned int _2;
  _Bool _3;
  long int _4;
  long int _5;
  void * * _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;
  void * * _10;
  long unsigned int _11;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = fifo_15(D)->write;
  _2 = fifo_15(D)->read;
  # DEBUG fill_level => _1 - _2
  # DEBUG BEGIN_STMT
  _3 = _1 != _2;
  _4 = (long int) _3;
  _5 = __builtin_expect (_4, 1);
  if (_5 != 0)
    goto <bb 3>; [90.00%]
  else
    goto <bb 4>; [10.00%]

  <bb 3> [local count: 966367642]:
  # DEBUG BEGIN_STMT
  _6 = fifo_15(D)->data;
  _7 = fifo_15(D)->depth_mask;
  _8 = _2 & _7;
  _9 = _8 * 4;
  _10 = _6 + _9;
  ret_16 = *_10;
  # DEBUG ret => ret_16
  # DEBUG BEGIN_STMT
  _11 = _2 + 1;
  fifo_15(D)->read = _11;

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

}


fifo_put (struct fifo_t * const fifo, void * const ptr)
{
  errno_t err;
  uint32_t fill_level;
  long unsigned int _1;
  long unsigned int _2;
  long unsigned int _3;
  _Bool _4;
  long int _5;
  long int _6;
  void * * _7;
  long unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;
  void * * _11;
  long unsigned int _12;
  long unsigned int _13;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = fifo_17(D)->write;
  _2 = fifo_17(D)->read;
  fill_level_18 = _1 - _2;
  # DEBUG fill_level => fill_level_18
  # DEBUG BEGIN_STMT
  _3 = fifo_17(D)->depth;
  _4 = _3 > fill_level_18;
  _5 = (long int) _4;
  _6 = __builtin_expect (_5, 1);
  if (_6 != 0)
    goto <bb 3>; [90.00%]
  else
    goto <bb 4>; [10.00%]

  <bb 3> [local count: 966367642]:
  # DEBUG BEGIN_STMT
  _7 = fifo_17(D)->data;
  _8 = fifo_17(D)->depth_mask;
  _9 = _1 & _8;
  _10 = _9 * 4;
  _11 = _7 + _10;
  *_11 = ptr_19(D);
  # DEBUG BEGIN_STMT
  __asm__ __volatile__(" dmb" :  :  : "memory");
  # DEBUG BEGIN_STMT
  _12 = fifo_17(D)->write;
  _13 = _12 + 1;
  fifo_17(D)->write = _13;
  # DEBUG BEGIN_STMT
  # DEBUG err => 0

  <bb 4> [local count: 1073741824]:
  # err_14 = PHI <0(3), 75(2)>
  # DEBUG err => err_14
  # DEBUG BEGIN_STMT
  return err_14;

}


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;

}


