pfe_fw_feature_set_val (const struct pfe_fw_feature_t * feature, uint8_t val)
{
  errno_t ret;
  errno_t (*<T6a5>) (void *, int32_t, addr_t, const void *, uint32_t) _1;
  void * _2;
  struct pfe_ct_feature_desc_t * _3;
  long unsigned int _4;
  long unsigned int _5;
  struct pfe_ct_feature_desc_t * _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;
  struct pfe_ct_feature_desc_t * _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _15;
  struct pfe_ct_feature_desc_t * _16;
  long unsigned int _17;
  long unsigned int _18;
  long unsigned int _19;
  errno_t _24;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = feature_21(D)->dmem_write_func;
  _2 = feature_21(D)->dmem_rw_func_data;
  _3 = feature_21(D)->ll_data;
  _4 = _3->position;
  _5 = _4 >> 24;
  _6 = feature_21(D)->ll_data;
  _7 = _6->position;
  _8 = _7 >> 8;
  _9 = _8 & 65280;
  _10 = _5 | _9;
  _11 = feature_21(D)->ll_data;
  _12 = _11->position;
  _13 = _12 << 8;
  _14 = _13 & 16711680;
  _15 = _10 | _14;
  _16 = feature_21(D)->ll_data;
  _17 = _16->position;
  _18 = _17 << 24;
  _19 = _15 | _18;
  ret_23 = _1 (_2, -1, _19, &val, 1);
  # DEBUG ret => ret_23
  # DEBUG BEGIN_STMT
  _24 = ret_23;
  return _24;

}


pfe_fw_feature_enabled (const struct pfe_fw_feature_t * feature)
{
  bool_t feature_enabled;
  errno_t ret;
  uint8_t val;
  unsigned char val.2_1;
  bool_t _10;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ret_6 = pfe_fw_feature_get_val (feature_4(D), &val);
  # DEBUG ret => ret_6
  # DEBUG BEGIN_STMT
  if (ret_6 != 0)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  feature_enabled_9 = 0;
  # DEBUG feature_enabled => feature_enabled_9
  goto <bb 7>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  val.2_1 = val;
  if (val.2_1 != 0)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  feature_enabled_8 = 1;
  # DEBUG feature_enabled => feature_enabled_8
  goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  feature_enabled_7 = 0;
  # DEBUG feature_enabled => feature_enabled_7

  <bb 7> :
  # feature_enabled_2 = PHI <feature_enabled_9(3), feature_enabled_8(5), feature_enabled_7(6)>
  # DEBUG feature_enabled => feature_enabled_2
  # DEBUG BEGIN_STMT
  _10 = feature_enabled_2;
  val ={v} {CLOBBER};
  return _10;

}


pfe_fw_feature_get_val (const struct pfe_fw_feature_t * feature, uint8_t * val)
{
  errno_t ret;
  errno_t (*<T6a0>) (void *, int32_t, void *, addr_t, uint32_t) _1;
  void * _2;
  struct pfe_ct_feature_desc_t * _3;
  long unsigned int _4;
  long unsigned int _5;
  struct pfe_ct_feature_desc_t * _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;
  long unsigned int _10;
  struct pfe_ct_feature_desc_t * _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  long unsigned int _15;
  struct pfe_ct_feature_desc_t * _16;
  long unsigned int _17;
  long unsigned int _18;
  long unsigned int _19;
  errno_t _25;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = feature_21(D)->dmem_read_func;
  _2 = feature_21(D)->dmem_rw_func_data;
  _3 = feature_21(D)->ll_data;
  _4 = _3->position;
  _5 = _4 >> 24;
  _6 = feature_21(D)->ll_data;
  _7 = _6->position;
  _8 = _7 >> 8;
  _9 = _8 & 65280;
  _10 = _5 | _9;
  _11 = feature_21(D)->ll_data;
  _12 = _11->position;
  _13 = _12 << 8;
  _14 = _13 & 16711680;
  _15 = _10 | _14;
  _16 = feature_21(D)->ll_data;
  _17 = _16->position;
  _18 = _17 << 24;
  _19 = _15 | _18;
  ret_24 = _1 (_2, 0, val_22(D), _19, 1);
  # DEBUG ret => ret_24
  # DEBUG BEGIN_STMT
  _25 = ret_24;
  return _25;

}


pfe_fw_feature_get_def_val (const struct pfe_fw_feature_t * feature, uint8_t * def_val)
{
  errno_t ret;
  struct pfe_ct_feature_desc_t * _1;
  unsigned char _2;
  errno_t _8;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = feature_4(D)->ll_data;
  _2 = _1->def_val;
  *def_val_5(D) = _2;
  # DEBUG BEGIN_STMT
  ret_7 = 0;
  # DEBUG ret => ret_7
  # DEBUG BEGIN_STMT
  _8 = ret_7;
  return _8;

}


pfe_fw_feature_is_in_util (const struct pfe_fw_feature_t * feature)
{
  bool_t ret;
  pfe_ct_feature_flags_t flags;
  <unnamed type> flags.1_1;
  int _2;
  int _3;
  _Bool _4;
  bool_t _10;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  flags = 0;
  # DEBUG BEGIN_STMT
  pfe_fw_feature_get_flags (feature_7(D), &flags);
  # DEBUG BEGIN_STMT
  flags.1_1 = flags;
  _2 = (int) flags.1_1;
  _3 = _2 & 64;
  _4 = _3 != 0;
  ret_9 = (bool_t) _4;
  # DEBUG ret => ret_9
  # DEBUG BEGIN_STMT
  _10 = ret_9;
  flags ={v} {CLOBBER};
  return _10;

}


pfe_fw_feature_is_in_class (const struct pfe_fw_feature_t * feature)
{
  bool_t ret;
  pfe_ct_feature_flags_t flags;
  <unnamed type> flags.0_1;
  int _2;
  int _3;
  _Bool _4;
  bool_t _10;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  flags = 0;
  # DEBUG BEGIN_STMT
  pfe_fw_feature_get_flags (feature_7(D), &flags);
  # DEBUG BEGIN_STMT
  flags.0_1 = flags;
  _2 = (int) flags.0_1;
  _3 = _2 & 32;
  _4 = _3 != 0;
  ret_9 = (bool_t) _4;
  # DEBUG ret => ret_9
  # DEBUG BEGIN_STMT
  _10 = ret_9;
  flags ={v} {CLOBBER};
  return _10;

}


pfe_fw_feature_get_flags (const struct pfe_fw_feature_t * feature, pfe_ct_feature_flags_t * flags)
{
  errno_t ret;
  struct pfe_ct_feature_desc_t * _1;
  <unnamed type> _2;
  errno_t _8;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = feature_4(D)->ll_data;
  _2 = _1->flags;
  *flags_5(D) = _2;
  # DEBUG BEGIN_STMT
  ret_7 = 0;
  # DEBUG ret => ret_7
  # DEBUG BEGIN_STMT
  _8 = ret_7;
  return _8;

}


pfe_fw_feature_get_desc (const struct pfe_fw_feature_t * feature, const char * * desc)
{
  errno_t ret;
  const char * _1;
  struct pfe_ct_feature_desc_t * _2;
  long unsigned int _3;
  long unsigned int _4;
  struct pfe_ct_feature_desc_t * _5;
  long unsigned int _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;
  struct pfe_ct_feature_desc_t * _10;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  struct pfe_ct_feature_desc_t * _15;
  long unsigned int _16;
  long unsigned int _17;
  long unsigned int _18;
  const char * _19;
  errno_t _25;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = feature_21(D)->string_base;
  _2 = feature_21(D)->ll_data;
  _3 = _2->description;
  _4 = _3 >> 24;
  _5 = feature_21(D)->ll_data;
  _6 = _5->description;
  _7 = _6 >> 8;
  _8 = _7 & 65280;
  _9 = _4 | _8;
  _10 = feature_21(D)->ll_data;
  _11 = _10->description;
  _12 = _11 << 8;
  _13 = _12 & 16711680;
  _14 = _9 | _13;
  _15 = feature_21(D)->ll_data;
  _16 = _15->description;
  _17 = _16 << 24;
  _18 = _14 | _17;
  _19 = _1 + _18;
  *desc_22(D) = _19;
  # DEBUG BEGIN_STMT
  ret_24 = 0;
  # DEBUG ret => ret_24
  # DEBUG BEGIN_STMT
  _25 = ret_24;
  return _25;

}


pfe_fw_feature_get_name (const struct pfe_fw_feature_t * feature, const char * * name)
{
  errno_t ret;
  const char * _1;
  struct pfe_ct_feature_desc_t * _2;
  long unsigned int _3;
  long unsigned int _4;
  struct pfe_ct_feature_desc_t * _5;
  long unsigned int _6;
  long unsigned int _7;
  long unsigned int _8;
  long unsigned int _9;
  struct pfe_ct_feature_desc_t * _10;
  long unsigned int _11;
  long unsigned int _12;
  long unsigned int _13;
  long unsigned int _14;
  struct pfe_ct_feature_desc_t * _15;
  long unsigned int _16;
  long unsigned int _17;
  long unsigned int _18;
  const char * _19;
  errno_t _25;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = feature_21(D)->string_base;
  _2 = feature_21(D)->ll_data;
  _3 = _2->name;
  _4 = _3 >> 24;
  _5 = feature_21(D)->ll_data;
  _6 = _5->name;
  _7 = _6 >> 8;
  _8 = _7 & 65280;
  _9 = _4 | _8;
  _10 = feature_21(D)->ll_data;
  _11 = _10->name;
  _12 = _11 << 8;
  _13 = _12 & 16711680;
  _14 = _9 | _13;
  _15 = feature_21(D)->ll_data;
  _16 = _15->name;
  _17 = _16 << 24;
  _18 = _14 | _17;
  _19 = _1 + _18;
  *name_22(D) = _19;
  # DEBUG BEGIN_STMT
  ret_24 = 0;
  # DEBUG ret => ret_24
  # DEBUG BEGIN_STMT
  _25 = ret_24;
  return _25;

}


pfe_fw_feature_set_dmem_funcs (struct pfe_fw_feature_t * feature, errno_t (*dmem_read_func_t) (void *, int32_t, void *, addr_t, uint32_t) read_func, errno_t (*dmem_write_func_t) (void *, int32_t, addr_t, const void *, uint32_t) write_func, void * data)
{
  errno_t ret;
  errno_t _10;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  feature_2(D)->dmem_read_func = read_func_3(D);
  # DEBUG BEGIN_STMT
  feature_2(D)->dmem_write_func = write_func_5(D);
  # DEBUG BEGIN_STMT
  feature_2(D)->dmem_rw_func_data = data_7(D);
  # DEBUG BEGIN_STMT
  ret_9 = 0;
  # DEBUG ret => ret_9
  # DEBUG BEGIN_STMT
  _10 = ret_9;
  return _10;

}


pfe_fw_feature_set_string_base (struct pfe_fw_feature_t * feature, const char * string_base)
{
  errno_t ret;
  errno_t _6;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  feature_2(D)->string_base = string_base_3(D);
  # DEBUG BEGIN_STMT
  ret_5 = 0;
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  _6 = ret_5;
  return _6;

}


pfe_fw_feature_set_ll_data (struct pfe_fw_feature_t * feature, struct pfe_ct_feature_desc_t * ll_data)
{
  errno_t ret;
  errno_t _6;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  feature_2(D)->ll_data = ll_data_3(D);
  # DEBUG BEGIN_STMT
  ret_5 = 0;
  # DEBUG ret => ret_5
  # DEBUG BEGIN_STMT
  _6 = ret_5;
  return _6;

}


pfe_fw_feature_destroy (const struct pfe_fw_feature_t * feature)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  return;

}


pfe_fw_feature_create (struct pfe_fw_feature_t * feature)
{
  struct pfe_fw_feature_t * _4;

  <bb 2> :
  # DEBUG BEGIN_STMT
  memset (feature_2(D), 0, 20);
  # DEBUG BEGIN_STMT
  _4 = feature_2(D);
  return _4;

}


