
Marking local functions:


Marking externally visible functions: programDword_data_flash string_to_int put_charp put_cr monprintf OutStr OutDev0 D2C delayN


Marking externally visible variables:


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

__builtin_va_end/40 (__builtin_va_end) @06d591c0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: monprintf/32 
  Calls: 
vsprintf/39 (vsprintf) @06d590e0
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: monprintf/32 
  Calls: 
__builtin_va_start/38 (__builtin_va_start) @06d59000
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: monprintf/32 
  Calls: 
Lpuart_Uart_Ip_SyncSend/37 (Lpuart_Uart_Ip_SyncSend) @06bd5d20
  Type: function
  Visibility: external public
  References: 
  Referring: 
  Availability: not_available
  Function flags: optimize_size
  Called by: OutDev0/30 
  Calls: 
programDword_data_flash/36 (programDword_data_flash) @06bd5700
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: 
string_to_int/35 (string_to_int) @06bd5460
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: 
put_charp/34 (put_charp) @06bd51c0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: OutDev0/30 OutDev0/30 D2C/29 OutDev0/30 D2C/29 
put_cr/33 (put_cr) @06bd1ee0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: OutDev0/30 OutDev0/30 
monprintf/32 (monprintf) @06bd1700
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: OutStr/31 __builtin_va_end/40 vsprintf/39 __builtin_va_start/38 
OutStr/31 (OutStr) @06bd1e00
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: monprintf/32 
  Calls: OutDev0/30 
OutDev0/30 (OutDev0) @06bd1b60
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: put_charp/34 put_charp/34 put_charp/34 put_cr/33 put_cr/33 OutStr/31 
  Calls: Lpuart_Uart_Ip_SyncSend/37 
D2C/29 (D2C) @06bd18c0
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: put_charp/34 put_charp/34 
  Calls: 
delayN/28 (delayN) @06bd1620
  Type: function definition analyzed
  Visibility: externally_visible public
  References: 
  Referring: 
  Availability: available
  Function flags: body optimize_size
  Called by: 
  Calls: 
programDword_data_flash (uint32_t address, uint32_t * data)
{
  uint32_t i;
  uint32_t size;
  uint16_t ret;
  uint16_t D.6678;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  size = 8;
  # DEBUG BEGIN_STMT
  if (ret != 0)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  D.6678 = ret;
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  D.6678 = ret;

  <bb 5> :
  return D.6678;

}


string_to_int (uint8_t * buf)
{
  uint32_t n;
  uint32_t p;
  uint32_t k;
  uint32_t j;
  uint32_t i;
  uint32_t D.6674;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  j = 0;
  # DEBUG BEGIN_STMT
  p = 0;
  # DEBUG BEGIN_STMT
  n = 0;
  # DEBUG BEGIN_STMT
  i = 0;
  goto <bb 13>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  k = 0;
  # DEBUG BEGIN_STMT
  _1 = buf + n;
  _2 = *_1;
  _3 = (int) _2;
  switch (_3) <default: <L17> [INV], case 48 ... 57: <L1> [INV], case 65 ... 70: <L11> [INV]>

  <bb 4> :
<L1>:
  # DEBUG BEGIN_STMT
  _4 = buf + n;
  _5 = *_4;
  _6 = (long unsigned int) _5;
  k = _6 & 15;
  # DEBUG BEGIN_STMT
  p = p + 1;
  # DEBUG BEGIN_STMT
  goto <bb 10>; [INV]

  <bb 5> :
<L11>:
  # DEBUG BEGIN_STMT
  _7 = buf + n;
  _8 = *_7;
  _9 = (int) _8;
  _10 = _9 + -55;
  k = (uint32_t) _10;
  # DEBUG BEGIN_STMT
  p = p + 1;
  # DEBUG BEGIN_STMT
  goto <bb 10>; [INV]

  <bb 6> :
<L17>:
  # DEBUG BEGIN_STMT
  if (j != 0)
    goto <bb 8>; [INV]
  else
    goto <bb 7>; [INV]

  <bb 7> :
  if (p != 0)
    goto <bb 8>; [INV]
  else
    goto <bb 9>; [INV]

  <bb 8> :
  # DEBUG BEGIN_STMT
  i = 8;

  <bb 9> :
  # DEBUG BEGIN_STMT
  k = 0;
  # DEBUG BEGIN_STMT

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

  <bb 11> :
  # DEBUG BEGIN_STMT
  _11 = j << 4;
  j = k + _11;

  <bb 12> :
  # DEBUG BEGIN_STMT
  n = n + 1;
  # DEBUG BEGIN_STMT
  i = i + 1;

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

  <bb 14> :
  # DEBUG BEGIN_STMT
  D.6674 = j;
  return D.6674;

}


put_charp (unsigned char a)
{
  unsigned char i;

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  i = a >> 4;
  # DEBUG BEGIN_STMT
  i = i & 15;
  # DEBUG BEGIN_STMT
  _1 = D2C (i);
  OutDev0 (_1);
  # DEBUG BEGIN_STMT
  i = a & 15;
  # DEBUG BEGIN_STMT
  _2 = D2C (i);
  OutDev0 (_2);
  # DEBUG BEGIN_STMT
  OutDev0 (44);
  return;

}


put_cr ()
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  OutDev0 (13);
  # DEBUG BEGIN_STMT
  OutDev0 (10);
  return;

}


monprintf (char * msg)
{
  struct va_list argptr;
  char str[256];

  <bb 2> :
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  # DEBUG BEGIN_STMT
  __builtin_va_start (&argptr, 0);
  # DEBUG BEGIN_STMT
  vsprintf (&str, msg, argptr);
  # DEBUG BEGIN_STMT
  __builtin_va_end (&argptr);
  # DEBUG BEGIN_STMT
  str[253] = 0;
  # DEBUG BEGIN_STMT
  str[254] = 0;
  # DEBUG BEGIN_STMT
  OutStr (&str);
  str = {CLOBBER};
  argptr = {CLOBBER};
  return;

}


OutStr (const char * text)
{
  uint8_t j;

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

  <bb 3> :
  # DEBUG BEGIN_STMT
  text.0_1 = text;
  text = text.0_1 + 1;
  _2 = *text.0_1;
  OutDev0 (_2);

  <bb 4> :
  # DEBUG BEGIN_STMT
  _3 = *text;
  if (_3 != 0)
    goto <bb 3>; [INV]
  else
    goto <bb 5>; [INV]

  <bb 5> :
  return;

}


OutDev0 (char c)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  Lpuart_Uart_Ip_SyncSend (0, &c, 1);
  return;

}


D2C (uint8_t c)
{
  uint8_t D.6667;

  <bb 2> :
  # DEBUG BEGIN_STMT
  if (c <= 9)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  D.6667 = c + 48;
  // predicted unlikely by early return (on trees) predictor.
  goto <bb 5>; [INV]

  <bb 4> :
  # DEBUG BEGIN_STMT
  D.6667 = c + 55;

  <bb 5> :
  return D.6667;

}


delayN (uint32_t n)
{
  <bb 2> :
  # DEBUG BEGIN_STMT
  goto <bb 4>; [INV]

  <bb 3> :
  # DEBUG BEGIN_STMT
  n = n + 4294967295;

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

  <bb 5> :
  return;

}


