callgraph:

pfe_rtable_get_next/46 (pfe_rtable_get_next) @075579a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_remove_related_connections/22 (8687547529 (estimated locally),8.09 per call) 
  Calls: 
fci_connections_drop_one/45 (fci_connections_drop_one) @075578c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_remove_related_connections/22 (8687547529 (estimated locally),8.09 per call) 
  Calls: 
pfe_rtable_get_first/44 (pfe_rtable_get_first) @075577e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_remove_related_connections/22 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
fci_rt_db_remove/43 (fci_rt_db_remove) @07557620
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_one/24 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
fci_core_client_send/42 (fci_core_client_send) @07557540
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_one/24 (574129754 (estimated locally),0.53 per call) 
  Calls: 
pfe_if_db_unlock/41 (pfe_if_db_unlock) @07557380
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (169283415 (estimated locally),0.16 per call) 
  Calls: 
strncpy/40 (strncpy) @075572a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (119695344 (estimated locally),0.11 per call) 
  Calls: 
pfe_phy_if_get_name/39 (pfe_phy_if_get_name) @075571c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (119695344 (estimated locally),0.11 per call) 
  Calls: 
fci_rt_db_get_next/38 (fci_rt_db_get_next) @075570e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_all_ipv6/27 (955630223 (estimated locally),8.09 per call) fci_routes_drop_all_ipv4/26 (955630223 (estimated locally),8.09 per call) fci_routes_drop_all/25 (955630223 (estimated locally),8.09 per call) fci_routes_cmd/23 (85496674 (estimated locally),0.08 per call) 
  Calls: 
fci_rt_db_get_first/37 (fci_rt_db_get_first) @07557000
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_drop_all_ipv6/27 (118111602 (estimated locally),1.00 per call) fci_routes_drop_all_ipv4/26 (118111602 (estimated locally),1.00 per call) fci_routes_drop_all/25 (118111600 (estimated locally),1.00 per call) fci_routes_cmd/23 (85496674 (estimated locally),0.08 per call) fci_routes_cmd/23 (85496674 (estimated locally),0.08 per call) 
  Calls: 
fci_rt_db_add/36 (fci_rt_db_add) @076069a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (45715072 (estimated locally),0.04 per call) 
  Calls: 
pfe_phy_if_get_mac_addr_first/35 (pfe_phy_if_get_mac_addr_first) @07606380
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (15085974 (estimated locally),0.01 per call) 
  Calls: 
memcmp/34 (memcmp) @076060e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (45715072 (estimated locally),0.04 per call) 
  Calls: 
pfe_if_db_entry_get_phy_if/33 (pfe_if_db_entry_get_phy_if) @07606ee0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (45715072 (estimated locally),0.04 per call) 
  Calls: 
pfe_if_db_get_first/32 (pfe_if_db_get_first) @07606e00
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (28213902 (estimated locally),0.03 per call) 
  Calls: 
pfe_if_db_lock/31 (pfe_if_db_lock) @07606d20
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (85496674 (estimated locally),0.08 per call) 
  Calls: 
memcpy/30 (memcpy) @07606c40
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (39499463 (estimated locally),0.04 per call) fci_routes_cmd/23 (119695344 (estimated locally),0.11 per call) fci_routes_cmd/23 (119695344 (estimated locally),0.11 per call) fci_routes_cmd/23 (103806400 (estimated locally),0.10 per call) 
  Calls: 
memset/29 (memset) @07606b60
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: fci_routes_cmd/23 (45715072 (estimated locally),0.04 per call) fci_routes_cmd/23 (512877469 (estimated locally),0.48 per call) fci_routes_cmd/23 (512877469 (estimated locally),0.48 per call) fci_routes_drop_one/24 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
fci_routes_drop_all_ipv6/27 (fci_routes_drop_all_ipv6) @07606540
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:118111602 (estimated locally) body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 (955630223 (estimated locally),8.09 per call) fci_routes_drop_one/24 (315357973 (estimated locally),2.67 per call) fci_rt_db_get_first/37 (118111602 (estimated locally),1.00 per call) 
fci_routes_drop_all_ipv4/26 (fci_routes_drop_all_ipv4) @076062a0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:118111602 (estimated locally) body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 (955630223 (estimated locally),8.09 per call) fci_routes_drop_one/24 (315357973 (estimated locally),2.67 per call) fci_rt_db_get_first/37 (118111602 (estimated locally),1.00 per call) 
fci_routes_drop_all/25 (fci_routes_drop_all) @07606000
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:118111600 (estimated locally) body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 (955630223 (estimated locally),8.09 per call) fci_routes_drop_one/24 (955630223 (estimated locally),8.09 per call) fci_rt_db_get_first/37 (118111600 (estimated locally),1.00 per call) 
fci_routes_drop_one/24 (fci_routes_drop_one) @07551c40
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: fci_routes_drop_all_ipv6/27 (315357973 (estimated locally),2.67 per call) fci_routes_drop_all_ipv4/26 (315357973 (estimated locally),2.67 per call) fci_routes_drop_all/25 (955630223 (estimated locally),8.09 per call) fci_routes_cmd/23 (45715072 (estimated locally),0.04 per call) 
  Calls: fci_rt_db_remove/43 (1073741824 (estimated locally),1.00 per call) fci_routes_remove_related_connections/22 (inlined) (1073741824 (estimated locally),1.00 per call) fci_core_client_send/42 (574129754 (estimated locally),0.53 per call) memset/29 (1073741824 (estimated locally),1.00 per call) 
fci_routes_cmd/23 (fci_routes_cmd) @07551e00
  Type: function definition analyzed
  Visibility: externally_visible public
  References: __context/28 (read)__context/28 (addr)__context/28 (addr)__context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:1073639249 (estimated locally) body optimize_size
  Called by: 
  Calls: pfe_if_db_unlock/41 (169283415 (estimated locally),0.16 per call) strncpy/40 (119695344 (estimated locally),0.11 per call) pfe_phy_if_get_name/39 (119695344 (estimated locally),0.11 per call) memcpy/30 (39499463 (estimated locally),0.04 per call) memcpy/30 (119695344 (estimated locally),0.11 per call) memcpy/30 (119695344 (estimated locally),0.11 per call) fci_rt_db_get_next/38 (85496674 (estimated locally),0.08 per call) fci_rt_db_get_first/37 (85496674 (estimated locally),0.08 per call) fci_routes_drop_one/24 (45715072 (estimated locally),0.04 per call) fci_rt_db_get_first/37 (85496674 (estimated locally),0.08 per call) fci_rt_db_add/36 (45715072 (estimated locally),0.04 per call) pfe_phy_if_get_mac_addr_first/35 (15085974 (estimated locally),0.01 per call) memcmp/34 (45715072 (estimated locally),0.04 per call) memset/29 (45715072 (estimated locally),0.04 per call) pfe_if_db_entry_get_phy_if/33 (45715072 (estimated locally),0.04 per call) pfe_if_db_get_first/32 (28213902 (estimated locally),0.03 per call) pfe_if_db_lock/31 (85496674 (estimated locally),0.08 per call) memcpy/30 (103806400 (estimated locally),0.10 per call) memset/29 (512877469 (estimated locally),0.48 per call) memset/29 (512877469 (estimated locally),0.48 per call) 
fci_routes_remove_related_connections/22 (fci_routes_remove_related_connections) @07551b60
  Type: function definition analyzed
  Visibility: prevailing_def_ironly
  References: __context/28 (read)__context/28 (read)
  Referring: 
  Function fci_routes_remove_related_connections/22 is inline copy in fci_routes_drop_one/24
  Availability: local
  Function flags: count:1073741824 (estimated locally) body local optimize_size
  Called by: fci_routes_drop_one/24 (inlined) (1073741824 (estimated locally),1.00 per call) 
  Calls: pfe_rtable_get_next/46 (8687547529 (estimated locally),8.09 per call) fci_connections_drop_one/45 (8687547529 (estimated locally),8.09 per call) pfe_rtable_get_first/44 (1073741824 (estimated locally),1.00 per call) 
Clearing variable flags:

Function name:fci_routes_drop_all_ipv6/27:
  locals read: 
  locals written: 
Function name:fci_routes_drop_all_ipv4/26:
  locals read: 
  locals written: 
Function name:fci_routes_drop_all/25:
  locals read: 
  locals written: 
Function name:fci_routes_drop_one/24:
  locals read: 
  locals written: 
Function name:fci_routes_cmd/23:
  locals read: 
  locals written: 
Function name:fci_routes_remove_related_connections/22:
  locals read: 
  locals written: 

 ordered call graph: reduced
fci_routes_drop_all_ipv6/27 (fci_routes_drop_all_ipv6) @07606540
  Type: function definition analyzed
  Visibility: externally_visible public
  Aux: @06ad0290
  References: __context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:118111602 (estimated locally) body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 (955630223 (estimated locally),8.09 per call) fci_routes_drop_one/24 (315357973 (estimated locally),2.67 per call) fci_rt_db_get_first/37 (118111602 (estimated locally),1.00 per call) 
fci_routes_drop_all_ipv4/26 (fci_routes_drop_all_ipv4) @076062a0
  Type: function definition analyzed
  Visibility: externally_visible public
  Aux: @06ad0210
  References: __context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:118111602 (estimated locally) body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 (955630223 (estimated locally),8.09 per call) fci_routes_drop_one/24 (315357973 (estimated locally),2.67 per call) fci_rt_db_get_first/37 (118111602 (estimated locally),1.00 per call) 
fci_routes_drop_all/25 (fci_routes_drop_all) @07606000
  Type: function definition analyzed
  Visibility: externally_visible public
  Aux: @06ad04d0
  References: __context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:118111600 (estimated locally) body optimize_size
  Called by: 
  Calls: fci_rt_db_get_next/38 (955630223 (estimated locally),8.09 per call) fci_routes_drop_one/24 (955630223 (estimated locally),8.09 per call) fci_rt_db_get_first/37 (118111600 (estimated locally),1.00 per call) 
fci_routes_cmd/23 (fci_routes_cmd) @07551e00
  Type: function definition analyzed
  Visibility: externally_visible public
  Aux: @06ad0350
  References: __context/28 (read)__context/28 (addr)__context/28 (addr)__context/28 (addr)__context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:1073639249 (estimated locally) body optimize_size
  Called by: 
  Calls: pfe_if_db_unlock/41 (169283415 (estimated locally),0.16 per call) strncpy/40 (119695344 (estimated locally),0.11 per call) pfe_phy_if_get_name/39 (119695344 (estimated locally),0.11 per call) memcpy/30 (39499463 (estimated locally),0.04 per call) memcpy/30 (119695344 (estimated locally),0.11 per call) memcpy/30 (119695344 (estimated locally),0.11 per call) fci_rt_db_get_next/38 (85496674 (estimated locally),0.08 per call) fci_rt_db_get_first/37 (85496674 (estimated locally),0.08 per call) fci_routes_drop_one/24 (45715072 (estimated locally),0.04 per call) fci_rt_db_get_first/37 (85496674 (estimated locally),0.08 per call) fci_rt_db_add/36 (45715072 (estimated locally),0.04 per call) pfe_phy_if_get_mac_addr_first/35 (15085974 (estimated locally),0.01 per call) memcmp/34 (45715072 (estimated locally),0.04 per call) memset/29 (45715072 (estimated locally),0.04 per call) pfe_if_db_entry_get_phy_if/33 (45715072 (estimated locally),0.04 per call) pfe_if_db_get_first/32 (28213902 (estimated locally),0.03 per call) pfe_if_db_lock/31 (85496674 (estimated locally),0.08 per call) memcpy/30 (103806400 (estimated locally),0.10 per call) memset/29 (512877469 (estimated locally),0.48 per call) memset/29 (512877469 (estimated locally),0.48 per call) 
fci_routes_drop_one/24 (fci_routes_drop_one) @07551c40
  Type: function definition analyzed
  Visibility: externally_visible public
  Aux: @06ad0410
  References: __context/28 (addr)
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: fci_routes_drop_all_ipv6/27 (315357973 (estimated locally),2.67 per call) fci_routes_drop_all_ipv4/26 (315357973 (estimated locally),2.67 per call) fci_routes_drop_all/25 (955630223 (estimated locally),8.09 per call) fci_routes_cmd/23 (45715072 (estimated locally),0.04 per call) 
  Calls: fci_rt_db_remove/43 (1073741824 (estimated locally),1.00 per call) fci_routes_remove_related_connections/22 (inlined) (1073741824 (estimated locally),1.00 per call) fci_core_client_send/42 (574129754 (estimated locally),0.53 per call) memset/29 (1073741824 (estimated locally),1.00 per call) 
fci_routes_remove_related_connections/22 (fci_routes_remove_related_connections) @07551b60
  Type: function definition analyzed
  Visibility: prevailing_def_ironly
  Aux: @06ad0510
  References: __context/28 (read)__context/28 (read)
  Referring: 
  Function fci_routes_remove_related_connections/22 is inline copy in fci_routes_drop_one/24
  Availability: local
  Function flags: count:1073741824 (estimated locally) body local optimize_size
  Called by: fci_routes_drop_one/24 (inlined) (1073741824 (estimated locally),1.00 per call) 
  Calls: pfe_rtable_get_next/46 (8687547529 (estimated locally),8.09 per call) fci_connections_drop_one/45 (8687547529 (estimated locally),8.09 per call) pfe_rtable_get_first/44 (1073741824 (estimated locally),1.00 per call) 


Function name:fci_routes_remove_related_connections/22:
    locals read: 
    locals written: 
  globals read: ALL
  globals written: ALL

Function name:fci_routes_drop_one/24:
    locals read: 
    locals written: 
  globals read: ALL
  globals written: ALL

Function name:fci_routes_cmd/23:
    locals read: 
    locals written: 
  globals read: ALL
  globals written: ALL

Function name:fci_routes_drop_all/25:
    locals read: 
    locals written: 
  globals read: ALL
  globals written: ALL

Function name:fci_routes_drop_all_ipv4/26:
    locals read: 
    locals written: 
  globals read: ALL
  globals written: ALL

Function name:fci_routes_drop_all_ipv6/27:
    locals read: 
    locals written: 
  globals read: ALL
  globals written: ALL
fci_routes_drop_all_ipv6 ()
{
  struct fci_rt_db_entry_t * entry;
  unsigned char _1;

  <bb 2> [local count: 118111602]:
  # DEBUG BEGIN_STMT
  # DEBUG fci_context => &__context
  # DEBUG BEGIN_STMT
  # DEBUG entry => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_7 = fci_rt_db_get_first (&MEM[(void *)&__context + 24B], 0, 0B);
  # DEBUG entry => entry_7
  # DEBUG BEGIN_STMT
  goto <bb 6>; [100.00%]

  <bb 3> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  _1 = entry_2->dst_ip.is_ipv4;
  if (_1 == 0)
    goto <bb 4>; [33.00%]
  else
    goto <bb 5>; [67.00%]

  <bb 4> [local count: 315357973]:
  # DEBUG BEGIN_STMT
  fci_routes_drop_one (entry_2);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT

  <bb 5> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_10 = fci_rt_db_get_next (&MEM[(void *)&__context + 24B]);
  # DEBUG entry => entry_10

  <bb 6> [local count: 1073741824]:
  # entry_2 = PHI <entry_7(2), entry_10(5)>
  # DEBUG entry => entry_2
  # DEBUG BEGIN_STMT
  if (entry_2 != 0B)
    goto <bb 3>; [89.00%]
  else
    goto <bb 7>; [11.00%]

  <bb 7> [local count: 118111601]:
  return;

}


fci_routes_drop_all_ipv4 ()
{
  struct fci_rt_db_entry_t * entry;
  unsigned char _1;

  <bb 2> [local count: 118111602]:
  # DEBUG BEGIN_STMT
  # DEBUG fci_context => &__context
  # DEBUG BEGIN_STMT
  # DEBUG entry => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_7 = fci_rt_db_get_first (&MEM[(void *)&__context + 24B], 0, 0B);
  # DEBUG entry => entry_7
  # DEBUG BEGIN_STMT
  goto <bb 6>; [100.00%]

  <bb 3> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  _1 = entry_2->dst_ip.is_ipv4;
  if (_1 != 0)
    goto <bb 4>; [33.00%]
  else
    goto <bb 5>; [67.00%]

  <bb 4> [local count: 315357973]:
  # DEBUG BEGIN_STMT
  fci_routes_drop_one (entry_2);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT

  <bb 5> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_10 = fci_rt_db_get_next (&MEM[(void *)&__context + 24B]);
  # DEBUG entry => entry_10

  <bb 6> [local count: 1073741824]:
  # entry_2 = PHI <entry_7(2), entry_10(5)>
  # DEBUG entry => entry_2
  # DEBUG BEGIN_STMT
  if (entry_2 != 0B)
    goto <bb 3>; [89.00%]
  else
    goto <bb 7>; [11.00%]

  <bb 7> [local count: 118111601]:
  return;

}


fci_routes_drop_all ()
{
  struct fci_rt_db_entry_t * entry;

  <bb 2> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  # DEBUG fci_context => &__context
  # DEBUG BEGIN_STMT
  # DEBUG entry => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_5 = fci_rt_db_get_first (&MEM[(void *)&__context + 24B], 0, 0B);
  # DEBUG entry => entry_5
  # DEBUG BEGIN_STMT
  goto <bb 4>; [100.00%]

  <bb 3> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  fci_routes_drop_one (entry_1);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  entry_8 = fci_rt_db_get_next (&MEM[(void *)&__context + 24B]);
  # DEBUG entry => entry_8

  <bb 4> [local count: 1073741824]:
  # entry_1 = PHI <entry_5(2), entry_8(3)>
  # DEBUG entry => entry_1
  # DEBUG BEGIN_STMT
  if (entry_1 != 0B)
    goto <bb 3>; [89.00%]
  else
    goto <bb 5>; [11.00%]

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

}


fci_routes_drop_one (struct fci_rt_db_entry_t * route)
{
  errno_t ret;
  struct fci_msg_t msg;
  void * _1;
  long unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG fci_context => &__context
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG rt_cmd => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  memset (&msg, 0, 276);
  # DEBUG BEGIN_STMT
  msg.type = 4099;
  # DEBUG BEGIN_STMT
  msg.msg_cmd.code = 787;
  # DEBUG BEGIN_STMT
  # DEBUG rt_cmd => &msg.msg_cmd.payload
  # DEBUG BEGIN_STMT
  MEM[(struct fpp_rt_cmd_t *)&msg + 16B].action = 3;
  # DEBUG BEGIN_STMT
  _1 = route_9(D)->refptr;
  if (_1 != 0B)
    goto <bb 3>; [53.47%]
  else
    goto <bb 4>; [46.53%]

  <bb 3> [local count: 574129754]:
  # DEBUG BEGIN_STMT
  _2 = route_9(D)->id;
  MEM[(struct fpp_rt_cmd_t *)&msg + 16B].id = _2;
  # DEBUG BEGIN_STMT
  fci_core_client_send (_1, &msg, 0B);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT

  <bb 4> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fci_routes_remove_related_connections (route_9(D));
  # DEBUG BEGIN_STMT
  ret_14 = fci_rt_db_remove (&MEM[(void *)&__context + 24B], route_9(D));
  # DEBUG ret => ret_14
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  msg ={v} {CLOBBER};
  return ret_14;

}


fci_routes_cmd (struct fci_msg_t * msg, uint16_t * fci_ret, struct fpp_rt_cmd_t * reply_buf, uint32_t * reply_len)
{
  const uint8_t zero_mac[6];
  uint32_t session_id;
  struct pfe_phy_if_t * phy_if;
  struct pfe_if_db_entry_t * if_entry;
  struct fci_rt_db_entry_t * rt_entry;
  struct pfe_ip_addr_t ip;
  uint8_t dst_mac[6];
  uint8_t src_mac[6];
  errno_t ret;
  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;
  long unsigned int _11;
  uint32_t * _12;
  short unsigned int _13;
  struct pfe_if_db_t * _14;
  long unsigned int session_id.0_15;
  char[16] * _16;
  struct pfe_if_db_entry_t * if_entry.1_17;
  uint8_t[6] * _18;
  int _19;
  long unsigned int _20;
  void * _21;
  uint32_t * _22;
  short unsigned int _23;
  uint8_t[6] * _24;
  uint8_t[6] * _25;
  uint8_t[6] * _26;
  uint8_t[6] * _27;
  unsigned char _28;
  uint32_t * _29;
  union 
{
  uint16_t v6[8];
} * _30;
  long unsigned int _31;
  char[16] * _32;
  struct pfe_phy_if_t * _33;
  char_t * _34;
  short unsigned int _35;
  long unsigned int session_id.3_36;
  unsigned int _58;
  unsigned int _75;

  <bb 2> [local count: 1073639249]:
  # DEBUG BEGIN_STMT
  # DEBUG fci_context => &__context
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG is_ipv6 => 0
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG rt_entry => 0B
  # DEBUG BEGIN_STMT
  if_entry = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG phy_if => 0B
  # DEBUG BEGIN_STMT
  session_id = 0;
  # DEBUG BEGIN_STMT
  _1 = *reply_len_51(D);
  if (_1 <= 91)
    goto <bb 35>; [52.23%]
  else
    goto <bb 3>; [47.77%]

  <bb 3> [local count: 512877469]:
  # DEBUG BEGIN_STMT
  *reply_len_51(D) = 0;
  # DEBUG BEGIN_STMT
  memset (reply_buf_53(D), 0, 92);
  # DEBUG BEGIN_STMT
  # DEBUG D#1 => &msg_55(D)->msg_cmd.payload
  # DEBUG rt_cmd => D#1
  # DEBUG BEGIN_STMT
  _2 = MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].flags;
  _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;
  # DEBUG D#2 => _11 == 2
  # DEBUG is_ipv6 => (bool_t) D#2
  # DEBUG BEGIN_STMT
  MEM[(char * {ref-all})&dst_mac] = MEM[(char * {ref-all})msg_55(D) + 26B];
  # DEBUG BEGIN_STMT
  memset (&ip, 0, 22);
  # DEBUG BEGIN_STMT
  if (_11 == 2)
    goto <bb 4>; [20.24%]
  else
    goto <bb 5>; [79.76%]

  <bb 4> [local count: 103806400]:
  # DEBUG BEGIN_STMT
  _12 = &MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].dst_addr[0];
  memcpy (&ip.v6, _12, 16);
  # DEBUG BEGIN_STMT
  goto <bb 6>; [100.00%]

  <bb 5> [local count: 409071069]:
  # DEBUG BEGIN_STMT
  _58 = MEM[(char * {ref-all})msg_55(D) + 90B];
  MEM[(char * {ref-all})&ip] = _58;
  # DEBUG BEGIN_STMT
  ip.is_ipv4 = 1;

  <bb 6> [local count: 512877469]:
  # DEBUG BEGIN_STMT
  _13 = MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].action;
  switch (_13) <default: <L39> [16.67%], case 0: <L5> [16.67%], case 1: <L22> [16.67%], case 4: <L27> [16.67%], case 6: <L28> [16.67%], case 7: <L48> [16.67%]>

  <bb 7> [local count: 85496674]:
<L5>:
  # DEBUG BEGIN_STMT
  ret_89 = pfe_if_db_lock (&session_id);
  # DEBUG ret => ret_89
  # DEBUG BEGIN_STMT
  if (ret_89 == 0)
    goto <bb 8>; [33.00%]
  else
    goto <bb 9>; [67.00%]

  <bb 8> [local count: 28213902]:
  # DEBUG BEGIN_STMT
  _14 = __context.phy_if_db;
  session_id.0_15 = session_id;
  _16 = &MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].output_device;
  ret_91 = pfe_if_db_get_first (_14, session_id.0_15, 3, _16, &if_entry);
  # DEBUG ret => ret_91
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT

  <bb 9> [local count: 85496674]:
  # ret_37 = PHI <ret_89(7), ret_91(8)>
  # DEBUG ret => ret_37
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if_entry.1_17 = if_entry;
  if (if_entry.1_17 == 0B)
    goto <bb 10>; [46.53%]
  else
    goto <bb 11>; [53.47%]

  <bb 10> [local count: 39781603]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 3;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 11> [local count: 45715072]:
  # DEBUG BEGIN_STMT
  phy_if_92 = pfe_if_db_entry_get_phy_if (if_entry.1_17);
  # DEBUG phy_if => phy_if_92
  # DEBUG BEGIN_STMT
  zero_mac = "\x00";
  # DEBUG BEGIN_STMT
  memset (&src_mac, 0, 6);
  # DEBUG BEGIN_STMT
  _18 = &MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].src_mac;
  _19 = memcmp (_18, &zero_mac, 6);
  if (_19 == 0)
    goto <bb 12>; [33.00%]
  else
    goto <bb 13>; [67.00%]

  <bb 12> [local count: 15085974]:
  # DEBUG BEGIN_STMT
  pfe_phy_if_get_mac_addr_first (phy_if_92, &src_mac, 3, 3, 6);
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 13> [local count: 30629098]:
  # DEBUG BEGIN_STMT
  MEM[(char * {ref-all})&src_mac] = MEM[(char * {ref-all})msg_55(D) + 20B];

  <bb 14> [local count: 45715072]:
  zero_mac ={v} {CLOBBER};
  # DEBUG BEGIN_STMT
  _20 = MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].id;
  _21 = msg_55(D)->client;
  ret_99 = fci_rt_db_add (&MEM[(void *)&__context + 24B], &ip, &src_mac, &dst_mac, phy_if_92, _20, _21, 0);
  # DEBUG ret => ret_99
  # DEBUG BEGIN_STMT
  if (ret_99 == 115)
    goto <bb 15>; [34.00%]
  else
    goto <bb 16>; [66.00%]

  <bb 15> [local count: 15543124]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 200;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 16> [local count: 30171947]:
  # DEBUG BEGIN_STMT
  if (ret_99 != 0)
    goto <bb 17>; [50.00%]
  else
    goto <bb 18>; [50.00%]

  <bb 17> [local count: 15085974]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 3;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 18> [local count: 15085974]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 0;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 19> [local count: 85496674]:
<L22>:
  # DEBUG BEGIN_STMT
  _22 = &MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].id;
  rt_entry_83 = fci_rt_db_get_first (&MEM[(void *)&__context + 24B], 5, _22);
  # DEBUG rt_entry => rt_entry_83
  # DEBUG BEGIN_STMT
  if (rt_entry_83 == 0B)
    goto <bb 20>; [46.53%]
  else
    goto <bb 21>; [53.47%]

  <bb 20> [local count: 39781602]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 201;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 21> [local count: 45715072]:
  # DEBUG BEGIN_STMT
  ret_85 = fci_routes_drop_one (rt_entry_83);
  # DEBUG ret => ret_85
  # DEBUG BEGIN_STMT
  if (ret_85 != 0)
    goto <bb 22>; [50.00%]
  else
    goto <bb 33>; [50.00%]

  <bb 22> [local count: 22857536]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 3;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 23> [local count: 85496674]:
<L27>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 1;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 24> [local count: 85496674]:
<L28>:
  # DEBUG BEGIN_STMT
  rt_entry_63 = fci_rt_db_get_first (&MEM[(void *)&__context + 24B], 0, 0B);
  # DEBUG rt_entry => rt_entry_63
  # DEBUG BEGIN_STMT
  if (rt_entry_63 == 0B)
    goto <bb 25>; [30.00%]
  else
    goto <bb 28>; [70.00%]

  <bb 25> [local count: 25649002]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 201;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 26> [local count: 85496674]:
<L48>:
  # DEBUG rt_entry => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rt_entry_67 = fci_rt_db_get_next (&MEM[(void *)&__context + 24B]);
  # DEBUG rt_entry => rt_entry_67
  # DEBUG BEGIN_STMT
  if (rt_entry_67 == 0B)
    goto <bb 27>; [30.00%]
  else
    goto <bb 28>; [70.00%]

  <bb 27> [local count: 25649002]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 201;
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 28> [local count: 119695344]:
  # rt_entry_40 = PHI <rt_entry_63(24), rt_entry_67(26)>
  # DEBUG rt_entry => rt_entry_40
  # DEBUG BEGIN_STMT
  *reply_len_51(D) = 92;
  # DEBUG BEGIN_STMT
  _23 = rt_entry_40->mtu;
  reply_buf_53(D)->mtu = _23;
  # DEBUG BEGIN_STMT
  _24 = &reply_buf_53(D)->src_mac;
  _25 = &rt_entry_40->src_mac;
  memcpy (_24, _25, 6);
  # DEBUG BEGIN_STMT
  _26 = &reply_buf_53(D)->dst_mac;
  _27 = &rt_entry_40->dst_mac;
  memcpy (_26, _27, 6);
  # DEBUG BEGIN_STMT
  _28 = rt_entry_40->dst_ip.is_ipv4;
  if (_28 != 0)
    goto <bb 29>; [67.00%]
  else
    goto <bb 30>; [33.00%]

  <bb 29> [local count: 80195880]:
  # DEBUG BEGIN_STMT
  _75 = MEM[(char * {ref-all})rt_entry_40 + 22B];
  MEM[(char * {ref-all})reply_buf_53(D) + 74B] = _75;
  # DEBUG BEGIN_STMT
  reply_buf_53(D)->flags = 16777216;
  goto <bb 31>; [100.00%]

  <bb 30> [local count: 39499463]:
  # DEBUG BEGIN_STMT
  _29 = &reply_buf_53(D)->dst_addr[0];
  _30 = &rt_entry_40->dst_ip.v6;
  memcpy (_29, _30, 16);
  # DEBUG BEGIN_STMT
  reply_buf_53(D)->flags = 33554432;

  <bb 31> [local count: 119695344]:
  # DEBUG BEGIN_STMT
  _31 = rt_entry_40->id;
  reply_buf_53(D)->id = _31;
  # DEBUG BEGIN_STMT
  _32 = &reply_buf_53(D)->output_device;
  _33 = rt_entry_40->iface;
  _34 = pfe_phy_if_get_name (_33);
  strncpy (_32, _34, 15);
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 0;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  goto <bb 33>; [100.00%]

  <bb 32> [local count: 85496674]:
<L39>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_64(D) = 4;
  # DEBUG BEGIN_STMT

  <bb 33> [local count: 512980045]:
  # ret_38 = PHI <ret_37(10), 115(15), ret_99(17), 0(18), 0(20), ret_85(22), ret_85(21), 0(23), 0(25), 0(27), 0(31), 0(32)>
  # DEBUG ret => ret_38
  # DEBUG BEGIN_STMT
  _35 = MEM[(struct fpp_rt_cmd_t *)msg_55(D) + 16B].action;
  if (_35 == 0)
    goto <bb 34>; [33.00%]
  else
    goto <bb 35>; [67.00%]

  <bb 34> [local count: 169283415]:
  # DEBUG BEGIN_STMT
  session_id.3_36 = session_id;
  ret_106 = pfe_if_db_unlock (session_id.3_36);
  # DEBUG ret => ret_106
  # DEBUG BEGIN_STMT

  <bb 35> [local count: 1073741824]:
  # ret_39 = PHI <22(2), ret_38(33), ret_106(34)>
  # DEBUG ret => ret_39
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  src_mac ={v} {CLOBBER};
  dst_mac ={v} {CLOBBER};
  ip ={v} {CLOBBER};
  if_entry ={v} {CLOBBER};
  session_id ={v} {CLOBBER};
  return ret_39;

}


fci_routes_remove_related_connections (struct fci_rt_db_entry_t * route)
{
  struct pfe_rtable_entry_t * entry;
  struct pfe_rtable_t * _1;
  uint32_t * _2;
  struct pfe_rtable_t * _3;

  <bb 2> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  # DEBUG fci_context => &__context
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = __context.rtable;
  _2 = &route_7(D)->id;
  entry_9 = pfe_rtable_get_first (_1, 4, _2);
  # DEBUG entry => entry_9
  # DEBUG BEGIN_STMT
  goto <bb 4>; [100.00%]

  <bb 3> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  fci_connections_drop_one (entry_4);
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = __context.rtable;
  entry_12 = pfe_rtable_get_next (_3);
  # DEBUG entry => entry_12

  <bb 4> [local count: 1073741824]:
  # entry_4 = PHI <entry_9(2), entry_12(3)>
  # DEBUG entry => entry_4
  # DEBUG BEGIN_STMT
  if (entry_4 != 0B)
    goto <bb 3>; [89.00%]
  else
    goto <bb 5>; [11.00%]

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

}


