IPA function summary for pfe_spd_get_rule/26 inlinable
  global time:     32.960100
  self size:       28
  global size:     28
  min size:       14
  self stack:      0
  global stack:    0
    size:16.000000, time:13.138131
    size:3.000000, time:2.000000,  executed if:(not inlined)
    size:2.000000, time:0.776262,  nonconst if:(op1 changed)
  calls:
    memcpy/37 function body not available
      loop depth: 0 freq:0.39 size: 4 time: 13
       op2 is compile time invariant
    pfe_phy_if_get_id/35 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12

IPA function summary for pfe_spd_remove_rule/25 inlinable
  global time:     78.666719
  self size:       93
  global size:     93
  min size:       76
  self stack:      0
  global stack:    0
    size:49.000000, time:25.340703
    size:3.000000, time:2.000000,  executed if:(not inlined)
    size:3.000000, time:0.584238,  nonconst if:(op1 changed)
  calls:
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.19 size: 2 time: 11
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.19 size: 2 time: 11
    pfe_spd_update_phyif/20 function not considered for inlining
      loop depth: 0 freq:0.39 size: 5 time: 14callee size:19 stack: 0
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    oal_mm_malloc/36 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_class_dmem_heap_free/33 function body not available
      loop depth: 0 freq:0.33 size: 3 time: 12
    pfe_phy_if_set_spd/34 function body not available
      loop depth: 0 freq:0.33 size: 3 time: 12
       op1 is compile time invariant
    pfe_phy_if_get_spd/32 function body not available
      loop depth: 0 freq:0.33 size: 3 time: 12
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.33 size: 2 time: 11
    pfe_phy_if_get_id/35 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12

IPA function summary for pfe_spd_add_rule/24 inlinable
  global time:     99.916031
  self size:       143
  global size:     143
  min size:       90
  self stack:      0
  global stack:    0
    size:64.000000, time:30.273571
    size:3.000000, time:2.000000,  executed if:(not inlined)
    size:2.000000, time:0.762125,  nonconst if:(op1 changed)
    size:3.000000, time:0.571594,  executed if:(op1 != 0),  nonconst if:(op1 changed) && (op1 != 0)
    size:5.000000, time:0.952656,  executed if:(op1 != 0)
    size:1.000000, time:0.190531,  executed if:(op1 == 0)
  calls:
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.28 size: 2 time: 11
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.28 size: 2 time: 11
    pfe_spd_update_phyif/20 function not considered for inlining
      loop depth: 0 freq:0.57 size: 5 time: 14callee size:19 stack: 0
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 != 0)
       op2 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 != 0)
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 != 0)
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 == 0)
       op2 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 == 0)
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
       op2 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    oal_mm_malloc/36 function body not available
      loop depth: 0 freq:0.70 size: 3 time: 12
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.07 size: 2 time: 11
    pfe_phy_if_set_spd/34 function body not available
      loop depth: 0 freq:0.13 size: 3 time: 12
    pfe_class_write_dmem/39 function body not available
      loop depth: 0 freq:0.13 size: 6 time: 15
       op1 is compile time invariant
       op4 is compile time invariant
    pfe_class_dmem_heap_alloc/38 function body not available
      loop depth: 0 freq:0.20 size: 4 time: 13
       op1 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.20 size: 4 time: 13
       op2 is compile time invariant
    oal_mm_malloc/36 function body not available
      loop depth: 0 freq:0.30 size: 3 time: 12
       op0 is compile time invariant
    pfe_phy_if_get_id/35 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12

IPA function summary for pfe_spd_destroy/23 inlinable
  global time:     479.577357
  self size:       40
  global size:     40
  min size:       36
  self stack:      8
  global stack:    8
    size:19.000000, time:112.550001
    size:3.000000, time:2.000000,  executed if:(not inlined)
  calls:
    pfe_if_db_unlock/31 function body not available
      loop depth: 1 freq:6.30 size: 2 time: 11
    oal_mm_free/30 function body not available
      loop depth: 1 freq:6.30 size: 2 time: 11
    pfe_spd_destroy_phyif/21 function not considered for inlining
      loop depth: 1 freq:1.68 size: 2 time: 11callee size: 6 stack: 0
    pfe_if_db_entry_get_phy_if/29 function body not available
      loop depth: 1 freq:3.15 size: 3 time: 12
    pfe_if_db_get_first/28 function body not available
      loop depth: 1 freq:6.30 size: 7 time: 16
       op0 change 15.870000% of time
       op2 is compile time invariant
       op4 is compile time invariant
    pfe_if_db_lock/27 function body not available
      loop depth: 1 freq:6.30 size: 2 time: 11
       op0 is compile time invariant

IPA function summary for pfe_spd_init/22 inlinable
  global time:     41.000000
  self size:       8
  global size:     8
  min size:       0
  self stack:      0
  global stack:    0
    size:5.000000, time:39.000000
    size:3.000000, time:2.000000,  executed if:(not inlined)
  calls:

IPA function summary for pfe_spd_destroy_phyif/21 inlinable
  global time:     39.000000
  self size:       13
  global size:     13
  min size:       18
  self stack:      0
  global stack:    0
    size:1.000000, time:1.000000
    size:3.000000, time:2.000000,  executed if:(not inlined)
  calls:
    pfe_phy_if_set_spd/34 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12
       op1 is compile time invariant
    pfe_class_dmem_heap_free/33 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12
    pfe_phy_if_get_spd/32 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12

IPA function summary for pfe_spd_update_phyif/20 inlinable
  global time:     48.572800
  self size:       38
  global size:     38
  min size:       38
  self stack:      0
  global stack:    0
    size:15.500000, time:8.971250
    size:3.500000, time:2.238850,  executed if:(not inlined)
  calls:
    pfe_class_dmem_heap_free/33 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_phy_if_set_spd/34 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_phy_if_get_spd/32 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_class_write_dmem/39 function body not available
      loop depth: 0 freq:0.48 size: 6 time: 15
       op1 is compile time invariant
    pfe_class_dmem_heap_alloc/38 function body not available
      loop depth: 0 freq:1.00 size: 4 time: 13


Flattening functions:
Overall time estimate: 819.693007 weighted by profile: 0.000000

Deciding on inlining of small functions.  Starting with size 0.
Enqueueing calls in pfe_spd_get_rule/26.
Enqueueing calls in pfe_spd_remove_rule/25.
Enqueueing calls in pfe_spd_add_rule/24.
Enqueueing calls in pfe_spd_destroy/23.
Enqueueing calls in pfe_spd_init/22.
Enqueueing calls in pfe_spd_destroy_phyif/21.
Enqueueing calls in pfe_spd_update_phyif/20.

Considering pfe_spd_destroy_phyif/21 with 13 size
 to be inlined into pfe_spd_destroy/23 in C:/NXP/SW32_RTD_4.4_4.0.0/eclipse/plugins/Eth_43_PFE_TS_T40D11M10I0R0/src/pfe_spd.c:195
 Estimated badness is -0.228083, frequency 1.68.

Reclaiming functions:
Reclaiming variables:
Clearing address taken flags:

Deciding on functions to be inlined into all callers and removing useless speculations:
Overall time estimate: 824.484937 weighted by profile: 0.000000

Why inlining failed?
function body not available                       :       43 calls, 46.129819 freq, 0 count
--param max-inline-insns-auto limit reached       :        2 calls, 0.958242 freq, 0 count
IPA function summary for pfe_spd_get_rule/26 inlinable
  global time:     32.960100
  self size:       28
  global size:     28
  min size:       14
  self stack:      0
  global stack:    0
    size:16.000000, time:13.138131
    size:3.000000, time:2.000000,  executed if:(not inlined)
    size:2.000000, time:0.776262,  nonconst if:(op1 changed)
  calls:
    memcpy/37 function body not available
      loop depth: 0 freq:0.39 size: 4 time: 13
       op2 is compile time invariant
    pfe_phy_if_get_id/35 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12

IPA function summary for pfe_spd_remove_rule/25 inlinable
  global time:     78.666719
  self size:       93
  global size:     93
  min size:       76
  self stack:      0
  global stack:    0
    size:49.000000, time:25.340703
    size:3.000000, time:2.000000,  executed if:(not inlined)
    size:3.000000, time:0.584238,  nonconst if:(op1 changed)
  calls:
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.19 size: 2 time: 11
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.19 size: 2 time: 11
    pfe_spd_update_phyif/20 --param max-inline-insns-auto limit reached
      loop depth: 0 freq:0.39 size: 5 time: 14callee size:19 stack: 0
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    oal_mm_malloc/36 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_class_dmem_heap_free/33 function body not available
      loop depth: 0 freq:0.33 size: 3 time: 12
    pfe_phy_if_set_spd/34 function body not available
      loop depth: 0 freq:0.33 size: 3 time: 12
       op1 is compile time invariant
    pfe_phy_if_get_spd/32 function body not available
      loop depth: 0 freq:0.33 size: 3 time: 12
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.33 size: 2 time: 11
    pfe_phy_if_get_id/35 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12

IPA function summary for pfe_spd_add_rule/24 inlinable
  global time:     99.916031
  self size:       143
  global size:     143
  min size:       90
  self stack:      0
  global stack:    0
    size:64.000000, time:30.273571
    size:3.000000, time:2.000000,  executed if:(not inlined)
    size:2.000000, time:0.762125,  nonconst if:(op1 changed)
    size:3.000000, time:0.571594,  executed if:(op1 != 0),  nonconst if:(op1 changed) && (op1 != 0)
    size:5.000000, time:0.952656,  executed if:(op1 != 0)
    size:1.000000, time:0.190531,  executed if:(op1 == 0)
  calls:
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.28 size: 2 time: 11
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.28 size: 2 time: 11
    pfe_spd_update_phyif/20 --param max-inline-insns-auto limit reached
      loop depth: 0 freq:0.57 size: 5 time: 14callee size:19 stack: 0
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 != 0)
       op2 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 != 0)
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 != 0)
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 == 0)
       op2 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13 predicate: (op1 == 0)
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
       op2 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.19 size: 4 time: 13
    oal_mm_malloc/36 function body not available
      loop depth: 0 freq:0.70 size: 3 time: 12
    oal_mm_free/30 function body not available
      loop depth: 0 freq:0.07 size: 2 time: 11
    pfe_phy_if_set_spd/34 function body not available
      loop depth: 0 freq:0.13 size: 3 time: 12
    pfe_class_write_dmem/39 function body not available
      loop depth: 0 freq:0.13 size: 6 time: 15
       op1 is compile time invariant
       op4 is compile time invariant
    pfe_class_dmem_heap_alloc/38 function body not available
      loop depth: 0 freq:0.20 size: 4 time: 13
       op1 is compile time invariant
    memcpy/37 function body not available
      loop depth: 0 freq:0.20 size: 4 time: 13
       op2 is compile time invariant
    oal_mm_malloc/36 function body not available
      loop depth: 0 freq:0.30 size: 3 time: 12
       op0 is compile time invariant
    pfe_phy_if_get_id/35 function body not available
      loop depth: 0 freq:1.00 size: 3 time: 12

IPA function summary for pfe_spd_destroy/23 inlinable
  global time:     523.369287
  self size:       40
  global size:     48
  min size:       86
  self stack:      8
  global stack:    8
    size:20.000000, time:114.234306
    size:3.000000, time:2.000000,  executed if:(not inlined)
  calls:
    pfe_if_db_unlock/31 function body not available
      loop depth: 1 freq:6.30 size: 2 time: 11
    oal_mm_free/30 function body not available
      loop depth: 1 freq:6.30 size: 2 time: 11
    pfe_spd_destroy_phyif/21 inlined
      loop depth: 1 freq:1.68 size: 2 time: 11callee size: 6 stack: 0
      Stack frame offset 8, callee self size 0, callee size 0
      pfe_phy_if_set_spd/34 function body not available
        loop depth: 1 freq:1.68 size: 3 time: 12
         op1 is compile time invariant
      pfe_class_dmem_heap_free/33 function body not available
        loop depth: 1 freq:1.68 size: 3 time: 12
      pfe_phy_if_get_spd/32 function body not available
        loop depth: 1 freq:1.68 size: 3 time: 12
    pfe_if_db_entry_get_phy_if/29 function body not available
      loop depth: 1 freq:3.15 size: 3 time: 12
    pfe_if_db_get_first/28 function body not available
      loop depth: 1 freq:6.30 size: 7 time: 16
       op0 change 15.870000% of time
       op2 is compile time invariant
       op4 is compile time invariant
    pfe_if_db_lock/27 function body not available
      loop depth: 1 freq:6.30 size: 2 time: 11
       op0 is compile time invariant

IPA function summary for pfe_spd_init/22 inlinable
  global time:     41.000000
  self size:       8
  global size:     8
  min size:       0
  self stack:      0
  global stack:    0
    size:5.000000, time:39.000000
    size:3.000000, time:2.000000,  executed if:(not inlined)
  calls:

IPA function summary for pfe_spd_update_phyif/20 inlinable
  global time:     48.572800
  self size:       38
  global size:     38
  min size:       16
  self stack:      0
  global stack:    0
  estimated growth:22
    size:15.500000, time:8.971250
    size:3.500000, time:2.238850,  executed if:(not inlined)
  calls:
    pfe_class_dmem_heap_free/33 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_phy_if_set_spd/34 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_phy_if_get_spd/32 function body not available
      loop depth: 0 freq:0.48 size: 3 time: 12
    pfe_class_write_dmem/39 function body not available
      loop depth: 0 freq:0.48 size: 6 time: 15
       op1 is compile time invariant
    pfe_class_dmem_heap_alloc/38 function body not available
      loop depth: 0 freq:1.00 size: 4 time: 13

Symbol table:

pfe_class_write_dmem/39 (pfe_class_write_dmem) @07285c40
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_add_rule/24 (142566607 (estimated locally),0.13 per call) pfe_spd_update_phyif/20 (512926469 (estimated locally),0.48 per call) 
  Calls: 
pfe_class_dmem_heap_alloc/38 (pfe_class_dmem_heap_alloc) @07285b60
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_add_rule/24 (219333242 (estimated locally),0.20 per call) pfe_spd_update_phyif/20 (1073741824 (estimated locally),1.00 per call) 
  Calls: 
memcpy/37 (memcpy) @07285a80
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_get_rule/26 (416752756 (estimated locally),0.39 per call) pfe_spd_remove_rule/25 (209107026 (estimated locally),0.19 per call) pfe_spd_remove_rule/25 (209107026 (estimated locally),0.19 per call) pfe_spd_remove_rule/25 (209107026 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (204581371 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (204581371 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (204581371 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (204581371 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (204581371 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (201527918 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (201527918 (estimated locally),0.19 per call) pfe_spd_add_rule/24 (219333242 (estimated locally),0.20 per call) 
  Calls: 
oal_mm_malloc/36 (oal_mm_malloc) @072859a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_remove_rule/25 (514724987 (estimated locally),0.48 per call) pfe_spd_add_rule/24 (751619277 (estimated locally),0.70 per call) pfe_spd_add_rule/24 (322122547 (estimated locally),0.30 per call) 
  Calls: 
pfe_phy_if_get_id/35 (pfe_phy_if_get_id) @072858c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_get_rule/26 (1073741824 (estimated locally),1.00 per call) pfe_spd_remove_rule/25 (1073741824 (estimated locally),1.00 per call) pfe_spd_add_rule/24 (1073741823 (estimated locally),1.00 per call) 
  Calls: 
pfe_phy_if_set_spd/34 (pfe_phy_if_set_spd) @07285620
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_remove_rule/25 (357690245 (estimated locally),0.33 per call) pfe_spd_add_rule/24 (142566607 (estimated locally),0.13 per call) pfe_spd_update_phyif/20 (512926469 (estimated locally),0.48 per call) pfe_spd_destroy_phyif/21 (180850872 (estimated locally),1.68 per call) 
  Calls: 
pfe_class_dmem_heap_free/33 (pfe_class_dmem_heap_free) @07285540
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_remove_rule/25 (357690245 (estimated locally),0.33 per call) pfe_spd_update_phyif/20 (512926469 (estimated locally),0.48 per call) pfe_spd_destroy_phyif/21 (180850872 (estimated locally),1.68 per call) 
  Calls: 
pfe_phy_if_get_spd/32 (pfe_phy_if_get_spd) @07285460
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_remove_rule/25 (357690245 (estimated locally),0.33 per call) pfe_spd_update_phyif/20 (512926469 (estimated locally),0.48 per call) pfe_spd_destroy_phyif/21 (180850872 (estimated locally),1.68 per call) 
  Calls: 
pfe_if_db_unlock/31 (pfe_if_db_unlock) @072852a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_destroy/23 (676457349 (estimated locally),6.30 per call) 
  Calls: 
oal_mm_free/30 (oal_mm_free) @072851c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_remove_rule/25 (209107026 (estimated locally),0.19 per call) pfe_spd_remove_rule/25 (209107026 (estimated locally),0.19 per call) pfe_spd_remove_rule/25 (357690245 (estimated locally),0.33 per call) pfe_spd_add_rule/24 (305345331 (estimated locally),0.28 per call) pfe_spd_add_rule/24 (305345331 (estimated locally),0.28 per call) pfe_spd_add_rule/24 (76766635 (estimated locally),0.07 per call) pfe_spd_destroy/23 (676457349 (estimated locally),6.30 per call) 
  Calls: 
pfe_if_db_entry_get_phy_if/29 (pfe_if_db_entry_get_phy_if) @072850e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_destroy/23 (338228674 (estimated locally),3.15 per call) 
  Calls: 
pfe_if_db_get_first/28 (pfe_if_db_get_first) @07285000
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_destroy/23 (676457349 (estimated locally),6.30 per call) 
  Calls: 
pfe_if_db_lock/27 (pfe_if_db_lock) @07219c40
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: pfe_spd_destroy/23 (676457349 (estimated locally),6.30 per call) 
  Calls: 
pfe_spd_get_rule/26 (pfe_spd_get_rule) @07219e00
  Type: function definition analyzed
  Visibility: externally_visible public
  References: pfe_spds/18 (read)
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: 
  Calls: memcpy/37 (416752756 (estimated locally),0.39 per call) pfe_phy_if_get_id/35 (1073741824 (estimated locally),1.00 per call) 
pfe_spd_remove_rule/25 (pfe_spd_remove_rule) @07219b60
  Type: function definition analyzed
  Visibility: externally_visible public
  References: pfe_spds/18 (read)pfe_spds/18 (write)class_ptr/19 (read)pfe_spds/18 (read)pfe_spds/18 (read)pfe_spds/18 (write)
  Referring: 
  Availability: available
  Function flags: count:1073741824 (estimated locally) body optimize_size
  Called by: 
  Calls: oal_mm_free/30 (209107026 (estimated locally),0.19 per call) oal_mm_free/30 (209107026 (estimated locally),0.19 per call) pfe_spd_update_phyif/20 (418214052 (estimated locally),0.39 per call) memcpy/37 (209107026 (estimated locally),0.19 per call) memcpy/37 (209107026 (estimated locally),0.19 per call) memcpy/37 (209107026 (estimated locally),0.19 per call) oal_mm_malloc/36 (514724987 (estimated locally),0.48 per call) pfe_class_dmem_heap_free/33 (357690245 (estimated locally),0.33 per call) pfe_phy_if_set_spd/34 (357690245 (estimated locally),0.33 per call) pfe_phy_if_get_spd/32 (357690245 (estimated locally),0.33 per call) oal_mm_free/30 (357690245 (estimated locally),0.33 per call) pfe_phy_if_get_id/35 (1073741824 (estimated locally),1.00 per call) 
pfe_spd_add_rule/24 (pfe_spd_add_rule) @072198c0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: pfe_spds/18 (read)pfe_spds/18 (write)class_ptr/19 (read)class_ptr/19 (read)pfe_spds/18 (read)pfe_spds/18 (read)pfe_spds/18 (write)
  Referring: 
  Availability: available
  Function flags: count:1073741823 (estimated locally) body optimize_size
  Called by: 
  Calls: oal_mm_free/30 (305345331 (estimated locally),0.28 per call) oal_mm_free/30 (305345331 (estimated locally),0.28 per call) pfe_spd_update_phyif/20 (610690662 (estimated locally),0.57 per call) memcpy/37 (204581371 (estimated locally),0.19 per call) memcpy/37 (204581371 (estimated locally),0.19 per call) memcpy/37 (204581371 (estimated locally),0.19 per call) memcpy/37 (204581371 (estimated locally),0.19 per call) memcpy/37 (204581371 (estimated locally),0.19 per call) memcpy/37 (201527918 (estimated locally),0.19 per call) memcpy/37 (201527918 (estimated locally),0.19 per call) oal_mm_malloc/36 (751619277 (estimated locally),0.70 per call) oal_mm_free/30 (76766635 (estimated locally),0.07 per call) pfe_phy_if_set_spd/34 (142566607 (estimated locally),0.13 per call) pfe_class_write_dmem/39 (142566607 (estimated locally),0.13 per call) pfe_class_dmem_heap_alloc/38 (219333242 (estimated locally),0.20 per call) memcpy/37 (219333242 (estimated locally),0.20 per call) oal_mm_malloc/36 (322122547 (estimated locally),0.30 per call) pfe_phy_if_get_id/35 (1073741823 (estimated locally),1.00 per call) 
pfe_spd_destroy/23 (pfe_spd_destroy) @07219620
  Type: function definition analyzed
  Visibility: externally_visible public
  References: pfe_spds/18 (read)pfe_spds/18 (read)pfe_spds/18 (write)class_ptr/19 (write)
  Referring: 
  Availability: available
  Function flags: count:107374182 (estimated locally) body optimize_size
  Called by: 
  Calls: pfe_if_db_unlock/31 (676457349 (estimated locally),6.30 per call) oal_mm_free/30 (676457349 (estimated locally),6.30 per call) pfe_spd_destroy_phyif/21 (inlined) (180850872 (estimated locally),1.68 per call) pfe_if_db_entry_get_phy_if/29 (338228674 (estimated locally),3.15 per call) pfe_if_db_get_first/28 (676457349 (estimated locally),6.30 per call) pfe_if_db_lock/27 (676457349 (estimated locally),6.30 per call) 
pfe_spd_init/22 (pfe_spd_init) @07219380
  Type: function definition analyzed
  Visibility: externally_visible public
  References: class_ptr/19 (write)pfe_spds/18 (write)
  Referring: 
  Availability: available
  Function flags: count:107374182 (estimated locally) body optimize_size
  Called by: 
  Calls: 
pfe_spd_destroy_phyif/21 (pfe_spd_destroy_phyif) @072190e0
  Type: function definition analyzed
  Visibility: prevailing_def_ironly
  References: class_ptr/19 (read)
  Referring: 
  Function pfe_spd_destroy_phyif/21 is inline copy in pfe_spd_destroy/23
  Availability: local
  Function flags: count:180850872 (estimated locally) body local optimize_size
  Called by: pfe_spd_destroy/23 (inlined) (180850872 (estimated locally),1.68 per call) 
  Calls: pfe_phy_if_set_spd/34 (180850872 (estimated locally),1.68 per call) pfe_class_dmem_heap_free/33 (180850872 (estimated locally),1.68 per call) pfe_phy_if_get_spd/32 (180850872 (estimated locally),1.68 per call) 
pfe_spd_update_phyif/20 (pfe_spd_update_phyif) @07212e00
  Type: function definition analyzed
  Visibility: prevailing_def_ironly
  References: class_ptr/19 (read)class_ptr/19 (read)class_ptr/19 (read)
  Referring: 
  Availability: local
  Function flags: count:1073741824 (estimated locally) body local optimize_size
  Called by: pfe_spd_remove_rule/25 (418214052 (estimated locally),0.39 per call) pfe_spd_add_rule/24 (610690662 (estimated locally),0.57 per call) 
  Calls: pfe_class_dmem_heap_free/33 (512926469 (estimated locally),0.48 per call) pfe_phy_if_set_spd/34 (512926469 (estimated locally),0.48 per call) pfe_phy_if_get_spd/32 (512926469 (estimated locally),0.48 per call) pfe_class_write_dmem/39 (512926469 (estimated locally),0.48 per call) pfe_class_dmem_heap_alloc/38 (1073741824 (estimated locally),1.00 per call) 
class_ptr/19 (class_ptr) @072104c8
  Type: variable definition analyzed
  Visibility: prevailing_def_ironly
  References: 
  Referring: pfe_spd_destroy_phyif/21 (read)pfe_spd_update_phyif/20 (read)pfe_spd_destroy/23 (write)pfe_spd_update_phyif/20 (read)pfe_spd_init/22 (write)pfe_spd_add_rule/24 (read)pfe_spd_update_phyif/20 (read)pfe_spd_add_rule/24 (read)pfe_spd_remove_rule/25 (read)
  Availability: available
  Varpool flags: initialized
pfe_spds/18 (pfe_spds) @07210438
  Type: variable definition analyzed
  Visibility: prevailing_def_ironly
  References: 
  Referring: pfe_spd_add_rule/24 (write)pfe_spd_add_rule/24 (read)pfe_spd_add_rule/24 (read)pfe_spd_remove_rule/25 (write)pfe_spd_remove_rule/25 (read)pfe_spd_remove_rule/25 (write)pfe_spd_destroy/23 (read)pfe_spd_destroy/23 (read)pfe_spd_destroy/23 (write)pfe_spd_init/22 (write)pfe_spd_add_rule/24 (read)pfe_spd_add_rule/24 (write)pfe_spd_remove_rule/25 (read)pfe_spd_remove_rule/25 (read)pfe_spd_get_rule/26 (read)
  Availability: available
  Varpool flags:

;; Function pfe_spd_update_phyif (pfe_spd_update_phyif, funcdef_no=16, decl_uid=9524, cgraph_uid=17, symbol_order=20)

pfe_spd_update_phyif (struct pfe_phy_if_t * phy_if, struct pfe_ct_ipsec_spd_t * spd, const uint32_t size)
{
  uint32_t old_addr;
  addr_t dmem_addr;
  errno_t ret;
  struct pfe_class_t * class_ptr.7_1;
  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;
  struct pfe_class_t * class_ptr.8_12;
  struct pfe_class_t * class_ptr.9_13;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  class_ptr.7_1 = class_ptr;
  dmem_addr_19 = pfe_class_dmem_heap_alloc (class_ptr.7_1, size_17(D));
  # DEBUG dmem_addr => dmem_addr_19
  # DEBUG BEGIN_STMT
  if (dmem_addr_19 == 0)
    goto <bb 4>; [52.23%]
  else
    goto <bb 3>; [47.77%]

  <bb 3> [local count: 512926469]:
  # DEBUG BEGIN_STMT
  _2 = dmem_addr_19 + 12;
  _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;
  spd_20(D)->entries = _11;
  # DEBUG BEGIN_STMT
  class_ptr.8_12 = class_ptr;
  pfe_class_write_dmem (class_ptr.8_12, -1, dmem_addr_19, spd_20(D), size_17(D));
  # DEBUG BEGIN_STMT
  old_addr_25 = pfe_phy_if_get_spd (phy_if_23(D));
  # DEBUG old_addr => old_addr_25
  # DEBUG BEGIN_STMT
  pfe_phy_if_set_spd (phy_if_23(D), dmem_addr_19);
  # DEBUG BEGIN_STMT
  class_ptr.9_13 = class_ptr;
  pfe_class_dmem_heap_free (class_ptr.9_13, old_addr_25);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}



;; Function pfe_spd_init (pfe_spd_init, funcdef_no=18, decl_uid=9505, cgraph_uid=19, symbol_order=22)

pfe_spd_init (struct pfe_class_t * class)
{
  uint32_t idx;

  <bb 2> [local count: 107374182]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  class_ptr = class_4(D);
  # DEBUG BEGIN_STMT
  # DEBUG idx => 0
  goto <bb 4>; [100.00%]

  <bb 3> [local count: 966367641]:
  # DEBUG BEGIN_STMT
  pfe_spds[idx_1] = 0B;
  # DEBUG BEGIN_STMT
  idx_7 = idx_1 + 1;
  # DEBUG idx => idx_7

  <bb 4> [local count: 1073741824]:
  # idx_1 = PHI <0(2), idx_7(3)>
  # DEBUG idx => idx_1
  # DEBUG BEGIN_STMT
  if (idx_1 != 9)
    goto <bb 3>; [90.00%]
  else
    goto <bb 5>; [10.00%]

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

}



;; Function pfe_spd_destroy (pfe_spd_destroy, funcdef_no=19, decl_uid=9507, cgraph_uid=20, symbol_order=23)


Symbols to be put in SSA form
{ D.9659 }
Incremental SSA update started at block: 0
Number of blocks in CFG: 14
Number of blocks to update: 13 ( 93%)


Removing basic block 7
Removing basic block 12
;; 2 loops found
;;
;; Loop 0
;;  header 0, latch 1
;;  depth 0, outer -1
;;  nodes: 0 1 2 3 4 5 6 7 8 9 10 11
;;
;; Loop 1
;;  header 10, latch 9
;;  depth 1, outer 0
;;  nodes: 10 9 4 8 5 7 6 3
;; 2 succs { 10 }
;; 3 succs { 4 5 }
;; 4 succs { 9 }
;; 5 succs { 6 8 }
;; 6 succs { 7 8 }
;; 7 succs { 8 }
;; 8 succs { 9 }
;; 9 succs { 10 }
;; 10 succs { 3 11 }
;; 11 succs { 1 }
pfe_spd_destroy (struct pfe_if_db_t * phy_if_db)
{
  uint32_t baddr;
  struct pfe_if_db_entry_t * if_db_entry;
  struct pfe_phy_if_t * phy_if;
  errno_t ret;
  uint32_t session_id;
  uint32_t idx;
  struct pfe_ct_ipsec_spd_t * _1;
  long unsigned int session_id.0_2;
  void * idx.1_3;
  struct pfe_if_db_entry_t * if_db_entry.2_4;
  struct pfe_ct_ipsec_spd_t * _5;
  long unsigned int session_id.3_6;
  struct pfe_class_t * class_ptr.4_29;

  <bb 2> [local count: 107374182]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  session_id = 0;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG phy_if => 0B
  # DEBUG BEGIN_STMT
  if_db_entry = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG idx => 0
  goto <bb 10>; [100.00%]

  <bb 3> [local count: 966367641]:
  # DEBUG BEGIN_STMT
  _1 = pfe_spds[idx_7];
  if (_1 == 0B)
    goto <bb 4>; [30.00%]
  else
    goto <bb 5>; [70.00%]

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

  <bb 5> [local count: 676457349]:
  # DEBUG BEGIN_STMT
  # DEBUG phy_if => 0B
  # DEBUG BEGIN_STMT
  if_db_entry = 0B;
  # DEBUG BEGIN_STMT
  pfe_if_db_lock (&session_id);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  session_id.0_2 = session_id;
  idx.1_3 = (void *) idx_7;
  ret_21 = pfe_if_db_get_first (phy_if_db_19(D), session_id.0_2, 1, idx.1_3, &if_db_entry);
  # DEBUG ret => ret_21
  # DEBUG BEGIN_STMT
  if (ret_21 == 0)
    goto <bb 6>; [50.00%]
  else
    goto <bb 8>; [50.00%]

  <bb 6> [local count: 338228674]:
  # DEBUG BEGIN_STMT
  if_db_entry.2_4 = if_db_entry;
  phy_if_22 = pfe_if_db_entry_get_phy_if (if_db_entry.2_4);
  # DEBUG phy_if => phy_if_22
  # DEBUG BEGIN_STMT
  if (phy_if_22 != 0B)
    goto <bb 7>; [53.47%]
  else
    goto <bb 8>; [46.53%]

  <bb 7> [local count: 180850872]:
  # DEBUG BEGIN_STMT
  # DEBUG phy_if => phy_if_22
  # DEBUG INLINE_ENTRY pfe_spd_destroy_phyif
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  baddr_28 = pfe_phy_if_get_spd (phy_if_22);
  # DEBUG baddr => baddr_28
  # DEBUG BEGIN_STMT
  class_ptr.4_29 = class_ptr;
  pfe_class_dmem_heap_free (class_ptr.4_29, baddr_28);
  # DEBUG BEGIN_STMT
  pfe_phy_if_set_spd (phy_if_22, 0);
  # DEBUG BEGIN_STMT

  <bb 8> [local count: 676457349]:
  # DEBUG phy_if => NULL
  # DEBUG baddr => NULL
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = pfe_spds[idx_7];
  oal_mm_free (_5);
  # DEBUG BEGIN_STMT
  pfe_spds[idx_7] = 0B;
  # DEBUG BEGIN_STMT
  session_id.3_6 = session_id;
  pfe_if_db_unlock (session_id.3_6);

  <bb 9> [local count: 966367641]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  idx_27 = idx_7 + 1;
  # DEBUG idx => idx_27

  <bb 10> [local count: 1073741824]:
  # idx_7 = PHI <0(2), idx_27(9)>
  # DEBUG idx => idx_7
  # DEBUG BEGIN_STMT
  if (idx_7 != 9)
    goto <bb 3>; [90.00%]
  else
    goto <bb 11>; [10.00%]

  <bb 11> [local count: 107374182]:
  # DEBUG BEGIN_STMT
  class_ptr = 0B;
  session_id ={v} {CLOBBER};
  if_db_entry ={v} {CLOBBER};
  return;

}



;; Function pfe_spd_add_rule (pfe_spd_add_rule, funcdef_no=20, decl_uid=9511, cgraph_uid=21, symbol_order=24)

pfe_spd_add_rule (struct pfe_phy_if_t * phy_if, uint16_t position, struct pfe_ct_spd_entry_t * entry)
{
  addr_t dmem_addr;
  uint32_t old_count;
  uint32_t new_count;
  errno_t ret;
  struct pfe_ct_spd_entry_t * old_entries;
  struct pfe_ct_spd_entry_t * entries;
  struct pfe_ct_ipsec_spd_t * spd;
  pfe_ct_phy_if_id_t phy_if_id;
  int _1;
  struct pfe_ct_ipsec_spd_t * _2;
  struct pfe_class_t * class_ptr.5_3;
  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;
  struct pfe_class_t * class_ptr.6_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_ct_ipsec_spd_t * _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;
  long unsigned int _34;
  long unsigned int _35;
  <unnamed type> _36;
  long unsigned int _37;
  long unsigned int _38;
  long unsigned int _39;
  struct pfe_ct_spd_entry_t * _40;
  struct pfe_ct_spd_entry_t * _41;
  long unsigned int _42;
  long unsigned int _43;
  sizetype _44;
  sizetype _45;
  struct pfe_ct_spd_entry_t * _46;
  struct pfe_ct_spd_entry_t * _47;
  long unsigned int _48;
  long unsigned int _49;
  struct pfe_ct_spd_entry_t * _50;
  struct pfe_ct_ipsec_spd_t * _51;

  <bb 2> [local count: 1073741823]:
  # DEBUG BEGIN_STMT
  phy_if_id_57 = pfe_phy_if_get_id (phy_if_56(D));
  # DEBUG phy_if_id => phy_if_id_57
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (int) phy_if_id_57;
  _2 = pfe_spds[_1];
  if (_2 == 0B)
    goto <bb 3>; [30.00%]
  else
    goto <bb 7>; [70.00%]

  <bb 3> [local count: 322122547]:
  # DEBUG BEGIN_STMT
  # DEBUG new_count => 1
  # DEBUG BEGIN_STMT
  spd_82 = oal_mm_malloc (68);
  # DEBUG spd => spd_82
  # DEBUG BEGIN_STMT
  if (spd_82 != 0B)
    goto <bb 4>; [68.09%]
  else
    goto <bb 16>; [31.91%]

  <bb 4> [local count: 219333242]:
  # DEBUG BEGIN_STMT
  entries_83 = spd_82 + 12;
  # DEBUG entries => entries_83
  # DEBUG BEGIN_STMT
  spd_82->entry_count = 16777216;
  # DEBUG BEGIN_STMT
  spd_82->no_ip_action = 2;
  # DEBUG BEGIN_STMT
  memcpy (entries_83, entry_70(D), 56);
  # DEBUG BEGIN_STMT
  pfe_spds[_1] = spd_82;
  # DEBUG BEGIN_STMT
  class_ptr.5_3 = class_ptr;
  dmem_addr_89 = pfe_class_dmem_heap_alloc (class_ptr.5_3, 68);
  # DEBUG dmem_addr => dmem_addr_89
  # DEBUG BEGIN_STMT
  if (dmem_addr_89 != 0)
    goto <bb 5>; [65.00%]
  else
    goto <bb 6>; [35.00%]

  <bb 5> [local count: 142566607]:
  # DEBUG BEGIN_STMT
  _4 = dmem_addr_89 + 12;
  _5 = _4 >> 24;
  _6 = _4 >> 8;
  _7 = _6 & 65280;
  _8 = _5 | _7;
  _9 = _4 << 8;
  _10 = _9 & 16711680;
  _11 = _8 | _10;
  _12 = _4 << 24;
  _13 = _11 | _12;
  spd_82->entries = _13;
  # DEBUG BEGIN_STMT
  class_ptr.6_14 = class_ptr;
  pfe_class_write_dmem (class_ptr.6_14, -1, dmem_addr_89, spd_82, 68);
  # DEBUG BEGIN_STMT
  pfe_phy_if_set_spd (phy_if_56(D), dmem_addr_89);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  goto <bb 16>; [100.00%]

  <bb 6> [local count: 76766635]:
  # DEBUG BEGIN_STMT
  oal_mm_free (spd_82);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 11
  goto <bb 16>; [100.00%]

  <bb 7> [local count: 751619277]:
  # DEBUG BEGIN_STMT
  _15 = _2->entry_count;
  _16 = _15 >> 24;
  _17 = _15 >> 8;
  _18 = _17 & 65280;
  _19 = _16 | _18;
  _20 = _15 << 8;
  _21 = _20 & 16711680;
  _22 = _19 | _21;
  _23 = _15 << 24;
  old_count_58 = _22 | _23;
  # DEBUG old_count => old_count_58
  # DEBUG BEGIN_STMT
  new_count_59 = old_count_58 + 1;
  # DEBUG new_count => new_count_59
  # DEBUG BEGIN_STMT
  _24 = new_count_59 * 56;
  _25 = _24 + 12;
  spd_61 = oal_mm_malloc (_25);
  # DEBUG spd => spd_61
  # DEBUG BEGIN_STMT
  _26 = pfe_spds[_1];
  old_entries_62 = _26 + 12;
  # DEBUG old_entries => old_entries_62
  # DEBUG BEGIN_STMT
  if (spd_61 != 0B)
    goto <bb 8>; [81.25%]
  else
    goto <bb 16>; [18.75%]

  <bb 8> [local count: 610690662]:
  # DEBUG BEGIN_STMT
  entries_63 = spd_61 + 12;
  # DEBUG entries => entries_63
  # DEBUG BEGIN_STMT
  _27 = new_count_59 >> 24;
  _28 = new_count_59 >> 8;
  _29 = _28 & 65280;
  _30 = _27 | _29;
  _31 = new_count_59 << 8;
  _32 = _31 & 16711680;
  _33 = _30 | _32;
  _34 = new_count_59 << 24;
  _35 = _33 | _34;
  spd_61->entry_count = _35;
  # DEBUG BEGIN_STMT
  _36 = _26->no_ip_action;
  spd_61->no_ip_action = _36;
  # DEBUG BEGIN_STMT
  _37 = _26->entries;
  spd_61->entries = _37;
  # DEBUG BEGIN_STMT
  _38 = (long unsigned int) position_67(D);
  if (_38 >= old_count_58)
    goto <bb 9>; [33.00%]
  else
    goto <bb 10>; [67.00%]

  <bb 9> [local count: 201527918]:
  # DEBUG BEGIN_STMT
  _39 = old_count_58 * 56;
  memcpy (entries_63, old_entries_62, _39);
  # DEBUG BEGIN_STMT
  _40 = entries_63 + _39;
  memcpy (_40, entry_70(D), 56);
  goto <bb 13>; [100.00%]

  <bb 10> [local count: 409162743]:
  # DEBUG BEGIN_STMT
  if (position_67(D) == 0)
    goto <bb 11>; [50.00%]
  else
    goto <bb 12>; [50.00%]

  <bb 11> [local count: 204581371]:
  # DEBUG BEGIN_STMT
  _41 = &MEM[(void *)spd_61 + 68B];
  _42 = old_count_58 * 56;
  memcpy (_41, old_entries_62, _42);
  # DEBUG BEGIN_STMT
  memcpy (entries_63, entry_70(D), 56);
  goto <bb 13>; [100.00%]

  <bb 12> [local count: 204581371]:
  # DEBUG BEGIN_STMT
  _43 = _38 * 56;
  memcpy (entries_63, old_entries_62, _43);
  # DEBUG BEGIN_STMT
  _44 = _38 + 1;
  _45 = _44 * 56;
  _46 = entries_63 + _45;
  _47 = old_entries_62 + _43;
  _48 = old_count_58 - _38;
  _49 = _48 * 56;
  memcpy (_46, _47, _49);
  # DEBUG BEGIN_STMT
  _50 = entries_63 + _43;
  memcpy (_50, entry_70(D), 56);

  <bb 13> [local count: 610690662]:
  # DEBUG BEGIN_STMT
  ret_77 = pfe_spd_update_phyif (phy_if_56(D), spd_61, _25);
  # DEBUG ret => ret_77
  # DEBUG BEGIN_STMT
  if (ret_77 == 0)
    goto <bb 14>; [50.00%]
  else
    goto <bb 15>; [50.00%]

  <bb 14> [local count: 305345331]:
  # DEBUG BEGIN_STMT
  _51 = pfe_spds[_1];
  oal_mm_free (_51);
  # DEBUG BEGIN_STMT
  pfe_spds[_1] = spd_61;
  goto <bb 16>; [100.00%]

  <bb 15> [local count: 305345331]:
  # DEBUG BEGIN_STMT
  oal_mm_free (spd_61);

  <bb 16> [local count: 1073741824]:
  # ret_52 = PHI <11(3), ret_77(15), 11(7), 11(6), 0(5), 0(14)>
  # DEBUG ret => ret_52
  # DEBUG BEGIN_STMT
  return ret_52;

}



;; Function pfe_spd_remove_rule (pfe_spd_remove_rule, funcdef_no=21, decl_uid=9514, cgraph_uid=22, symbol_order=25)

pfe_spd_remove_rule (struct pfe_phy_if_t * phy_if, uint16_t position)
{
  struct pfe_ct_ipsec_spd_t * spd;
  uint32_t old_addr;
  uint32_t entry_count;
  errno_t ret;
  struct pfe_ct_spd_entry_t * old_entries;
  struct pfe_ct_spd_entry_t * entries;
  pfe_ct_phy_if_id_t phy_if_id;
  int _1;
  struct pfe_ct_ipsec_spd_t * _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;
  struct pfe_class_t * class_ptr.10_12;
  long unsigned int _13;
  long unsigned int _14;
  struct pfe_ct_ipsec_spd_t * _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;
  <unnamed type> _25;
  long unsigned int _26;
  long unsigned int _27;
  long unsigned int _28;
  struct pfe_ct_spd_entry_t * _29;
  sizetype _30;
  sizetype _31;
  struct pfe_ct_spd_entry_t * _32;
  long unsigned int _33;
  long unsigned int _34;
  struct pfe_ct_ipsec_spd_t * _35;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  phy_if_id_41 = pfe_phy_if_get_id (phy_if_40(D));
  # DEBUG phy_if_id => phy_if_id_41
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = (int) phy_if_id_41;
  _2 = pfe_spds[_1];
  if (_2 == 0B)
    goto <bb 12>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  _3 = _2->entry_count;
  _4 = _3 >> 24;
  _5 = _3 >> 8;
  _6 = _5 & 65280;
  _7 = _4 | _6;
  _8 = _3 << 8;
  _9 = _8 & 16711680;
  _10 = _7 | _9;
  _11 = _3 << 24;
  entry_count_42 = _10 | _11;
  # DEBUG entry_count => entry_count_42
  # DEBUG BEGIN_STMT
  if (entry_count_42 <= 1)
    goto <bb 4>; [41.00%]
  else
    goto <bb 5>; [59.00%]

  <bb 4> [local count: 357690245]:
  # DEBUG BEGIN_STMT
  oal_mm_free (_2);
  # DEBUG BEGIN_STMT
  pfe_spds[_1] = 0B;
  # DEBUG BEGIN_STMT
  old_addr_63 = pfe_phy_if_get_spd (phy_if_40(D));
  # DEBUG old_addr => old_addr_63
  # DEBUG BEGIN_STMT
  pfe_phy_if_set_spd (phy_if_40(D), 0);
  # DEBUG BEGIN_STMT
  class_ptr.10_12 = class_ptr;
  pfe_class_dmem_heap_free (class_ptr.10_12, old_addr_63);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  goto <bb 12>; [100.00%]

  <bb 5> [local count: 514724987]:
  # DEBUG BEGIN_STMT
  entry_count_43 = entry_count_42 + 4294967295;
  # DEBUG entry_count => entry_count_43
  # DEBUG BEGIN_STMT
  _13 = entry_count_43 * 56;
  _14 = _13 + 12;
  spd_45 = oal_mm_malloc (_14);
  # DEBUG spd => spd_45
  # DEBUG BEGIN_STMT
  _15 = pfe_spds[_1];
  old_entries_46 = _15 + 12;
  # DEBUG old_entries => old_entries_46
  # DEBUG BEGIN_STMT
  if (spd_45 != 0B)
    goto <bb 6>; [81.25%]
  else
    goto <bb 12>; [18.75%]

  <bb 6> [local count: 418214052]:
  # DEBUG BEGIN_STMT
  entries_47 = spd_45 + 12;
  # DEBUG entries => entries_47
  # DEBUG BEGIN_STMT
  _16 = entry_count_43 >> 24;
  _17 = entry_count_43 >> 8;
  _18 = _17 & 65280;
  _19 = _16 | _18;
  _20 = entry_count_43 << 8;
  _21 = _20 & 16711680;
  _22 = _19 | _21;
  _23 = entry_count_43 << 24;
  _24 = _22 | _23;
  spd_45->entry_count = _24;
  # DEBUG BEGIN_STMT
  _25 = _15->no_ip_action;
  spd_45->no_ip_action = _25;
  # DEBUG BEGIN_STMT
  _26 = _15->entries;
  spd_45->entries = _26;
  # DEBUG BEGIN_STMT
  _27 = (long unsigned int) position_51(D);
  if (_27 >= entry_count_43)
    goto <bb 7>; [50.00%]
  else
    goto <bb 8>; [50.00%]

  <bb 7> [local count: 209107026]:
  # DEBUG BEGIN_STMT
  memcpy (entries_47, old_entries_46, _13);
  goto <bb 9>; [100.00%]

  <bb 8> [local count: 209107026]:
  # DEBUG BEGIN_STMT
  _28 = _27 * 56;
  memcpy (entries_47, old_entries_46, _28);
  # DEBUG BEGIN_STMT
  _29 = entries_47 + _28;
  _30 = _27 + 1;
  _31 = _30 * 56;
  _32 = old_entries_46 + _31;
  _33 = entry_count_43 - _27;
  _34 = _33 * 56;
  memcpy (_29, _32, _34);

  <bb 9> [local count: 418214052]:
  # DEBUG BEGIN_STMT
  ret_56 = pfe_spd_update_phyif (phy_if_40(D), spd_45, _14);
  # DEBUG ret => ret_56
  # DEBUG BEGIN_STMT
  if (ret_56 == 0)
    goto <bb 10>; [50.00%]
  else
    goto <bb 11>; [50.00%]

  <bb 10> [local count: 209107026]:
  # DEBUG BEGIN_STMT
  _35 = pfe_spds[_1];
  oal_mm_free (_35);
  # DEBUG BEGIN_STMT
  pfe_spds[_1] = spd_45;
  goto <bb 12>; [100.00%]

  <bb 11> [local count: 209107026]:
  # DEBUG BEGIN_STMT
  oal_mm_free (spd_45);

  <bb 12> [local count: 1073741824]:
  # ret_36 = PHI <22(2), 0(4), ret_56(11), 11(5), 0(10)>
  # DEBUG ret => ret_36
  # DEBUG BEGIN_STMT
  return ret_36;

}



;; Function pfe_spd_get_rule (pfe_spd_get_rule, funcdef_no=22, decl_uid=9518, cgraph_uid=23, symbol_order=26)

pfe_spd_get_rule (const struct pfe_phy_if_t * phy_if, uint16_t position, struct pfe_ct_spd_entry_t * entry)
{
  pfe_ct_phy_if_id_t phy_if_id;
  uint32_t entry_count;
  errno_t ret;
  int _1;
  struct pfe_ct_ipsec_spd_t * _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;
  unsigned int _13;
  struct pfe_ct_spd_entry_t * _14;
  sizetype _24;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  phy_if_id_19 = pfe_phy_if_get_id (phy_if_18(D));
  # DEBUG phy_if_id => phy_if_id_19
  # DEBUG BEGIN_STMT
  _1 = (int) phy_if_id_19;
  _2 = pfe_spds[_1];
  if (_2 == 0B)
    goto <bb 5>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  _3 = _2->entry_count;
  _4 = _3 >> 24;
  _5 = _3 >> 8;
  _6 = _5 & 65280;
  _7 = _4 | _6;
  _8 = _3 << 8;
  _9 = _8 & 16711680;
  _10 = _7 | _9;
  _11 = _3 << 24;
  entry_count_20 = _10 | _11;
  # DEBUG entry_count => entry_count_20
  # DEBUG BEGIN_STMT
  _12 = (long unsigned int) position_21(D);
  if (_12 >= entry_count_20)
    goto <bb 5>; [52.23%]
  else
    goto <bb 4>; [47.77%]

  <bb 4> [local count: 416752756]:
  # DEBUG BEGIN_STMT
  # DEBUG entries => _2 + 12
  # DEBUG BEGIN_STMT
  _13 = _12 * 56;
  _24 = _13 + 12;
  _14 = _2 + _24;
  memcpy (entry_22(D), _14, 56);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


