
Marking local functions:


Marking externally visible functions: dtc_found_and_clear is_dtc_exist is_dtc_found dtc_count_set dtc_send_table_set dtc_string_to_code dtc_write dtc_control dtc_read dtc_clear write_DTC_to_EEP CAN_DTC_Data_Set


Marking externally visible variables: TFAIL_NAME DTC_Item_new DTC_Item_event_Old DTC_Item_event DTC_Item_wr_Old DTC_Item_wr DTC_Item_Old DTC_Item DTC_ALINE


Reclaiming functions:
Reclaiming variables:
Clearing address taken flags:
Symbol table:

TABLE_DTC_SEND/31 (TABLE_DTC_SEND) @06c17438
  Type: variable
  Body removed by symtab_remove_unreachable_nodes
  Visibility: external public
  References: 
  Referring: dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)
  Availability: not_available
  Varpool flags:
string_to_int/30 (string_to_int) @06c09460
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: dtc_found_and_clear/23 is_dtc_exist/22 is_dtc_found/21 dtc_send_table_set/19 dtc_string_to_code/18 
  Calls: 
programDword_data_flash/29 (programDword_data_flash) @06c092a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: dtc_write/16 
  Calls: 
put_cr/28 (put_cr) @06bc7540
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: dtc_read/14 dtc_read/14 
  Calls: 
put_charp/27 (put_charp) @06bc72a0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: dtc_read/14 dtc_read/14 
  Calls: 
OutStr/26 (OutStr) @06bc7000
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: dtc_read/14 dtc_read/14 
  Calls: 
monprintf/25 (monprintf) @06bc7ee0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: dtc_read/14 dtc_read/14 dtc_read/14 
  Calls: 
uds/24 (uds) @06b94870
  Type: variable
  Body removed by symtab_remove_unreachable_nodes
  Visibility: external public
  References: 
  Referring: CAN_DTC_Data_Set/11 (read)dtc_control/15 (read)dtc_control/15 (write)dtc_control/15 (read)
  Availability: not_available
  Varpool flags:
dtc_found_and_clear/23 (dtc_found_and_clear) @06bc7700
  Type: function definition analyzed
  Visibility: externally_visible public
  References: DTC_Item/4 (read)DTC_Item_Old/5 (read)TFAIL_NAME/17 (read)DTC_Item/4 (read)DTC_Item/4 (write)DTC_Item_Old/5 (read)DTC_Item_Old/5 (write)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: string_to_int/30 
is_dtc_exist/22 (is_dtc_exist) @06bc7460
  Type: function definition analyzed
  Visibility: externally_visible public
  References: TFAIL_NAME/17 (read)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: string_to_int/30 
is_dtc_found/21 (is_dtc_found) @06bc71c0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: DTC_Item/4 (read)DTC_Item_Old/5 (read)TFAIL_NAME/17 (read)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: string_to_int/30 
dtc_count_set/20 (dtc_count_set) @06b7eee0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: DTC_Item/4 (read)DTC_Item_Old/5 (read)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: 
dtc_send_table_set/19 (dtc_send_table_set) @06b7e8c0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (read)DTC_Item_Old/5 (read)DTC_Item/4 (write)DTC_Item_Old/5 (write)TABLE_DTC_SEND/31 (write)DTC_Item/4 (read)DTC_Item_Old/5 (read)TFAIL_NAME/17 (read)DTC_Item_Old/5 (read)DTC_Item/4 (read)TABLE_DTC_SEND/31 (write)TABLE_DTC_SEND/31 (write)TABLE_DTC_SEND/31 (write)TABLE_DTC_SEND/31 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)TABLE_DTC_SEND/31 (write)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: string_to_int/30 
dtc_string_to_code/18 (dtc_string_to_code) @06b7e380
  Type: function definition analyzed
  Visibility: externally_visible public
  References: TFAIL_NAME/17 (read)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: string_to_int/30 
TFAIL_NAME/17 (TFAIL_NAME) @06b94048
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: dtc_string_to_code/18 (read)dtc_send_table_set/19 (read)is_dtc_found/21 (read)is_dtc_exist/22 (read)dtc_found_and_clear/23 (read)
  Availability: available
  Varpool flags: initialized
dtc_write/16 (dtc_write) @06b7ea80
  Type: function definition analyzed
  Visibility: externally_visible public
  References: DTC_Item/4 (read)DTC_Item/4 (read)DTC_Item/4 (read)DTC_Item/4 (read)DTC_Item/4 (read)DTC_Item/4 (read)DTC_Item/4 (read)DTC_Item/4 (read)DTC_Item_Old/5 (read)DTC_Item_Old/5 (read)DTC_Item_Old/5 (read)DTC_Item_Old/5 (read)DTC_Item_Old/5 (read)DTC_Item_Old/5 (read)DTC_Item_Old/5 (read)DTC_Item_Old/5 (read)DTC_Item/4 (read)DTC_Item_wr/6 (write)DTC_Item_Old/5 (read)DTC_Item_wr_Old/7 (write)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: dtc_control/15 dtc_clear/13 
  Calls: programDword_data_flash/29 
dtc_control/15 (dtc_control) @06b7e7e0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: uds/24 (read)uds/24 (write)DTC_Item/4 (addr)DTC_Item_Old/5 (addr)DTC_Item/4 (read)DTC_Item_wr/6 (read)DTC_Item_Old/5 (read)DTC_Item_wr_Old/7 (read)DTC_Item_Old/5 (read)DTC_Item/4 (read)DTC_Item_Old/5 (write)uds/24 (read)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: dtc_write/16 CAN_DTC_Data_Set/11 
dtc_read/14 (dtc_read) @06b7e540
  Type: function definition analyzed
  Visibility: externally_visible public
  References: DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item/4 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item_Old/5 (write)DTC_Item/4 (read)DTC_Item_Old/5 (read)DTC_Item/4 (read)DTC_Item_wr/6 (write)DTC_Item_Old/5 (read)DTC_Item_wr_Old/7 (write)DTC_Item/4 (read)DTC_Item_event/8 (write)DTC_Item_new/10 (write)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: put_cr/28 put_charp/27 OutStr/26 put_cr/28 put_charp/27 OutStr/26 monprintf/25 monprintf/25 dtc_clear/13 monprintf/25 
dtc_clear/13 (dtc_clear) @06b7e2a0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: DTC_Item/4 (write)DTC_Item_Old/5 (write)DTC_Item_event/8 (write)DTC_Item_new/10 (write)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: dtc_read/14 
  Calls: dtc_write/16 
write_DTC_to_EEP/12 (write_DTC_to_EEP) @06b7e000
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: 
CAN_DTC_Data_Set/11 (CAN_DTC_Data_Set) @06b75540
  Type: function definition analyzed
  Visibility: externally_visible public
  References: uds/24 (read)
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: dtc_control/15 
  Calls: 
DTC_Item_new/10 (DTC_Item_new) @06b73c18
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: dtc_clear/13 (write)dtc_read/14 (write)
  Availability: available
  Varpool flags:
DTC_Item_event_Old/9 (DTC_Item_event_Old) @06b73bd0
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Varpool flags:
DTC_Item_event/8 (DTC_Item_event) @06b73b88
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: dtc_clear/13 (write)dtc_read/14 (write)
  Availability: available
  Varpool flags:
DTC_Item_wr_Old/7 (DTC_Item_wr_Old) @06b73b40
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: dtc_read/14 (write)dtc_control/15 (read)dtc_write/16 (write)
  Availability: available
  Varpool flags:
DTC_Item_wr/6 (DTC_Item_wr) @06b73af8
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: dtc_read/14 (write)dtc_control/15 (read)dtc_write/16 (write)
  Availability: available
  Varpool flags:
DTC_Item_Old/5 (DTC_Item_Old) @06b73ab0
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: dtc_clear/13 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (read)dtc_read/14 (read)dtc_control/15 (addr)dtc_control/15 (read)dtc_control/15 (read)dtc_control/15 (write)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_send_table_set/19 (read)dtc_send_table_set/19 (write)dtc_send_table_set/19 (read)dtc_send_table_set/19 (read)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_count_set/20 (read)is_dtc_found/21 (read)dtc_found_and_clear/23 (read)dtc_found_and_clear/23 (read)dtc_found_and_clear/23 (write)
  Availability: available
  Varpool flags:
DTC_Item/4 (DTC_Item) @06b73a68
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: dtc_clear/13 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (write)dtc_read/14 (read)dtc_read/14 (read)dtc_read/14 (read)dtc_control/15 (addr)dtc_control/15 (read)dtc_control/15 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_write/16 (read)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (read)dtc_send_table_set/19 (write)dtc_send_table_set/19 (read)dtc_send_table_set/19 (read)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_send_table_set/19 (write)dtc_count_set/20 (read)is_dtc_found/21 (read)dtc_found_and_clear/23 (read)dtc_found_and_clear/23 (read)dtc_found_and_clear/23 (write)
  Availability: available
  Varpool flags:
DTC_ALINE/3 (DTC_ALINE) @06b73a20
  Type: variable definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Varpool flags:
dtc_found_and_clear (uint32_t dtcc)
{
  uint8_t nDTC[9];
  uint32_t c1;
  uint8_t lim;
  uint8_t nc;
  uint8_t c;
  uint16_t p;
  uint16_t k;
  uint16_t j;
  uint16_t i;
  uint8_t D.6331;
  long unsigned int D.6328;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  k = 0;
  # DEBUG BEGIN_STMT
  p = 0;
  # DEBUG BEGIN_STMT
  j = 0;
  goto <bb 25>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  c = 128;
  # DEBUG BEGIN_STMT
  if (j <= 1)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  lim = 8;
  goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  lim = 3;

  <bb 6> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 23>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  _1 = (int) j;
  _2 = DTC_Item._c[_1];
  _3 = c & _2;
  if (_3 != 0)
    goto <bb 9>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 8> :
  _4 = (int) j;
  _5 = DTC_Item_Old._c[_4];
  _6 = c & _5;
  if (_6 != 0)
    goto <bb 9>; [INV]
  else
    goto <bb 22>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  k = 0;
  goto <bb 11>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  _7 = (int) p;
  _8 = TFAIL_NAME[_7];
  _9 = (sizetype) k;
  _10 = _8 + _9;
  _11 = (int) k;
  _12 = *_10;
  nDTC[_11] = _12;
  # DEBUG BEGIN_STMT
  k.30_13 = k;
  k = k.30_13 + 1;

  <bb 11> :
  # DEBUG BEGIN_STMT
  if (k <= 7)
    goto <bb 10>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  nDTC[8] = 0;
  # DEBUG BEGIN_STMT
  _14 = nDTC[0];
  if (_14 == 80)
    goto <bb 13>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 13> :
  # DEBUG BEGIN_STMT
  c1 = 0;
  goto <bb 20>; [INV]

  <bb 14> :
  # DEBUG BEGIN_STMT
  _15 = nDTC[0];
  if (_15 == 67)
    goto <bb 15>; [INV]
  else
    goto <bb 16>; [INV]

  <bb 15> :
  # DEBUG BEGIN_STMT
  c1 = 4194304;
  goto <bb 20>; [INV]

  <bb 16> :
  # DEBUG BEGIN_STMT
  _16 = nDTC[0];
  if (_16 == 66)
    goto <bb 17>; [INV]
  else
    goto <bb 18>; [INV]

  <bb 17> :
  # DEBUG BEGIN_STMT
  c1 = 8388608;
  goto <bb 20>; [INV]

  <bb 18> :
  # DEBUG BEGIN_STMT
  _17 = nDTC[0];
  if (_17 == 85)
    goto <bb 19>; [INV]
  else
    goto <bb 24>; [INV]

  <bb 19> :
  # DEBUG BEGIN_STMT
  c1 = 12582912;

  <bb 20> :
  # DEBUG BEGIN_STMT
  _18 = &nDTC + 1;
  D.6328 = string_to_int (_18);
  c1 = D.6328 + c1;
  # DEBUG BEGIN_STMT
  if (c1 == dtcc)
    goto <bb 21>; [INV]
  else
    goto <bb 22>; [INV]

  <bb 21> :
  # DEBUG BEGIN_STMT
  _19 = c == 0;
  nc = (uint8_t) _19;
  # DEBUG BEGIN_STMT
  _20 = (int) j;
  _21 = DTC_Item._c[_20];
  _22 = (int) j;
  _23 = nc & _21;
  DTC_Item._c[_22] = _23;
  # DEBUG BEGIN_STMT
  _24 = (int) j;
  _25 = DTC_Item_Old._c[_24];
  _26 = (int) j;
  _27 = nc & _25;
  DTC_Item_Old._c[_26] = _27;
  # DEBUG BEGIN_STMT
  D.6331 = (uint8_t) p;
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 27>; [INV]

  <bb 22> :
  # DEBUG BEGIN_STMT
  p.31_28 = p;
  p = p.31_28 + 1;
  # DEBUG BEGIN_STMT
  c = c >> 1;
  # DEBUG BEGIN_STMT
  i.32_29 = i;
  i = i.32_29 + 1;

  <bb 23> :
  # DEBUG BEGIN_STMT
  _30 = (short unsigned int) lim;
  if (i < _30)
    goto <bb 7>; [INV]
  else
    goto <bb 24>; [INV]

  <bb 24> :
  # DEBUG BEGIN_STMT
  j.33_31 = j;
  j = j.33_31 + 1;

  <bb 25> :
  # DEBUG BEGIN_STMT
  if (j <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 26>; [INV]

  <bb 26> :
  # DEBUG BEGIN_STMT
  D.6331 = 255;

  <bb 27> :
  nDTC = {CLOBBER};
  return D.6331;

}


is_dtc_exist (uint32_t dtcc)
{
  uint8_t nDTC[9];
  uint32_t c1;
  uint8_t lim;
  uint16_t p;
  uint16_t k;
  uint16_t j;
  uint16_t i;
  uint8_t D.6309;
  long unsigned int D.6306;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  k = 0;
  # DEBUG BEGIN_STMT
  p = 0;
  # DEBUG BEGIN_STMT
  j = 0;
  goto <bb 23>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  if (j <= 1)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  lim = 8;
  goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  lim = 3;

  <bb 6> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 21>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  k = 0;
  goto <bb 9>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  _1 = (int) p;
  _2 = TFAIL_NAME[_1];
  _3 = (sizetype) k;
  _4 = _2 + _3;
  _5 = (int) k;
  _6 = *_4;
  nDTC[_5] = _6;
  # DEBUG BEGIN_STMT
  k.26_7 = k;
  k = k.26_7 + 1;

  <bb 9> :
  # DEBUG BEGIN_STMT
  if (k <= 7)
    goto <bb 8>; [INV]
  else
    goto <bb 10>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  nDTC[8] = 0;
  # DEBUG BEGIN_STMT
  _8 = nDTC[0];
  if (_8 == 80)
    goto <bb 11>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  c1 = 0;
  goto <bb 18>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  _9 = nDTC[0];
  if (_9 == 67)
    goto <bb 13>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 13> :
  # DEBUG BEGIN_STMT
  c1 = 4194304;
  goto <bb 18>; [INV]

  <bb 14> :
  # DEBUG BEGIN_STMT
  _10 = nDTC[0];
  if (_10 == 66)
    goto <bb 15>; [INV]
  else
    goto <bb 16>; [INV]

  <bb 15> :
  # DEBUG BEGIN_STMT
  c1 = 8388608;
  goto <bb 18>; [INV]

  <bb 16> :
  # DEBUG BEGIN_STMT
  _11 = nDTC[0];
  if (_11 == 85)
    goto <bb 17>; [INV]
  else
    goto <bb 22>; [INV]

  <bb 17> :
  # DEBUG BEGIN_STMT
  c1 = 12582912;

  <bb 18> :
  # DEBUG BEGIN_STMT
  _12 = &nDTC + 1;
  D.6306 = string_to_int (_12);
  c1 = D.6306 + c1;
  # DEBUG BEGIN_STMT
  if (c1 == dtcc)
    goto <bb 19>; [INV]
  else
    goto <bb 20>; [INV]

  <bb 19> :
  # DEBUG BEGIN_STMT
  D.6309 = (uint8_t) p;
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 25>; [INV]

  <bb 20> :
  # DEBUG BEGIN_STMT
  i.27_13 = i;
  i = i.27_13 + 1;

  <bb 21> :
  # DEBUG BEGIN_STMT
  _14 = (short unsigned int) lim;
  if (i < _14)
    goto <bb 7>; [INV]
  else
    goto <bb 22>; [INV]

  <bb 22> :
  # DEBUG BEGIN_STMT
  p.28_15 = p;
  p = p.28_15 + 1;
  # DEBUG BEGIN_STMT
  j.29_16 = j;
  j = j.29_16 + 1;

  <bb 23> :
  # DEBUG BEGIN_STMT
  if (j <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 24>; [INV]

  <bb 24> :
  # DEBUG BEGIN_STMT
  D.6309 = 255;

  <bb 25> :
  nDTC = {CLOBBER};
  return D.6309;

}


is_dtc_found (uint32_t dtcc)
{
  uint8_t nDTC[9];
  uint32_t c1;
  uint8_t lim;
  uint8_t c;
  uint16_t p;
  uint16_t k;
  uint16_t j;
  uint16_t i;
  uint8_t D.6290;
  long unsigned int D.6287;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  k = 0;
  # DEBUG BEGIN_STMT
  p = 0;
  # DEBUG BEGIN_STMT
  j = 0;
  goto <bb 25>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  c = 128;
  # DEBUG BEGIN_STMT
  if (j <= 1)
    goto <bb 4>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  lim = 8;
  goto <bb 6>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  lim = 3;

  <bb 6> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 23>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  _1 = (int) j;
  _2 = DTC_Item._c[_1];
  _3 = c & _2;
  if (_3 != 0)
    goto <bb 9>; [INV]
  else
    goto <bb 8>; [INV]

  <bb 8> :
  _4 = (int) j;
  _5 = DTC_Item_Old._c[_4];
  _6 = c & _5;
  if (_6 != 0)
    goto <bb 9>; [INV]
  else
    goto <bb 22>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  k = 0;
  goto <bb 11>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  _7 = (int) p;
  _8 = TFAIL_NAME[_7];
  _9 = (sizetype) k;
  _10 = _8 + _9;
  _11 = (int) k;
  _12 = *_10;
  nDTC[_11] = _12;
  # DEBUG BEGIN_STMT
  k.22_13 = k;
  k = k.22_13 + 1;

  <bb 11> :
  # DEBUG BEGIN_STMT
  if (k <= 7)
    goto <bb 10>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  nDTC[8] = 0;
  # DEBUG BEGIN_STMT
  _14 = nDTC[0];
  if (_14 == 80)
    goto <bb 13>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 13> :
  # DEBUG BEGIN_STMT
  c1 = 0;
  goto <bb 20>; [INV]

  <bb 14> :
  # DEBUG BEGIN_STMT
  _15 = nDTC[0];
  if (_15 == 67)
    goto <bb 15>; [INV]
  else
    goto <bb 16>; [INV]

  <bb 15> :
  # DEBUG BEGIN_STMT
  c1 = 4194304;
  goto <bb 20>; [INV]

  <bb 16> :
  # DEBUG BEGIN_STMT
  _16 = nDTC[0];
  if (_16 == 66)
    goto <bb 17>; [INV]
  else
    goto <bb 18>; [INV]

  <bb 17> :
  # DEBUG BEGIN_STMT
  c1 = 8388608;
  goto <bb 20>; [INV]

  <bb 18> :
  # DEBUG BEGIN_STMT
  _17 = nDTC[0];
  if (_17 == 85)
    goto <bb 19>; [INV]
  else
    goto <bb 24>; [INV]

  <bb 19> :
  # DEBUG BEGIN_STMT
  c1 = 12582912;

  <bb 20> :
  # DEBUG BEGIN_STMT
  _18 = &nDTC + 1;
  D.6287 = string_to_int (_18);
  c1 = D.6287 + c1;
  # DEBUG BEGIN_STMT
  if (c1 == dtcc)
    goto <bb 21>; [INV]
  else
    goto <bb 22>; [INV]

  <bb 21> :
  # DEBUG BEGIN_STMT
  D.6290 = (uint8_t) p;
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 27>; [INV]

  <bb 22> :
  # DEBUG BEGIN_STMT
  p.23_19 = p;
  p = p.23_19 + 1;
  # DEBUG BEGIN_STMT
  c = c >> 1;
  # DEBUG BEGIN_STMT
  i.24_20 = i;
  i = i.24_20 + 1;

  <bb 23> :
  # DEBUG BEGIN_STMT
  _21 = (short unsigned int) lim;
  if (i < _21)
    goto <bb 7>; [INV]
  else
    goto <bb 24>; [INV]

  <bb 24> :
  # DEBUG BEGIN_STMT
  j.25_22 = j;
  j = j.25_22 + 1;

  <bb 25> :
  # DEBUG BEGIN_STMT
  if (j <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 26>; [INV]

  <bb 26> :
  # DEBUG BEGIN_STMT
  D.6290 = 255;

  <bb 27> :
  nDTC = {CLOBBER};
  return D.6290;

}


dtc_count_set ()
{
  uint16_t count;
  uint16_t j;
  uint16_t i;
  uint8_t c;
  uint16_t D.6269;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  count = 0;
  # DEBUG BEGIN_STMT
  j = 0;
  goto <bb 10>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  c = 128;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 8>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  _1 = (int) j;
  _2 = DTC_Item._c[_1];
  _3 = c & _2;
  if (_3 != 0)
    goto <bb 6>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  _4 = (int) j;
  _5 = DTC_Item_Old._c[_4];
  _6 = c & _5;
  if (_6 != 0)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  count.19_7 = count;
  count = count.19_7 + 1;

  <bb 7> :
  # DEBUG BEGIN_STMT
  c = c >> 1;
  # DEBUG BEGIN_STMT
  i.20_8 = i;
  i = i.20_8 + 1;

  <bb 8> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 4>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  j.21_9 = j;
  j = j.21_9 + 1;

  <bb 10> :
  # DEBUG BEGIN_STMT
  if (j <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 11>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  D.6269 = count;
  return D.6269;

}


dtc_send_table_set (uint8_t type)
{
  uint8_t DTC_PUSH_OLD[9];
  uint8_t DTC_PUSH[9];
  uint8_t nDTC[9];
  uint32_t c1;
  uint8_t a;
  uint8_t c;
  uint16_t pt;
  uint16_t p;
  uint16_t k;
  uint16_t j;
  uint16_t i;
  uint16_t D.6263;
  long unsigned int D.6254;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  DTC_Item.f.lv = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.hv = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.can_l = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.can_l_busoff = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.can_r = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.can_r_busoff = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.can_ecu = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.can_ecu_busoff = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d1_oc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d1_open_short = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d1_g_vcc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d2_oc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d2_open_short = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d2_g_vcc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d3_oc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d3_open_short = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d3_g_vcc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d4_oc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d4_open_short = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d4_g_vcc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d5_oc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d5_open_short = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d5_g_vcc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d6_oc = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d6_open_short = 1;
  # DEBUG BEGIN_STMT
  DTC_Item.f.d6_g_vcc = 1;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = (int) i;
  _2 = (int) i;
  _3 = DTC_Item._c[_1];
  DTC_PUSH[_2] = _3;
  # DEBUG BEGIN_STMT
  _4 = (int) i;
  _5 = (int) i;
  _6 = DTC_Item_Old._c[_4];
  DTC_PUSH_OLD[_5] = _6;
  # DEBUG BEGIN_STMT
  i.8_7 = i;
  i = i.8_7 + 1;

  <bb 4> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  if (type == 10)
    goto <bb 6>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 8>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  _8 = (int) i;
  DTC_Item._c[_8] = 255;
  # DEBUG BEGIN_STMT
  _9 = (int) i;
  DTC_Item_Old._c[_9] = 255;
  # DEBUG BEGIN_STMT
  i.9_10 = i;
  i = i.9_10 + 1;

  <bb 8> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 7>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 11>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  _11 = (int) i;
  TABLE_DTC_SEND[_11] = 0;
  # DEBUG BEGIN_STMT
  i.10_12 = i;
  i = i.10_12 + 1;

  <bb 11> :
  # DEBUG BEGIN_STMT
  if (i <= 199)
    goto <bb 10>; [INV]
  else
    goto <bb 12>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  k = 0;
  # DEBUG BEGIN_STMT
  p = 0;
  # DEBUG BEGIN_STMT
  pt = 0;
  # DEBUG BEGIN_STMT
  j = 0;
  goto <bb 35>; [INV]

  <bb 13> :
  # DEBUG BEGIN_STMT
  c = 128;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 33>; [INV]

  <bb 14> :
  # DEBUG BEGIN_STMT
  _13 = (int) j;
  _14 = DTC_Item._c[_13];
  _15 = c & _14;
  if (_15 != 0)
    goto <bb 16>; [INV]
  else
    goto <bb 15>; [INV]

  <bb 15> :
  _16 = (int) j;
  _17 = DTC_Item_Old._c[_16];
  _18 = c & _17;
  if (_18 != 0)
    goto <bb 16>; [INV]
  else
    goto <bb 32>; [INV]

  <bb 16> :
  # DEBUG BEGIN_STMT
  k = 0;
  goto <bb 18>; [INV]

  <bb 17> :
  # DEBUG BEGIN_STMT
  _19 = (int) p;
  _20 = TFAIL_NAME[_19];
  _21 = (sizetype) k;
  _22 = _20 + _21;
  _23 = (int) k;
  _24 = *_22;
  nDTC[_23] = _24;
  # DEBUG BEGIN_STMT
  k.11_25 = k;
  k = k.11_25 + 1;

  <bb 18> :
  # DEBUG BEGIN_STMT
  if (k <= 7)
    goto <bb 17>; [INV]
  else
    goto <bb 19>; [INV]

  <bb 19> :
  # DEBUG BEGIN_STMT
  nDTC[8] = 0;
  # DEBUG BEGIN_STMT
  _26 = nDTC[0];
  if (_26 == 80)
    goto <bb 20>; [INV]
  else
    goto <bb 21>; [INV]

  <bb 20> :
  # DEBUG BEGIN_STMT
  c1 = 0;
  goto <bb 27>; [INV]

  <bb 21> :
  # DEBUG BEGIN_STMT
  _27 = nDTC[0];
  if (_27 == 67)
    goto <bb 22>; [INV]
  else
    goto <bb 23>; [INV]

  <bb 22> :
  # DEBUG BEGIN_STMT
  c1 = 4194304;
  goto <bb 27>; [INV]

  <bb 23> :
  # DEBUG BEGIN_STMT
  _28 = nDTC[0];
  if (_28 == 66)
    goto <bb 24>; [INV]
  else
    goto <bb 25>; [INV]

  <bb 24> :
  # DEBUG BEGIN_STMT
  c1 = 8388608;
  goto <bb 27>; [INV]

  <bb 25> :
  # DEBUG BEGIN_STMT
  _29 = nDTC[0];
  if (_29 == 85)
    goto <bb 26>; [INV]
  else
    goto <bb 34>; [INV]

  <bb 26> :
  # DEBUG BEGIN_STMT
  c1 = 12582912;

  <bb 27> :
  # DEBUG BEGIN_STMT
  _30 = &nDTC + 1;
  D.6254 = string_to_int (_30);
  c1 = D.6254 + c1;
  # DEBUG BEGIN_STMT
  a = 0;
  # DEBUG BEGIN_STMT
  _31 = (int) j;
  _32 = DTC_Item_Old._c[_31];
  _33 = c & _32;
  if (_33 != 0)
    goto <bb 28>; [INV]
  else
    goto <bb 29>; [INV]

  <bb 28> :
  # DEBUG BEGIN_STMT
  a = a | 8;

  <bb 29> :
  # DEBUG BEGIN_STMT
  _34 = (int) j;
  _35 = DTC_Item._c[_34];
  _36 = c & _35;
  if (_36 != 0)
    goto <bb 30>; [INV]
  else
    goto <bb 31>; [INV]

  <bb 30> :
  # DEBUG BEGIN_STMT
  a = a | 1;

  <bb 31> :
  # DEBUG BEGIN_STMT
  _37 = c1 >> 16;
  _38 = (int) pt;
  _39 = (unsigned char) _37;
  TABLE_DTC_SEND[_38] = _39;
  # DEBUG BEGIN_STMT
  pt.12_40 = pt;
  pt = pt.12_40 + 1;
  # DEBUG BEGIN_STMT
  _41 = c1 >> 8;
  _42 = (int) pt;
  _43 = (unsigned char) _41;
  TABLE_DTC_SEND[_42] = _43;
  # DEBUG BEGIN_STMT
  pt.13_44 = pt;
  pt = pt.13_44 + 1;
  # DEBUG BEGIN_STMT
  _45 = (int) pt;
  _46 = (unsigned char) c1;
  TABLE_DTC_SEND[_45] = _46;
  # DEBUG BEGIN_STMT
  pt.14_47 = pt;
  pt = pt.14_47 + 1;
  # DEBUG BEGIN_STMT
  _48 = (int) pt;
  TABLE_DTC_SEND[_48] = a;
  # DEBUG BEGIN_STMT
  pt.15_49 = pt;
  pt = pt.15_49 + 1;

  <bb 32> :
  # DEBUG BEGIN_STMT
  p.16_50 = p;
  p = p.16_50 + 1;
  # DEBUG BEGIN_STMT
  c = c >> 1;
  # DEBUG BEGIN_STMT
  i.17_51 = i;
  i = i.17_51 + 1;

  <bb 33> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 14>; [INV]
  else
    goto <bb 34>; [INV]

  <bb 34> :
  # DEBUG BEGIN_STMT
  j.18_52 = j;
  j = j.18_52 + 1;

  <bb 35> :
  # DEBUG BEGIN_STMT
  if (j <= 7)
    goto <bb 13>; [INV]
  else
    goto <bb 36>; [INV]

  <bb 36> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  if (type == 10)
    goto <bb 37>; [INV]
  else
    goto <bb 38>; [INV]

  <bb 37> :
  # DEBUG BEGIN_STMT
  _53 = DTC_PUSH[0];
  DTC_Item._c[0] = _53;
  # DEBUG BEGIN_STMT
  _54 = DTC_PUSH[1];
  DTC_Item._c[1] = _54;
  # DEBUG BEGIN_STMT
  _55 = DTC_PUSH[2];
  DTC_Item._c[2] = _55;
  # DEBUG BEGIN_STMT
  _56 = DTC_PUSH_OLD[0];
  DTC_Item_Old._c[0] = _56;
  # DEBUG BEGIN_STMT
  _57 = DTC_PUSH_OLD[1];
  DTC_Item_Old._c[1] = _57;
  # DEBUG BEGIN_STMT
  _58 = DTC_PUSH_OLD[2];
  DTC_Item_Old._c[2] = _58;

  <bb 38> :
  # DEBUG BEGIN_STMT
  _59 = (int) pt;
  TABLE_DTC_SEND[_59] = 0;
  # DEBUG BEGIN_STMT
  D.6263 = pt;
  nDTC = {CLOBBER};
  DTC_PUSH = {CLOBBER};
  DTC_PUSH_OLD = {CLOBBER};
  return D.6263;

}


dtc_string_to_code (uint16_t p)
{
  uint32_t c1;
  uint8_t nDTC[9];
  uint16_t k;
  uint32_t D.6234;
  long unsigned int D.6233;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  c1 = 0;
  # DEBUG BEGIN_STMT
  k = 0;
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = (int) p;
  _2 = TFAIL_NAME[_1];
  _3 = (sizetype) k;
  _4 = _2 + _3;
  _5 = (int) k;
  _6 = *_4;
  nDTC[_5] = _6;
  # DEBUG BEGIN_STMT
  k.7_7 = k;
  k = k.7_7 + 1;

  <bb 4> :
  # DEBUG BEGIN_STMT
  if (k <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  nDTC[8] = 0;
  # DEBUG BEGIN_STMT
  _8 = nDTC[0];
  if (_8 == 80)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  c1 = 0;
  goto <bb 13>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  _9 = nDTC[0];
  if (_9 == 67)
    goto <bb 8>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  c1 = 4194304;
  goto <bb 13>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  _10 = nDTC[0];
  if (_10 == 66)
    goto <bb 10>; [INV]
  else
    goto <bb 11>; [INV]

  <bb 10> :
  # DEBUG BEGIN_STMT
  c1 = 8388608;
  goto <bb 13>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  _11 = nDTC[0];
  if (_11 == 85)
    goto <bb 12>; [INV]
  else
    goto <bb 13>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  c1 = 12582912;

  <bb 13> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  D.6233 = string_to_int (&nDTC[1]);
  c1 = D.6233 + c1;
  # DEBUG BEGIN_STMT
  D.6234 = c1;
  nDTC = {CLOBBER};
  return D.6234;

}


dtc_write ()
{
  volatile vuint8_t * p;
  uint32_t ps;
  volatile vuint32_t data[3];
  uint32_t k;
  uint32_t i;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  ps = 8421392;
  # DEBUG BEGIN_STMT
  _1 = DTC_Item._c[0];
  _2 = (long unsigned int) _1;
  data[0] = _2;
  # DEBUG BEGIN_STMT
  _3 = data[0];
  _4 = _3 << 8;
  data[0] = _4;
  # DEBUG BEGIN_STMT
  _5 = data[0];
  _6 = DTC_Item._c[1];
  _7 = (long unsigned int) _6;
  _8 = _5 + _7;
  data[0] = _8;
  # DEBUG BEGIN_STMT
  _9 = data[0];
  _10 = _9 << 8;
  data[0] = _10;
  # DEBUG BEGIN_STMT
  _11 = data[0];
  _12 = DTC_Item._c[2];
  _13 = (long unsigned int) _12;
  _14 = _11 + _13;
  data[0] = _14;
  # DEBUG BEGIN_STMT
  _15 = data[0];
  _16 = _15 << 8;
  data[0] = _16;
  # DEBUG BEGIN_STMT
  _17 = data[0];
  _18 = DTC_Item._c[3];
  _19 = (long unsigned int) _18;
  _20 = _17 + _19;
  data[0] = _20;
  # DEBUG BEGIN_STMT
  _21 = DTC_Item._c[4];
  _22 = (long unsigned int) _21;
  data[1] = _22;
  # DEBUG BEGIN_STMT
  _23 = data[1];
  _24 = _23 << 8;
  data[1] = _24;
  # DEBUG BEGIN_STMT
  _25 = data[1];
  _26 = DTC_Item._c[5];
  _27 = (long unsigned int) _26;
  _28 = _25 + _27;
  data[1] = _28;
  # DEBUG BEGIN_STMT
  _29 = data[1];
  _30 = _29 << 8;
  data[1] = _30;
  # DEBUG BEGIN_STMT
  _31 = data[1];
  _32 = DTC_Item._c[6];
  _33 = (long unsigned int) _32;
  _34 = _31 + _33;
  data[1] = _34;
  # DEBUG BEGIN_STMT
  _35 = data[1];
  _36 = _35 << 8;
  data[1] = _36;
  # DEBUG BEGIN_STMT
  _37 = data[1];
  _38 = DTC_Item._c[7];
  _39 = (long unsigned int) _38;
  _40 = _37 + _39;
  data[1] = _40;
  # DEBUG BEGIN_STMT
  ps = 8421400;
  # DEBUG BEGIN_STMT
  _41 = DTC_Item_Old._c[0];
  _42 = (long unsigned int) _41;
  data[0] = _42;
  # DEBUG BEGIN_STMT
  _43 = data[0];
  _44 = _43 << 8;
  data[0] = _44;
  # DEBUG BEGIN_STMT
  _45 = data[0];
  _46 = DTC_Item_Old._c[1];
  _47 = (long unsigned int) _46;
  _48 = _45 + _47;
  data[0] = _48;
  # DEBUG BEGIN_STMT
  _49 = data[0];
  _50 = _49 << 8;
  data[0] = _50;
  # DEBUG BEGIN_STMT
  _51 = data[0];
  _52 = DTC_Item_Old._c[2];
  _53 = (long unsigned int) _52;
  _54 = _51 + _53;
  data[0] = _54;
  # DEBUG BEGIN_STMT
  _55 = data[0];
  _56 = _55 << 8;
  data[0] = _56;
  # DEBUG BEGIN_STMT
  _57 = data[0];
  _58 = DTC_Item_Old._c[3];
  _59 = (long unsigned int) _58;
  _60 = _57 + _59;
  data[0] = _60;
  # DEBUG BEGIN_STMT
  _61 = DTC_Item_Old._c[4];
  _62 = (long unsigned int) _61;
  data[1] = _62;
  # DEBUG BEGIN_STMT
  _63 = data[1];
  _64 = _63 << 8;
  data[1] = _64;
  # DEBUG BEGIN_STMT
  _65 = data[1];
  _66 = DTC_Item_Old._c[5];
  _67 = (long unsigned int) _66;
  _68 = _65 + _67;
  data[1] = _68;
  # DEBUG BEGIN_STMT
  _69 = data[1];
  _70 = _69 << 8;
  data[1] = _70;
  # DEBUG BEGIN_STMT
  _71 = data[1];
  _72 = DTC_Item_Old._c[6];
  _73 = (long unsigned int) _72;
  _74 = _71 + _73;
  data[1] = _74;
  # DEBUG BEGIN_STMT
  _75 = data[1];
  _76 = _75 << 8;
  data[1] = _76;
  # DEBUG BEGIN_STMT
  _77 = data[1];
  _78 = DTC_Item_Old._c[7];
  _79 = (long unsigned int) _78;
  _80 = _77 + _79;
  data[1] = _80;
  # DEBUG BEGIN_STMT
  data[0] = 10002;
  # DEBUG BEGIN_STMT
  data[1] = 10003;
  # DEBUG BEGIN_STMT
  ps = 8421504;
  # DEBUG BEGIN_STMT
  programDword_data_flash (ps, &data);
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _81 = DTC_Item._c[i];
  DTC_Item_wr._c[i] = _81;
  # DEBUG BEGIN_STMT
  _82 = DTC_Item_Old._c[i];
  DTC_Item_wr_Old._c[i] = _82;
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 4> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  return;

}


dtc_control ()
{
  uint8_t wr;
  uint8_t i;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  _1 = uds.session;
  if (_1 <= 1)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  uds.dtc_check_inhibit = 0;

  <bb 4> :
  # DEBUG BEGIN_STMT
  CAN_DTC_Data_Set (&DTC_Item, &DTC_Item_Old);
  # DEBUG BEGIN_STMT
  wr = 0;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 10>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  _2 = (int) i;
  _3 = DTC_Item._c[_2];
  _4 = (int) i;
  _5 = DTC_Item_wr._c[_4];
  if (_3 != _5)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  wr.4_6 = wr;
  wr = wr.4_6 + 1;

  <bb 7> :
  # DEBUG BEGIN_STMT
  _7 = (int) i;
  _8 = DTC_Item_Old._c[_7];
  _9 = (int) i;
  _10 = DTC_Item_wr_Old._c[_9];
  if (_8 != _10)
    goto <bb 8>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  wr.5_11 = wr;
  wr = wr.5_11 + 1;

  <bb 9> :
  # DEBUG BEGIN_STMT
  _12 = (int) i;
  _13 = DTC_Item_Old._c[_12];
  _14 = (int) i;
  _15 = DTC_Item._c[_14];
  _16 = (int) i;
  _17 = _13 | _15;
  DTC_Item_Old._c[_16] = _17;
  # DEBUG BEGIN_STMT
  i.6_18 = i;
  i = i.6_18 + 1;

  <bb 10> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 5>; [INV]
  else
    goto <bb 11>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  if (wr != 0)
    goto <bb 12>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 12> :
  _19 = uds.timeout;
  if (_19 == 0)
    goto <bb 13>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 13> :
  # DEBUG BEGIN_STMT
  dtc_write ();

  <bb 14> :
  return;

}


dtc_read ()
{
  volatile vuint32_t sign;
  volatile vuint32_t buf[8];
  volatile vuint32_t * p;
  uint32_t n;
  uint32_t i;
  uint32_t add;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  p = 8421504B;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  p.1_1 = p;
  p = p.1_1 + 4;
  _2 = *p.1_1;
  buf[i] = _2;
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 4> :
  # DEBUG BEGIN_STMT
  if (i <= 3)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  _3 = buf[0];
  if (_3 != 10002)
    goto <bb 6>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 6> :
  # DEBUG BEGIN_STMT
  monprintf ("DTC SIGN fail clear\n\r");
  # DEBUG BEGIN_STMT
  dtc_clear ();
  goto <bb 8>; [INV]

  <bb 7> :
  # DEBUG BEGIN_STMT
  monprintf ("DTC SIGN ok\n\r");

  <bb 8> :
  # DEBUG BEGIN_STMT
  p = 8421392B;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 10>; [INV]

  <bb 9> :
  # DEBUG BEGIN_STMT
  p.2_4 = p;
  p = p.2_4 + 4;
  _5 = *p.2_4;
  buf[i] = _5;
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 10> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 9>; [INV]
  else
    goto <bb 11>; [INV]

  <bb 11> :
  # DEBUG BEGIN_STMT
  p = 8421392B;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 13>; [INV]

  <bb 12> :
  # DEBUG BEGIN_STMT
  p.3_6 = p;
  p = p.3_6 + 4;
  _7 = *p.3_6;
  buf[i] = _7;
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 13> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 12>; [INV]
  else
    goto <bb 14>; [INV]

  <bb 14> :
  # DEBUG BEGIN_STMT
  _8 = buf[0];
  _9 = buf[1];
  _10 = buf[2];
  _11 = buf[3];
  monprintf ("\n\rDTC :%08X,%08X,%08X,%08X\n\r", _8, _9, _10, _11);
  # DEBUG BEGIN_STMT
  _12 = buf[0];
  _13 = _12 >> 24;
  _14 = (unsigned char) _13;
  DTC_Item._c[0] = _14;
  # DEBUG BEGIN_STMT
  _15 = buf[0];
  _16 = _15 >> 16;
  _17 = (unsigned char) _16;
  DTC_Item._c[1] = _17;
  # DEBUG BEGIN_STMT
  _18 = buf[0];
  _19 = _18 >> 8;
  _20 = (unsigned char) _19;
  DTC_Item._c[2] = _20;
  # DEBUG BEGIN_STMT
  _21 = buf[0];
  _22 = (unsigned char) _21;
  DTC_Item._c[3] = _22;
  # DEBUG BEGIN_STMT
  _23 = buf[1];
  _24 = _23 >> 24;
  _25 = (unsigned char) _24;
  DTC_Item._c[4] = _25;
  # DEBUG BEGIN_STMT
  _26 = buf[1];
  _27 = _26 >> 16;
  _28 = (unsigned char) _27;
  DTC_Item._c[5] = _28;
  # DEBUG BEGIN_STMT
  _29 = buf[1];
  _30 = _29 >> 8;
  _31 = (unsigned char) _30;
  DTC_Item._c[6] = _31;
  # DEBUG BEGIN_STMT
  _32 = buf[1];
  _33 = (unsigned char) _32;
  DTC_Item._c[7] = _33;
  # DEBUG BEGIN_STMT
  _34 = buf[2];
  _35 = _34 >> 24;
  _36 = (unsigned char) _35;
  DTC_Item_Old._c[0] = _36;
  # DEBUG BEGIN_STMT
  _37 = buf[2];
  _38 = _37 >> 16;
  _39 = (unsigned char) _38;
  DTC_Item_Old._c[1] = _39;
  # DEBUG BEGIN_STMT
  _40 = buf[2];
  _41 = _40 >> 8;
  _42 = (unsigned char) _41;
  DTC_Item_Old._c[2] = _42;
  # DEBUG BEGIN_STMT
  _43 = buf[2];
  _44 = (unsigned char) _43;
  DTC_Item_Old._c[3] = _44;
  # DEBUG BEGIN_STMT
  _45 = buf[3];
  _46 = _45 >> 24;
  _47 = (unsigned char) _46;
  DTC_Item_Old._c[4] = _47;
  # DEBUG BEGIN_STMT
  _48 = buf[3];
  _49 = _48 >> 16;
  _50 = (unsigned char) _49;
  DTC_Item_Old._c[5] = _50;
  # DEBUG BEGIN_STMT
  _51 = buf[3];
  _52 = _51 >> 8;
  _53 = (unsigned char) _52;
  DTC_Item_Old._c[6] = _53;
  # DEBUG BEGIN_STMT
  _54 = buf[3];
  _55 = (unsigned char) _54;
  DTC_Item_Old._c[7] = _55;
  # DEBUG BEGIN_STMT
  OutStr ("DTC_Item:");
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 16>; [INV]

  <bb 15> :
  # DEBUG BEGIN_STMT
  _56 = DTC_Item._c[i];
  put_charp (_56);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 16> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 15>; [INV]
  else
    goto <bb 17>; [INV]

  <bb 17> :
  # DEBUG BEGIN_STMT
  put_cr ();
  # DEBUG BEGIN_STMT
  OutStr ("DTC_Item_Old:");
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 19>; [INV]

  <bb 18> :
  # DEBUG BEGIN_STMT
  _57 = DTC_Item_Old._c[i];
  put_charp (_57);
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 19> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 18>; [INV]
  else
    goto <bb 20>; [INV]

  <bb 20> :
  # DEBUG BEGIN_STMT
  put_cr ();
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 22>; [INV]

  <bb 21> :
  # DEBUG BEGIN_STMT
  _58 = DTC_Item._c[i];
  DTC_Item_wr._c[i] = _58;
  # DEBUG BEGIN_STMT
  _59 = DTC_Item_Old._c[i];
  DTC_Item_wr_Old._c[i] = _59;
  # DEBUG BEGIN_STMT
  _60 = DTC_Item._c[i];
  DTC_Item_event._c[i] = _60;
  # DEBUG BEGIN_STMT
  DTC_Item_new._c[i] = 0;
  # DEBUG BEGIN_STMT
  i = i + 1;

  <bb 22> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 21>; [INV]
  else
    goto <bb 23>; [INV]

  <bb 23> :
  return;

}


dtc_clear ()
{
  uint8_t i;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  _1 = (int) i;
  DTC_Item._c[_1] = 0;
  # DEBUG BEGIN_STMT
  _2 = (int) i;
  DTC_Item_Old._c[_2] = 0;
  # DEBUG BEGIN_STMT
  _3 = (int) i;
  DTC_Item_event._c[_3] = 0;
  # DEBUG BEGIN_STMT
  _4 = (int) i;
  DTC_Item_new._c[_4] = 0;
  # DEBUG BEGIN_STMT
  i.0_5 = i;
  i = i.0_5 + 1;

  <bb 4> :
  # DEBUG BEGIN_STMT
  if (i <= 7)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  # DEBUG BEGIN_STMT
  dtc_write ();
  return;

}


write_DTC_to_EEP (uint8_t dp)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  return;

}


CAN_DTC_Data_Set (union _DTC_Items_Type_ * pX, union _DTC_Items_Type_ * pX_old)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  _1 = uds.dtc_check_inhibit;
  if (_1 == 1)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  // predicted unlikely by early return (on trees) predictor.

  <bb 4> :
  return;

}


