Histogram:
  0: time:60 (0.00) size:21 (100.00)
Node pfe_minihif_drv_destroy_and_free.part.0 promoted to unlikely executed.
pfe_minihif_drv_destroy_and_free.part.0 (struct pfe_minihif_drv_t * hif_drv, uint32_t hif_base_offset)
{
  errno_t D.12042;
  errno_t D.12041;
  long unsigned int _2;
  <unnamed type> _4;
  int _5;
  int _6;
  long unsigned int _7;
  oal_spinlock_t * _8;
  oal_spinlock_t * _9;

  <bb 4> [local count: 1073741824]:

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = hif_base_offset_1(D) + 1174405120;
  _4 = hif_drv_3(D)->id;
  _5 = (int) _4;
  _6 = _5 + -6;
  _7 = (long unsigned int) _6;
  pfe_hif_chnl_cfg_fini (_2, _7);
  # DEBUG BEGIN_STMT
  _8 = &hif_drv_3(D)->channel.lock;
  # DEBUG spinlock => _8
  # DEBUG INLINE_ENTRY oal_spinlock_destroy
  # DEBUG BEGIN_STMT
  # DEBUG mutex => _8
  # DEBUG INLINE_ENTRY oal_mutex_destroy
  # DEBUG BEGIN_STMT
  oal_mutex_destroy_internal (_8);
  # DEBUG mutex => NULL
  # DEBUG spinlock => NULL
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _9 = &hif_drv_3(D)->channel.rx_lock;
  # DEBUG spinlock => _9
  # DEBUG INLINE_ENTRY oal_spinlock_destroy
  # DEBUG BEGIN_STMT
  # DEBUG mutex => _9
  # DEBUG INLINE_ENTRY oal_mutex_destroy
  # DEBUG BEGIN_STMT
  oal_mutex_destroy_internal (_9);
  # DEBUG mutex => NULL
  # DEBUG spinlock => NULL

  <bb 3> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  return;

}


pfe_minihif_get_hif_id (const struct pfe_minihif_drv_t * hif_drv)
{
  pfe_ct_phy_if_id_t ret;

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

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  ret_4 = hif_drv_2(D)->id;
  # DEBUG ret => ret_4

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

}


pfe_minihif_drv_start_tx (struct pfe_minihif_drv_t * hif_drv)
{
  errno_t ret;
  struct pfe_hif_chnl_t * _1;

  <bb 2> [count: 0]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &hif_drv_2(D)->channel;
  ret_5 = pfe_hif_chnl_tx_enable (_1);
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  return ret_5;

}


pfe_minihif_drv_start_rx (struct pfe_minihif_drv_t * hif_drv)
{
  errno_t ret;
  struct pfe_hif_chnl_t * _1;

  <bb 2> [count: 0]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &hif_drv_2(D)->channel;
  ret_5 = pfe_hif_chnl_rx_enable (_1);
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  return ret_5;

}


pfe_minihif_drv_init (struct pfe_minihif_drv_t * hif_drv)
{
  unsigned char _1;
  void * _2;
  void * _3;
  struct pfe_hif_chnl_t * _4;
  <unnamed type> _5;
  int _6;
  int _7;
  long unsigned int _8;
  struct pfe_bmu_t * _9;
  int _10;
  int _11;
  int _12;
  errno_t _13;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG hif_base_offset => 0
  # DEBUG BEGIN_STMT
  _1 = hif_drv_16(D)->bd_access;
  if (_1 == 0)
    goto <bb 3>; [100.00%]
  else
    goto <bb 5>; [0.00%]

  <bb 3> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = hif_drv_16(D)->rx_ring.base_va;
  if (_2 == 0B)
    goto <bb 12>; [30.00%]
  else
    goto <bb 4>; [70.00%]

  <bb 4> [local count: 751619278]:
  _3 = hif_drv_16(D)->tx_ring.base_va;
  if (_3 == 0B)
    goto <bb 12>; [100.00%]
  else
    goto <bb 5>; [0.00%]

  <bb 5> [count: 0]:
  # DEBUG BEGIN_STMT
  # DEBUG hif_base_offset => 622592
  # DEBUG BEGIN_STMT
  _4 = &hif_drv_16(D)->channel;
  _5 = hif_drv_16(D)->id;
  _6 = (int) _5;
  _7 = _6 + -6;
  _8 = (long unsigned int) _7;
  _9 = hif_drv_16(D)->bmu;
  _10 = pfe_hif_chnl_create (_4, 1175027712, _8, _9, 1);
  if (_10 != 0)
    goto <bb 6>; [0.00%]
  else
    goto <bb 7>; [0.00%]

  <bb 6> [count: 0]:
  # DEBUG BEGIN_STMT
  pfe_minihif_drv_destroy_and_free (hif_drv_16(D), 622592);
  # DEBUG BEGIN_STMT
  goto <bb 12>; [0.00%]

  <bb 7> [count: 0]:
  # DEBUG BEGIN_STMT
  _11 = pfe_minihif_drv_check_ring_and_enable_hif (hif_drv_16(D));
  if (_11 != 0)
    goto <bb 8>; [0.00%]
  else
    goto <bb 9>; [0.00%]

  <bb 8> [count: 0]:
  # DEBUG BEGIN_STMT
  pfe_minihif_drv_destroy_and_free (hif_drv_16(D), 622592);
  # DEBUG BEGIN_STMT
  goto <bb 12>; [0.00%]

  <bb 9> [count: 0]:
  # DEBUG BEGIN_STMT
  _12 = pfe_hif_chnl_set_tx_rx_ring (hif_drv_16(D), _4);
  if (_12 != 0)
    goto <bb 10>; [0.00%]
  else
    goto <bb 11>; [0.00%]

  <bb 10> [count: 0]:
  # DEBUG BEGIN_STMT
  pfe_minihif_drv_destroy_and_free (hif_drv_16(D), 622592);
  # DEBUG BEGIN_STMT
  goto <bb 12>; [0.00%]

  <bb 11> [count: 0]:
  # DEBUG BEGIN_STMT
  pfe_hif_chnl_rx_disable (_4);
  # DEBUG BEGIN_STMT
  pfe_hif_chnl_tx_disable (_4);
  # DEBUG BEGIN_STMT

  <bb 12> [local count: 1073741824]:
  # _13 = PHI <22(4), 117(6), 117(8), 117(10), 0(11), 22(3)>
  return _13;

}


pfe_minihif_drv_attach_ring (struct pfe_minihif_drv_t * hif_drv, bool_t is_rx, void * bd_base_va, void * wb_bd_base_va, uint32_t length)
{
  errno_t ret;
  struct pfe_hif_ring_t * ring;
  <unnamed type> _1;
  _Bool _2;
  unsigned char _3;
  unsigned char _4;
  _Bool _5;
  long int _6;
  long int _7;
  short unsigned int _14;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret_15 = pfe_minihif_drv_attach_ring_check_param (hif_drv_12(D), is_rx_13(D));
  # DEBUG ret => ret_15
  # DEBUG BEGIN_STMT
  if (ret_15 == 0)
    goto <bb 3>; [0.00%]
  else
    goto <bb 10>; [100.00%]

  <bb 3> [count: 0]:
  # DEBUG BEGIN_STMT
  if (is_rx_13(D) == 1)
    goto <bb 4>; [0.00%]
  else
    goto <bb 5>; [0.00%]

  <bb 4> [count: 0]:
  # DEBUG BEGIN_STMT
  ring_17 = &hif_drv_12(D)->rx_ring;
  # DEBUG ring => ring_17
  goto <bb 6>; [0.00%]

  <bb 5> [count: 0]:
  # DEBUG BEGIN_STMT
  ring_16 = &hif_drv_12(D)->tx_ring;
  # DEBUG ring => ring_16

  <bb 6> [count: 0]:
  # ring_8 = PHI <ring_17(4), ring_16(5)>
  # DEBUG ring => ring_8
  # DEBUG BEGIN_STMT
  _1 = hif_drv_12(D)->id;
  _2 = _1 == 4;
  _3 = (unsigned char) _2;
  _4 = hif_drv_12(D)->bd_access;
  ret_22 = pfe_hif_ring_attach (ring_8, bd_base_va_18(D), wb_bd_base_va_19(D), length_20(D), is_rx_13(D), _3, _4);
  # DEBUG ret => ret_22
  # DEBUG BEGIN_STMT
  _5 = ret_22 != 0;
  _6 = (long int) _5;
  _7 = __builtin_expect (_6, 0);
  if (_7 != 0)
    goto <bb 10>; [0.00%]
  else
    goto <bb 7>; [0.00%]

  <bb 7> [count: 0]:
  # DEBUG BEGIN_STMT
  # DEBUG D#1 => hif_drv_12(D)
  # DEBUG D#2 => ring_8
  # DEBUG is_rx => is_rx_13(D)
  # DEBUG length => length_20(D)
  # DEBUG INLINE_ENTRY pfe_minihif_drv_attach_created_ring
  # DEBUG hif_drv => D#1
  # DEBUG ring => D#2
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (is_rx_13(D) == 0)
    goto <bb 8>; [0.00%]
  else
    goto <bb 10>; [0.00%]

  <bb 8> [count: 0]:
  # DEBUG BEGIN_STMT
  _14 = (short unsigned int) length_20(D);
  MEM[(uint16_t *)hif_drv_12(D) + 384B] = _14;

  <bb 10> [local count: 1073741824]:
  # ret_9 = PHI <ret_15(2), ret_22(6), ret_22(8), ret_22(7)>
  # DEBUG is_rx => NULL
  # DEBUG length => NULL
  # DEBUG ret => ret_9
  # DEBUG BEGIN_STMT
  return ret_9;

}


pfe_minihif_drv_create (struct pfe_minihif_drv_t * hif_drv, pfe_ct_phy_if_id_t id, bool_t bd_access)
{
  errno_t ret;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (bd_access_3(D) == 1)
    goto <bb 5>; [21.72%]
  else
    goto <bb 3>; [78.28%]

  <bb 3> [local count: 840525101]:
  # DEBUG BEGIN_STMT
  if (id_4(D) == 4)
    goto <bb 5>; [21.72%]
  else
    goto <bb 4>; [78.28%]

  <bb 4> [local count: 657963049]:
  # DEBUG BEGIN_STMT
  hif_drv_6(D)->id = id_4(D);
  # DEBUG BEGIN_STMT
  hif_drv_6(D)->bd_access = bd_access_3(D);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


pfe_minihif_drv_attach_ring_check_param (const struct pfe_minihif_drv_t * hif_drv, bool_t is_rx)
{
  errno_t ret;
  void * _1;
  void * _2;

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

  <bb 3> [local count: 365072220]:
  _1 = hif_drv_6(D)->rx_ring.base_va;
  if (_1 != 0B)
    goto <bb 7>; [55.68%]
  else
    goto <bb 4>; [44.32%]

  <bb 4> [local count: 870469613]:
  if (is_rx_4(D) == 0)
    goto <bb 5>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 5> [local count: 435234806]:
  _2 = hif_drv_6(D)->tx_ring.base_va;
  if (_2 != 0B)
    goto <bb 7>; [55.68%]
  else
    goto <bb 6>; [44.32%]

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

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

}


pfe_hif_chnl_set_tx_rx_ring (struct pfe_minihif_drv_t * hif_drv, struct pfe_hif_chnl_t * chnl)
{
  errno_t ret;
  struct pfe_hif_ring_t * _1;
  int _2;
  struct pfe_hif_ring_t * _3;
  int _4;

  <bb 2> [count: 0]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = &hif_drv_7(D)->rx_ring;
  _2 = pfe_hif_chnl_set_rx_ring (chnl_9(D), _1);
  if (_2 != 0)
    goto <bb 5>; [0.00%]
  else
    goto <bb 3>; [0.00%]

  <bb 3> [count: 0]:
  # DEBUG BEGIN_STMT
  _3 = &hif_drv_7(D)->tx_ring;
  _4 = pfe_hif_chnl_set_tx_ring (chnl_9(D), _3);
  if (_4 != 0)
    goto <bb 5>; [0.00%]
  else
    goto <bb 4>; [0.00%]

  <bb 4> [count: 0]:
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


pfe_minihif_drv_check_ring_and_enable_hif (struct pfe_minihif_drv_t * hif_drv)
{
  errno_t ret;
  struct pfe_phy_if_t * prHif;
  const struct pfe_platform_t * pPlatform;
  void * _1;
  void * _2;
  <unnamed type> _3;
  int _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = hif_drv_8(D)->rx_ring.base_va;
  if (_1 == 0B)
    goto <bb 7>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  _2 = hif_drv_8(D)->tx_ring.base_va;
  if (_2 == 0B)
    goto <bb 7>; [31.91%]
  else
    goto <bb 4>; [68.09%]

  <bb 4> [local count: 594027532]:
  # DEBUG BEGIN_STMT
  pPlatform_10 = Eth_43_PFE_GetPlatform ();
  # DEBUG pPlatform => pPlatform_10
  # DEBUG BEGIN_STMT
  _3 = hif_drv_8(D)->id;
  prHif_12 = pfe_platform_get_phy_if_by_id (pPlatform_10, _3);
  # DEBUG prHif => prHif_12
  # DEBUG BEGIN_STMT
  if (prHif_12 == 0B)
    goto <bb 7>; [31.91%]
  else
    goto <bb 5>; [68.09%]

  <bb 5> [local count: 404473346]:
  # DEBUG BEGIN_STMT
  _4 = pfe_phy_if_enable (prHif_12);
  if (_4 != 0)
    goto <bb 7>; [35.00%]
  else
    goto <bb 6>; [65.00%]

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

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

}


pfe_minihif_drv_destroy_and_free (struct pfe_minihif_drv_t * hif_drv, uint32_t hif_base_offset)
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  if (hif_drv_1(D) != 0B)
    goto <bb 3>; [53.47%]
  else
    goto <bb 4>; [46.53%]

  <bb 3> [local count: 574129752]:
  pfe_minihif_drv_destroy_and_free.part.0 (hif_drv_1(D), hif_base_offset_3(D));

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

}


