fci_fp_match_table_by_criterion.isra.0 (fci_fp_table_criterion_t crit, const uint32_t * ISRA.11, const struct fci_fp_table_t * fp_table)
{
  bool_t match;
  char_t * _3;
  char_t * _5;
  int _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _11;
  char_t * _12;

  <bb 2> [local count: 1073741824]:
  # DEBUG arg s=> arg
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  switch (crit_1(D)) <default: <L2> [25.00%], case 0: <L3> [25.00%], case 1: <L0> [25.00%], case 2: <L1> [25.00%]>

  <bb 3> [local count: 268435456]:
<L0>:
  # DEBUG BEGIN_STMT
  _11 = *ISRA.11_13(D);
  _12 = (char_t *) _11;
  _3 = _12;
  _5 = fp_table_4(D)->name;
  _6 = strcmp (_3, _5);
  if (_6 == 0)
    goto <bb 8>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 4> [local count: 134217728]:
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  goto <bb 8>; [100.00%]

  <bb 5> [local count: 268435456]:
<L1>:
  # DEBUG BEGIN_STMT
  _7 = *ISRA.11_13(D);
  _8 = fp_table_4(D)->dmem_addr;
  if (_7 == _8)
    goto <bb 8>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 6> [local count: 177167401]:
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  goto <bb 8>; [100.00%]

  <bb 7> [local count: 268435456]:
<L2>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG match => 0

  <bb 8> [local count: 1073741824]:
  # match_9 = PHI <1(2), 1(3), 0(4), 1(5), 0(6), 0(7)>
<L3>:
  # DEBUG match => match_9
  # DEBUG BEGIN_STMT
  return match_9;

}


fci_fp_match_rule_by_criterion.isra.0.part.0 (char_t * const * ISRA.6, char_t * const * ISRA.7)
{
  bool_t match;
  const union fci_fp_rule_criterion_arg_t * arg;
  const struct fci_fp_rule_t * rule;
  fci_fp_rule_criterion_t crit;
  char_t * _2;
  char_t * _4;
  int _5;

  <bb 5> [local count: 1073741824]:
  # DEBUG D#4 s=> crit
  # DEBUG crit => D#4

  <bb 2> [local count: 1073741824]:
<L0>:
  # DEBUG BEGIN_STMT
  _2 = *ISRA.6_1(D);
  _4 = *ISRA.7_3(D);
  _5 = strcmp (_2, _4);
  if (_5 == 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 3>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  # DEBUG match => 0

  <bb 4> [local count: 1073741824]:
  # match_6 = PHI <1(2), 0(3)>
<L1>:
  # DEBUG match => match_6
  # DEBUG BEGIN_STMT
  return match_6;

}


fci_fp_match_rule_by_criterion.isra.0 (fci_fp_rule_criterion_t crit, char_t * const * ISRA.6, char_t * const * ISRA.7)
{
  bool_t match;

  <bb 2> [local count: 1073741824]:
  # DEBUG arg s=> arg
  # DEBUG rule s=> rule
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  switch (crit_1(D)) <default: <L1> [33.33%], case 0: <L2> [33.33%], case 1: <L0> [33.33%]>

  <bb 3> [local count: 357913944]:
<L0>:
  # DEBUG D#3 => crit_1(D)
  match_8 = fci_fp_match_rule_by_criterion.isra.0.part.0 (ISRA.6_6(D), ISRA.7_7(D));
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 357878150]:
<L1>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT

  <bb 5> [local count: 1073634451]:
  # match_4 = PHI <1(2), 0(4), match_8(3)>
<L2>:
  # DEBUG match => match_4
  # DEBUG BEGIN_STMT
  return match_4;

}


fci_fp_db_get_table_next_rule (char_t * table_name, struct fci_fp_rule_info_t * rule_info, char_t * * next_rule)
{
  errno_t ret;
  struct fci_fp_rule_t * rule;
  struct fci_fp_table_t * fp_table;
  struct fci_fp_rule_db_t * _1;
  char_t * _2;
  long unsigned int _3;
  long unsigned int _4;
  short unsigned int _5;
  <unnamed type> _6;
  char_t * _7;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fp_table_13 = fci_fp_table_get_first (&fci_fp_table_db, 1, table_name_11(D));
  # DEBUG fp_table => fp_table_13
  # DEBUG BEGIN_STMT
  if (fp_table_13 == 0B)
    goto <bb 5>; [31.91%]
  else
    goto <bb 3>; [68.09%]

  <bb 3> [local count: 731110809]:
  # DEBUG BEGIN_STMT
  _1 = &fp_table_13->rules_db;
  rule_15 = fci_fp_rule_get_next (_1, 1);
  # DEBUG rule => rule_15
  # DEBUG BEGIN_STMT
  if (rule_15 == 0B)
    goto <bb 5>; [18.75%]
  else
    goto <bb 4>; [81.25%]

  <bb 4> [local count: 594027532]:
  # DEBUG BEGIN_STMT
  _2 = rule_15->name;
  rule_info_16(D)->rule_name = _2;
  # DEBUG BEGIN_STMT
  _3 = rule_15->data;
  rule_info_16(D)->data = _3;
  # DEBUG BEGIN_STMT
  _4 = rule_15->mask;
  rule_info_16(D)->mask = _4;
  # DEBUG BEGIN_STMT
  _5 = rule_15->offset;
  rule_info_16(D)->offset = _5;
  # DEBUG BEGIN_STMT
  _6 = rule_15->flags;
  rule_info_16(D)->flags = _6;
  # DEBUG BEGIN_STMT
  _7 = rule_15->next_rule;
  *next_rule_22(D) = _7;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_get_table_first_rule (char_t * table_name, struct fci_fp_rule_info_t * rule_info, char_t * * next_rule)
{
  errno_t ret;
  struct fci_fp_rule_t * rule;
  struct fci_fp_table_t * fp_table;
  struct fci_fp_rule_db_t * _1;
  char_t * _2;
  long unsigned int _3;
  long unsigned int _4;
  short unsigned int _5;
  <unnamed type> _6;
  char_t * _7;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fp_table_13 = fci_fp_table_get_first (&fci_fp_table_db, 1, table_name_11(D));
  # DEBUG fp_table => fp_table_13
  # DEBUG BEGIN_STMT
  if (fp_table_13 == 0B)
    goto <bb 5>; [31.91%]
  else
    goto <bb 3>; [68.09%]

  <bb 3> [local count: 731110809]:
  # DEBUG BEGIN_STMT
  _1 = &fp_table_13->rules_db;
  rule_15 = fci_fp_rule_get_first (_1, 0, 0B, 1);
  # DEBUG rule => rule_15
  # DEBUG BEGIN_STMT
  if (rule_15 == 0B)
    goto <bb 5>; [18.75%]
  else
    goto <bb 4>; [81.25%]

  <bb 4> [local count: 594027532]:
  # DEBUG BEGIN_STMT
  _2 = rule_15->name;
  rule_info_16(D)->rule_name = _2;
  # DEBUG BEGIN_STMT
  _3 = rule_15->data;
  rule_info_16(D)->data = _3;
  # DEBUG BEGIN_STMT
  _4 = rule_15->mask;
  rule_info_16(D)->mask = _4;
  # DEBUG BEGIN_STMT
  _5 = rule_15->offset;
  rule_info_16(D)->offset = _5;
  # DEBUG BEGIN_STMT
  _6 = rule_15->flags;
  rule_info_16(D)->flags = _6;
  # DEBUG BEGIN_STMT
  _7 = rule_15->next_rule;
  *next_rule_22(D) = _7;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_get_next_rule (struct fci_fp_rule_info_t * rule_info, char_t * * next_rule)
{
  errno_t ret;
  struct fci_fp_rule_t * rule;
  char_t * _1;
  long unsigned int _2;
  long unsigned int _3;
  short unsigned int _4;
  <unnamed type> _5;
  char_t * _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_11 = fci_fp_rule_get_next (&fci_fp_rule_db, 0);
  # DEBUG rule => rule_11
  # DEBUG BEGIN_STMT
  if (rule_11 == 0B)
    goto <bb 4>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  _1 = rule_11->name;
  rule_info_12(D)->rule_name = _1;
  # DEBUG BEGIN_STMT
  _2 = rule_11->data;
  rule_info_12(D)->data = _2;
  # DEBUG BEGIN_STMT
  _3 = rule_11->mask;
  rule_info_12(D)->mask = _3;
  # DEBUG BEGIN_STMT
  _4 = rule_11->offset;
  rule_info_12(D)->offset = _4;
  # DEBUG BEGIN_STMT
  _5 = rule_11->flags;
  rule_info_12(D)->flags = _5;
  # DEBUG BEGIN_STMT
  _6 = rule_11->next_rule;
  *next_rule_18(D) = _6;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_get_first_rule (struct fci_fp_rule_info_t * rule_info, char_t * * next_rule)
{
  errno_t ret;
  struct fci_fp_rule_t * rule;
  char_t * _1;
  long unsigned int _2;
  long unsigned int _3;
  short unsigned int _4;
  <unnamed type> _5;
  char_t * _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_11 = fci_fp_rule_get_first (&fci_fp_rule_db, 0, 0B, 0);
  # DEBUG rule => rule_11
  # DEBUG BEGIN_STMT
  if (rule_11 == 0B)
    goto <bb 4>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  _1 = rule_11->name;
  rule_info_12(D)->rule_name = _1;
  # DEBUG BEGIN_STMT
  _2 = rule_11->data;
  rule_info_12(D)->data = _2;
  # DEBUG BEGIN_STMT
  _3 = rule_11->mask;
  rule_info_12(D)->mask = _3;
  # DEBUG BEGIN_STMT
  _4 = rule_11->offset;
  rule_info_12(D)->offset = _4;
  # DEBUG BEGIN_STMT
  _5 = rule_11->flags;
  rule_info_12(D)->flags = _5;
  # DEBUG BEGIN_STMT
  _6 = rule_11->next_rule;
  *next_rule_18(D) = _6;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_get_first (fci_fp_table_criterion_t crit, void * arg)
{
  struct fci_fp_table_t * _5;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _5 = fci_fp_table_get_first (&fci_fp_table_db, crit_2(D), arg_3(D));
  return _5;

}


fci_fp_db_get_table_from_addr (uint32_t addr, char_t * * table_name)
{
  errno_t ret;
  const struct fci_fp_table_t * fp_table;
  long unsigned int addr.3_1;
  char_t * _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  addr.3_1 = addr;
  if (addr.3_1 == 0)
    goto <bb 5>; [52.23%]
  else
    goto <bb 3>; [47.77%]

  <bb 3> [local count: 512926469]:
  # DEBUG BEGIN_STMT
  fp_table_7 = fci_fp_table_get_first (&fci_fp_table_db, 2, &addr);
  # DEBUG fp_table => fp_table_7
  # DEBUG BEGIN_STMT
  if (fp_table_7 == 0B)
    goto <bb 5>; [18.75%]
  else
    goto <bb 4>; [81.25%]

  <bb 4> [local count: 416752756]:
  # DEBUG BEGIN_STMT
  _2 = fp_table_7->name;
  *table_name_8(D) = _2;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_pop_table_from_hw (char_t * table_name)
{
  errno_t ret;
  struct fci_fp_table_t * fp_table;
  struct pfe_class_t * _1;
  long unsigned int _2;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fp_table_8 = fci_fp_table_get_first (&fci_fp_table_db, 1, table_name_6(D));
  # DEBUG fp_table => fp_table_8
  # DEBUG BEGIN_STMT
  if (fp_table_8 == 0B)
    goto <bb 4>; [31.91%]
  else
    goto <bb 3>; [68.09%]

  <bb 3> [local count: 731110809]:
  # DEBUG BEGIN_STMT
  _1 = fp_table_8->class;
  _2 = fp_table_8->dmem_addr;
  pfe_fp_destroy_table (_1, _2);
  # DEBUG BEGIN_STMT
  fp_table_8->dmem_addr = 0;
  # DEBUG BEGIN_STMT
  fp_table_8->class = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_push_table_to_hw (struct pfe_class_t * class, char_t * table_name)
{
  errno_t ret;
  uint8_t pos;
  uint16_t i;
  struct fci_fp_rule_t * rule;
  struct LLIST_t * item;
  struct pfe_ct_fp_rule_t rule_buf;
  struct fci_fp_rule_t * next_rule;
  struct fci_fp_table_t * fp_table;
  short unsigned int _1;
  long unsigned int _2;
  int _3;
  long unsigned int _4;
  long unsigned int _5;
  short unsigned int _6;
  <unnamed type> _7;
  char_t * _8;
  struct fci_fp_rule_db_t * _9;
  long unsigned int _10;
  int _11;
  long unsigned int _12;
  unsigned char pos.0_13;
  long unsigned int _14;
  struct LLIST_t * _15;

  <bb 2> [local count: 178601069]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG i => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  fp_table_25 = fci_fp_table_get_first (&fci_fp_table_db, 1, table_name_23(D));
  # DEBUG fp_table => fp_table_25
  # DEBUG BEGIN_STMT
  if (fp_table_25 == 0B)
    goto <bb 14>; [31.91%]
  else
    goto <bb 3>; [68.09%]

  <bb 3> [local count: 121609468]:
  # DEBUG BEGIN_STMT
  _1 = fp_table_25->rule_count;
  _2 = pfe_fp_create_table (class_26(D), _1);
  fp_table_25->dmem_addr = _2;
  # DEBUG BEGIN_STMT
  fp_table_25->class = class_26(D);
  # DEBUG BEGIN_STMT
  if (_2 == 0)
    goto <bb 14>; [35.00%]
  else
    goto <bb 4>; [65.00%]

  <bb 4> [local count: 79046154]:
  # DEBUG BEGIN_STMT
  item_30 = fp_table_25->rules_db.rules.prNext;
  # DEBUG item => item_30
  goto <bb 13>; [100.00%]

  <bb 5> [local count: 1034442874]:
  # DEBUG BEGIN_STMT
  _3 = item_16 - 12B;
  rule_31 = (struct fci_fp_rule_t *) _3;
  # DEBUG rule => rule_31
  # DEBUG BEGIN_STMT
  _4 = rule_31->data;
  rule_buf.data = _4;
  # DEBUG BEGIN_STMT
  _5 = rule_31->mask;
  rule_buf.mask = _5;
  # DEBUG BEGIN_STMT
  _6 = rule_31->offset;
  rule_buf.offset = _6;
  # DEBUG BEGIN_STMT
  _7 = rule_31->flags;
  rule_buf.flags = _7;
  # DEBUG BEGIN_STMT
  _8 = rule_31->next_rule;
  if (_8 != 0B)
    goto <bb 6>; [53.47%]
  else
    goto <bb 11>; [46.53%]

  <bb 6> [local count: 553116605]:
  # DEBUG BEGIN_STMT
  _9 = &fp_table_25->rules_db;
  next_rule_38 = fci_fp_rule_get_first (_9, 1, _8, 1);
  # DEBUG next_rule => next_rule_38
  # DEBUG BEGIN_STMT
  if (next_rule_38 == 0B)
    goto <bb 7>; [3.66%]
  else
    goto <bb 8>; [96.34%]

  <bb 7> [local count: 20244068]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _10 = fp_table_25->dmem_addr;
  pfe_fp_destroy_table (class_26(D), _10);
  # DEBUG BEGIN_STMT
  fp_table_25->dmem_addr = 0;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 2
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 8> [local count: 532872537]:
  # DEBUG BEGIN_STMT
  _11 = fci_fp_get_rule_pos_in_table (fp_table_25, next_rule_38, &pos);
  if (_11 != 0)
    goto <bb 9>; [3.66%]
  else
    goto <bb 10>; [96.34%]

  <bb 9> [local count: 19503135]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _12 = fp_table_25->dmem_addr;
  pfe_fp_destroy_table (class_26(D), _12);
  # DEBUG BEGIN_STMT
  fp_table_25->dmem_addr = 0;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 2
  # DEBUG BEGIN_STMT
  goto <bb 14>; [100.00%]

  <bb 10> [local count: 513369402]:
  # DEBUG BEGIN_STMT
  pos.0_13 = pos;
  rule_buf.next_idx = pos.0_13;
  goto <bb 12>; [100.00%]

  <bb 11> [local count: 481326269]:
  # DEBUG BEGIN_STMT
  rule_buf.next_idx = 255;

  <bb 12> [local count: 994695672]:
  # DEBUG BEGIN_STMT
  _14 = fp_table_25->dmem_addr;
  pfe_fp_table_write_rule (class_26(D), _14, &rule_buf, i_17);
  # DEBUG BEGIN_STMT
  i_46 = i_17 + 1;
  # DEBUG i => i_46
  # DEBUG BEGIN_STMT
  item_47 = item_16->prNext;
  # DEBUG item => item_47

  <bb 13> [local count: 1073741824]:
  # item_16 = PHI <item_30(4), item_47(12)>
  # i_17 = PHI <0(4), i_46(12)>
  # DEBUG i => i_17
  # DEBUG item => item_16
  # DEBUG BEGIN_STMT
  _15 = &fp_table_25->rules_db.rules;
  if (_15 != item_16)
    goto <bb 5>; [96.34%]
  else
    goto <bb 14>; [3.66%]

  <bb 14> [local count: 178601068]:
  # ret_18 = PHI <2(2), 117(3), 2(7), 2(9), 0(13)>
  # DEBUG ret => ret_18
  # DEBUG BEGIN_STMT
  rule_buf ={v} {CLOBBER};
  pos ={v} {CLOBBER};
  return ret_18;

}


fci_fp_db_get_table_dmem_addr (char_t * table_name)
{
  uint32_t retval;
  const struct fci_fp_table_t * fp_table;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fp_table_5 = fci_fp_table_get_first (&fci_fp_table_db, 1, table_name_3(D));
  # DEBUG fp_table => fp_table_5
  # DEBUG BEGIN_STMT
  if (fp_table_5 == 0B)
    goto <bb 4>; [30.00%]
  else
    goto <bb 3>; [70.00%]

  <bb 3> [local count: 751619278]:
  # DEBUG BEGIN_STMT
  retval_6 = fp_table_5->dmem_addr;
  # DEBUG retval => retval_6

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

}


fci_fp_db_remove_rule_from_table (char_t * rule_name)
{
  errno_t ret;
  struct fci_fp_rule_t * rule;
  struct fci_fp_table_t * _1;
  struct LLIST_Struct * _2;
  struct LLIST_Struct * _3;
  struct LLIST_Struct * _4;
  short unsigned int _5;
  short unsigned int _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_12 = fci_fp_rule_get_first (&fci_fp_rule_db, 1, rule_name_10(D), 0);
  # DEBUG rule => rule_12
  # DEBUG BEGIN_STMT
  if (rule_12 == 0B)
    goto <bb 6>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  _1 = rule_12->table;
  if (_1 != 0B)
    goto <bb 4>; [70.00%]
  else
    goto <bb 6>; [30.00%]

  <bb 4> [local count: 610690663]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _2 = rule_12->table_entry.prPrev;
  _3 = rule_12->table_entry.prNext;
  _2->prNext = _3;
  # DEBUG BEGIN_STMT
  _4 = rule_12->table_entry.prNext;
  _4->prPrev = _2;
  # DEBUG BEGIN_STMT
  rule_12->table_entry.prPrev = 0B;
  # DEBUG BEGIN_STMT
  rule_12->table_entry.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = _1->rule_count;
  _6 = _5 + 65535;
  _1->rule_count = _6;
  # DEBUG BEGIN_STMT
  rule_12->table = 0B;

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

}


fci_fp_db_add_rule_to_table (char_t * table_name, char_t * rule_name, uint16_t position)
{
  errno_t ret;
  uint32_t i;
  struct LLIST_t * item;
  struct fci_fp_rule_t * rule;
  struct fci_fp_table_t * fp_table;
  struct fci_fp_table_t * _1;
  struct LLIST_Struct * _2;
  struct LLIST_t * _3;
  struct LLIST_t * _4;
  struct LLIST_t * _5;
  short unsigned int _6;
  short unsigned int _7;
  struct LLIST_Struct * _8;
  struct LLIST_t * _9;
  short unsigned int _10;
  short unsigned int _11;
  long unsigned int _12;
  struct LLIST_Struct * _13;
  struct LLIST_t * _14;
  short unsigned int _15;
  short unsigned int _16;
  struct LLIST_Struct * _17;
  struct LLIST_t * _18;
  short unsigned int _19;
  short unsigned int _20;

  <bb 2> [local count: 1073741823]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG i => 0
  # DEBUG BEGIN_STMT
  # DEBUG ret => 22
  # DEBUG BEGIN_STMT
  rule_28 = fci_fp_rule_get_first (&fci_fp_rule_db, 1, rule_name_26(D), 0);
  # DEBUG rule => rule_28
  # DEBUG BEGIN_STMT
  if (rule_28 == 0B)
    goto <bb 16>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415231]:
  # DEBUG BEGIN_STMT
  _1 = rule_28->table;
  if (_1 != 0B)
    goto <bb 16>; [71.84%]
  else
    goto <bb 4>; [28.16%]

  <bb 4> [local count: 245672129]:
  # DEBUG BEGIN_STMT
  fp_table_31 = fci_fp_table_get_first (&fci_fp_table_db, 1, table_name_29(D));
  # DEBUG fp_table => fp_table_31
  # DEBUG BEGIN_STMT
  if (fp_table_31 == 0B)
    goto <bb 16>; [18.75%]
  else
    goto <bb 5>; [81.25%]

  <bb 5> [local count: 199608605]:
  # DEBUG BEGIN_STMT
  _2 = fp_table_31->rules_db.rules.prNext;
  _3 = &fp_table_31->rules_db.rules;
  if (_2 == _3)
    goto <bb 6>; [30.00%]
  else
    goto <bb 7>; [70.00%]

  <bb 6> [local count: 59882581]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_28->table_entry.prNext = _2;
  # DEBUG BEGIN_STMT
  rule_28->table_entry.prPrev = _3;
  # DEBUG BEGIN_STMT
  _4 = &rule_28->table_entry;
  _2->prPrev = _4;
  # DEBUG BEGIN_STMT
  fp_table_31->rules_db.rules.prNext = _4;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_28->table = fp_table_31;
  # DEBUG BEGIN_STMT
  fp_table_31->rule_count = 1;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  goto <bb 16>; [100.00%]

  <bb 7> [local count: 139726023]:
  # DEBUG BEGIN_STMT
  if (position_32(D) == 0)
    goto <bb 8>; [50.00%]
  else
    goto <bb 9>; [50.00%]

  <bb 8> [local count: 69863012]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_28->table_entry.prNext = _2;
  # DEBUG BEGIN_STMT
  rule_28->table_entry.prPrev = _3;
  # DEBUG BEGIN_STMT
  _5 = &rule_28->table_entry;
  _2->prPrev = _5;
  # DEBUG BEGIN_STMT
  fp_table_31->rules_db.rules.prNext = _5;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_28->table = fp_table_31;
  # DEBUG BEGIN_STMT
  _6 = fp_table_31->rule_count;
  _7 = _6 + 1;
  fp_table_31->rule_count = _7;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  goto <bb 16>; [100.00%]

  <bb 9> [local count: 69863012]:
  # DEBUG BEGIN_STMT
  if (position_32(D) > 255)
    goto <bb 10>; [50.00%]
  else
    goto <bb 17>; [50.00%]

  <bb 17> [local count: 34931506]:
  goto <bb 14>; [100.00%]

  <bb 10> [local count: 34931506]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _8 = fp_table_31->rules_db.rules.prPrev;
  rule_28->table_entry.prPrev = _8;
  # DEBUG BEGIN_STMT
  rule_28->table_entry.prNext = _3;
  # DEBUG BEGIN_STMT
  _9 = &rule_28->table_entry;
  _8->prNext = _9;
  # DEBUG BEGIN_STMT
  fp_table_31->rules_db.rules.prPrev = _9;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_28->table = fp_table_31;
  # DEBUG BEGIN_STMT
  _10 = fp_table_31->rule_count;
  _11 = _10 + 1;
  fp_table_31->rule_count = _11;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  goto <bb 16>; [100.00%]

  <bb 11> [local count: 308579322]:
  # DEBUG BEGIN_STMT
  _12 = (long unsigned int) position_32(D);
  if (_12 == i_22)
    goto <bb 12>; [5.50%]
  else
    goto <bb 13>; [94.50%]

  <bb 12> [local count: 16971863]:
  # item_33 = PHI <item_21(11)>
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _13 = item_33->prPrev;
  rule_28->table_entry.prPrev = _13;
  # DEBUG BEGIN_STMT
  _14 = &rule_28->table_entry;
  _13->prNext = _14;
  # DEBUG BEGIN_STMT
  item_33->prPrev = _14;
  # DEBUG BEGIN_STMT
  rule_28->table_entry.prNext = item_33;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_28->table = fp_table_31;
  # DEBUG BEGIN_STMT
  _15 = fp_table_31->rule_count;
  _16 = _15 + 1;
  fp_table_31->rule_count = _16;
  # DEBUG BEGIN_STMT
  # DEBUG added => 1
  # DEBUG BEGIN_STMT
  # DEBUG added => 1
  # DEBUG BEGIN_STMT
  goto <bb 16>; [100.00%]

  <bb 13> [local count: 291607459]:
  # DEBUG BEGIN_STMT
  i_34 = i_22 + 1;
  # DEBUG i => i_34
  # DEBUG BEGIN_STMT
  item_35 = item_21->prNext;
  # DEBUG item => item_35

  <bb 14> [local count: 326538965]:
  # item_21 = PHI <item_35(13), _2(17)>
  # i_22 = PHI <i_34(13), 0(17)>
  # DEBUG added => NULL
  # DEBUG i => i_22
  # DEBUG item => item_21
  # DEBUG BEGIN_STMT
  if (_3 != item_21)
    goto <bb 11>; [94.50%]
  else
    goto <bb 15>; [5.50%]

  <bb 15> [local count: 17959643]:
  # DEBUG added => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _17 = fp_table_31->rules_db.rules.prPrev;
  rule_28->table_entry.prPrev = _17;
  # DEBUG BEGIN_STMT
  rule_28->table_entry.prNext = _3;
  # DEBUG BEGIN_STMT
  _18 = &rule_28->table_entry;
  _17->prNext = _18;
  # DEBUG BEGIN_STMT
  fp_table_31->rules_db.rules.prPrev = _18;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_28->table = fp_table_31;
  # DEBUG BEGIN_STMT
  _19 = fp_table_31->rule_count;
  _20 = _19 + 1;
  fp_table_31->rule_count = _20;

  <bb 16> [local count: 1073741824]:
  # ret_23 = PHI <2(2), 13(3), 2(4), 0(6), 0(8), 0(10), 0(15), 0(12)>
  # DEBUG ret => ret_23
  # DEBUG BEGIN_STMT
  return ret_23;

}


fci_fp_db_destroy_table (char_t * name, bool_t force)
{
  errno_t ret;
  struct LLIST_t * aux;
  struct LLIST_t * item;
  struct fci_fp_rule_t * rule;
  struct fci_fp_table_t * fp_table;
  long unsigned int _1;
  struct LLIST_Struct * _2;
  struct LLIST_t * _3;
  int _4;
  struct LLIST_Struct * _5;
  struct LLIST_Struct * _6;
  struct LLIST_Struct * _7;
  short unsigned int _8;
  short unsigned int _9;
  struct LLIST_Struct * _10;
  struct LLIST_Struct * _11;
  struct LLIST_Struct * _12;

  <bb 2> [local count: 251719693]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  fp_table_22 = fci_fp_table_get_first (&fci_fp_table_db, 1, name_20(D));
  # DEBUG fp_table => fp_table_22
  # DEBUG BEGIN_STMT
  if (fp_table_22 == 0B)
    goto <bb 13>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 204522251]:
  # DEBUG BEGIN_STMT
  _1 = fp_table_22->dmem_addr;
  if (_1 != 0)
    goto <bb 5>; [50.00%]
  else
    goto <bb 8>; [50.00%]

  <bb 5> [local count: 102261125]:
  # DEBUG BEGIN_STMT
  if (force_23(D) == 0)
    goto <bb 13>; [35.00%]
  else
    goto <bb 6>; [65.00%]

  <bb 6> [local count: 66469732]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fp_table_22->dmem_addr = 0;
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT

  <bb 8> [local count: 168730857]:
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  _2 = fp_table_22->rules_db.rules.prNext;
  _3 = &fp_table_22->rules_db.rules;
  if (_2 != _3)
    goto <bb 9>; [70.00%]
  else
    goto <bb 12>; [30.00%]

  <bb 9> [local count: 118111600]:
  # DEBUG BEGIN_STMT
  # DEBUG item => _2
  aux_25 = MEM[(struct LLIST_t *)_2].prNext;
  # DEBUG aux => aux_25
  goto <bb 11>; [100.00%]

  <bb 10> [local count: 955630223]:
  # DEBUG BEGIN_STMT
  _4 = item_13 - 12B;
  rule_26 = (struct fci_fp_rule_t *) _4;
  # DEBUG rule => rule_26
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = item_13->prPrev;
  _6 = item_13->prNext;
  _5->prNext = _6;
  # DEBUG BEGIN_STMT
  _7 = item_13->prNext;
  _7->prPrev = _5;
  # DEBUG BEGIN_STMT
  item_13->prPrev = 0B;
  # DEBUG BEGIN_STMT
  item_13->prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _8 = fp_table_22->rule_count;
  _9 = _8 + 65535;
  fp_table_22->rule_count = _9;
  # DEBUG BEGIN_STMT
  rule_26->table = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG item => aux_14
  aux_33 = aux_14->prNext;
  # DEBUG aux => aux_33

  <bb 11> [local count: 1073741824]:
  # item_13 = PHI <_2(9), aux_14(10)>
  # aux_14 = PHI <aux_25(9), aux_33(10)>
  # DEBUG aux => aux_14
  # DEBUG item => item_13
  # DEBUG BEGIN_STMT
  if (_3 != item_13)
    goto <bb 10>; [89.00%]
  else
    goto <bb 12>; [11.00%]

  <bb 12> [local count: 168730858]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _10 = fp_table_22->db_entry.prPrev;
  _11 = fp_table_22->db_entry.prNext;
  _10->prNext = _11;
  # DEBUG BEGIN_STMT
  _12 = fp_table_22->db_entry.prNext;
  _12->prPrev = _10;
  # DEBUG BEGIN_STMT
  fp_table_22->db_entry.prPrev = 0B;
  # DEBUG BEGIN_STMT
  fp_table_22->db_entry.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  oal_mm_free (fp_table_22);

  <bb 13> [local count: 251719694]:
  # ret_15 = PHI <2(2), 13(5), 0(12)>
  # DEBUG ret => ret_15
  # DEBUG BEGIN_STMT
  return ret_15;

}


fci_fp_db_create_table (char_t * name)
{
  errno_t ret;
  struct fci_fp_table_t * fp_table;
  uint32_t mem_size;
  struct fci_fp_table_t * _1;
  unsigned int _2;
  struct LLIST_t * _3;
  struct LLIST_t * _4;
  struct fci_fp_table_t * _5;
  struct LLIST_Struct * _6;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = fci_fp_table_get_first (&fci_fp_table_db, 1, name_10(D));
  if (_1 != 0B)
    goto <bb 5>; [71.84%]
  else
    goto <bb 3>; [28.16%]

  <bb 3> [local count: 302365698]:
  # DEBUG BEGIN_STMT
  _2 = strlen (name_10(D));
  mem_size_12 = _2 + 45;
  # DEBUG mem_size => mem_size_12
  # DEBUG BEGIN_STMT
  fp_table_14 = oal_mm_malloc (mem_size_12);
  # DEBUG fp_table => fp_table_14
  # DEBUG BEGIN_STMT
  if (fp_table_14 == 0B)
    goto <bb 5>; [31.91%]
  else
    goto <bb 4>; [68.09%]

  <bb 4> [local count: 205880803]:
  # DEBUG BEGIN_STMT
  memset (fp_table_14, 0, mem_size_12);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = &fp_table_14->db_entry;
  fp_table_14->db_entry.prNext = _3;
  # DEBUG BEGIN_STMT
  fp_table_14->db_entry.prPrev = _3;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _4 = &fp_table_14->rules_db.rules;
  fp_table_14->rules_db.rules.prNext = _4;
  # DEBUG BEGIN_STMT
  fp_table_14->rules_db.rules.prPrev = _4;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = fp_table_14 + 44;
  fp_table_14->name = _5;
  # DEBUG BEGIN_STMT
  strcpy (_5, name_10(D));
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _6 = fci_fp_table_db.tables.prPrev;
  fp_table_14->db_entry.prPrev = _6;
  # DEBUG BEGIN_STMT
  fp_table_14->db_entry.prNext = &fci_fp_table_db.tables;
  # DEBUG BEGIN_STMT
  _6->prNext = _3;
  # DEBUG BEGIN_STMT
  fci_fp_table_db.tables.prPrev = _3;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_destroy_rule (char_t * name)
{
  errno_t ret;
  struct fci_fp_rule_t * rule;
  struct fci_fp_table_t * _1;
  struct LLIST_Struct * _2;
  struct LLIST_Struct * _3;
  struct LLIST_Struct * _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG rule => 0B
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  rule_10 = fci_fp_rule_get_first (&fci_fp_rule_db, 1, name_8(D), 0);
  # DEBUG rule => rule_10
  # DEBUG BEGIN_STMT
  if (rule_10 == 0B)
    goto <bb 5>; [18.75%]
  else
    goto <bb 3>; [81.25%]

  <bb 3> [local count: 872415233]:
  # DEBUG BEGIN_STMT
  _1 = rule_10->table;
  if (_1 != 0B)
    goto <bb 5>; [71.84%]
  else
    goto <bb 4>; [28.16%]

  <bb 4> [local count: 245672129]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _2 = rule_10->db_entry.prPrev;
  _3 = rule_10->db_entry.prNext;
  _2->prNext = _3;
  # DEBUG BEGIN_STMT
  _4 = rule_10->db_entry.prNext;
  _4->prPrev = _2;
  # DEBUG BEGIN_STMT
  rule_10->db_entry.prPrev = 0B;
  # DEBUG BEGIN_STMT
  rule_10->db_entry.prNext = 0B;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  oal_mm_free (rule_10);
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

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

}


fci_fp_db_create_rule (char_t * name, uint32_t data, uint32_t mask, uint16_t offset, pfe_ct_fp_flags_t flags, char_t * next_rule)
{
  errno_t ret;
  bool_t ignore_next_rule;
  struct fci_fp_rule_t * rule;
  uint32_t mem_size;
  struct fci_fp_rule_t * _1;
  unsigned int _2;
  unsigned int _3;
  long unsigned int _4;
  struct LLIST_t * _5;
  struct LLIST_t * _6;
  struct fci_fp_rule_t * _7;
  unsigned int _8;
  sizetype _9;
  char_t * _10;
  struct LLIST_Struct * _11;
  <unnamed type> _17;

  <bb 2> [local count: 1073741823]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG rule => 0B
  # DEBUG BEGIN_STMT
  # DEBUG ignore_next_rule => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _17 = flags_18(D) & 6;
  if (_17 == 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870911]:
  if (next_rule_19(D) == 0B)
    goto <bb 18>; [18.75%]
  else
    goto <bb 4>; [81.25%]

  <bb 4> [local count: 973078527]:
  # DEBUG BEGIN_STMT
  if (_17 == 6)
    goto <bb 18>; [21.72%]
  else
    goto <bb 5>; [78.28%]

  <bb 5> [local count: 761725872]:
  # DEBUG BEGIN_STMT
  if (_17 != 0)
    goto <bb 6>; [50.00%]
  else
    goto <bb 8>; [50.00%]

  <bb 6> [local count: 380862936]:
  if (next_rule_19(D) != 0B)
    goto <bb 7>; [70.00%]
  else
    goto <bb 8>; [30.00%]

  <bb 7> [local count: 266604055]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ignore_next_rule => 1

  <bb 8> [local count: 761725873]:
  # ignore_next_rule_13 = PHI <0(5), 0(6), 1(7)>
  # DEBUG ignore_next_rule => ignore_next_rule_13
  # DEBUG BEGIN_STMT
  _1 = fci_fp_rule_get_first (&fci_fp_rule_db, 1, name_21(D), 0);
  if (_1 != 0B)
    goto <bb 18>; [55.68%]
  else
    goto <bb 9>; [44.32%]

  <bb 9> [local count: 337596907]:
  # DEBUG BEGIN_STMT
  _2 = strlen (name_21(D));
  mem_size_23 = _2 + 45;
  # DEBUG mem_size => mem_size_23
  # DEBUG BEGIN_STMT
  if (next_rule_19(D) != 0B)
    goto <bb 10>; [70.00%]
  else
    goto <bb 12>; [30.00%]

  <bb 10> [local count: 236317834]:
  if (ignore_next_rule_13 == 0)
    goto <bb 11>; [50.00%]
  else
    goto <bb 12>; [50.00%]

  <bb 11> [local count: 118158917]:
  # DEBUG BEGIN_STMT
  _3 = strlen (next_rule_19(D));
  _4 = _3 + mem_size_23;
  mem_size_24 = _4 + 1;
  # DEBUG mem_size => mem_size_24

  <bb 12> [local count: 337596907]:
  # mem_size_12 = PHI <mem_size_23(9), mem_size_23(10), mem_size_24(11)>
  # DEBUG mem_size => mem_size_12
  # DEBUG BEGIN_STMT
  rule_26 = oal_mm_malloc (mem_size_12);
  # DEBUG rule => rule_26
  # DEBUG BEGIN_STMT
  if (rule_26 == 0B)
    goto <bb 18>; [31.91%]
  else
    goto <bb 13>; [68.09%]

  <bb 13> [local count: 229869733]:
  # DEBUG BEGIN_STMT
  memset (rule_26, 0, mem_size_12);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _5 = &rule_26->db_entry;
  rule_26->db_entry.prNext = _5;
  # DEBUG BEGIN_STMT
  rule_26->db_entry.prPrev = _5;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _6 = &rule_26->table_entry;
  rule_26->table_entry.prNext = _6;
  # DEBUG BEGIN_STMT
  rule_26->table_entry.prPrev = _6;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _7 = rule_26 + 44;
  rule_26->name = _7;
  # DEBUG BEGIN_STMT
  strcpy (_7, name_21(D));
  # DEBUG BEGIN_STMT
  rule_26->data = data_34(D);
  # DEBUG BEGIN_STMT
  rule_26->mask = mask_36(D);
  # DEBUG BEGIN_STMT
  rule_26->offset = offset_38(D);
  # DEBUG BEGIN_STMT
  if (next_rule_19(D) != 0B)
    goto <bb 14>; [70.00%]
  else
    goto <bb 16>; [30.00%]

  <bb 14> [local count: 160908814]:
  if (ignore_next_rule_13 == 0)
    goto <bb 15>; [33.00%]
  else
    goto <bb 16>; [67.00%]

  <bb 15> [local count: 53099908]:
  # DEBUG BEGIN_STMT
  _8 = strlen (name_21(D));
  _9 = _8 + 1;
  _10 = _7 + _9;
  rule_26->next_rule = _10;
  # DEBUG BEGIN_STMT
  strcpy (_10, next_rule_19(D));
  goto <bb 17>; [100.00%]

  <bb 16> [local count: 176769825]:
  # DEBUG BEGIN_STMT
  rule_26->next_rule = 0B;

  <bb 17> [local count: 229869734]:
  # DEBUG BEGIN_STMT
  rule_26->flags = flags_18(D);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _11 = fci_fp_rule_db.rules.prPrev;
  rule_26->db_entry.prPrev = _11;
  # DEBUG BEGIN_STMT
  rule_26->db_entry.prNext = &fci_fp_rule_db.rules;
  # DEBUG BEGIN_STMT
  _11->prNext = _5;
  # DEBUG BEGIN_STMT
  fci_fp_rule_db.rules.prPrev = _5;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0

  <bb 18> [local count: 1073741824]:
  # ret_14 = PHI <22(3), 22(4), 116(8), 11(12), 0(17)>
  # DEBUG ret => ret_14
  # DEBUG BEGIN_STMT
  return ret_14;

}


fci_fp_db_init ()
{
  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  memset (&MEM[(void *)&fci_fp_rule_db + 8B], 0, 12);
  # DEBUG BEGIN_STMT
  memset (&MEM[(void *)&fci_fp_table_db + 8B], 0, 12);
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fci_fp_table_db.tables.prNext = &fci_fp_table_db.tables;
  # DEBUG BEGIN_STMT
  fci_fp_table_db.tables.prPrev = &fci_fp_table_db.tables;
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  fci_fp_rule_db.rules.prNext = &fci_fp_rule_db.rules;
  # DEBUG BEGIN_STMT
  fci_fp_rule_db.rules.prPrev = &fci_fp_rule_db.rules;
  # DEBUG BEGIN_STMT
  return;

}


fci_fp_get_rule_pos_in_table (const struct fci_fp_table_t * fp_table, struct fci_fp_rule_t * rule, uint8_t * pos)
{
  errno_t ret;
  struct LLIST_t * item;
  struct fci_fp_rule_t * rule_item;
  uint8_t i;
  int _1;
  const struct LLIST_t * _3;

  <bb 2> [local count: 114863532]:
  # DEBUG BEGIN_STMT
  # DEBUG i => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 2
  # DEBUG BEGIN_STMT
  item_10 = fp_table_9(D)->rules_db.rules.prNext;
  # DEBUG item => item_10
  goto <bb 6>; [100.00%]

  <bb 3> [local count: 1014686025]:
  # DEBUG BEGIN_STMT
  _1 = item_5 - 12B;
  rule_item_11 = (struct fci_fp_rule_t *) _1;
  # DEBUG rule_item => rule_item_11
  # DEBUG BEGIN_STMT
  if (rule_item_11 == rule_12(D))
    goto <bb 4>; [5.50%]
  else
    goto <bb 5>; [94.50%]

  <bb 4> [local count: 55807731]:
  # i_2 = PHI <i_4(3)>
  # DEBUG BEGIN_STMT
  *pos_15(D) = i_2;
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  goto <bb 7>; [100.00%]

  <bb 5> [local count: 958878293]:
  # DEBUG BEGIN_STMT
  i_13 = i_4 + 1;
  # DEBUG i => i_13
  # DEBUG BEGIN_STMT
  item_14 = item_5->prNext;
  # DEBUG item => item_14

  <bb 6> [local count: 1073741824]:
  # i_4 = PHI <0(2), i_13(5)>
  # item_5 = PHI <item_10(2), item_14(5)>
  # DEBUG item => item_5
  # DEBUG i => i_4
  # DEBUG BEGIN_STMT
  _3 = &fp_table_9(D)->rules_db.rules;
  if (_3 != item_5)
    goto <bb 3>; [94.50%]
  else
    goto <bb 7>; [5.50%]

  <bb 7> [local count: 114863532]:
  # ret_6 = PHI <0(4), 2(6)>
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  return ret_6;

}


fci_fp_rule_get_next (struct fci_fp_rule_db_t * db, dbase_t dbase)
{
  struct fci_fp_rule_t * rule;
  struct LLIST_Struct * _1;
  struct LLIST_t * _2;
  struct LLIST_t * _3;
  int _4;
  int _5;
  struct LLIST_Struct * _6;
  <unnamed type> _7;
  union fci_fp_rule_criterion_arg_t * _8;
  unsigned char _9;
  struct LLIST_t * _10;

  <bb 2> [local count: 135488924]:
  # DEBUG BEGIN_STMT
  # DEBUG rule => 0B
  # DEBUG BEGIN_STMT
  _1 = db_18(D)->rules.prNext;
  _2 = &db_18(D)->rules;
  if (_1 != _2)
    goto <bb 3>; [85.10%]
  else
    goto <bb 11>; [14.90%]

  <bb 3> [local count: 115301074]:
  # DEBUG BEGIN_STMT
  _3 = db_18(D)->cur_item;
  if (_2 == _3)
    goto <bb 11>; [14.90%]
  else
    goto <bb 12>; [85.10%]

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

  <bb 4> [local count: 1014686024]:
  # DEBUG BEGIN_STMT
  if (dbase_19(D) == 0)
    goto <bb 5>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 5> [local count: 507343012]:
  # DEBUG BEGIN_STMT
  _4 = _10 - 4B;
  rule_21 = (struct fci_fp_rule_t *) _4;
  # DEBUG rule => rule_21
  goto <bb 7>; [100.00%]

  <bb 6> [local count: 507343012]:
  # DEBUG BEGIN_STMT
  _5 = _10 - 12B;
  rule_20 = (struct fci_fp_rule_t *) _5;
  # DEBUG rule => rule_20

  <bb 7> [local count: 1014686024]:
  # rule_12 = PHI <rule_21(5), rule_20(6)>
  # DEBUG rule => rule_12
  # DEBUG BEGIN_STMT
  _6 = _10->prNext;
  db_18(D)->cur_item = _6;
  # DEBUG BEGIN_STMT
  if (rule_12 != 0B)
    goto <bb 8>; [70.00%]
  else
    goto <bb 9>; [30.00%]

  <bb 8> [local count: 710280217]:
  # DEBUG BEGIN_STMT
  _7 = db_18(D)->cur_crit;
  _8 = &db_18(D)->cur_crit_arg;
  # DEBUG D#1 => _8
  # DEBUG D#2 => rule_12
  _9 = fci_fp_match_rule_by_criterion.isra.0 (_7, _8, rule_12);
  if (_9 == 1)
    goto <bb 11>; [5.50%]
  else
    goto <bb 9>; [94.50%]

  <bb 9> [local count: 975620611]:
  # rule_11 = PHI <rule_12(7), rule_12(8)>

  <bb 10> [local count: 1073741824]:
  # rule_13 = PHI <rule_11(9), 0B(12)>
  # DEBUG rule => rule_13
  # DEBUG BEGIN_STMT
  _10 = db_18(D)->cur_item;
  if (_2 != _10)
    goto <bb 4>; [94.50%]
  else
    goto <bb 11>; [5.50%]

  <bb 11> [local count: 135488922]:
  # rule_14 = PHI <0B(2), 0B(3), rule_12(8), rule_13(10)>
  # DEBUG rule => rule_14
  # DEBUG BEGIN_STMT
  return rule_14;

}


fci_fp_rule_get_first (struct fci_fp_rule_db_t * db, fci_fp_rule_criterion_t crit, void * arg, dbase_t dbase)
{
  char_t * mem;
  bool_t match;
  struct fci_fp_rule_t * rule;
  struct LLIST_t * item;
  <unnamed type> _1;
  char_t * _2;
  unsigned int _3;
  unsigned int _4;
  struct LLIST_Struct * _5;
  struct LLIST_t * _6;
  int _7;
  int _8;
  struct LLIST_Struct * _9;
  <unnamed type> _10;
  union fci_fp_rule_criterion_arg_t * _11;
  unsigned char _12;

  <bb 2> [local count: 199066530]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG match => 0
  # DEBUG BEGIN_STMT
  # DEBUG cur_crit_remember_success => 1
  # DEBUG BEGIN_STMT
  _1 = db_23(D)->cur_crit;
  if (_1 == 1)
    goto <bb 3>; [34.00%]
  else
    goto <bb 5>; [66.00%]

  <bb 3> [local count: 67682620]:
  # DEBUG BEGIN_STMT
  _2 = db_23(D)->cur_crit_arg.name;
  if (_2 != 0B)
    goto <bb 4>; [53.47%]
  else
    goto <bb 5>; [46.53%]

  <bb 4> [local count: 36189897]:
  # DEBUG BEGIN_STMT
  oal_mm_free (_2);
  # DEBUG BEGIN_STMT
  db_23(D)->cur_crit_arg.name = 0B;

  <bb 5> [local count: 199066530]:
  # DEBUG BEGIN_STMT
  db_23(D)->cur_crit = crit_26(D);
  # DEBUG BEGIN_STMT
  switch (crit_26(D)) <default: <L31> [33.33%], case 0: <L32> [33.33%], case 1: <L5> [33.33%]>

  <bb 6> [local count: 66348874]:
<L5>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _3 = strlen (arg_28(D));
  _4 = _3 + 1;
  mem_30 = oal_mm_malloc (_4);
  # DEBUG mem => mem_30
  # DEBUG BEGIN_STMT
  if (mem_30 == 0B)
    goto <bb 18>; [26.22%]
  else
    goto <bb 7>; [73.78%]

  <bb 7> [local count: 48952200]:
  # DEBUG BEGIN_STMT
  db_23(D)->cur_crit_arg.name = mem_30;
  # DEBUG BEGIN_STMT
  strcpy (mem_30, arg_28(D));
  # DEBUG cur_crit_remember_success => 1
  # DEBUG BEGIN_STMT

  <bb 8> [local count: 115301074]:
<L32>:
  # DEBUG cur_crit_remember_success => NULL
  # DEBUG BEGIN_STMT
  _5 = db_23(D)->rules.prNext;
  _6 = &db_23(D)->rules;
  if (_5 != _6)
    goto <bb 19>; [85.10%]
  else
    goto <bb 18>; [14.90%]

  <bb 19> [local count: 98121214]:
  goto <bb 15>; [100.00%]

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

  <bb 10> [local count: 507343012]:
  # DEBUG BEGIN_STMT
  _7 = item_13 - 4B;
  rule_36 = (struct fci_fp_rule_t *) _7;
  # DEBUG rule => rule_36
  goto <bb 12>; [100.00%]

  <bb 11> [local count: 507343012]:
  # DEBUG BEGIN_STMT
  _8 = item_13 - 12B;
  rule_35 = (struct fci_fp_rule_t *) _8;
  # DEBUG rule => rule_35

  <bb 12> [local count: 1014686024]:
  # rule_14 = PHI <rule_36(10), rule_35(11)>
  # DEBUG rule => rule_14
  # DEBUG BEGIN_STMT
  _9 = item_13->prNext;
  db_23(D)->cur_item = _9;
  # DEBUG BEGIN_STMT
  if (rule_14 != 0B)
    goto <bb 13>; [70.00%]
  else
    goto <bb 14>; [30.00%]

  <bb 13> [local count: 710280217]:
  # DEBUG BEGIN_STMT
  _10 = db_23(D)->cur_crit;
  _11 = &db_23(D)->cur_crit_arg;
  # DEBUG D#1 => _11
  # DEBUG D#2 => rule_14
  _12 = fci_fp_match_rule_by_criterion.isra.0 (_10, _11, rule_14);
  if (_12 == 1)
    goto <bb 16>; [5.50%]
  else
    goto <bb 14>; [94.50%]

  <bb 14> [local count: 975620612]:
  # DEBUG BEGIN_STMT
  item_38 = item_13->prNext;
  # DEBUG item => item_38

  <bb 15> [local count: 1073741824]:
  # item_13 = PHI <item_38(14), _5(19)>
  # rule_15 = PHI <rule_14(14), rule_33(D)(19)>
  # DEBUG rule => rule_15
  # DEBUG item => item_13
  # DEBUG BEGIN_STMT
  if (_6 != item_13)
    goto <bb 9>; [94.50%]
  else
    goto <bb 16>; [5.50%]

  <bb 16> [local count: 98121212]:
  # rule_16 = PHI <rule_14(13), rule_15(15)>
  # match_18 = PHI <1(13), 0(15)>
  # DEBUG match => match_18
  # DEBUG rule => rule_16
  # DEBUG BEGIN_STMT
  if (match_18 != 1)
    goto <bb 17>; [44.22%]
  else
    goto <bb 18>; [55.78%]

  <bb 17> [local count: 43389200]:

  <bb 18> [local count: 199046622]:
  # rule_17 = PHI <rule_16(16), 0B(8), 0B(17), 0B(6), 0B(5)>
<L31>:
  # DEBUG cur_crit_remember_success => NULL
  # DEBUG match => NULL
  # DEBUG rule => rule_17
  # DEBUG BEGIN_STMT
  return rule_17;

}


