fci_fp_construct_rule_reply.part.0 (struct fpp_fp_rule_props_t * r, pfe_ct_fp_flags_t flags)
{
  char * rule_name;
  char * next_rule;
  uint32_t data;
  uint32_t mask;
  uint16_t offset;
  <unnamed type> _2;

  <bb 6> [local count: 1073741824]:
  # DEBUG D#10 s=> rule_name
  # DEBUG rule_name => D#10
  # DEBUG D#9 s=> next_rule
  # DEBUG next_rule => D#9
  # DEBUG D#8 s=> data
  # DEBUG data => D#8
  # DEBUG D#7 s=> mask
  # DEBUG mask => D#7
  # DEBUG D#6 s=> offset
  # DEBUG offset => D#6

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _2 = flags_1(D) & 16;
  if (_2 != 0)
    goto <bb 3>; [50.00%]
  else
    goto <bb 4>; [50.00%]

  <bb 3> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  r_3(D)->offset_from = 4;
  goto <bb 5>; [100.00%]

  <bb 4> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  r_3(D)->offset_from = 2;

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

}


fci_fp_rule_cmd (struct fci_msg_t * msg, uint16_t * fci_ret, struct fpp_fp_rule_cmd_t * reply_buf, uint32_t * reply_len)
{
  char * next_rule;
  struct fci_fp_rule_info_t rule;
  char * next_rule;
  struct fci_fp_rule_info_t rule;
  pfe_ct_fp_flags_t flags;
  errno_t ret;
  long unsigned int _1;
  short unsigned int _2;
  unsigned char _3;
  <unnamed type> _4;
  <unnamed type> _6;
  <unnamed type> _7;
  unsigned char _8;
  uint8_t[16] * _9;
  long unsigned int _10;
  long unsigned int _11;
  short unsigned int _12;
  uint8_t[16] * _13;
  uint8_t[16] * _14;
  struct fpp_fp_rule_props_t * _15;
  char * _16;
  char * next_rule.2_17;
  long unsigned int _18;
  long unsigned int _19;
  short unsigned int _20;
  <unnamed type> _21;
  struct fpp_fp_rule_props_t * _22;
  char * _23;
  char * next_rule.3_24;
  long unsigned int _25;
  long unsigned int _26;
  short unsigned int _27;
  <unnamed type> _28;
  <unnamed type> _71;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  _1 = *reply_len_36(D);
  if (_1 <= 47)
    goto <bb 27>; [35.00%]
  else
    goto <bb 3>; [65.00%]

  <bb 3> [local count: 697932186]:
  # DEBUG BEGIN_STMT
  *reply_len_36(D) = 0;
  # DEBUG BEGIN_STMT
  # DEBUG D#12 => &msg_38(D)->msg_cmd.payload
  # DEBUG fp_cmd => D#12
  # DEBUG BEGIN_STMT
  _2 = MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].action;
  switch (_2) <default: <L36> [20.00%], case 0: <L2> [20.00%], case 1: <L22> [20.00%], case 6: <L26> [20.00%], case 7: <L31> [20.00%]>

  <bb 4> [local count: 139586437]:
<L2>:
  # DEBUG BEGIN_STMT
  # DEBUG flags => 0
  # DEBUG BEGIN_STMT
  _4 = MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.match_action;
  _3 = _4;
  if (_3 <= 2)
    goto <bb 5>; [65.00%]
  else
    goto <bb 6>; [35.00%]

  <bb 5> [local count: 90731184]:
<L48>:
  _71 = 254 * _4;
  _7 = _71 + 4;
  flags_5 = _7;
  # DEBUG flags => NULL
  # DEBUG ret => NULL
  # DEBUG BEGIN_STMT
  _6 = MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.offset_from;
  switch (_6) <default: <L12> [25.00%], case 2: <L41> [25.00%], case 3: <L10> [25.00%], case 4: <L11> [25.00%]>

  <bb 6> [local count: 48855253]:
<L6>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 3;
  # DEBUG BEGIN_STMT
  # DEBUG flags => 0
  # DEBUG ret => 22
  # DEBUG BEGIN_STMT
  goto <bb 27>; [100.00%]

  <bb 7> [local count: 22682796]:
<L10>:
  # DEBUG BEGIN_STMT
  flags_63 = flags_5 | 8;
  # DEBUG flags => flags_63
  # DEBUG BEGIN_STMT
  goto <bb 10>; [100.00%]

  <bb 8> [local count: 22682796]:
<L11>:
  # DEBUG BEGIN_STMT
  flags_62 = flags_5 | 16;
  # DEBUG flags => flags_62
  # DEBUG BEGIN_STMT
  goto <bb 10>; [100.00%]

  <bb 9> [local count: 22682796]:
<L12>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 3;
  # DEBUG BEGIN_STMT
  # DEBUG flags => flags_5
  # DEBUG ret => 22
  # DEBUG BEGIN_STMT
  goto <bb 27>; [100.00%]

  <bb 10> [local count: 68048388]:
  # flags_30 = PHI <flags_5(5), flags_63(7), flags_62(8)>
<L41>:
  # DEBUG flags => flags_30
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _8 = MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.invert;
  if (_8 == 1)
    goto <bb 11>; [34.00%]
  else
    goto <bb 12>; [66.00%]

  <bb 11> [local count: 23136452]:
  # DEBUG BEGIN_STMT
  flags_65 = flags_30 | 1;
  # DEBUG flags => flags_65

  <bb 12> [local count: 68048388]:
  # flags_31 = PHI <flags_30(10), flags_65(11)>
  # DEBUG flags => flags_31
  # DEBUG BEGIN_STMT
  _9 = &MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.rule_name;
  _10 = MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.data;
  _11 = MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.mask;
  _12 = MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.offset;
  _13 = &MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.next_rule_name;
  ret_67 = fci_fp_db_create_rule (_9, _10, _11, _12, flags_31, _13);
  # DEBUG ret => ret_67
  # DEBUG BEGIN_STMT
  if (ret_67 == 0)
    goto <bb 13>; [50.00%]
  else
    goto <bb 14>; [50.00%]

  <bb 13> [local count: 34024194]:
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 0;
  goto <bb 27>; [100.00%]

  <bb 14> [local count: 34024194]:
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 3;
  goto <bb 27>; [100.00%]

  <bb 15> [local count: 139586437]:
<L22>:
  # DEBUG BEGIN_STMT
  _14 = &MEM[(struct fpp_fp_rule_cmd_t *)msg_38(D) + 16B].r.rule_name;
  ret_58 = fci_fp_db_destroy_rule (_14);
  # DEBUG ret => ret_58
  # DEBUG BEGIN_STMT
  if (ret_58 == 0)
    goto <bb 16>; [50.00%]
  else
    goto <bb 17>; [50.00%]

  <bb 16> [local count: 69793219]:
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 0;
  goto <bb 27>; [100.00%]

  <bb 17> [local count: 69793219]:
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 3;
  goto <bb 27>; [100.00%]

  <bb 18> [local count: 139586437]:
<L26>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret_50 = fci_fp_db_get_first_rule (&rule, &next_rule);
  # DEBUG ret => ret_50
  # DEBUG BEGIN_STMT
  if (ret_50 == 0)
    goto <bb 19>; [33.00%]
  else
    goto <bb 20>; [67.00%]

  <bb 19> [local count: 46063524]:
  # DEBUG BEGIN_STMT
  _15 = &reply_buf_43(D)->r;
  _16 = rule.rule_name;
  next_rule.2_17 = next_rule;
  _18 = rule.data;
  _19 = rule.mask;
  _20 = rule.offset;
  _21 = rule.flags;
  fci_fp_construct_rule_reply (_15, _16, next_rule.2_17, _18, _19, _20, _21);
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 0;
  # DEBUG BEGIN_STMT
  *reply_len_36(D) = 48;
  goto <bb 21>; [100.00%]

  <bb 20> [local count: 93522913]:
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 61986;

  <bb 21> [local count: 139586437]:
  # DEBUG BEGIN_STMT
  rule ={v} {CLOBBER};
  next_rule ={v} {CLOBBER};
  goto <bb 27>; [100.00%]

  <bb 22> [local count: 139586437]:
<L31>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret_40 = fci_fp_db_get_next_rule (&rule, &next_rule);
  # DEBUG ret => ret_40
  # DEBUG BEGIN_STMT
  if (ret_40 == 0)
    goto <bb 23>; [33.00%]
  else
    goto <bb 24>; [67.00%]

  <bb 23> [local count: 46063524]:
  # DEBUG BEGIN_STMT
  _22 = &reply_buf_43(D)->r;
  _23 = rule.rule_name;
  next_rule.3_24 = next_rule;
  _25 = rule.data;
  _26 = rule.mask;
  _27 = rule.offset;
  _28 = rule.flags;
  fci_fp_construct_rule_reply (_22, _23, next_rule.3_24, _25, _26, _27, _28);
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 0;
  # DEBUG BEGIN_STMT
  *reply_len_36(D) = 48;
  goto <bb 25>; [100.00%]

  <bb 24> [local count: 93522913]:
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 61986;

  <bb 25> [local count: 139586437]:
  # DEBUG BEGIN_STMT
  rule ={v} {CLOBBER};
  next_rule ={v} {CLOBBER};
  goto <bb 27>; [100.00%]

  <bb 26> [local count: 139586437]:
<L36>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_41(D) = 4;
  # DEBUG BEGIN_STMT

  <bb 27> [local count: 1073741824]:
  # ret_29 = PHI <22(2), 22(9), ret_58(17), ret_50(21), ret_40(25), 0(26), 22(6), ret_67(14), 0(13), 0(16)>
  # DEBUG ret => ret_29
  # DEBUG BEGIN_STMT
  return ret_29;

}


fci_fp_table_cmd (struct fci_msg_t * msg, uint16_t * fci_ret, struct fpp_fp_table_cmd_t * reply_buf, uint32_t * reply_len)
{
  char * next_rule;
  struct fci_fp_rule_info_t rule;
  errno_t ret;
  long unsigned int _1;
  short unsigned int _2;
  uint8_t[16] * _3;
  uint8_t[16] * _4;
  uint8_t[16] * _5;
  uint8_t[16] * _6;
  short unsigned int _7;
  short unsigned int _8;
  uint8_t[16] * _9;
  uint8_t[16] * _10;
  struct fpp_fp_rule_props_t * _11;
  char * _12;
  char * next_rule.0_13;
  long unsigned int _14;
  long unsigned int _15;
  short unsigned int _16;
  <unnamed type> _17;
  uint8_t[16] * _18;
  struct fpp_fp_rule_props_t * _19;
  char * _20;
  char * next_rule.1_21;
  long unsigned int _22;
  long unsigned int _23;
  short unsigned int _24;
  <unnamed type> _25;

  <bb 2> [local count: 1073532486]:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG ret => 0
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = *reply_len_29(D);
  if (_1 <= 47)
    goto <bb 23>; [35.00%]
  else
    goto <bb 3>; [65.00%]

  <bb 3> [local count: 697796116]:
  # DEBUG BEGIN_STMT
  *reply_len_29(D) = 0;
  # DEBUG BEGIN_STMT
  # DEBUG D#11 => &msg_31(D)->msg_cmd.payload
  # DEBUG fp_cmd => D#11
  # DEBUG BEGIN_STMT
  _2 = MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].action;
  switch (_2) <default: <L26> [14.29%], case 0: <L2> [14.29%], case 1: <L6> [14.29%], case 6: <L18> [14.29%], case 7: <L22> [14.29%], case 10: <L10> [14.29%], case 11: <L14> [14.29%]>

  <bb 4> [local count: 99715065]:
<L2>:
  # DEBUG BEGIN_STMT
  _3 = &MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.table_name;
  ret_61 = fci_fp_db_create_table (_3);
  # DEBUG ret => ret_61
  # DEBUG BEGIN_STMT
  if (ret_61 == 0)
    goto <bb 5>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 5> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 0;
  goto <bb 23>; [100.00%]

  <bb 6> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 3;
  goto <bb 23>; [100.00%]

  <bb 7> [local count: 99715065]:
<L6>:
  # DEBUG BEGIN_STMT
  _4 = &MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.table_name;
  ret_57 = fci_fp_db_destroy_table (_4, 0);
  # DEBUG ret => ret_57
  # DEBUG BEGIN_STMT
  if (ret_57 == 0)
    goto <bb 8>; [50.00%]
  else
    goto <bb 9>; [50.00%]

  <bb 8> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 0;
  goto <bb 23>; [100.00%]

  <bb 9> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 3;
  goto <bb 23>; [100.00%]

  <bb 10> [local count: 99715065]:
<L10>:
  # DEBUG BEGIN_STMT
  _5 = &MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.table_name;
  _6 = &MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.rule_name;
  _7 = MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.position;
  _8 = _7 r>> 8;
  ret_38 = fci_fp_db_add_rule_to_table (_5, _6, _8);
  # DEBUG ret => ret_38
  # DEBUG BEGIN_STMT
  if (ret_38 == 0)
    goto <bb 11>; [50.00%]
  else
    goto <bb 12>; [50.00%]

  <bb 11> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 0;
  goto <bb 23>; [100.00%]

  <bb 12> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 3;
  goto <bb 23>; [100.00%]

  <bb 13> [local count: 99715065]:
<L14>:
  # DEBUG BEGIN_STMT
  _9 = &MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.rule_name;
  ret_33 = fci_fp_db_remove_rule_from_table (_9);
  # DEBUG ret => ret_33
  # DEBUG BEGIN_STMT
  if (ret_33 == 0)
    goto <bb 14>; [50.00%]
  else
    goto <bb 15>; [50.00%]

  <bb 14> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 0;
  goto <bb 23>; [100.00%]

  <bb 15> [local count: 49857532]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 3;
  goto <bb 23>; [100.00%]

  <bb 16> [local count: 99715065]:
<L18>:
  # DEBUG BEGIN_STMT
  rule.rule_name = 0B;
  # DEBUG BEGIN_STMT
  next_rule = 0B;
  # DEBUG BEGIN_STMT
  _10 = &MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.table_name;
  ret_51 = fci_fp_db_get_table_first_rule (_10, &rule, &next_rule);
  # DEBUG ret => ret_51
  # DEBUG BEGIN_STMT
  if (ret_51 == 0)
    goto <bb 17>; [33.00%]
  else
    goto <bb 18>; [67.00%]

  <bb 17> [local count: 32905971]:
  # DEBUG BEGIN_STMT
  _11 = &reply_buf_44(D)->table_info.r;
  _12 = rule.rule_name;
  next_rule.0_13 = next_rule;
  _14 = rule.data;
  _15 = rule.mask;
  _16 = rule.offset;
  _17 = rule.flags;
  fci_fp_construct_rule_reply (_11, _12, next_rule.0_13, _14, _15, _16, _17);
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 0;
  # DEBUG BEGIN_STMT
  *reply_len_29(D) = 48;
  goto <bb 23>; [100.00%]

  <bb 18> [local count: 66809093]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 61986;
  goto <bb 23>; [100.00%]

  <bb 19> [local count: 99715065]:
<L22>:
  # DEBUG BEGIN_STMT
  _18 = &MEM[(struct fpp_fp_table_cmd_t *)msg_31(D) + 16B].table_info.t.table_name;
  ret_42 = fci_fp_db_get_table_next_rule (_18, &rule, &next_rule);
  # DEBUG ret => ret_42
  # DEBUG BEGIN_STMT
  if (ret_42 == 0)
    goto <bb 20>; [33.00%]
  else
    goto <bb 21>; [67.00%]

  <bb 20> [local count: 32905971]:
  # DEBUG BEGIN_STMT
  _19 = &reply_buf_44(D)->table_info.r;
  _20 = rule.rule_name;
  next_rule.1_21 = next_rule;
  _22 = rule.data;
  _23 = rule.mask;
  _24 = rule.offset;
  _25 = rule.flags;
  fci_fp_construct_rule_reply (_19, _20, next_rule.1_21, _22, _23, _24, _25);
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 0;
  # DEBUG BEGIN_STMT
  *reply_len_29(D) = 48;
  goto <bb 23>; [100.00%]

  <bb 21> [local count: 66809093]:
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 61986;
  goto <bb 23>; [100.00%]

  <bb 22> [local count: 99715065]:
<L26>:
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  *fci_ret_34(D) = 4;
  # DEBUG BEGIN_STMT

  <bb 23> [local count: 1073741824]:
  # ret_26 = PHI <22(2), ret_61(6), ret_57(9), ret_38(12), ret_33(15), ret_51(18), ret_42(21), 0(22), 0(5), 0(8), 0(11), 0(14), 0(17), 0(20)>
  # DEBUG ret => ret_26
  # DEBUG BEGIN_STMT
  rule ={v} {CLOBBER};
  next_rule ={v} {CLOBBER};
  return ret_26;

}


fci_fp_construct_rule_reply (struct fpp_fp_rule_props_t * r, char * rule_name, char * next_rule, uint32_t data, uint32_t mask, uint16_t offset, pfe_ct_fp_flags_t flags)
{
  uint8_t[16] * _1;
  uint8_t[16] * _2;
  <unnamed type> _27;
  <unnamed type> _28;
  <unnamed type> _29;
  <unnamed type> _30;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = &r_8(D)->rule_name;
  strncpy (_1, rule_name_10(D), 15);
  # DEBUG BEGIN_STMT
  r_8(D)->data = data_12(D);
  # DEBUG BEGIN_STMT
  r_8(D)->mask = mask_14(D);
  # DEBUG BEGIN_STMT
  r_8(D)->offset = offset_16(D);
  # DEBUG BEGIN_STMT
  if (next_rule_18(D) != 0B)
    goto <bb 3>; [53.47%]
  else
    goto <bb 4>; [46.53%]

  <bb 3> [local count: 574129754]:
  # DEBUG BEGIN_STMT
  _2 = &r_8(D)->next_rule_name;
  strncpy (_2, next_rule_18(D), 15);

  <bb 4> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _27 = flags_20(D) & 4;
  if (_27 != 0)
    goto <bb 5>; [50.00%]
  else
    goto <bb 6>; [50.00%]

  <bb 5> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  r_8(D)->match_action = 0;
  goto <bb 9>; [100.00%]

  <bb 6> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  _28 = flags_20(D) & 2;
  if (_28 != 0)
    goto <bb 7>; [50.00%]
  else
    goto <bb 8>; [50.00%]

  <bb 7> [local count: 268435456]:
  # DEBUG BEGIN_STMT
  r_8(D)->match_action = 1;
  goto <bb 9>; [100.00%]

  <bb 8> [local count: 268435456]:
  # DEBUG BEGIN_STMT
  r_8(D)->match_action = 2;

  <bb 9> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _29 = flags_20(D) & 1;
  if (_29 != 0)
    goto <bb 10>; [50.00%]
  else
    goto <bb 11>; [50.00%]

  <bb 10> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  r_8(D)->invert = 1;
  goto <bb 12>; [100.00%]

  <bb 11> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  r_8(D)->invert = 0;

  <bb 12> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _30 = flags_20(D) & 8;
  if (_30 != 0)
    goto <bb 13>; [50.00%]
  else
    goto <bb 14>; [50.00%]

  <bb 13> [local count: 536870913]:
  # DEBUG BEGIN_STMT
  r_8(D)->offset_from = 3;
  goto <bb 15>; [100.00%]

  <bb 14> [local count: 536870912]:
  # DEBUG D#1 => rule_name_10(D)
  # DEBUG D#2 => next_rule_18(D)
  # DEBUG D#3 => data_12(D)
  # DEBUG D#4 => mask_14(D)
  # DEBUG D#5 => offset_16(D)
  fci_fp_construct_rule_reply.part.0 (r_8(D), flags_20(D));

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

}


