Fixing struct type size struct printf_buffer_number to 12
Fixing struct type size struct printf_buffer_number to 12
Fixing struct type size struct printf_buffer_number to 12
Fixing struct type SIZE_OF struct printf_buffer_number to 12
Fixing struct type SIZE_OF struct printf_buffer_number to 12
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "Assert failed. expected:'")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_uchar(&cputc, assert_char::expect, { 0, 0, 0, 0, 0, HEXADECIMAL })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "' actual:'")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "'. ")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_string(&cputc, assert_char::message, { 0, 0 })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "
")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "ok! ")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_string(&cputc, assert_char::message, { 0, 0 })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "
")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "Assert failed. expected:")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_uint(&cputc, assert_uint::expect, { 0, 0, 0, 0, 0, DECIMAL })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, " actual:")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_uint(&cputc, assert_uint::actual, { 0, 0, 0, 0, 0, DECIMAL })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, ". ")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_string(&cputc, assert_uint::message, { 0, 0 })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "
")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "ok! ")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_string(&cputc, assert_uint::message, { 0, 0 })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "
")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "Assert failed. expected:0x")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_uint(&cputc, (unsigned int)assert_ptr::expect, { 0, 0, 0, 0, 0, HEXADECIMAL })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, " actual:0x")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_uint(&cputc, (unsigned int)assert_ptr::actual, { 0, 0, 0, 0, 0, HEXADECIMAL })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, ". ")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_string(&cputc, assert_ptr::message, { 0, 0 })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "
")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "ok! ")
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_string(&cputc, assert_ptr::message, { 0, 0 })
Setting inferred __stackcall on procedure affected by address-of __stackcall void cputc(char c) caused by statement call printf_str(&cputc, "
")
Adding parameter assignment in __stackcall procedure cputc::c = param(cputc::c)
Added struct type cast to parameter value list call printf_uchar(&cputc, assert_char::expect, (struct printf_format_number){ 0, 0, 0, 0, 0, HEXADECIMAL })
Added struct type cast to parameter value list call printf_string(&cputc, assert_char::message, (struct printf_format_string){ 0, 0 })
Added struct type cast to parameter value list call printf_string(&cputc, assert_char::message, (struct printf_format_string){ 0, 0 })
Added struct type cast to parameter value list call printf_uint(&cputc, assert_uint::expect, (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL })
Added struct type cast to parameter value list call printf_uint(&cputc, assert_uint::actual, (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL })
Added struct type cast to parameter value list call printf_string(&cputc, assert_uint::message, (struct printf_format_string){ 0, 0 })
Added struct type cast to parameter value list call printf_string(&cputc, assert_uint::message, (struct printf_format_string){ 0, 0 })
Added struct type cast to parameter value list call printf_uint(&cputc, (unsigned int)assert_ptr::expect, (struct printf_format_number){ 0, 0, 0, 0, 0, HEXADECIMAL })
Added struct type cast to parameter value list call printf_uint(&cputc, (unsigned int)assert_ptr::actual, (struct printf_format_number){ 0, 0, 0, 0, 0, HEXADECIMAL })
Added struct type cast to parameter value list call printf_string(&cputc, assert_ptr::message, (struct printf_format_string){ 0, 0 })
Added struct type cast to parameter value list call printf_string(&cputc, assert_ptr::message, (struct printf_format_string){ 0, 0 })
Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
Inlined call call __init
Eliminating unused variable with no statement memcpy::$0
Eliminating unused variable with no statement memset::$2
Eliminating unused variable with no statement gotoxy::$4
Eliminating unused variable with no statement main::$1
Eliminating unused variable with no statement main::$4
Eliminating unused variable with no statement assert_uint::$2
Eliminating unused variable with no statement assert_uint::$4
Eliminating unused variable with no statement assert_ptr::$2
Eliminating unused variable with no statement assert_ptr::$4
Calling convention STACK_CALL adding prepare/execute/finalize for call *printf_str::putc printf_str::c 
Calling convention STACK_CALL adding prepare/execute/finalize for call *printf_padding::putc printf_padding::pad 
Calling convention STACK_CALL adding prepare/execute/finalize for call *printf_number_buffer::putc printf_number_buffer::buffer_sign 
Calling convention STACK_CALL replacing param(cputc::c) with stackidx(char,cputc::OFFSET_STACK_C)
Calling convention STACK_CALL adding stack push stackpush(char) = printf_str::c
Calling convention STACK_CALL adding stack push stackpush(char) = printf_padding::pad
Calling convention STACK_CALL adding stack push stackpush(char) = printf_number_buffer::buffer_sign

CONTROL FLOW GRAPH SSA

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from cscroll::@3 cscroll::@4
  memcpy::num#2 = phi( cscroll::@3/memcpy::num#0, cscroll::@4/memcpy::num#1 )
  memcpy::destination#2 = phi( cscroll::@3/memcpy::destination#0, cscroll::@4/memcpy::destination#1 )
  memcpy::source#2 = phi( cscroll::@3/memcpy::source#0, cscroll::@4/memcpy::source#1 )
  memcpy::src#0 = ((char *)) memcpy::source#2
  memcpy::dst#0 = ((char *)) memcpy::destination#2
  memcpy::$2 = (char *)memcpy::source#2
  memcpy::src_end#0 = memcpy::$2 + memcpy::num#2
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  memcpy::destination#4 = phi( memcpy/memcpy::destination#2, memcpy::@2/memcpy::destination#5 )
  memcpy::dst#3 = phi( memcpy/memcpy::dst#0, memcpy::@2/memcpy::dst#1 )
  memcpy::src_end#1 = phi( memcpy/memcpy::src_end#0, memcpy::@2/memcpy::src_end#2 )
  memcpy::src#2 = phi( memcpy/memcpy::src#0, memcpy::@2/memcpy::src#1 )
  memcpy::$1 = memcpy::src#2 != memcpy::src_end#1
  if(memcpy::$1) goto memcpy::@2
  to:memcpy::@3
memcpy::@2: scope:[memcpy]  from memcpy::@1
  memcpy::destination#5 = phi( memcpy::@1/memcpy::destination#4 )
  memcpy::src_end#2 = phi( memcpy::@1/memcpy::src_end#1 )
  memcpy::dst#2 = phi( memcpy::@1/memcpy::dst#3 )
  memcpy::src#3 = phi( memcpy::@1/memcpy::src#2 )
  *memcpy::dst#2 = *memcpy::src#3
  memcpy::dst#1 = ++ memcpy::dst#2
  memcpy::src#1 = ++ memcpy::src#3
  to:memcpy::@1
memcpy::@3: scope:[memcpy]  from memcpy::@1
  memcpy::destination#3 = phi( memcpy::@1/memcpy::destination#4 )
  memcpy::return#0 = memcpy::destination#3
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@3
  memcpy::return#4 = phi( memcpy::@3/memcpy::return#0 )
  memcpy::return#1 = memcpy::return#4
  return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from cscroll::@5 cscroll::@6
  memset::c#5 = phi( cscroll::@5/memset::c#0, cscroll::@6/memset::c#1 )
  memset::str#4 = phi( cscroll::@5/memset::str#0, cscroll::@6/memset::str#1 )
  memset::num#2 = phi( cscroll::@5/memset::num#0, cscroll::@6/memset::num#1 )
  memset::$0 = memset::num#2 > 0
  memset::$1 = ! memset::$0
  if(memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@3
  memset::str#2 = phi( memset/memset::str#4, memset::@3/memset::str#5 )
  memset::return#0 = memset::str#2
  to:memset::@return
memset::@2: scope:[memset]  from memset
  memset::c#4 = phi( memset/memset::c#5 )
  memset::num#3 = phi( memset/memset::num#2 )
  memset::str#3 = phi( memset/memset::str#4 )
  memset::$4 = (char *)memset::str#3
  memset::end#0 = memset::$4 + memset::num#3
  memset::dst#0 = ((char *)) memset::str#3
  to:memset::@3
memset::@3: scope:[memset]  from memset::@2 memset::@4
  memset::c#3 = phi( memset::@2/memset::c#4, memset::@4/memset::c#2 )
  memset::str#5 = phi( memset::@2/memset::str#3, memset::@4/memset::str#6 )
  memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 )
  memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 )
  memset::$3 = memset::dst#2 != memset::end#1
  if(memset::$3) goto memset::@4
  to:memset::@1
memset::@4: scope:[memset]  from memset::@3
  memset::str#6 = phi( memset::@3/memset::str#5 )
  memset::end#2 = phi( memset::@3/memset::end#1 )
  memset::dst#3 = phi( memset::@3/memset::dst#2 )
  memset::c#2 = phi( memset::@3/memset::c#3 )
  *memset::dst#3 = memset::c#2
  memset::dst#1 = ++ memset::dst#3
  to:memset::@3
memset::@return: scope:[memset]  from memset::@1
  memset::return#4 = phi( memset::@1/memset::return#0 )
  memset::return#1 = memset::return#4
  return 
  to:@return

unsigned int strlen(char *str)
strlen: scope:[strlen]  from printf_number_buffer::@6 printf_string::@3
  strlen::str#5 = phi( printf_number_buffer::@6/strlen::str#1, printf_string::@3/strlen::str#2 )
  strlen::len#0 = 0
  to:strlen::@1
strlen::@1: scope:[strlen]  from strlen strlen::@2
  strlen::len#4 = phi( strlen/strlen::len#0, strlen::@2/strlen::len#1 )
  strlen::str#3 = phi( strlen/strlen::str#5, strlen::@2/strlen::str#0 )
  strlen::$0 = 0 != *strlen::str#3
  if(strlen::$0) goto strlen::@2
  to:strlen::@3
strlen::@2: scope:[strlen]  from strlen::@1
  strlen::str#4 = phi( strlen::@1/strlen::str#3 )
  strlen::len#2 = phi( strlen::@1/strlen::len#4 )
  strlen::len#1 = ++ strlen::len#2
  strlen::str#0 = ++ strlen::str#4
  to:strlen::@1
strlen::@3: scope:[strlen]  from strlen::@1
  strlen::len#3 = phi( strlen::@1/strlen::len#4 )
  strlen::return#0 = strlen::len#3
  to:strlen::@return
strlen::@return: scope:[strlen]  from strlen::@3
  strlen::return#4 = phi( strlen::@3/strlen::return#0 )
  strlen::return#1 = strlen::return#4
  return 
  to:@return

void * memchr(const void *str , char c , unsigned int n)
memchr: scope:[memchr]  from main::@1 main::@3
  memchr::c#4 = phi( main::@1/memchr::c#0, main::@3/memchr::c#1 )
  memchr::n#3 = phi( main::@1/memchr::n#0, main::@3/memchr::n#1 )
  memchr::str#2 = phi( main::@1/memchr::str#0, main::@3/memchr::str#1 )
  memchr::ptr#0 = ((char *)) memchr::str#2
  memchr::i#0 = 0
  to:memchr::@1
memchr::@1: scope:[memchr]  from memchr memchr::@4
  memchr::c#3 = phi( memchr/memchr::c#4, memchr::@4/memchr::c#5 )
  memchr::ptr#5 = phi( memchr/memchr::ptr#0, memchr::@4/memchr::ptr#1 )
  memchr::n#2 = phi( memchr/memchr::n#3, memchr::@4/memchr::n#4 )
  memchr::i#2 = phi( memchr/memchr::i#0, memchr::@4/memchr::i#1 )
  memchr::$0 = memchr::i#2 < memchr::n#2
  if(memchr::$0) goto memchr::@2
  to:memchr::@3
memchr::@2: scope:[memchr]  from memchr::@1
  memchr::n#5 = phi( memchr::@1/memchr::n#2 )
  memchr::i#4 = phi( memchr::@1/memchr::i#2 )
  memchr::c#2 = phi( memchr::@1/memchr::c#3 )
  memchr::ptr#2 = phi( memchr::@1/memchr::ptr#5 )
  memchr::$1 = *memchr::ptr#2 == memchr::c#2
  memchr::$2 = ! memchr::$1
  if(memchr::$2) goto memchr::@4
  to:memchr::@5
memchr::@3: scope:[memchr]  from memchr::@1
  memchr::return#0 = (void *)0
  to:memchr::@return
memchr::@4: scope:[memchr]  from memchr::@2
  memchr::c#5 = phi( memchr::@2/memchr::c#2 )
  memchr::n#4 = phi( memchr::@2/memchr::n#5 )
  memchr::i#3 = phi( memchr::@2/memchr::i#4 )
  memchr::ptr#3 = phi( memchr::@2/memchr::ptr#2 )
  memchr::ptr#1 = ++ memchr::ptr#3
  memchr::i#1 = ++ memchr::i#3
  to:memchr::@1
memchr::@5: scope:[memchr]  from memchr::@2
  memchr::ptr#4 = phi( memchr::@2/memchr::ptr#2 )
  memchr::return#1 = ((void *)) memchr::ptr#4
  to:memchr::@return
memchr::@return: scope:[memchr]  from memchr::@3 memchr::@5
  memchr::return#5 = phi( memchr::@3/memchr::return#0, memchr::@5/memchr::return#1 )
  memchr::return#2 = memchr::return#5
  return 
  to:@return

char toupper(char ch)
toupper: scope:[toupper]  from strupr::@2
  toupper::ch#1 = phi( strupr::@2/toupper::ch#0 )
  toupper::$0 = toupper::ch#1 >= 'a'
  toupper::$1 = toupper::ch#1 <= 'z'
  toupper::$2 = toupper::$0 && toupper::$1
  if(toupper::$2) goto toupper::@1
  to:toupper::@2
toupper::@1: scope:[toupper]  from toupper
  toupper::ch#2 = phi( toupper/toupper::ch#1 )
  toupper::$3 = toupper::ch#2 + 'A'-'a'
  toupper::return#0 = toupper::$3
  to:toupper::@return
toupper::@2: scope:[toupper]  from toupper
  toupper::ch#3 = phi( toupper/toupper::ch#1 )
  toupper::return#1 = toupper::ch#3
  to:toupper::@return
toupper::@return: scope:[toupper]  from toupper::@1 toupper::@2
  toupper::return#4 = phi( toupper::@1/toupper::return#0, toupper::@2/toupper::return#1 )
  toupper::return#2 = toupper::return#4
  return 
  to:@return

char * strupr(char *str)
strupr: scope:[strupr]  from printf_number_buffer::@11
  strupr::str#1 = phi( printf_number_buffer::@11/strupr::str#0 )
  strupr::src#0 = strupr::str#1
  to:strupr::@1
strupr::@1: scope:[strupr]  from strupr strupr::@4
  strupr::str#3 = phi( strupr/strupr::str#1, strupr::@4/strupr::str#4 )
  strupr::src#2 = phi( strupr/strupr::src#0, strupr::@4/strupr::src#1 )
  strupr::$1 = 0 != *strupr::src#2
  if(strupr::$1) goto strupr::@2
  to:strupr::@3
strupr::@2: scope:[strupr]  from strupr::@1
  strupr::str#5 = phi( strupr::@1/strupr::str#3 )
  strupr::src#3 = phi( strupr::@1/strupr::src#2 )
  toupper::ch#0 = *strupr::src#3
  call toupper
  toupper::return#3 = toupper::return#2
  to:strupr::@4
strupr::@4: scope:[strupr]  from strupr::@2
  strupr::str#4 = phi( strupr::@2/strupr::str#5 )
  strupr::src#4 = phi( strupr::@2/strupr::src#3 )
  toupper::return#5 = phi( strupr::@2/toupper::return#3 )
  strupr::$0 = toupper::return#5
  *strupr::src#4 = strupr::$0
  strupr::src#1 = ++ strupr::src#4
  to:strupr::@1
strupr::@3: scope:[strupr]  from strupr::@1
  strupr::str#2 = phi( strupr::@1/strupr::str#3 )
  strupr::return#0 = strupr::str#2
  to:strupr::@return
strupr::@return: scope:[strupr]  from strupr::@3
  strupr::return#3 = phi( strupr::@3/strupr::return#0 )
  strupr::return#1 = strupr::return#3
  return 
  to:@return

void utoa(unsigned int value , char *buffer , char radix)
utoa: scope:[utoa]  from printf_uint::@3
  utoa::buffer#21 = phi( printf_uint::@3/utoa::buffer#5 )
  utoa::value#12 = phi( printf_uint::@3/utoa::value#1 )
  utoa::radix#1 = phi( printf_uint::@3/utoa::radix#0 )
  utoa::max_digits#0 = 0
  utoa::digit_values#0 = (unsigned int *) 0
  utoa::$0 = utoa::radix#1 == DECIMAL
  if(utoa::$0) goto utoa::@1
  to:utoa::@6
utoa::@1: scope:[utoa]  from utoa
  utoa::buffer#17 = phi( utoa/utoa::buffer#21 )
  utoa::value#8 = phi( utoa/utoa::value#12 )
  utoa::max_digits#1 = 5
  utoa::digit_values#1 = RADIX_DECIMAL_VALUES
  to:utoa::@5
utoa::@6: scope:[utoa]  from utoa
  utoa::value#13 = phi( utoa/utoa::value#12 )
  utoa::buffer#16 = phi( utoa/utoa::buffer#21 )
  utoa::radix#2 = phi( utoa/utoa::radix#1 )
  utoa::$1 = utoa::radix#2 == HEXADECIMAL
  if(utoa::$1) goto utoa::@2
  to:utoa::@7
utoa::@2: scope:[utoa]  from utoa::@6
  utoa::buffer#18 = phi( utoa::@6/utoa::buffer#16 )
  utoa::value#9 = phi( utoa::@6/utoa::value#13 )
  utoa::max_digits#2 = 4
  utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES
  to:utoa::@5
utoa::@7: scope:[utoa]  from utoa::@6
  utoa::value#14 = phi( utoa::@6/utoa::value#13 )
  utoa::buffer#13 = phi( utoa::@6/utoa::buffer#16 )
  utoa::radix#3 = phi( utoa::@6/utoa::radix#2 )
  utoa::$2 = utoa::radix#3 == OCTAL
  if(utoa::$2) goto utoa::@3
  to:utoa::@8
utoa::@3: scope:[utoa]  from utoa::@7
  utoa::buffer#19 = phi( utoa::@7/utoa::buffer#13 )
  utoa::value#10 = phi( utoa::@7/utoa::value#14 )
  utoa::max_digits#3 = 6
  utoa::digit_values#3 = RADIX_OCTAL_VALUES
  to:utoa::@5
utoa::@8: scope:[utoa]  from utoa::@7
  utoa::value#15 = phi( utoa::@7/utoa::value#14 )
  utoa::buffer#10 = phi( utoa::@7/utoa::buffer#13 )
  utoa::radix#4 = phi( utoa::@7/utoa::radix#3 )
  utoa::$3 = utoa::radix#4 == BINARY
  if(utoa::$3) goto utoa::@4
  to:utoa::@9
utoa::@4: scope:[utoa]  from utoa::@8
  utoa::buffer#20 = phi( utoa::@8/utoa::buffer#10 )
  utoa::value#11 = phi( utoa::@8/utoa::value#15 )
  utoa::max_digits#4 = $10
  utoa::digit_values#4 = RADIX_BINARY_VALUES
  to:utoa::@5
utoa::@9: scope:[utoa]  from utoa::@8
  utoa::buffer#6 = phi( utoa::@8/utoa::buffer#10 )
  *utoa::buffer#6 = 'e'
  utoa::buffer#0 = ++ utoa::buffer#6
  *utoa::buffer#0 = 'r'
  utoa::buffer#1 = ++ utoa::buffer#0
  *utoa::buffer#1 = 'r'
  utoa::buffer#2 = ++ utoa::buffer#1
  *utoa::buffer#2 = 0
  to:utoa::@return
utoa::@return: scope:[utoa]  from utoa::@12 utoa::@9
  return 
  to:@return
utoa::@5: scope:[utoa]  from utoa::@1 utoa::@2 utoa::@3 utoa::@4
  utoa::buffer#15 = phi( utoa::@1/utoa::buffer#17, utoa::@2/utoa::buffer#18, utoa::@3/utoa::buffer#19, utoa::@4/utoa::buffer#20 )
  utoa::value#7 = phi( utoa::@1/utoa::value#8, utoa::@2/utoa::value#9, utoa::@3/utoa::value#10, utoa::@4/utoa::value#11 )
  utoa::digit_values#8 = phi( utoa::@1/utoa::digit_values#1, utoa::@2/utoa::digit_values#2, utoa::@3/utoa::digit_values#3, utoa::@4/utoa::digit_values#4 )
  utoa::max_digits#7 = phi( utoa::@1/utoa::max_digits#1, utoa::@2/utoa::max_digits#2, utoa::@3/utoa::max_digits#3, utoa::@4/utoa::max_digits#4 )
  utoa::started#0 = 0
  utoa::digit#0 = 0
  to:utoa::@10
utoa::@10: scope:[utoa]  from utoa::@13 utoa::@5
  utoa::buffer#11 = phi( utoa::@13/utoa::buffer#14, utoa::@5/utoa::buffer#15 )
  utoa::started#3 = phi( utoa::@13/utoa::started#4, utoa::@5/utoa::started#0 )
  utoa::value#5 = phi( utoa::@13/utoa::value#6, utoa::@5/utoa::value#7 )
  utoa::digit_values#6 = phi( utoa::@13/utoa::digit_values#7, utoa::@5/utoa::digit_values#8 )
  utoa::digit#2 = phi( utoa::@13/utoa::digit#1, utoa::@5/utoa::digit#0 )
  utoa::max_digits#5 = phi( utoa::@13/utoa::max_digits#6, utoa::@5/utoa::max_digits#7 )
  utoa::$4 = utoa::max_digits#5 - 1
  utoa::$5 = utoa::digit#2 < utoa::$4
  if(utoa::$5) goto utoa::@11
  to:utoa::@12
utoa::@11: scope:[utoa]  from utoa::@10
  utoa::max_digits#8 = phi( utoa::@10/utoa::max_digits#5 )
  utoa::buffer#12 = phi( utoa::@10/utoa::buffer#11 )
  utoa::started#2 = phi( utoa::@10/utoa::started#3 )
  utoa::value#2 = phi( utoa::@10/utoa::value#5 )
  utoa::digit_values#5 = phi( utoa::@10/utoa::digit_values#6 )
  utoa::digit#3 = phi( utoa::@10/utoa::digit#2 )
  utoa::$10 = utoa::digit#3 * SIZEOF_UNSIGNED_INT
  utoa::digit_value#0 = utoa::digit_values#5[utoa::$10]
  utoa::$6 = utoa::value#2 >= utoa::digit_value#0
  utoa::$7 = utoa::started#2 || utoa::$6
  utoa::$8 = ! utoa::$7
  if(utoa::$8) goto utoa::@13
  to:utoa::@14
utoa::@12: scope:[utoa]  from utoa::@10
  utoa::buffer#7 = phi( utoa::@10/utoa::buffer#11 )
  utoa::value#3 = phi( utoa::@10/utoa::value#5 )
  utoa::$11 = (char)utoa::value#3
  *utoa::buffer#7 = DIGITS[utoa::$11]
  utoa::buffer#3 = ++ utoa::buffer#7
  *utoa::buffer#3 = 0
  to:utoa::@return
utoa::@13: scope:[utoa]  from utoa::@11 utoa::@15
  utoa::buffer#14 = phi( utoa::@11/utoa::buffer#12, utoa::@15/utoa::buffer#4 )
  utoa::started#4 = phi( utoa::@11/utoa::started#2, utoa::@15/utoa::started#1 )
  utoa::value#6 = phi( utoa::@11/utoa::value#2, utoa::@15/utoa::value#0 )
  utoa::digit_values#7 = phi( utoa::@11/utoa::digit_values#5, utoa::@15/utoa::digit_values#9 )
  utoa::max_digits#6 = phi( utoa::@11/utoa::max_digits#8, utoa::@15/utoa::max_digits#9 )
  utoa::digit#4 = phi( utoa::@11/utoa::digit#3, utoa::@15/utoa::digit#5 )
  utoa::digit#1 = ++ utoa::digit#4
  to:utoa::@10
utoa::@14: scope:[utoa]  from utoa::@11
  utoa::digit_values#10 = phi( utoa::@11/utoa::digit_values#5 )
  utoa::max_digits#10 = phi( utoa::@11/utoa::max_digits#8 )
  utoa::digit#6 = phi( utoa::@11/utoa::digit#3 )
  utoa::digit_value#1 = phi( utoa::@11/utoa::digit_value#0 )
  utoa::value#4 = phi( utoa::@11/utoa::value#2 )
  utoa::buffer#8 = phi( utoa::@11/utoa::buffer#12 )
  utoa_append::buffer#0 = utoa::buffer#8
  utoa_append::value#0 = utoa::value#4
  utoa_append::sub#0 = utoa::digit_value#1
  call utoa_append
  utoa_append::return#0 = utoa_append::return#2
  to:utoa::@15
utoa::@15: scope:[utoa]  from utoa::@14
  utoa::digit_values#9 = phi( utoa::@14/utoa::digit_values#10 )
  utoa::max_digits#9 = phi( utoa::@14/utoa::max_digits#10 )
  utoa::digit#5 = phi( utoa::@14/utoa::digit#6 )
  utoa::buffer#9 = phi( utoa::@14/utoa::buffer#8 )
  utoa_append::return#3 = phi( utoa::@14/utoa_append::return#0 )
  utoa::$9 = utoa_append::return#3
  utoa::value#0 = utoa::$9
  utoa::buffer#4 = ++ utoa::buffer#9
  utoa::started#1 = 1
  to:utoa::@13

unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
utoa_append: scope:[utoa_append]  from utoa::@14
  utoa_append::buffer#3 = phi( utoa::@14/utoa_append::buffer#0 )
  utoa_append::sub#3 = phi( utoa::@14/utoa_append::sub#0 )
  utoa_append::value#5 = phi( utoa::@14/utoa_append::value#0 )
  utoa_append::digit#0 = 0
  to:utoa_append::@1
utoa_append::@1: scope:[utoa_append]  from utoa_append utoa_append::@2
  utoa_append::buffer#2 = phi( utoa_append/utoa_append::buffer#3, utoa_append::@2/utoa_append::buffer#4 )
  utoa_append::digit#4 = phi( utoa_append/utoa_append::digit#0, utoa_append::@2/utoa_append::digit#1 )
  utoa_append::sub#1 = phi( utoa_append/utoa_append::sub#3, utoa_append::@2/utoa_append::sub#2 )
  utoa_append::value#2 = phi( utoa_append/utoa_append::value#5, utoa_append::@2/utoa_append::value#1 )
  utoa_append::$0 = utoa_append::value#2 >= utoa_append::sub#1
  if(utoa_append::$0) goto utoa_append::@2
  to:utoa_append::@3
utoa_append::@2: scope:[utoa_append]  from utoa_append::@1
  utoa_append::buffer#4 = phi( utoa_append::@1/utoa_append::buffer#2 )
  utoa_append::sub#2 = phi( utoa_append::@1/utoa_append::sub#1 )
  utoa_append::value#3 = phi( utoa_append::@1/utoa_append::value#2 )
  utoa_append::digit#2 = phi( utoa_append::@1/utoa_append::digit#4 )
  utoa_append::digit#1 = ++ utoa_append::digit#2
  utoa_append::value#1 = utoa_append::value#3 - utoa_append::sub#2
  to:utoa_append::@1
utoa_append::@3: scope:[utoa_append]  from utoa_append::@1
  utoa_append::value#4 = phi( utoa_append::@1/utoa_append::value#2 )
  utoa_append::buffer#1 = phi( utoa_append::@1/utoa_append::buffer#2 )
  utoa_append::digit#3 = phi( utoa_append::@1/utoa_append::digit#4 )
  *utoa_append::buffer#1 = DIGITS[utoa_append::digit#3]
  utoa_append::return#1 = utoa_append::value#4
  to:utoa_append::@return
utoa_append::@return: scope:[utoa_append]  from utoa_append::@3
  utoa_append::return#4 = phi( utoa_append::@3/utoa_append::return#1 )
  utoa_append::return#2 = utoa_append::return#4
  return 
  to:@return

void clrscr()
clrscr: scope:[clrscr]  from main
  clrscr::line_text#0 = CONIO_SCREEN_TEXT
  clrscr::line_cols#0 = CONIO_SCREEN_COLORS
  clrscr::l#0 = 0
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr clrscr::@6
  clrscr::line_cols#6 = phi( clrscr/clrscr::line_cols#0, clrscr::@6/clrscr::line_cols#1 )
  clrscr::line_text#6 = phi( clrscr/clrscr::line_text#0, clrscr::@6/clrscr::line_text#1 )
  clrscr::l#2 = phi( clrscr/clrscr::l#0, clrscr::@6/clrscr::l#1 )
  clrscr::$0 = clrscr::l#2 < $19
  if(clrscr::$0) goto clrscr::@2
  to:clrscr::@3
clrscr::@2: scope:[clrscr]  from clrscr::@1
  clrscr::l#5 = phi( clrscr::@1/clrscr::l#2 )
  clrscr::line_cols#5 = phi( clrscr::@1/clrscr::line_cols#6 )
  clrscr::line_text#5 = phi( clrscr::@1/clrscr::line_text#6 )
  clrscr::c#0 = 0
  to:clrscr::@4
clrscr::@3: scope:[clrscr]  from clrscr::@1
  conio_cursor_x = 0
  conio_cursor_y = 0
  conio_line_text = CONIO_SCREEN_TEXT
  conio_line_color = CONIO_SCREEN_COLORS
  to:clrscr::@return
clrscr::@4: scope:[clrscr]  from clrscr::@2 clrscr::@5
  clrscr::l#4 = phi( clrscr::@2/clrscr::l#5, clrscr::@5/clrscr::l#6 )
  clrscr::line_cols#4 = phi( clrscr::@2/clrscr::line_cols#5, clrscr::@5/clrscr::line_cols#2 )
  clrscr::line_text#4 = phi( clrscr::@2/clrscr::line_text#5, clrscr::@5/clrscr::line_text#2 )
  clrscr::c#2 = phi( clrscr::@2/clrscr::c#0, clrscr::@5/clrscr::c#1 )
  clrscr::$1 = clrscr::c#2 < $28
  if(clrscr::$1) goto clrscr::@5
  to:clrscr::@6
clrscr::@5: scope:[clrscr]  from clrscr::@4
  clrscr::l#6 = phi( clrscr::@4/clrscr::l#4 )
  clrscr::line_cols#2 = phi( clrscr::@4/clrscr::line_cols#4 )
  clrscr::c#3 = phi( clrscr::@4/clrscr::c#2 )
  clrscr::line_text#2 = phi( clrscr::@4/clrscr::line_text#4 )
  clrscr::line_text#2[clrscr::c#3] = ' '
  clrscr::line_cols#2[clrscr::c#3] = conio_textcolor
  clrscr::c#1 = ++ clrscr::c#3
  to:clrscr::@4
clrscr::@6: scope:[clrscr]  from clrscr::@4
  clrscr::l#3 = phi( clrscr::@4/clrscr::l#4 )
  clrscr::line_cols#3 = phi( clrscr::@4/clrscr::line_cols#4 )
  clrscr::line_text#3 = phi( clrscr::@4/clrscr::line_text#4 )
  clrscr::line_text#1 = clrscr::line_text#3 + $28
  clrscr::line_cols#1 = clrscr::line_cols#3 + $28
  clrscr::l#1 = ++ clrscr::l#3
  to:clrscr::@1
clrscr::@return: scope:[clrscr]  from clrscr::@3
  return 
  to:@return

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from conio_c64_init::@1 cscroll::@2
  gotoxy::x#5 = phi( conio_c64_init::@1/gotoxy::x#2, cscroll::@2/gotoxy::x#1 )
  gotoxy::y#3 = phi( conio_c64_init::@1/gotoxy::y#2, cscroll::@2/gotoxy::y#1 )
  gotoxy::$0 = gotoxy::y#3 > $19
  gotoxy::$1 = ! gotoxy::$0
  if(gotoxy::$1) goto gotoxy::@1
  to:gotoxy::@3
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  gotoxy::y#5 = phi( gotoxy/gotoxy::y#3, gotoxy::@3/gotoxy::y#0 )
  gotoxy::x#3 = phi( gotoxy/gotoxy::x#5, gotoxy::@3/gotoxy::x#6 )
  gotoxy::$2 = gotoxy::x#3 >= $28
  gotoxy::$3 = ! gotoxy::$2
  if(gotoxy::$3) goto gotoxy::@2
  to:gotoxy::@4
gotoxy::@3: scope:[gotoxy]  from gotoxy
  gotoxy::x#6 = phi( gotoxy/gotoxy::x#5 )
  gotoxy::y#0 = 0
  to:gotoxy::@1
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1 gotoxy::@4
  gotoxy::y#4 = phi( gotoxy::@1/gotoxy::y#5, gotoxy::@4/gotoxy::y#6 )
  gotoxy::x#4 = phi( gotoxy::@1/gotoxy::x#3, gotoxy::@4/gotoxy::x#0 )
  conio_cursor_x = gotoxy::x#4
  conio_cursor_y = gotoxy::y#4
  gotoxy::$7 = (unsigned int)gotoxy::y#4
  gotoxy::line_offset#0 = gotoxy::$7 * $28
  gotoxy::$5 = CONIO_SCREEN_TEXT + gotoxy::line_offset#0
  conio_line_text = gotoxy::$5
  gotoxy::$6 = CONIO_SCREEN_COLORS + gotoxy::line_offset#0
  conio_line_color = gotoxy::$6
  to:gotoxy::@return
gotoxy::@4: scope:[gotoxy]  from gotoxy::@1
  gotoxy::y#6 = phi( gotoxy::@1/gotoxy::y#5 )
  gotoxy::x#0 = 0
  to:gotoxy::@2
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  return 
  to:@return

__stackcall void cputc(char c)
cputc: scope:[cputc]  from
  cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C)
  cputc::$0 = cputc::c#0 == '
'
  if(cputc::$0) goto cputc::@1
  to:cputc::@2
cputc::@1: scope:[cputc]  from cputc
  call cputln
  to:cputc::@4
cputc::@4: scope:[cputc]  from cputc::@1
  to:cputc::@return
cputc::@2: scope:[cputc]  from cputc
  cputc::c#1 = phi( cputc/cputc::c#0 )
  conio_line_text[conio_cursor_x] = cputc::c#1
  conio_line_color[conio_cursor_x] = conio_textcolor
  conio_cursor_x = ++ conio_cursor_x
  cputc::$1 = conio_cursor_x == $28
  cputc::$2 = ! cputc::$1
  if(cputc::$2) goto cputc::@return
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc::@2
  call cputln
  to:cputc::@5
cputc::@5: scope:[cputc]  from cputc::@3
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@2 cputc::@4 cputc::@5
  return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  conio_line_text = conio_line_text + $28
  conio_line_color = conio_line_color + $28
  conio_cursor_x = 0
  conio_cursor_y = ++ conio_cursor_y
  call cscroll
  to:cputln::@1
cputln::@1: scope:[cputln]  from cputln
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln::@1
  return 
  to:@return

char textcolor(char color)
textcolor: scope:[textcolor]  from assert_ptr::@1 assert_ptr::@2 assert_uint::@1 assert_uint::@2
  textcolor::color#4 = phi( assert_ptr::@1/textcolor::color#2, assert_ptr::@2/textcolor::color#3, assert_uint::@1/textcolor::color#0, assert_uint::@2/textcolor::color#1 )
  textcolor::old#0 = conio_textcolor
  conio_textcolor = textcolor::color#4
  textcolor::return#0 = textcolor::old#0
  to:textcolor::@return
textcolor::@return: scope:[textcolor]  from textcolor
  textcolor::return#6 = phi( textcolor/textcolor::return#0 )
  textcolor::return#1 = textcolor::return#6
  return 
  to:@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  cscroll::$0 = conio_cursor_y == $19
  cscroll::$1 = ! cscroll::$0
  if(cscroll::$1) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll
  cscroll::$7 = 0 != conio_scroll_enable
  if(cscroll::$7) goto cscroll::@3
  to:cscroll::@2
cscroll::@3: scope:[cscroll]  from cscroll::@1
  memcpy::destination#0 = (void *)CONIO_SCREEN_TEXT
  memcpy::source#0 = (void *)CONIO_SCREEN_TEXT+$28
  memcpy::num#0 = $19*$28-$28
  call memcpy
  memcpy::return#2 = memcpy::return#1
  to:cscroll::@4
cscroll::@4: scope:[cscroll]  from cscroll::@3
  memcpy::destination#1 = (void *)CONIO_SCREEN_COLORS
  memcpy::source#1 = (void *)CONIO_SCREEN_COLORS+$28
  memcpy::num#1 = $19*$28-$28
  call memcpy
  memcpy::return#3 = memcpy::return#1
  to:cscroll::@5
cscroll::@5: scope:[cscroll]  from cscroll::@4
  memset::str#0 = (void *)CONIO_SCREEN_TEXT+$19*$28-$28
  memset::c#0 = ' '
  memset::num#0 = $28
  call memset
  memset::return#2 = memset::return#1
  to:cscroll::@6
cscroll::@6: scope:[cscroll]  from cscroll::@5
  memset::str#1 = (void *)CONIO_SCREEN_COLORS+$19*$28-$28
  memset::c#1 = conio_textcolor
  memset::num#1 = $28
  call memset
  memset::return#3 = memset::return#1
  to:cscroll::@7
cscroll::@7: scope:[cscroll]  from cscroll::@6
  conio_line_text = conio_line_text - $28
  conio_line_color = conio_line_color - $28
  conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@2: scope:[cscroll]  from cscroll::@1
  gotoxy::x#1 = 0
  gotoxy::y#1 = 0
  call gotoxy
  to:cscroll::@8
cscroll::@8: scope:[cscroll]  from cscroll::@2
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@7 cscroll::@8
  return 
  to:@return

void conio_c64_init()
conio_c64_init: scope:[conio_c64_init]  from __start::__init1
  conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
  conio_c64_init::$0 = conio_c64_init::line#0 >= $19
  conio_c64_init::$1 = ! conio_c64_init::$0
  if(conio_c64_init::$1) goto conio_c64_init::@1
  to:conio_c64_init::@2
conio_c64_init::@1: scope:[conio_c64_init]  from conio_c64_init conio_c64_init::@2
  conio_c64_init::line#2 = phi( conio_c64_init/conio_c64_init::line#0, conio_c64_init::@2/conio_c64_init::line#1 )
  gotoxy::x#2 = 0
  gotoxy::y#2 = conio_c64_init::line#2
  call gotoxy
  to:conio_c64_init::@3
conio_c64_init::@3: scope:[conio_c64_init]  from conio_c64_init::@1
  to:conio_c64_init::@return
conio_c64_init::@2: scope:[conio_c64_init]  from conio_c64_init
  conio_c64_init::line#1 = $19-1
  to:conio_c64_init::@1
conio_c64_init::@return: scope:[conio_c64_init]  from conio_c64_init::@3
  return 
  to:@return

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from assert_ptr::@11 assert_ptr::@13 assert_ptr::@3 assert_ptr::@5 assert_ptr::@7 assert_ptr::@9 assert_uint::@11 assert_uint::@13 assert_uint::@3 assert_uint::@5 assert_uint::@7 assert_uint::@9 printf_number_buffer::@5 printf_string::@2
  printf_str::putc#16 = phi( assert_ptr::@11/printf_str::putc#12, assert_ptr::@13/printf_str::putc#13, assert_ptr::@3/printf_str::putc#8, assert_ptr::@5/printf_str::putc#9, assert_ptr::@7/printf_str::putc#10, assert_ptr::@9/printf_str::putc#11, assert_uint::@11/printf_str::putc#6, assert_uint::@13/printf_str::putc#7, assert_uint::@3/printf_str::putc#2, assert_uint::@5/printf_str::putc#3, assert_uint::@7/printf_str::putc#4, assert_uint::@9/printf_str::putc#5, printf_number_buffer::@5/printf_str::putc#0, printf_string::@2/printf_str::putc#1 )
  printf_str::s#16 = phi( assert_ptr::@11/printf_str::s#13, assert_ptr::@13/printf_str::s#14, assert_ptr::@3/printf_str::s#9, assert_ptr::@5/printf_str::s#10, assert_ptr::@7/printf_str::s#11, assert_ptr::@9/printf_str::s#12, assert_uint::@11/printf_str::s#7, assert_uint::@13/printf_str::s#8, assert_uint::@3/printf_str::s#3, assert_uint::@5/printf_str::s#4, assert_uint::@7/printf_str::s#5, assert_uint::@9/printf_str::s#6, printf_number_buffer::@5/printf_str::s#1, printf_string::@2/printf_str::s#2 )
  printf_str::c#0 = 0
  to:printf_str::@1
printf_str::@1: scope:[printf_str]  from printf_str printf_str::@2
  printf_str::putc#15 = phi( printf_str/printf_str::putc#16, printf_str::@2/printf_str::putc#14 )
  printf_str::s#15 = phi( printf_str/printf_str::s#16, printf_str::@2/printf_str::s#17 )
  printf_str::c#1 = *printf_str::s#15
  printf_str::$0 = printf_str::c#1
  printf_str::s#0 = ++ printf_str::s#15
  printf_str::$2 = 0 != printf_str::$0
  if(printf_str::$2) goto printf_str::@2
  to:printf_str::@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  printf_str::s#17 = phi( printf_str::@1/printf_str::s#0 )
  printf_str::putc#14 = phi( printf_str::@1/printf_str::putc#15 )
  printf_str::c#2 = phi( printf_str::@1/printf_str::c#1 )
  stackpush(char) = printf_str::c#2
  callexecute *printf_str::putc#14 
  sideeffect stackpullbytes(1)
  to:printf_str::@1
printf_str::@return: scope:[printf_str]  from printf_str::@1
  return 
  to:@return

void printf_padding(void (*putc)(char) , char pad , char length)
printf_padding: scope:[printf_padding]  from printf_number_buffer::@10 printf_number_buffer::@12 printf_number_buffer::@8 printf_string::@5 printf_string::@6
  printf_padding::putc#7 = phi( printf_number_buffer::@10/printf_padding::putc#1, printf_number_buffer::@12/printf_padding::putc#2, printf_number_buffer::@8/printf_padding::putc#0, printf_string::@5/printf_padding::putc#3, printf_string::@6/printf_padding::putc#4 )
  printf_padding::pad#7 = phi( printf_number_buffer::@10/printf_padding::pad#1, printf_number_buffer::@12/printf_padding::pad#2, printf_number_buffer::@8/printf_padding::pad#0, printf_string::@5/printf_padding::pad#3, printf_string::@6/printf_padding::pad#4 )
  printf_padding::length#6 = phi( printf_number_buffer::@10/printf_padding::length#1, printf_number_buffer::@12/printf_padding::length#2, printf_number_buffer::@8/printf_padding::length#0, printf_string::@5/printf_padding::length#3, printf_string::@6/printf_padding::length#4 )
  printf_padding::i#0 = 0
  to:printf_padding::@1
printf_padding::@1: scope:[printf_padding]  from printf_padding printf_padding::@3
  printf_padding::putc#6 = phi( printf_padding/printf_padding::putc#7, printf_padding::@3/printf_padding::putc#8 )
  printf_padding::pad#6 = phi( printf_padding/printf_padding::pad#7, printf_padding::@3/printf_padding::pad#8 )
  printf_padding::length#5 = phi( printf_padding/printf_padding::length#6, printf_padding::@3/printf_padding::length#7 )
  printf_padding::i#2 = phi( printf_padding/printf_padding::i#0, printf_padding::@3/printf_padding::i#1 )
  printf_padding::$0 = printf_padding::i#2 < printf_padding::length#5
  if(printf_padding::$0) goto printf_padding::@2
  to:printf_padding::@return
printf_padding::@2: scope:[printf_padding]  from printf_padding::@1
  printf_padding::length#8 = phi( printf_padding::@1/printf_padding::length#5 )
  printf_padding::i#4 = phi( printf_padding::@1/printf_padding::i#2 )
  printf_padding::putc#5 = phi( printf_padding::@1/printf_padding::putc#6 )
  printf_padding::pad#5 = phi( printf_padding::@1/printf_padding::pad#6 )
  stackpush(char) = printf_padding::pad#5
  callexecute *printf_padding::putc#5 
  sideeffect stackpullbytes(1)
  to:printf_padding::@3
printf_padding::@3: scope:[printf_padding]  from printf_padding::@2
  printf_padding::putc#8 = phi( printf_padding::@2/printf_padding::putc#5 )
  printf_padding::pad#8 = phi( printf_padding::@2/printf_padding::pad#5 )
  printf_padding::length#7 = phi( printf_padding::@2/printf_padding::length#8 )
  printf_padding::i#3 = phi( printf_padding::@2/printf_padding::i#4 )
  printf_padding::i#1 = ++ printf_padding::i#3
  to:printf_padding::@1
printf_padding::@return: scope:[printf_padding]  from printf_padding::@1
  return 
  to:@return

void printf_uint(void (*putc)(char) , unsigned int uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
printf_uint: scope:[printf_uint]  from assert_ptr::@4 assert_ptr::@6 assert_uint::@4 assert_uint::@6
  printf_uint::format_upper_case#8 = phi( assert_ptr::@4/printf_uint::format_upper_case#2, assert_ptr::@6/printf_uint::format_upper_case#3, assert_uint::@4/printf_uint::format_upper_case#0, assert_uint::@6/printf_uint::format_upper_case#1 )
  printf_uint::format_zero_padding#8 = phi( assert_ptr::@4/printf_uint::format_zero_padding#2, assert_ptr::@6/printf_uint::format_zero_padding#3, assert_uint::@4/printf_uint::format_zero_padding#0, assert_uint::@6/printf_uint::format_zero_padding#1 )
  printf_uint::format_justify_left#8 = phi( assert_ptr::@4/printf_uint::format_justify_left#2, assert_ptr::@6/printf_uint::format_justify_left#3, assert_uint::@4/printf_uint::format_justify_left#0, assert_uint::@6/printf_uint::format_justify_left#1 )
  printf_uint::format_min_length#8 = phi( assert_ptr::@4/printf_uint::format_min_length#2, assert_ptr::@6/printf_uint::format_min_length#3, assert_uint::@4/printf_uint::format_min_length#0, assert_uint::@6/printf_uint::format_min_length#1 )
  printf_uint::putc#8 = phi( assert_ptr::@4/printf_uint::putc#2, assert_ptr::@6/printf_uint::putc#3, assert_uint::@4/printf_uint::putc#0, assert_uint::@6/printf_uint::putc#1 )
  printf_uint::format_radix#8 = phi( assert_ptr::@4/printf_uint::format_radix#2, assert_ptr::@6/printf_uint::format_radix#3, assert_uint::@4/printf_uint::format_radix#0, assert_uint::@6/printf_uint::format_radix#1 )
  printf_uint::uvalue#7 = phi( assert_ptr::@4/printf_uint::uvalue#2, assert_ptr::@6/printf_uint::uvalue#3, assert_uint::@4/printf_uint::uvalue#0, assert_uint::@6/printf_uint::uvalue#1 )
  printf_uint::format_sign_always#4 = phi( assert_ptr::@4/printf_uint::format_sign_always#2, assert_ptr::@6/printf_uint::format_sign_always#3, assert_uint::@4/printf_uint::format_sign_always#0, assert_uint::@6/printf_uint::format_sign_always#1 )
  printf_uint::$5 = 0 != printf_uint::format_sign_always#4
  if(printf_uint::$5) goto printf_uint::@1
  to:printf_uint::@2
printf_uint::@1: scope:[printf_uint]  from printf_uint
  printf_uint::format_upper_case#6 = phi( printf_uint/printf_uint::format_upper_case#8 )
  printf_uint::format_zero_padding#6 = phi( printf_uint/printf_uint::format_zero_padding#8 )
  printf_uint::format_sign_always#7 = phi( printf_uint/printf_uint::format_sign_always#4 )
  printf_uint::format_justify_left#6 = phi( printf_uint/printf_uint::format_justify_left#8 )
  printf_uint::format_min_length#6 = phi( printf_uint/printf_uint::format_min_length#8 )
  printf_uint::putc#6 = phi( printf_uint/printf_uint::putc#8 )
  printf_uint::format_radix#6 = phi( printf_uint/printf_uint::format_radix#8 )
  printf_uint::uvalue#5 = phi( printf_uint/printf_uint::uvalue#7 )
  printf_uint::$1 = '+'
  to:printf_uint::@3
printf_uint::@2: scope:[printf_uint]  from printf_uint
  printf_uint::format_upper_case#7 = phi( printf_uint/printf_uint::format_upper_case#8 )
  printf_uint::format_zero_padding#7 = phi( printf_uint/printf_uint::format_zero_padding#8 )
  printf_uint::format_sign_always#8 = phi( printf_uint/printf_uint::format_sign_always#4 )
  printf_uint::format_justify_left#7 = phi( printf_uint/printf_uint::format_justify_left#8 )
  printf_uint::format_min_length#7 = phi( printf_uint/printf_uint::format_min_length#8 )
  printf_uint::putc#7 = phi( printf_uint/printf_uint::putc#8 )
  printf_uint::format_radix#7 = phi( printf_uint/printf_uint::format_radix#8 )
  printf_uint::uvalue#6 = phi( printf_uint/printf_uint::uvalue#7 )
  printf_uint::$0 = 0
  to:printf_uint::@3
printf_uint::@3: scope:[printf_uint]  from printf_uint::@1 printf_uint::@2
  printf_uint::format_upper_case#5 = phi( printf_uint::@1/printf_uint::format_upper_case#6, printf_uint::@2/printf_uint::format_upper_case#7 )
  printf_uint::format_zero_padding#5 = phi( printf_uint::@1/printf_uint::format_zero_padding#6, printf_uint::@2/printf_uint::format_zero_padding#7 )
  printf_uint::format_sign_always#6 = phi( printf_uint::@1/printf_uint::format_sign_always#7, printf_uint::@2/printf_uint::format_sign_always#8 )
  printf_uint::format_justify_left#5 = phi( printf_uint::@1/printf_uint::format_justify_left#6, printf_uint::@2/printf_uint::format_justify_left#7 )
  printf_uint::format_min_length#5 = phi( printf_uint::@1/printf_uint::format_min_length#6, printf_uint::@2/printf_uint::format_min_length#7 )
  printf_uint::putc#5 = phi( printf_uint::@1/printf_uint::putc#6, printf_uint::@2/printf_uint::putc#7 )
  printf_uint::format_radix#4 = phi( printf_uint::@1/printf_uint::format_radix#6, printf_uint::@2/printf_uint::format_radix#7 )
  printf_uint::uvalue#4 = phi( printf_uint::@1/printf_uint::uvalue#5, printf_uint::@2/printf_uint::uvalue#6 )
  printf_uint::$2 = phi( printf_uint::@1/printf_uint::$1, printf_uint::@2/printf_uint::$0 )
  *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) = printf_uint::$2
  utoa::value#1 = printf_uint::uvalue#4
  utoa::buffer#5 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
  utoa::radix#0 = printf_uint::format_radix#4
  call utoa
  to:printf_uint::@4
printf_uint::@4: scope:[printf_uint]  from printf_uint::@3
  printf_uint::format_radix#5 = phi( printf_uint::@3/printf_uint::format_radix#4 )
  printf_uint::format_upper_case#4 = phi( printf_uint::@3/printf_uint::format_upper_case#5 )
  printf_uint::format_zero_padding#4 = phi( printf_uint::@3/printf_uint::format_zero_padding#5 )
  printf_uint::format_sign_always#5 = phi( printf_uint::@3/printf_uint::format_sign_always#6 )
  printf_uint::format_justify_left#4 = phi( printf_uint::@3/printf_uint::format_justify_left#5 )
  printf_uint::format_min_length#4 = phi( printf_uint::@3/printf_uint::format_min_length#5 )
  printf_uint::putc#4 = phi( printf_uint::@3/printf_uint::putc#5 )
  printf_number_buffer::putc#0 = printf_uint::putc#4
  printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN)
  printf_number_buffer::buffer_digits#0 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
  printf_number_buffer::format_min_length#0 = printf_uint::format_min_length#4
  printf_number_buffer::format_justify_left#0 = printf_uint::format_justify_left#4
  printf_number_buffer::format_sign_always#0 = printf_uint::format_sign_always#5
  printf_number_buffer::format_zero_padding#0 = printf_uint::format_zero_padding#4
  printf_number_buffer::format_upper_case#0 = printf_uint::format_upper_case#4
  printf_number_buffer::format_radix#0 = printf_uint::format_radix#5
  call printf_number_buffer
  to:printf_uint::@5
printf_uint::@5: scope:[printf_uint]  from printf_uint::@4
  to:printf_uint::@return
printf_uint::@return: scope:[printf_uint]  from printf_uint::@5
  return 
  to:@return

void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
printf_number_buffer: scope:[printf_number_buffer]  from printf_uint::@4
  printf_number_buffer::format_upper_case#9 = phi( printf_uint::@4/printf_number_buffer::format_upper_case#0 )
  printf_number_buffer::putc#12 = phi( printf_uint::@4/printf_number_buffer::putc#0 )
  printf_number_buffer::buffer_sign#7 = phi( printf_uint::@4/printf_number_buffer::buffer_sign#0 )
  printf_number_buffer::buffer_digits#4 = phi( printf_uint::@4/printf_number_buffer::buffer_digits#0 )
  printf_number_buffer::format_zero_padding#4 = phi( printf_uint::@4/printf_number_buffer::format_zero_padding#0 )
  printf_number_buffer::format_justify_left#3 = phi( printf_uint::@4/printf_number_buffer::format_justify_left#0 )
  printf_number_buffer::format_min_length#1 = phi( printf_uint::@4/printf_number_buffer::format_min_length#0 )
  printf_number_buffer::padding#0 = 0
  printf_number_buffer::$26 = 0 != printf_number_buffer::format_min_length#1
  printf_number_buffer::$0 = ! printf_number_buffer::$26
  if(printf_number_buffer::$0) goto printf_number_buffer::@1
  to:printf_number_buffer::@6
printf_number_buffer::@1: scope:[printf_number_buffer]  from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@14
  printf_number_buffer::buffer_digits#12 = phi( printf_number_buffer/printf_number_buffer::buffer_digits#4, printf_number_buffer::@13/printf_number_buffer::buffer_digits#14, printf_number_buffer::@14/printf_number_buffer::buffer_digits#15 )
  printf_number_buffer::format_upper_case#7 = phi( printf_number_buffer/printf_number_buffer::format_upper_case#9, printf_number_buffer::@13/printf_number_buffer::format_upper_case#10, printf_number_buffer::@14/printf_number_buffer::format_upper_case#11 )
  printf_number_buffer::putc#6 = phi( printf_number_buffer/printf_number_buffer::putc#12, printf_number_buffer::@13/printf_number_buffer::putc#13, printf_number_buffer::@14/printf_number_buffer::putc#14 )
  printf_number_buffer::buffer_sign#5 = phi( printf_number_buffer/printf_number_buffer::buffer_sign#7, printf_number_buffer::@13/printf_number_buffer::buffer_sign#8, printf_number_buffer::@14/printf_number_buffer::buffer_sign#9 )
  printf_number_buffer::padding#3 = phi( printf_number_buffer/printf_number_buffer::padding#0, printf_number_buffer::@13/printf_number_buffer::padding#1, printf_number_buffer::@14/printf_number_buffer::padding#2 )
  printf_number_buffer::format_zero_padding#1 = phi( printf_number_buffer/printf_number_buffer::format_zero_padding#4, printf_number_buffer::@13/printf_number_buffer::format_zero_padding#5, printf_number_buffer::@14/printf_number_buffer::format_zero_padding#6 )
  printf_number_buffer::format_justify_left#1 = phi( printf_number_buffer/printf_number_buffer::format_justify_left#3, printf_number_buffer::@13/printf_number_buffer::format_justify_left#4, printf_number_buffer::@14/printf_number_buffer::format_justify_left#5 )
  printf_number_buffer::$27 = 0 != printf_number_buffer::format_justify_left#1
  printf_number_buffer::$1 = ! printf_number_buffer::$27
  printf_number_buffer::$28 = 0 != printf_number_buffer::format_zero_padding#1
  printf_number_buffer::$2 = ! printf_number_buffer::$28
  printf_number_buffer::$3 = printf_number_buffer::$1 && printf_number_buffer::$2
  printf_number_buffer::$4 = printf_number_buffer::$3 && printf_number_buffer::padding#3
  printf_number_buffer::$5 = ! printf_number_buffer::$4
  if(printf_number_buffer::$5) goto printf_number_buffer::@2
  to:printf_number_buffer::@8
printf_number_buffer::@6: scope:[printf_number_buffer]  from printf_number_buffer
  printf_number_buffer::format_upper_case#15 = phi( printf_number_buffer/printf_number_buffer::format_upper_case#9 )
  printf_number_buffer::putc#20 = phi( printf_number_buffer/printf_number_buffer::putc#12 )
  printf_number_buffer::format_zero_padding#15 = phi( printf_number_buffer/printf_number_buffer::format_zero_padding#4 )
  printf_number_buffer::format_justify_left#11 = phi( printf_number_buffer/printf_number_buffer::format_justify_left#3 )
  printf_number_buffer::format_min_length#5 = phi( printf_number_buffer/printf_number_buffer::format_min_length#1 )
  printf_number_buffer::buffer_sign#4 = phi( printf_number_buffer/printf_number_buffer::buffer_sign#7 )
  printf_number_buffer::buffer_digits#1 = phi( printf_number_buffer/printf_number_buffer::buffer_digits#4 )
  strlen::str#1 = printf_number_buffer::buffer_digits#1
  call strlen
  strlen::return#2 = strlen::return#1
  to:printf_number_buffer::@15
printf_number_buffer::@15: scope:[printf_number_buffer]  from printf_number_buffer::@6
  printf_number_buffer::buffer_digits#17 = phi( printf_number_buffer::@6/printf_number_buffer::buffer_digits#1 )
  printf_number_buffer::format_upper_case#13 = phi( printf_number_buffer::@6/printf_number_buffer::format_upper_case#15 )
  printf_number_buffer::putc#18 = phi( printf_number_buffer::@6/printf_number_buffer::putc#20 )
  printf_number_buffer::format_zero_padding#10 = phi( printf_number_buffer::@6/printf_number_buffer::format_zero_padding#15 )
  printf_number_buffer::format_justify_left#7 = phi( printf_number_buffer::@6/printf_number_buffer::format_justify_left#11 )
  printf_number_buffer::format_min_length#3 = phi( printf_number_buffer::@6/printf_number_buffer::format_min_length#5 )
  printf_number_buffer::buffer_sign#1 = phi( printf_number_buffer::@6/printf_number_buffer::buffer_sign#4 )
  strlen::return#5 = phi( printf_number_buffer::@6/strlen::return#2 )
  printf_number_buffer::$19 = strlen::return#5
  printf_number_buffer::len#0 = (signed char)printf_number_buffer::$19
  printf_number_buffer::$29 = 0 != printf_number_buffer::buffer_sign#1
  printf_number_buffer::$20 = ! printf_number_buffer::$29
  if(printf_number_buffer::$20) goto printf_number_buffer::@13
  to:printf_number_buffer::@7
printf_number_buffer::@13: scope:[printf_number_buffer]  from printf_number_buffer::@15 printf_number_buffer::@7
  printf_number_buffer::buffer_digits#14 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_digits#17, printf_number_buffer::@7/printf_number_buffer::buffer_digits#18 )
  printf_number_buffer::format_upper_case#10 = phi( printf_number_buffer::@15/printf_number_buffer::format_upper_case#13, printf_number_buffer::@7/printf_number_buffer::format_upper_case#14 )
  printf_number_buffer::putc#13 = phi( printf_number_buffer::@15/printf_number_buffer::putc#18, printf_number_buffer::@7/printf_number_buffer::putc#19 )
  printf_number_buffer::buffer_sign#8 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_sign#1, printf_number_buffer::@7/printf_number_buffer::buffer_sign#11 )
  printf_number_buffer::format_zero_padding#5 = phi( printf_number_buffer::@15/printf_number_buffer::format_zero_padding#10, printf_number_buffer::@7/printf_number_buffer::format_zero_padding#11 )
  printf_number_buffer::format_justify_left#4 = phi( printf_number_buffer::@15/printf_number_buffer::format_justify_left#7, printf_number_buffer::@7/printf_number_buffer::format_justify_left#8 )
  printf_number_buffer::len#2 = phi( printf_number_buffer::@15/printf_number_buffer::len#0, printf_number_buffer::@7/printf_number_buffer::len#1 )
  printf_number_buffer::format_min_length#2 = phi( printf_number_buffer::@15/printf_number_buffer::format_min_length#3, printf_number_buffer::@7/printf_number_buffer::format_min_length#4 )
  printf_number_buffer::$25 = (signed char)printf_number_buffer::format_min_length#2
  printf_number_buffer::$21 = printf_number_buffer::$25 - printf_number_buffer::len#2
  printf_number_buffer::padding#1 = printf_number_buffer::$21
  printf_number_buffer::$22 = printf_number_buffer::padding#1 < 0
  printf_number_buffer::$23 = ! printf_number_buffer::$22
  if(printf_number_buffer::$23) goto printf_number_buffer::@1
  to:printf_number_buffer::@14
printf_number_buffer::@7: scope:[printf_number_buffer]  from printf_number_buffer::@15
  printf_number_buffer::buffer_digits#18 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_digits#17 )
  printf_number_buffer::format_upper_case#14 = phi( printf_number_buffer::@15/printf_number_buffer::format_upper_case#13 )
  printf_number_buffer::putc#19 = phi( printf_number_buffer::@15/printf_number_buffer::putc#18 )
  printf_number_buffer::buffer_sign#11 = phi( printf_number_buffer::@15/printf_number_buffer::buffer_sign#1 )
  printf_number_buffer::format_zero_padding#11 = phi( printf_number_buffer::@15/printf_number_buffer::format_zero_padding#10 )
  printf_number_buffer::format_justify_left#8 = phi( printf_number_buffer::@15/printf_number_buffer::format_justify_left#7 )
  printf_number_buffer::format_min_length#4 = phi( printf_number_buffer::@15/printf_number_buffer::format_min_length#3 )
  printf_number_buffer::len#3 = phi( printf_number_buffer::@15/printf_number_buffer::len#0 )
  printf_number_buffer::len#1 = ++ printf_number_buffer::len#3
  to:printf_number_buffer::@13
printf_number_buffer::@14: scope:[printf_number_buffer]  from printf_number_buffer::@13
  printf_number_buffer::buffer_digits#15 = phi( printf_number_buffer::@13/printf_number_buffer::buffer_digits#14 )
  printf_number_buffer::format_upper_case#11 = phi( printf_number_buffer::@13/printf_number_buffer::format_upper_case#10 )
  printf_number_buffer::putc#14 = phi( printf_number_buffer::@13/printf_number_buffer::putc#13 )
  printf_number_buffer::buffer_sign#9 = phi( printf_number_buffer::@13/printf_number_buffer::buffer_sign#8 )
  printf_number_buffer::format_zero_padding#6 = phi( printf_number_buffer::@13/printf_number_buffer::format_zero_padding#5 )
  printf_number_buffer::format_justify_left#5 = phi( printf_number_buffer::@13/printf_number_buffer::format_justify_left#4 )
  printf_number_buffer::padding#2 = 0
  to:printf_number_buffer::@1
printf_number_buffer::@2: scope:[printf_number_buffer]  from printf_number_buffer::@1 printf_number_buffer::@16
  printf_number_buffer::format_justify_left#15 = phi( printf_number_buffer::@1/printf_number_buffer::format_justify_left#1, printf_number_buffer::@16/printf_number_buffer::format_justify_left#18 )
  printf_number_buffer::buffer_digits#9 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_digits#12, printf_number_buffer::@16/printf_number_buffer::buffer_digits#13 )
  printf_number_buffer::format_upper_case#4 = phi( printf_number_buffer::@1/printf_number_buffer::format_upper_case#7, printf_number_buffer::@16/printf_number_buffer::format_upper_case#8 )
  printf_number_buffer::putc#7 = phi( printf_number_buffer::@1/printf_number_buffer::putc#6, printf_number_buffer::@16/printf_number_buffer::putc#15 )
  printf_number_buffer::padding#9 = phi( printf_number_buffer::@1/printf_number_buffer::padding#3, printf_number_buffer::@16/printf_number_buffer::padding#12 )
  printf_number_buffer::format_zero_padding#7 = phi( printf_number_buffer::@1/printf_number_buffer::format_zero_padding#1, printf_number_buffer::@16/printf_number_buffer::format_zero_padding#12 )
  printf_number_buffer::buffer_sign#2 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_sign#5, printf_number_buffer::@16/printf_number_buffer::buffer_sign#6 )
  printf_number_buffer::$30 = 0 != printf_number_buffer::buffer_sign#2
  printf_number_buffer::$7 = ! printf_number_buffer::$30
  if(printf_number_buffer::$7) goto printf_number_buffer::@3
  to:printf_number_buffer::@9
printf_number_buffer::@8: scope:[printf_number_buffer]  from printf_number_buffer::@1
  printf_number_buffer::format_justify_left#19 = phi( printf_number_buffer::@1/printf_number_buffer::format_justify_left#1 )
  printf_number_buffer::buffer_digits#16 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_digits#12 )
  printf_number_buffer::format_upper_case#12 = phi( printf_number_buffer::@1/printf_number_buffer::format_upper_case#7 )
  printf_number_buffer::format_zero_padding#16 = phi( printf_number_buffer::@1/printf_number_buffer::format_zero_padding#1 )
  printf_number_buffer::buffer_sign#10 = phi( printf_number_buffer::@1/printf_number_buffer::buffer_sign#5 )
  printf_number_buffer::padding#4 = phi( printf_number_buffer::@1/printf_number_buffer::padding#3 )
  printf_number_buffer::putc#1 = phi( printf_number_buffer::@1/printf_number_buffer::putc#6 )
  printf_padding::putc#0 = printf_number_buffer::putc#1
  printf_padding::pad#0 = ' '
  printf_padding::length#0 = (char)printf_number_buffer::padding#4
  call printf_padding
  to:printf_number_buffer::@16
printf_number_buffer::@16: scope:[printf_number_buffer]  from printf_number_buffer::@8
  printf_number_buffer::format_justify_left#18 = phi( printf_number_buffer::@8/printf_number_buffer::format_justify_left#19 )
  printf_number_buffer::buffer_digits#13 = phi( printf_number_buffer::@8/printf_number_buffer::buffer_digits#16 )
  printf_number_buffer::format_upper_case#8 = phi( printf_number_buffer::@8/printf_number_buffer::format_upper_case#12 )
  printf_number_buffer::putc#15 = phi( printf_number_buffer::@8/printf_number_buffer::putc#1 )
  printf_number_buffer::padding#12 = phi( printf_number_buffer::@8/printf_number_buffer::padding#4 )
  printf_number_buffer::format_zero_padding#12 = phi( printf_number_buffer::@8/printf_number_buffer::format_zero_padding#16 )
  printf_number_buffer::buffer_sign#6 = phi( printf_number_buffer::@8/printf_number_buffer::buffer_sign#10 )
  to:printf_number_buffer::@2
printf_number_buffer::@3: scope:[printf_number_buffer]  from printf_number_buffer::@2 printf_number_buffer::@9
  printf_number_buffer::format_justify_left#13 = phi( printf_number_buffer::@2/printf_number_buffer::format_justify_left#15, printf_number_buffer::@9/printf_number_buffer::format_justify_left#16 )
  printf_number_buffer::buffer_digits#8 = phi( printf_number_buffer::@2/printf_number_buffer::buffer_digits#9, printf_number_buffer::@9/printf_number_buffer::buffer_digits#10 )
  printf_number_buffer::putc#8 = phi( printf_number_buffer::@2/printf_number_buffer::putc#7, printf_number_buffer::@9/printf_number_buffer::putc#2 )
  printf_number_buffer::format_upper_case#3 = phi( printf_number_buffer::@2/printf_number_buffer::format_upper_case#4, printf_number_buffer::@9/printf_number_buffer::format_upper_case#5 )
  printf_number_buffer::padding#5 = phi( printf_number_buffer::@2/printf_number_buffer::padding#9, printf_number_buffer::@9/printf_number_buffer::padding#10 )
  printf_number_buffer::format_zero_padding#2 = phi( printf_number_buffer::@2/printf_number_buffer::format_zero_padding#7, printf_number_buffer::@9/printf_number_buffer::format_zero_padding#8 )
  printf_number_buffer::$9 = printf_number_buffer::format_zero_padding#2 && printf_number_buffer::padding#5
  printf_number_buffer::$10 = ! printf_number_buffer::$9
  if(printf_number_buffer::$10) goto printf_number_buffer::@4
  to:printf_number_buffer::@10
printf_number_buffer::@9: scope:[printf_number_buffer]  from printf_number_buffer::@2
  printf_number_buffer::format_justify_left#16 = phi( printf_number_buffer::@2/printf_number_buffer::format_justify_left#15 )
  printf_number_buffer::buffer_digits#10 = phi( printf_number_buffer::@2/printf_number_buffer::buffer_digits#9 )
  printf_number_buffer::format_upper_case#5 = phi( printf_number_buffer::@2/printf_number_buffer::format_upper_case#4 )
  printf_number_buffer::padding#10 = phi( printf_number_buffer::@2/printf_number_buffer::padding#9 )
  printf_number_buffer::format_zero_padding#8 = phi( printf_number_buffer::@2/printf_number_buffer::format_zero_padding#7 )
  printf_number_buffer::putc#2 = phi( printf_number_buffer::@2/printf_number_buffer::putc#7 )
  printf_number_buffer::buffer_sign#3 = phi( printf_number_buffer::@2/printf_number_buffer::buffer_sign#2 )
  stackpush(char) = printf_number_buffer::buffer_sign#3
  callexecute *printf_number_buffer::putc#2 
  sideeffect stackpullbytes(1)
  to:printf_number_buffer::@3
printf_number_buffer::@4: scope:[printf_number_buffer]  from printf_number_buffer::@17 printf_number_buffer::@3
  printf_number_buffer::padding#14 = phi( printf_number_buffer::@17/printf_number_buffer::padding#15, printf_number_buffer::@3/printf_number_buffer::padding#5 )
  printf_number_buffer::format_justify_left#10 = phi( printf_number_buffer::@17/printf_number_buffer::format_justify_left#12, printf_number_buffer::@3/printf_number_buffer::format_justify_left#13 )
  printf_number_buffer::format_zero_padding#14 = phi( printf_number_buffer::@17/printf_number_buffer::format_zero_padding#17, printf_number_buffer::@3/printf_number_buffer::format_zero_padding#2 )
  printf_number_buffer::buffer_digits#6 = phi( printf_number_buffer::@17/printf_number_buffer::buffer_digits#7, printf_number_buffer::@3/printf_number_buffer::buffer_digits#8 )
  printf_number_buffer::putc#10 = phi( printf_number_buffer::@17/printf_number_buffer::putc#16, printf_number_buffer::@3/printf_number_buffer::putc#8 )
  printf_number_buffer::format_upper_case#1 = phi( printf_number_buffer::@17/printf_number_buffer::format_upper_case#2, printf_number_buffer::@3/printf_number_buffer::format_upper_case#3 )
  printf_number_buffer::$31 = 0 != printf_number_buffer::format_upper_case#1
  printf_number_buffer::$12 = ! printf_number_buffer::$31
  if(printf_number_buffer::$12) goto printf_number_buffer::@5
  to:printf_number_buffer::@11
printf_number_buffer::@10: scope:[printf_number_buffer]  from printf_number_buffer::@3
  printf_number_buffer::format_justify_left#17 = phi( printf_number_buffer::@3/printf_number_buffer::format_justify_left#13 )
  printf_number_buffer::format_zero_padding#19 = phi( printf_number_buffer::@3/printf_number_buffer::format_zero_padding#2 )
  printf_number_buffer::buffer_digits#11 = phi( printf_number_buffer::@3/printf_number_buffer::buffer_digits#8 )
  printf_number_buffer::format_upper_case#6 = phi( printf_number_buffer::@3/printf_number_buffer::format_upper_case#3 )
  printf_number_buffer::padding#6 = phi( printf_number_buffer::@3/printf_number_buffer::padding#5 )
  printf_number_buffer::putc#3 = phi( printf_number_buffer::@3/printf_number_buffer::putc#8 )
  printf_padding::putc#1 = printf_number_buffer::putc#3
  printf_padding::pad#1 = '0'
  printf_padding::length#1 = (char)printf_number_buffer::padding#6
  call printf_padding
  to:printf_number_buffer::@17
printf_number_buffer::@17: scope:[printf_number_buffer]  from printf_number_buffer::@10
  printf_number_buffer::padding#15 = phi( printf_number_buffer::@10/printf_number_buffer::padding#6 )
  printf_number_buffer::format_justify_left#12 = phi( printf_number_buffer::@10/printf_number_buffer::format_justify_left#17 )
  printf_number_buffer::format_zero_padding#17 = phi( printf_number_buffer::@10/printf_number_buffer::format_zero_padding#19 )
  printf_number_buffer::buffer_digits#7 = phi( printf_number_buffer::@10/printf_number_buffer::buffer_digits#11 )
  printf_number_buffer::putc#16 = phi( printf_number_buffer::@10/printf_number_buffer::putc#3 )
  printf_number_buffer::format_upper_case#2 = phi( printf_number_buffer::@10/printf_number_buffer::format_upper_case#6 )
  to:printf_number_buffer::@4
printf_number_buffer::@5: scope:[printf_number_buffer]  from printf_number_buffer::@19 printf_number_buffer::@4
  printf_number_buffer::padding#11 = phi( printf_number_buffer::@19/printf_number_buffer::padding#13, printf_number_buffer::@4/printf_number_buffer::padding#14 )
  printf_number_buffer::format_justify_left#6 = phi( printf_number_buffer::@19/printf_number_buffer::format_justify_left#9, printf_number_buffer::@4/printf_number_buffer::format_justify_left#10 )
  printf_number_buffer::format_zero_padding#9 = phi( printf_number_buffer::@19/printf_number_buffer::format_zero_padding#13, printf_number_buffer::@4/printf_number_buffer::format_zero_padding#14 )
  printf_number_buffer::buffer_digits#2 = phi( printf_number_buffer::@19/printf_number_buffer::buffer_digits#5, printf_number_buffer::@4/printf_number_buffer::buffer_digits#6 )
  printf_number_buffer::putc#4 = phi( printf_number_buffer::@19/printf_number_buffer::putc#9, printf_number_buffer::@4/printf_number_buffer::putc#10 )
  printf_str::putc#0 = printf_number_buffer::putc#4
  printf_str::s#1 = printf_number_buffer::buffer_digits#2
  call printf_str
  to:printf_number_buffer::@18
printf_number_buffer::@18: scope:[printf_number_buffer]  from printf_number_buffer::@5
  printf_number_buffer::putc#11 = phi( printf_number_buffer::@5/printf_number_buffer::putc#4 )
  printf_number_buffer::padding#7 = phi( printf_number_buffer::@5/printf_number_buffer::padding#11 )
  printf_number_buffer::format_justify_left#2 = phi( printf_number_buffer::@5/printf_number_buffer::format_justify_left#6 )
  printf_number_buffer::format_zero_padding#3 = phi( printf_number_buffer::@5/printf_number_buffer::format_zero_padding#9 )
  printf_number_buffer::$32 = 0 != printf_number_buffer::format_zero_padding#3
  printf_number_buffer::$14 = ! printf_number_buffer::$32
  printf_number_buffer::$15 = printf_number_buffer::format_justify_left#2 && printf_number_buffer::$14
  printf_number_buffer::$16 = printf_number_buffer::$15 && printf_number_buffer::padding#7
  printf_number_buffer::$17 = ! printf_number_buffer::$16
  if(printf_number_buffer::$17) goto printf_number_buffer::@return
  to:printf_number_buffer::@12
printf_number_buffer::@11: scope:[printf_number_buffer]  from printf_number_buffer::@4
  printf_number_buffer::padding#16 = phi( printf_number_buffer::@4/printf_number_buffer::padding#14 )
  printf_number_buffer::format_justify_left#14 = phi( printf_number_buffer::@4/printf_number_buffer::format_justify_left#10 )
  printf_number_buffer::format_zero_padding#18 = phi( printf_number_buffer::@4/printf_number_buffer::format_zero_padding#14 )
  printf_number_buffer::putc#17 = phi( printf_number_buffer::@4/printf_number_buffer::putc#10 )
  printf_number_buffer::buffer_digits#3 = phi( printf_number_buffer::@4/printf_number_buffer::buffer_digits#6 )
  strupr::str#0 = printf_number_buffer::buffer_digits#3
  call strupr
  strupr::return#2 = strupr::return#1
  to:printf_number_buffer::@19
printf_number_buffer::@19: scope:[printf_number_buffer]  from printf_number_buffer::@11
  printf_number_buffer::padding#13 = phi( printf_number_buffer::@11/printf_number_buffer::padding#16 )
  printf_number_buffer::format_justify_left#9 = phi( printf_number_buffer::@11/printf_number_buffer::format_justify_left#14 )
  printf_number_buffer::format_zero_padding#13 = phi( printf_number_buffer::@11/printf_number_buffer::format_zero_padding#18 )
  printf_number_buffer::buffer_digits#5 = phi( printf_number_buffer::@11/printf_number_buffer::buffer_digits#3 )
  printf_number_buffer::putc#9 = phi( printf_number_buffer::@11/printf_number_buffer::putc#17 )
  to:printf_number_buffer::@5
printf_number_buffer::@12: scope:[printf_number_buffer]  from printf_number_buffer::@18
  printf_number_buffer::padding#8 = phi( printf_number_buffer::@18/printf_number_buffer::padding#7 )
  printf_number_buffer::putc#5 = phi( printf_number_buffer::@18/printf_number_buffer::putc#11 )
  printf_padding::putc#2 = printf_number_buffer::putc#5
  printf_padding::pad#2 = ' '
  printf_padding::length#2 = (char)printf_number_buffer::padding#8
  call printf_padding
  to:printf_number_buffer::@20
printf_number_buffer::@20: scope:[printf_number_buffer]  from printf_number_buffer::@12
  to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer]  from printf_number_buffer::@18 printf_number_buffer::@20
  return 
  to:@return

void printf_string(void (*putc)(char) , char *str , char format_min_length , char format_justify_left)
printf_string: scope:[printf_string]  from assert_ptr::@12 assert_ptr::@8 assert_uint::@12 assert_uint::@8
  printf_string::putc#10 = phi( assert_ptr::@12/printf_string::putc#3, assert_ptr::@8/printf_string::putc#2, assert_uint::@12/printf_string::putc#1, assert_uint::@8/printf_string::putc#0 )
  printf_string::str#6 = phi( assert_ptr::@12/printf_string::str#3, assert_ptr::@8/printf_string::str#2, assert_uint::@12/printf_string::str#1, assert_uint::@8/printf_string::str#0 )
  printf_string::format_justify_left#6 = phi( assert_ptr::@12/printf_string::format_justify_left#3, assert_ptr::@8/printf_string::format_justify_left#2, assert_uint::@12/printf_string::format_justify_left#1, assert_uint::@8/printf_string::format_justify_left#0 )
  printf_string::format_min_length#4 = phi( assert_ptr::@12/printf_string::format_min_length#3, assert_ptr::@8/printf_string::format_min_length#2, assert_uint::@12/printf_string::format_min_length#1, assert_uint::@8/printf_string::format_min_length#0 )
  printf_string::padding#0 = 0
  printf_string::$14 = 0 != printf_string::format_min_length#4
  printf_string::$0 = ! printf_string::$14
  if(printf_string::$0) goto printf_string::@1
  to:printf_string::@3
printf_string::@1: scope:[printf_string]  from printf_string printf_string::@4 printf_string::@7
  printf_string::str#7 = phi( printf_string/printf_string::str#6, printf_string::@4/printf_string::str#9, printf_string::@7/printf_string::str#10 )
  printf_string::putc#7 = phi( printf_string/printf_string::putc#10, printf_string::@4/printf_string::putc#11, printf_string::@7/printf_string::putc#12 )
  printf_string::padding#3 = phi( printf_string/printf_string::padding#0, printf_string::@4/printf_string::padding#2, printf_string::@7/printf_string::padding#1 )
  printf_string::format_justify_left#4 = phi( printf_string/printf_string::format_justify_left#6, printf_string::@4/printf_string::format_justify_left#7, printf_string::@7/printf_string::format_justify_left#8 )
  printf_string::$15 = 0 != printf_string::format_justify_left#4
  printf_string::$1 = ! printf_string::$15
  printf_string::$2 = printf_string::$1 && printf_string::padding#3
  printf_string::$3 = ! printf_string::$2
  if(printf_string::$3) goto printf_string::@2
  to:printf_string::@5
printf_string::@3: scope:[printf_string]  from printf_string
  printf_string::putc#13 = phi( printf_string/printf_string::putc#10 )
  printf_string::format_justify_left#10 = phi( printf_string/printf_string::format_justify_left#6 )
  printf_string::format_min_length#6 = phi( printf_string/printf_string::format_min_length#4 )
  printf_string::str#4 = phi( printf_string/printf_string::str#6 )
  strlen::str#2 = printf_string::str#4
  call strlen
  strlen::return#3 = strlen::return#1
  to:printf_string::@7
printf_string::@7: scope:[printf_string]  from printf_string::@3
  printf_string::str#10 = phi( printf_string::@3/printf_string::str#4 )
  printf_string::putc#12 = phi( printf_string::@3/printf_string::putc#13 )
  printf_string::format_justify_left#8 = phi( printf_string::@3/printf_string::format_justify_left#10 )
  printf_string::format_min_length#5 = phi( printf_string::@3/printf_string::format_min_length#6 )
  strlen::return#6 = phi( printf_string::@3/strlen::return#3 )
  printf_string::$9 = strlen::return#6
  printf_string::len#0 = (signed char)printf_string::$9
  printf_string::$13 = (signed char)printf_string::format_min_length#5
  printf_string::$10 = printf_string::$13 - printf_string::len#0
  printf_string::padding#1 = printf_string::$10
  printf_string::$11 = printf_string::padding#1 < 0
  printf_string::$12 = ! printf_string::$11
  if(printf_string::$12) goto printf_string::@1
  to:printf_string::@4
printf_string::@4: scope:[printf_string]  from printf_string::@7
  printf_string::str#9 = phi( printf_string::@7/printf_string::str#10 )
  printf_string::putc#11 = phi( printf_string::@7/printf_string::putc#12 )
  printf_string::format_justify_left#7 = phi( printf_string::@7/printf_string::format_justify_left#8 )
  printf_string::padding#2 = 0
  to:printf_string::@1
printf_string::@2: scope:[printf_string]  from printf_string::@1 printf_string::@9
  printf_string::padding#7 = phi( printf_string::@1/printf_string::padding#3, printf_string::@9/printf_string::padding#8 )
  printf_string::format_justify_left#9 = phi( printf_string::@1/printf_string::format_justify_left#4, printf_string::@9/printf_string::format_justify_left#11 )
  printf_string::str#5 = phi( printf_string::@1/printf_string::str#7, printf_string::@9/printf_string::str#8 )
  printf_string::putc#4 = phi( printf_string::@1/printf_string::putc#7, printf_string::@9/printf_string::putc#8 )
  printf_str::putc#1 = printf_string::putc#4
  printf_str::s#2 = printf_string::str#5
  call printf_str
  to:printf_string::@8
printf_string::@8: scope:[printf_string]  from printf_string::@2
  printf_string::putc#9 = phi( printf_string::@2/printf_string::putc#4 )
  printf_string::padding#4 = phi( printf_string::@2/printf_string::padding#7 )
  printf_string::format_justify_left#5 = phi( printf_string::@2/printf_string::format_justify_left#9 )
  printf_string::$6 = printf_string::format_justify_left#5 && printf_string::padding#4
  printf_string::$7 = ! printf_string::$6
  if(printf_string::$7) goto printf_string::@return
  to:printf_string::@6
printf_string::@5: scope:[printf_string]  from printf_string::@1
  printf_string::format_justify_left#12 = phi( printf_string::@1/printf_string::format_justify_left#4 )
  printf_string::str#11 = phi( printf_string::@1/printf_string::str#7 )
  printf_string::padding#5 = phi( printf_string::@1/printf_string::padding#3 )
  printf_string::putc#5 = phi( printf_string::@1/printf_string::putc#7 )
  printf_padding::putc#3 = printf_string::putc#5
  printf_padding::pad#3 = ' '
  printf_padding::length#3 = (char)printf_string::padding#5
  call printf_padding
  to:printf_string::@9
printf_string::@9: scope:[printf_string]  from printf_string::@5
  printf_string::padding#8 = phi( printf_string::@5/printf_string::padding#5 )
  printf_string::format_justify_left#11 = phi( printf_string::@5/printf_string::format_justify_left#12 )
  printf_string::str#8 = phi( printf_string::@5/printf_string::str#11 )
  printf_string::putc#8 = phi( printf_string::@5/printf_string::putc#5 )
  to:printf_string::@2
printf_string::@6: scope:[printf_string]  from printf_string::@8
  printf_string::padding#6 = phi( printf_string::@8/printf_string::padding#4 )
  printf_string::putc#6 = phi( printf_string::@8/printf_string::putc#9 )
  printf_padding::putc#4 = printf_string::putc#6
  printf_padding::pad#4 = ' '
  printf_padding::length#4 = (char)printf_string::padding#6
  call printf_padding
  to:printf_string::@10
printf_string::@10: scope:[printf_string]  from printf_string::@6
  to:printf_string::@return
printf_string::@return: scope:[printf_string]  from printf_string::@10 printf_string::@8
  return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  call clrscr
  to:main::@1
main::@1: scope:[main]  from main
  memchr::str#0 = (const void *)main::str
  memchr::c#0 = 'a'
  memchr::n#0 = $e
  call memchr
  memchr::return#3 = memchr::return#2
  to:main::@2
main::@2: scope:[main]  from main::@1
  memchr::return#6 = phi( main::@1/memchr::return#3 )
  main::ptr#0 = ((char *)) memchr::return#6
  main::$2 = main::ptr#0 - main::str
  assert_uint::expect#0 = 8
  assert_uint::actual#0 = main::$2
  assert_uint::message#0 = main::message
  call assert_uint
  to:main::@3
main::@3: scope:[main]  from main::@2
  memchr::str#1 = (const void *)main::str
  memchr::c#1 = 'a'
  memchr::n#1 = 7
  call memchr
  memchr::return#4 = memchr::return#2
  to:main::@4
main::@4: scope:[main]  from main::@3
  memchr::return#7 = phi( main::@3/memchr::return#4 )
  main::ptr2#0 = ((char *)) memchr::return#7
  assert_ptr::expect#0 = (void *)0
  assert_ptr::actual#0 = (void *)main::ptr2#0
  assert_ptr::message#0 = main::message1
  call assert_ptr
  to:main::@5
main::@5: scope:[main]  from main::@4
  to:main::@return
main::@return: scope:[main]  from main::@5
  return 
  to:@return

void assert_uint(unsigned int expect , unsigned int actual , char *message)
assert_uint: scope:[assert_uint]  from main::@2
  assert_uint::message#8 = phi( main::@2/assert_uint::message#0 )
  assert_uint::actual#1 = phi( main::@2/assert_uint::actual#0 )
  assert_uint::expect#1 = phi( main::@2/assert_uint::expect#0 )
  assert_uint::$0 = assert_uint::expect#1 != assert_uint::actual#1
  if(assert_uint::$0) goto assert_uint::@1
  to:assert_uint::@2
assert_uint::@1: scope:[assert_uint]  from assert_uint
  assert_uint::message#11 = phi( assert_uint/assert_uint::message#8 )
  assert_uint::actual#6 = phi( assert_uint/assert_uint::actual#1 )
  assert_uint::expect#4 = phi( assert_uint/assert_uint::expect#1 )
  textcolor::color#0 = RED
  call textcolor
  textcolor::return#2 = textcolor::return#1
  to:assert_uint::@3
assert_uint::@3: scope:[assert_uint]  from assert_uint::@1
  assert_uint::message#10 = phi( assert_uint::@1/assert_uint::message#11 )
  assert_uint::actual#5 = phi( assert_uint::@1/assert_uint::actual#6 )
  assert_uint::expect#3 = phi( assert_uint::@1/assert_uint::expect#4 )
  printf_str::putc#2 = &cputc
  printf_str::s#3 = assert_uint::s
  call printf_str
  to:assert_uint::@4
assert_uint::@4: scope:[assert_uint]  from assert_uint::@3
  assert_uint::message#9 = phi( assert_uint::@3/assert_uint::message#10 )
  assert_uint::actual#4 = phi( assert_uint::@3/assert_uint::actual#5 )
  assert_uint::expect#2 = phi( assert_uint::@3/assert_uint::expect#3 )
  printf_uint::putc#0 = &cputc
  printf_uint::uvalue#0 = assert_uint::expect#2
  printf_uint::format_min_length#0 = 0
  printf_uint::format_justify_left#0 = 0
  printf_uint::format_sign_always#0 = 0
  printf_uint::format_zero_padding#0 = 0
  printf_uint::format_upper_case#0 = 0
  printf_uint::format_radix#0 = DECIMAL
  call printf_uint
  to:assert_uint::@5
assert_uint::@5: scope:[assert_uint]  from assert_uint::@4
  assert_uint::message#7 = phi( assert_uint::@4/assert_uint::message#9 )
  assert_uint::actual#3 = phi( assert_uint::@4/assert_uint::actual#4 )
  printf_str::putc#3 = &cputc
  printf_str::s#4 = assert_uint::s1
  call printf_str
  to:assert_uint::@6
assert_uint::@6: scope:[assert_uint]  from assert_uint::@5
  assert_uint::message#5 = phi( assert_uint::@5/assert_uint::message#7 )
  assert_uint::actual#2 = phi( assert_uint::@5/assert_uint::actual#3 )
  printf_uint::putc#1 = &cputc
  printf_uint::uvalue#1 = assert_uint::actual#2
  printf_uint::format_min_length#1 = 0
  printf_uint::format_justify_left#1 = 0
  printf_uint::format_sign_always#1 = 0
  printf_uint::format_zero_padding#1 = 0
  printf_uint::format_upper_case#1 = 0
  printf_uint::format_radix#1 = DECIMAL
  call printf_uint
  to:assert_uint::@7
assert_uint::@7: scope:[assert_uint]  from assert_uint::@6
  assert_uint::message#3 = phi( assert_uint::@6/assert_uint::message#5 )
  printf_str::putc#4 = &cputc
  printf_str::s#5 = assert_uint::s2
  call printf_str
  to:assert_uint::@8
assert_uint::@8: scope:[assert_uint]  from assert_uint::@7
  assert_uint::message#1 = phi( assert_uint::@7/assert_uint::message#3 )
  printf_string::putc#0 = &cputc
  printf_string::str#0 = assert_uint::message#1
  printf_string::format_min_length#0 = 0
  printf_string::format_justify_left#0 = 0
  call printf_string
  to:assert_uint::@9
assert_uint::@9: scope:[assert_uint]  from assert_uint::@8
  printf_str::putc#5 = &cputc
  printf_str::s#6 = assert_uint::s3
  call printf_str
  to:assert_uint::@10
assert_uint::@10: scope:[assert_uint]  from assert_uint::@9
  to:assert_uint::@return
assert_uint::@2: scope:[assert_uint]  from assert_uint
  assert_uint::message#6 = phi( assert_uint/assert_uint::message#8 )
  textcolor::color#1 = GREEN
  call textcolor
  textcolor::return#3 = textcolor::return#1
  to:assert_uint::@11
assert_uint::@11: scope:[assert_uint]  from assert_uint::@2
  assert_uint::message#4 = phi( assert_uint::@2/assert_uint::message#6 )
  printf_str::putc#6 = &cputc
  printf_str::s#7 = assert_uint::s4
  call printf_str
  to:assert_uint::@12
assert_uint::@12: scope:[assert_uint]  from assert_uint::@11
  assert_uint::message#2 = phi( assert_uint::@11/assert_uint::message#4 )
  printf_string::putc#1 = &cputc
  printf_string::str#1 = assert_uint::message#2
  printf_string::format_min_length#1 = 0
  printf_string::format_justify_left#1 = 0
  call printf_string
  to:assert_uint::@13
assert_uint::@13: scope:[assert_uint]  from assert_uint::@12
  printf_str::putc#7 = &cputc
  printf_str::s#8 = assert_uint::s5
  call printf_str
  to:assert_uint::@14
assert_uint::@14: scope:[assert_uint]  from assert_uint::@13
  to:assert_uint::@return
assert_uint::@return: scope:[assert_uint]  from assert_uint::@10 assert_uint::@14
  return 
  to:@return

void assert_ptr(void *expect , void *actual , char *message)
assert_ptr: scope:[assert_ptr]  from main::@4
  assert_ptr::message#8 = phi( main::@4/assert_ptr::message#0 )
  assert_ptr::actual#1 = phi( main::@4/assert_ptr::actual#0 )
  assert_ptr::expect#1 = phi( main::@4/assert_ptr::expect#0 )
  assert_ptr::$0 = assert_ptr::expect#1 != assert_ptr::actual#1
  if(assert_ptr::$0) goto assert_ptr::@1
  to:assert_ptr::@2
assert_ptr::@1: scope:[assert_ptr]  from assert_ptr
  assert_ptr::message#11 = phi( assert_ptr/assert_ptr::message#8 )
  assert_ptr::actual#6 = phi( assert_ptr/assert_ptr::actual#1 )
  assert_ptr::expect#4 = phi( assert_ptr/assert_ptr::expect#1 )
  textcolor::color#2 = RED
  call textcolor
  textcolor::return#4 = textcolor::return#1
  to:assert_ptr::@3
assert_ptr::@3: scope:[assert_ptr]  from assert_ptr::@1
  assert_ptr::message#10 = phi( assert_ptr::@1/assert_ptr::message#11 )
  assert_ptr::actual#5 = phi( assert_ptr::@1/assert_ptr::actual#6 )
  assert_ptr::expect#3 = phi( assert_ptr::@1/assert_ptr::expect#4 )
  printf_str::putc#8 = &cputc
  printf_str::s#9 = assert_ptr::s
  call printf_str
  to:assert_ptr::@4
assert_ptr::@4: scope:[assert_ptr]  from assert_ptr::@3
  assert_ptr::message#9 = phi( assert_ptr::@3/assert_ptr::message#10 )
  assert_ptr::actual#4 = phi( assert_ptr::@3/assert_ptr::actual#5 )
  assert_ptr::expect#2 = phi( assert_ptr::@3/assert_ptr::expect#3 )
  printf_uint::putc#2 = &cputc
  printf_uint::uvalue#2 = (unsigned int)assert_ptr::expect#2
  printf_uint::format_min_length#2 = 0
  printf_uint::format_justify_left#2 = 0
  printf_uint::format_sign_always#2 = 0
  printf_uint::format_zero_padding#2 = 0
  printf_uint::format_upper_case#2 = 0
  printf_uint::format_radix#2 = HEXADECIMAL
  call printf_uint
  to:assert_ptr::@5
assert_ptr::@5: scope:[assert_ptr]  from assert_ptr::@4
  assert_ptr::message#7 = phi( assert_ptr::@4/assert_ptr::message#9 )
  assert_ptr::actual#3 = phi( assert_ptr::@4/assert_ptr::actual#4 )
  printf_str::putc#9 = &cputc
  printf_str::s#10 = assert_ptr::s1
  call printf_str
  to:assert_ptr::@6
assert_ptr::@6: scope:[assert_ptr]  from assert_ptr::@5
  assert_ptr::message#5 = phi( assert_ptr::@5/assert_ptr::message#7 )
  assert_ptr::actual#2 = phi( assert_ptr::@5/assert_ptr::actual#3 )
  printf_uint::putc#3 = &cputc
  printf_uint::uvalue#3 = (unsigned int)assert_ptr::actual#2
  printf_uint::format_min_length#3 = 0
  printf_uint::format_justify_left#3 = 0
  printf_uint::format_sign_always#3 = 0
  printf_uint::format_zero_padding#3 = 0
  printf_uint::format_upper_case#3 = 0
  printf_uint::format_radix#3 = HEXADECIMAL
  call printf_uint
  to:assert_ptr::@7
assert_ptr::@7: scope:[assert_ptr]  from assert_ptr::@6
  assert_ptr::message#3 = phi( assert_ptr::@6/assert_ptr::message#5 )
  printf_str::putc#10 = &cputc
  printf_str::s#11 = assert_ptr::s2
  call printf_str
  to:assert_ptr::@8
assert_ptr::@8: scope:[assert_ptr]  from assert_ptr::@7
  assert_ptr::message#1 = phi( assert_ptr::@7/assert_ptr::message#3 )
  printf_string::putc#2 = &cputc
  printf_string::str#2 = assert_ptr::message#1
  printf_string::format_min_length#2 = 0
  printf_string::format_justify_left#2 = 0
  call printf_string
  to:assert_ptr::@9
assert_ptr::@9: scope:[assert_ptr]  from assert_ptr::@8
  printf_str::putc#11 = &cputc
  printf_str::s#12 = assert_ptr::s3
  call printf_str
  to:assert_ptr::@10
assert_ptr::@10: scope:[assert_ptr]  from assert_ptr::@9
  to:assert_ptr::@return
assert_ptr::@2: scope:[assert_ptr]  from assert_ptr
  assert_ptr::message#6 = phi( assert_ptr/assert_ptr::message#8 )
  textcolor::color#3 = GREEN
  call textcolor
  textcolor::return#5 = textcolor::return#1
  to:assert_ptr::@11
assert_ptr::@11: scope:[assert_ptr]  from assert_ptr::@2
  assert_ptr::message#4 = phi( assert_ptr::@2/assert_ptr::message#6 )
  printf_str::putc#12 = &cputc
  printf_str::s#13 = assert_ptr::s4
  call printf_str
  to:assert_ptr::@12
assert_ptr::@12: scope:[assert_ptr]  from assert_ptr::@11
  assert_ptr::message#2 = phi( assert_ptr::@11/assert_ptr::message#4 )
  printf_string::putc#3 = &cputc
  printf_string::str#3 = assert_ptr::message#2
  printf_string::format_min_length#3 = 0
  printf_string::format_justify_left#3 = 0
  call printf_string
  to:assert_ptr::@13
assert_ptr::@13: scope:[assert_ptr]  from assert_ptr::@12
  printf_str::putc#13 = &cputc
  printf_str::s#14 = assert_ptr::s5
  call printf_str
  to:assert_ptr::@14
assert_ptr::@14: scope:[assert_ptr]  from assert_ptr::@13
  to:assert_ptr::@return
assert_ptr::@return: scope:[assert_ptr]  from assert_ptr::@10 assert_ptr::@14
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  conio_cursor_x = 0
  conio_cursor_y = 0
  conio_line_text = CONIO_SCREEN_TEXT
  conio_line_color = CONIO_SCREEN_COLORS
  conio_textcolor = CONIO_TEXTCOLOR_DEFAULT
  conio_scroll_enable = 1
  call conio_c64_init
  to:__start::@2
__start::@2: scope:[__start]  from __start::__init1
  to:__start::@1
__start::@1: scope:[__start]  from __start::@2
  call main
  to:__start::@3
__start::@3: scope:[__start]  from __start::@1
  to:__start::@return
__start::@return: scope:[__start]  from __start::@3
  return 
  to:@return

SYMBOL TABLE SSA
__constant char BINARY = 2
__constant char * const COLORRAM = (char *)$d800
__constant char * const CONIO_SCREEN_COLORS = COLORRAM
__constant char * const CONIO_SCREEN_TEXT = DEFAULT_SCREEN
__constant const char CONIO_TEXTCOLOR_DEFAULT = LIGHT_BLUE
__constant char DECIMAL = $a
__constant char * const DEFAULT_SCREEN = (char *)$400
__constant char DIGITS[] = "0123456789abcdef"z
__constant const char GREEN = 5
__constant char HEXADECIMAL = $10
__constant const char LIGHT_BLUE = $e
__constant char OCTAL = 8
__constant char OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
__constant char OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN = 0
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant unsigned int RADIX_BINARY_VALUES[] = { $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2 }
__constant unsigned int RADIX_DECIMAL_VALUES[] = { $2710, $3e8, $64, $a }
__constant unsigned int RADIX_HEXADECIMAL_VALUES[] = { $1000, $100, $10 }
__constant unsigned int RADIX_OCTAL_VALUES[] = { $8000, $1000, $200, $40, 8 }
__constant const char RED = 2
__constant char SIZEOF_UNSIGNED_INT = 2
__constant unsigned int STACK_BASE = $103
void __start()
void assert_ptr(void *expect , void *actual , char *message)
bool assert_ptr::$0
void *assert_ptr::actual
void *assert_ptr::actual#0
void *assert_ptr::actual#1
void *assert_ptr::actual#2
void *assert_ptr::actual#3
void *assert_ptr::actual#4
void *assert_ptr::actual#5
void *assert_ptr::actual#6
void *assert_ptr::expect
void *assert_ptr::expect#0
void *assert_ptr::expect#1
void *assert_ptr::expect#2
void *assert_ptr::expect#3
void *assert_ptr::expect#4
char *assert_ptr::message
char *assert_ptr::message#0
char *assert_ptr::message#1
char *assert_ptr::message#10
char *assert_ptr::message#11
char *assert_ptr::message#2
char *assert_ptr::message#3
char *assert_ptr::message#4
char *assert_ptr::message#5
char *assert_ptr::message#6
char *assert_ptr::message#7
char *assert_ptr::message#8
char *assert_ptr::message#9
__constant char assert_ptr::s[$1b] = "Assert failed. expected:0x"
__constant char assert_ptr::s1[$b] = " actual:0x"
__constant char assert_ptr::s2[3] = ". "
__constant char assert_ptr::s3[2] = "
"
__constant char assert_ptr::s4[5] = "ok! "
__constant char assert_ptr::s5[2] = "
"
void assert_uint(unsigned int expect , unsigned int actual , char *message)
bool assert_uint::$0
unsigned int assert_uint::actual
unsigned int assert_uint::actual#0
unsigned int assert_uint::actual#1
unsigned int assert_uint::actual#2
unsigned int assert_uint::actual#3
unsigned int assert_uint::actual#4
unsigned int assert_uint::actual#5
unsigned int assert_uint::actual#6
unsigned int assert_uint::expect
unsigned int assert_uint::expect#0
unsigned int assert_uint::expect#1
unsigned int assert_uint::expect#2
unsigned int assert_uint::expect#3
unsigned int assert_uint::expect#4
char *assert_uint::message
char *assert_uint::message#0
char *assert_uint::message#1
char *assert_uint::message#10
char *assert_uint::message#11
char *assert_uint::message#2
char *assert_uint::message#3
char *assert_uint::message#4
char *assert_uint::message#5
char *assert_uint::message#6
char *assert_uint::message#7
char *assert_uint::message#8
char *assert_uint::message#9
__constant char assert_uint::s[$19] = "Assert failed. expected:"
__constant char assert_uint::s1[9] = " actual:"
__constant char assert_uint::s2[3] = ". "
__constant char assert_uint::s3[2] = "
"
__constant char assert_uint::s4[5] = "ok! "
__constant char assert_uint::s5[2] = "
"
void clrscr()
bool clrscr::$0
bool clrscr::$1
char clrscr::c
char clrscr::c#0
char clrscr::c#1
char clrscr::c#2
char clrscr::c#3
char clrscr::l
char clrscr::l#0
char clrscr::l#1
char clrscr::l#2
char clrscr::l#3
char clrscr::l#4
char clrscr::l#5
char clrscr::l#6
char *clrscr::line_cols
char *clrscr::line_cols#0
char *clrscr::line_cols#1
char *clrscr::line_cols#2
char *clrscr::line_cols#3
char *clrscr::line_cols#4
char *clrscr::line_cols#5
char *clrscr::line_cols#6
char *clrscr::line_text
char *clrscr::line_text#0
char *clrscr::line_text#1
char *clrscr::line_text#2
char *clrscr::line_text#3
char *clrscr::line_text#4
char *clrscr::line_text#5
char *clrscr::line_text#6
void conio_c64_init()
bool conio_c64_init::$0
bool conio_c64_init::$1
__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *)$d6
char conio_c64_init::line
char conio_c64_init::line#0
char conio_c64_init::line#1
char conio_c64_init::line#2
__loadstore char conio_cursor_x
__loadstore char conio_cursor_y
__loadstore char *conio_line_color
__loadstore char *conio_line_text
__loadstore char conio_scroll_enable
__loadstore char conio_textcolor
__stackcall void cputc(char c)
bool cputc::$0
bool cputc::$1
bool cputc::$2
__constant char cputc::OFFSET_STACK_C = 0
char cputc::c
char cputc::c#0
char cputc::c#1
void cputln()
void cscroll()
bool cscroll::$0
bool cscroll::$1
bool cscroll::$7
void gotoxy(char x , char y)
bool gotoxy::$0
bool gotoxy::$1
bool gotoxy::$2
bool gotoxy::$3
char *gotoxy::$5
char *gotoxy::$6
unsigned int gotoxy::$7
unsigned int gotoxy::line_offset
unsigned int gotoxy::line_offset#0
char gotoxy::x
char gotoxy::x#0
char gotoxy::x#1
char gotoxy::x#2
char gotoxy::x#3
char gotoxy::x#4
char gotoxy::x#5
char gotoxy::x#6
char gotoxy::y
char gotoxy::y#0
char gotoxy::y#1
char gotoxy::y#2
char gotoxy::y#3
char gotoxy::y#4
char gotoxy::y#5
char gotoxy::y#6
void main()
unsigned int main::$2
__constant char main::message[$a] = "finding a"
__constant char main::message1[$e] = "not finding a"
char *main::ptr
char *main::ptr#0
char *main::ptr2
char *main::ptr2#0
__constant char *main::str = "this is a test"
void * memchr(const void *str , char c , unsigned int n)
bool memchr::$0
bool memchr::$1
bool memchr::$2
char memchr::c
char memchr::c#0
char memchr::c#1
char memchr::c#2
char memchr::c#3
char memchr::c#4
char memchr::c#5
unsigned int memchr::i
unsigned int memchr::i#0
unsigned int memchr::i#1
unsigned int memchr::i#2
unsigned int memchr::i#3
unsigned int memchr::i#4
unsigned int memchr::n
unsigned int memchr::n#0
unsigned int memchr::n#1
unsigned int memchr::n#2
unsigned int memchr::n#3
unsigned int memchr::n#4
unsigned int memchr::n#5
char *memchr::ptr
char *memchr::ptr#0
char *memchr::ptr#1
char *memchr::ptr#2
char *memchr::ptr#3
char *memchr::ptr#4
char *memchr::ptr#5
void *memchr::return
void *memchr::return#0
void *memchr::return#1
void *memchr::return#2
void *memchr::return#3
void *memchr::return#4
void *memchr::return#5
void *memchr::return#6
void *memchr::return#7
const void *memchr::str
const void *memchr::str#0
const void *memchr::str#1
const void *memchr::str#2
void * memcpy(void *destination , void *source , unsigned int num)
bool memcpy::$1
char *memcpy::$2
void *memcpy::destination
void *memcpy::destination#0
void *memcpy::destination#1
void *memcpy::destination#2
void *memcpy::destination#3
void *memcpy::destination#4
void *memcpy::destination#5
char *memcpy::dst
char *memcpy::dst#0
char *memcpy::dst#1
char *memcpy::dst#2
char *memcpy::dst#3
unsigned int memcpy::num
unsigned int memcpy::num#0
unsigned int memcpy::num#1
unsigned int memcpy::num#2
void *memcpy::return
void *memcpy::return#0
void *memcpy::return#1
void *memcpy::return#2
void *memcpy::return#3
void *memcpy::return#4
void *memcpy::source
void *memcpy::source#0
void *memcpy::source#1
void *memcpy::source#2
char *memcpy::src
char *memcpy::src#0
char *memcpy::src#1
char *memcpy::src#2
char *memcpy::src#3
char *memcpy::src_end
char *memcpy::src_end#0
char *memcpy::src_end#1
char *memcpy::src_end#2
void * memset(void *str , char c , unsigned int num)
bool memset::$0
bool memset::$1
bool memset::$3
char *memset::$4
char memset::c
char memset::c#0
char memset::c#1
char memset::c#2
char memset::c#3
char memset::c#4
char memset::c#5
char *memset::dst
char *memset::dst#0
char *memset::dst#1
char *memset::dst#2
char *memset::dst#3
char *memset::end
char *memset::end#0
char *memset::end#1
char *memset::end#2
unsigned int memset::num
unsigned int memset::num#0
unsigned int memset::num#1
unsigned int memset::num#2
unsigned int memset::num#3
void *memset::return
void *memset::return#0
void *memset::return#1
void *memset::return#2
void *memset::return#3
void *memset::return#4
void *memset::str
void *memset::str#0
void *memset::str#1
void *memset::str#2
void *memset::str#3
void *memset::str#4
void *memset::str#5
void *memset::str#6
__loadstore struct printf_buffer_number printf_buffer = {}
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
bool printf_number_buffer::$0
bool printf_number_buffer::$1
bool printf_number_buffer::$10
bool printf_number_buffer::$12
bool printf_number_buffer::$14
bool printf_number_buffer::$15
bool printf_number_buffer::$16
bool printf_number_buffer::$17
unsigned int printf_number_buffer::$19
bool printf_number_buffer::$2
bool printf_number_buffer::$20
signed char printf_number_buffer::$21
bool printf_number_buffer::$22
bool printf_number_buffer::$23
signed char printf_number_buffer::$25
bool printf_number_buffer::$26
bool printf_number_buffer::$27
bool printf_number_buffer::$28
bool printf_number_buffer::$29
bool printf_number_buffer::$3
bool printf_number_buffer::$30
bool printf_number_buffer::$31
bool printf_number_buffer::$32
bool printf_number_buffer::$4
bool printf_number_buffer::$5
bool printf_number_buffer::$7
bool printf_number_buffer::$9
struct printf_buffer_number printf_number_buffer::buffer
char *printf_number_buffer::buffer_digits
char *printf_number_buffer::buffer_digits#0
char *printf_number_buffer::buffer_digits#1
char *printf_number_buffer::buffer_digits#10
char *printf_number_buffer::buffer_digits#11
char *printf_number_buffer::buffer_digits#12
char *printf_number_buffer::buffer_digits#13
char *printf_number_buffer::buffer_digits#14
char *printf_number_buffer::buffer_digits#15
char *printf_number_buffer::buffer_digits#16
char *printf_number_buffer::buffer_digits#17
char *printf_number_buffer::buffer_digits#18
char *printf_number_buffer::buffer_digits#2
char *printf_number_buffer::buffer_digits#3
char *printf_number_buffer::buffer_digits#4
char *printf_number_buffer::buffer_digits#5
char *printf_number_buffer::buffer_digits#6
char *printf_number_buffer::buffer_digits#7
char *printf_number_buffer::buffer_digits#8
char *printf_number_buffer::buffer_digits#9
char printf_number_buffer::buffer_sign
char printf_number_buffer::buffer_sign#0
char printf_number_buffer::buffer_sign#1
char printf_number_buffer::buffer_sign#10
char printf_number_buffer::buffer_sign#11
char printf_number_buffer::buffer_sign#2
char printf_number_buffer::buffer_sign#3
char printf_number_buffer::buffer_sign#4
char printf_number_buffer::buffer_sign#5
char printf_number_buffer::buffer_sign#6
char printf_number_buffer::buffer_sign#7
char printf_number_buffer::buffer_sign#8
char printf_number_buffer::buffer_sign#9
struct printf_format_number printf_number_buffer::format
char printf_number_buffer::format_justify_left
char printf_number_buffer::format_justify_left#0
char printf_number_buffer::format_justify_left#1
char printf_number_buffer::format_justify_left#10
char printf_number_buffer::format_justify_left#11
char printf_number_buffer::format_justify_left#12
char printf_number_buffer::format_justify_left#13
char printf_number_buffer::format_justify_left#14
char printf_number_buffer::format_justify_left#15
char printf_number_buffer::format_justify_left#16
char printf_number_buffer::format_justify_left#17
char printf_number_buffer::format_justify_left#18
char printf_number_buffer::format_justify_left#19
char printf_number_buffer::format_justify_left#2
char printf_number_buffer::format_justify_left#3
char printf_number_buffer::format_justify_left#4
char printf_number_buffer::format_justify_left#5
char printf_number_buffer::format_justify_left#6
char printf_number_buffer::format_justify_left#7
char printf_number_buffer::format_justify_left#8
char printf_number_buffer::format_justify_left#9
char printf_number_buffer::format_min_length
char printf_number_buffer::format_min_length#0
char printf_number_buffer::format_min_length#1
char printf_number_buffer::format_min_length#2
char printf_number_buffer::format_min_length#3
char printf_number_buffer::format_min_length#4
char printf_number_buffer::format_min_length#5
char printf_number_buffer::format_radix
char printf_number_buffer::format_radix#0
char printf_number_buffer::format_sign_always
char printf_number_buffer::format_sign_always#0
char printf_number_buffer::format_upper_case
char printf_number_buffer::format_upper_case#0
char printf_number_buffer::format_upper_case#1
char printf_number_buffer::format_upper_case#10
char printf_number_buffer::format_upper_case#11
char printf_number_buffer::format_upper_case#12
char printf_number_buffer::format_upper_case#13
char printf_number_buffer::format_upper_case#14
char printf_number_buffer::format_upper_case#15
char printf_number_buffer::format_upper_case#2
char printf_number_buffer::format_upper_case#3
char printf_number_buffer::format_upper_case#4
char printf_number_buffer::format_upper_case#5
char printf_number_buffer::format_upper_case#6
char printf_number_buffer::format_upper_case#7
char printf_number_buffer::format_upper_case#8
char printf_number_buffer::format_upper_case#9
char printf_number_buffer::format_zero_padding
char printf_number_buffer::format_zero_padding#0
char printf_number_buffer::format_zero_padding#1
char printf_number_buffer::format_zero_padding#10
char printf_number_buffer::format_zero_padding#11
char printf_number_buffer::format_zero_padding#12
char printf_number_buffer::format_zero_padding#13
char printf_number_buffer::format_zero_padding#14
char printf_number_buffer::format_zero_padding#15
char printf_number_buffer::format_zero_padding#16
char printf_number_buffer::format_zero_padding#17
char printf_number_buffer::format_zero_padding#18
char printf_number_buffer::format_zero_padding#19
char printf_number_buffer::format_zero_padding#2
char printf_number_buffer::format_zero_padding#3
char printf_number_buffer::format_zero_padding#4
char printf_number_buffer::format_zero_padding#5
char printf_number_buffer::format_zero_padding#6
char printf_number_buffer::format_zero_padding#7
char printf_number_buffer::format_zero_padding#8
char printf_number_buffer::format_zero_padding#9
signed char printf_number_buffer::len
signed char printf_number_buffer::len#0
signed char printf_number_buffer::len#1
signed char printf_number_buffer::len#2
signed char printf_number_buffer::len#3
signed char printf_number_buffer::padding
signed char printf_number_buffer::padding#0
signed char printf_number_buffer::padding#1
signed char printf_number_buffer::padding#10
signed char printf_number_buffer::padding#11
signed char printf_number_buffer::padding#12
signed char printf_number_buffer::padding#13
signed char printf_number_buffer::padding#14
signed char printf_number_buffer::padding#15
signed char printf_number_buffer::padding#16
signed char printf_number_buffer::padding#2
signed char printf_number_buffer::padding#3
signed char printf_number_buffer::padding#4
signed char printf_number_buffer::padding#5
signed char printf_number_buffer::padding#6
signed char printf_number_buffer::padding#7
signed char printf_number_buffer::padding#8
signed char printf_number_buffer::padding#9
void (*printf_number_buffer::putc)(char)
void (*printf_number_buffer::putc#0)(char)
void (*printf_number_buffer::putc#1)(char)
void (*printf_number_buffer::putc#10)(char)
void (*printf_number_buffer::putc#11)(char)
void (*printf_number_buffer::putc#12)(char)
void (*printf_number_buffer::putc#13)(char)
void (*printf_number_buffer::putc#14)(char)
void (*printf_number_buffer::putc#15)(char)
void (*printf_number_buffer::putc#16)(char)
void (*printf_number_buffer::putc#17)(char)
void (*printf_number_buffer::putc#18)(char)
void (*printf_number_buffer::putc#19)(char)
void (*printf_number_buffer::putc#2)(char)
void (*printf_number_buffer::putc#20)(char)
void (*printf_number_buffer::putc#3)(char)
void (*printf_number_buffer::putc#4)(char)
void (*printf_number_buffer::putc#5)(char)
void (*printf_number_buffer::putc#6)(char)
void (*printf_number_buffer::putc#7)(char)
void (*printf_number_buffer::putc#8)(char)
void (*printf_number_buffer::putc#9)(char)
void printf_padding(void (*putc)(char) , char pad , char length)
bool printf_padding::$0
char printf_padding::i
char printf_padding::i#0
char printf_padding::i#1
char printf_padding::i#2
char printf_padding::i#3
char printf_padding::i#4
char printf_padding::length
char printf_padding::length#0
char printf_padding::length#1
char printf_padding::length#2
char printf_padding::length#3
char printf_padding::length#4
char printf_padding::length#5
char printf_padding::length#6
char printf_padding::length#7
char printf_padding::length#8
char printf_padding::pad
char printf_padding::pad#0
char printf_padding::pad#1
char printf_padding::pad#2
char printf_padding::pad#3
char printf_padding::pad#4
char printf_padding::pad#5
char printf_padding::pad#6
char printf_padding::pad#7
char printf_padding::pad#8
void (*printf_padding::putc)(char)
void (*printf_padding::putc#0)(char)
void (*printf_padding::putc#1)(char)
void (*printf_padding::putc#2)(char)
void (*printf_padding::putc#3)(char)
void (*printf_padding::putc#4)(char)
void (*printf_padding::putc#5)(char)
void (*printf_padding::putc#6)(char)
void (*printf_padding::putc#7)(char)
void (*printf_padding::putc#8)(char)
void printf_str(void (*putc)(char) , const char *s)
char printf_str::$0
bool printf_str::$2
char printf_str::c
char printf_str::c#0
char printf_str::c#1
char printf_str::c#2
void (*printf_str::putc)(char)
void (*printf_str::putc#0)(char)
void (*printf_str::putc#1)(char)
void (*printf_str::putc#10)(char)
void (*printf_str::putc#11)(char)
void (*printf_str::putc#12)(char)
void (*printf_str::putc#13)(char)
void (*printf_str::putc#14)(char)
void (*printf_str::putc#15)(char)
void (*printf_str::putc#16)(char)
void (*printf_str::putc#2)(char)
void (*printf_str::putc#3)(char)
void (*printf_str::putc#4)(char)
void (*printf_str::putc#5)(char)
void (*printf_str::putc#6)(char)
void (*printf_str::putc#7)(char)
void (*printf_str::putc#8)(char)
void (*printf_str::putc#9)(char)
const char *printf_str::s
const char *printf_str::s#0
const char *printf_str::s#1
const char *printf_str::s#10
const char *printf_str::s#11
const char *printf_str::s#12
const char *printf_str::s#13
const char *printf_str::s#14
const char *printf_str::s#15
const char *printf_str::s#16
const char *printf_str::s#17
const char *printf_str::s#2
const char *printf_str::s#3
const char *printf_str::s#4
const char *printf_str::s#5
const char *printf_str::s#6
const char *printf_str::s#7
const char *printf_str::s#8
const char *printf_str::s#9
void printf_string(void (*putc)(char) , char *str , char format_min_length , char format_justify_left)
bool printf_string::$0
bool printf_string::$1
signed char printf_string::$10
bool printf_string::$11
bool printf_string::$12
signed char printf_string::$13
bool printf_string::$14
bool printf_string::$15
bool printf_string::$2
bool printf_string::$3
bool printf_string::$6
bool printf_string::$7
unsigned int printf_string::$9
struct printf_format_string printf_string::format
char printf_string::format_justify_left
char printf_string::format_justify_left#0
char printf_string::format_justify_left#1
char printf_string::format_justify_left#10
char printf_string::format_justify_left#11
char printf_string::format_justify_left#12
char printf_string::format_justify_left#2
char printf_string::format_justify_left#3
char printf_string::format_justify_left#4
char printf_string::format_justify_left#5
char printf_string::format_justify_left#6
char printf_string::format_justify_left#7
char printf_string::format_justify_left#8
char printf_string::format_justify_left#9
char printf_string::format_min_length
char printf_string::format_min_length#0
char printf_string::format_min_length#1
char printf_string::format_min_length#2
char printf_string::format_min_length#3
char printf_string::format_min_length#4
char printf_string::format_min_length#5
char printf_string::format_min_length#6
signed char printf_string::len
signed char printf_string::len#0
signed char printf_string::padding
signed char printf_string::padding#0
signed char printf_string::padding#1
signed char printf_string::padding#2
signed char printf_string::padding#3
signed char printf_string::padding#4
signed char printf_string::padding#5
signed char printf_string::padding#6
signed char printf_string::padding#7
signed char printf_string::padding#8
void (*printf_string::putc)(char)
void (*printf_string::putc#0)(char)
void (*printf_string::putc#1)(char)
void (*printf_string::putc#10)(char)
void (*printf_string::putc#11)(char)
void (*printf_string::putc#12)(char)
void (*printf_string::putc#13)(char)
void (*printf_string::putc#2)(char)
void (*printf_string::putc#3)(char)
void (*printf_string::putc#4)(char)
void (*printf_string::putc#5)(char)
void (*printf_string::putc#6)(char)
void (*printf_string::putc#7)(char)
void (*printf_string::putc#8)(char)
void (*printf_string::putc#9)(char)
char *printf_string::str
char *printf_string::str#0
char *printf_string::str#1
char *printf_string::str#10
char *printf_string::str#11
char *printf_string::str#2
char *printf_string::str#3
char *printf_string::str#4
char *printf_string::str#5
char *printf_string::str#6
char *printf_string::str#7
char *printf_string::str#8
char *printf_string::str#9
void printf_uint(void (*putc)(char) , unsigned int uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
number printf_uint::$0
char printf_uint::$1
number printf_uint::$2
bool printf_uint::$5
struct printf_format_number printf_uint::format
char printf_uint::format_justify_left
char printf_uint::format_justify_left#0
char printf_uint::format_justify_left#1
char printf_uint::format_justify_left#2
char printf_uint::format_justify_left#3
char printf_uint::format_justify_left#4
char printf_uint::format_justify_left#5
char printf_uint::format_justify_left#6
char printf_uint::format_justify_left#7
char printf_uint::format_justify_left#8
char printf_uint::format_min_length
char printf_uint::format_min_length#0
char printf_uint::format_min_length#1
char printf_uint::format_min_length#2
char printf_uint::format_min_length#3
char printf_uint::format_min_length#4
char printf_uint::format_min_length#5
char printf_uint::format_min_length#6
char printf_uint::format_min_length#7
char printf_uint::format_min_length#8
char printf_uint::format_radix
char printf_uint::format_radix#0
char printf_uint::format_radix#1
char printf_uint::format_radix#2
char printf_uint::format_radix#3
char printf_uint::format_radix#4
char printf_uint::format_radix#5
char printf_uint::format_radix#6
char printf_uint::format_radix#7
char printf_uint::format_radix#8
char printf_uint::format_sign_always
char printf_uint::format_sign_always#0
char printf_uint::format_sign_always#1
char printf_uint::format_sign_always#2
char printf_uint::format_sign_always#3
char printf_uint::format_sign_always#4
char printf_uint::format_sign_always#5
char printf_uint::format_sign_always#6
char printf_uint::format_sign_always#7
char printf_uint::format_sign_always#8
char printf_uint::format_upper_case
char printf_uint::format_upper_case#0
char printf_uint::format_upper_case#1
char printf_uint::format_upper_case#2
char printf_uint::format_upper_case#3
char printf_uint::format_upper_case#4
char printf_uint::format_upper_case#5
char printf_uint::format_upper_case#6
char printf_uint::format_upper_case#7
char printf_uint::format_upper_case#8
char printf_uint::format_zero_padding
char printf_uint::format_zero_padding#0
char printf_uint::format_zero_padding#1
char printf_uint::format_zero_padding#2
char printf_uint::format_zero_padding#3
char printf_uint::format_zero_padding#4
char printf_uint::format_zero_padding#5
char printf_uint::format_zero_padding#6
char printf_uint::format_zero_padding#7
char printf_uint::format_zero_padding#8
void (*printf_uint::putc)(char)
void (*printf_uint::putc#0)(char)
void (*printf_uint::putc#1)(char)
void (*printf_uint::putc#2)(char)
void (*printf_uint::putc#3)(char)
void (*printf_uint::putc#4)(char)
void (*printf_uint::putc#5)(char)
void (*printf_uint::putc#6)(char)
void (*printf_uint::putc#7)(char)
void (*printf_uint::putc#8)(char)
unsigned int printf_uint::uvalue
unsigned int printf_uint::uvalue#0
unsigned int printf_uint::uvalue#1
unsigned int printf_uint::uvalue#2
unsigned int printf_uint::uvalue#3
unsigned int printf_uint::uvalue#4
unsigned int printf_uint::uvalue#5
unsigned int printf_uint::uvalue#6
unsigned int printf_uint::uvalue#7
unsigned int strlen(char *str)
bool strlen::$0
unsigned int strlen::len
unsigned int strlen::len#0
unsigned int strlen::len#1
unsigned int strlen::len#2
unsigned int strlen::len#3
unsigned int strlen::len#4
unsigned int strlen::return
unsigned int strlen::return#0
unsigned int strlen::return#1
unsigned int strlen::return#2
unsigned int strlen::return#3
unsigned int strlen::return#4
unsigned int strlen::return#5
unsigned int strlen::return#6
char *strlen::str
char *strlen::str#0
char *strlen::str#1
char *strlen::str#2
char *strlen::str#3
char *strlen::str#4
char *strlen::str#5
char * strupr(char *str)
char strupr::$0
bool strupr::$1
char *strupr::return
char *strupr::return#0
char *strupr::return#1
char *strupr::return#2
char *strupr::return#3
char *strupr::src
char *strupr::src#0
char *strupr::src#1
char *strupr::src#2
char *strupr::src#3
char *strupr::src#4
char *strupr::str
char *strupr::str#0
char *strupr::str#1
char *strupr::str#2
char *strupr::str#3
char *strupr::str#4
char *strupr::str#5
char textcolor(char color)
char textcolor::color
char textcolor::color#0
char textcolor::color#1
char textcolor::color#2
char textcolor::color#3
char textcolor::color#4
char textcolor::old
char textcolor::old#0
char textcolor::return
char textcolor::return#0
char textcolor::return#1
char textcolor::return#2
char textcolor::return#3
char textcolor::return#4
char textcolor::return#5
char textcolor::return#6
char toupper(char ch)
bool toupper::$0
bool toupper::$1
bool toupper::$2
char toupper::$3
char toupper::ch
char toupper::ch#0
char toupper::ch#1
char toupper::ch#2
char toupper::ch#3
char toupper::return
char toupper::return#0
char toupper::return#1
char toupper::return#2
char toupper::return#3
char toupper::return#4
char toupper::return#5
void utoa(unsigned int value , char *buffer , char radix)
bool utoa::$0
bool utoa::$1
char utoa::$10
char utoa::$11
bool utoa::$2
bool utoa::$3
number utoa::$4
bool utoa::$5
bool utoa::$6
bool utoa::$7
bool utoa::$8
unsigned int utoa::$9
char *utoa::buffer
char *utoa::buffer#0
char *utoa::buffer#1
char *utoa::buffer#10
char *utoa::buffer#11
char *utoa::buffer#12
char *utoa::buffer#13
char *utoa::buffer#14
char *utoa::buffer#15
char *utoa::buffer#16
char *utoa::buffer#17
char *utoa::buffer#18
char *utoa::buffer#19
char *utoa::buffer#2
char *utoa::buffer#20
char *utoa::buffer#21
char *utoa::buffer#3
char *utoa::buffer#4
char *utoa::buffer#5
char *utoa::buffer#6
char *utoa::buffer#7
char *utoa::buffer#8
char *utoa::buffer#9
char utoa::digit
char utoa::digit#0
char utoa::digit#1
char utoa::digit#2
char utoa::digit#3
char utoa::digit#4
char utoa::digit#5
char utoa::digit#6
unsigned int utoa::digit_value
unsigned int utoa::digit_value#0
unsigned int utoa::digit_value#1
unsigned int *utoa::digit_values
unsigned int *utoa::digit_values#0
unsigned int *utoa::digit_values#1
unsigned int *utoa::digit_values#10
unsigned int *utoa::digit_values#2
unsigned int *utoa::digit_values#3
unsigned int *utoa::digit_values#4
unsigned int *utoa::digit_values#5
unsigned int *utoa::digit_values#6
unsigned int *utoa::digit_values#7
unsigned int *utoa::digit_values#8
unsigned int *utoa::digit_values#9
char utoa::max_digits
char utoa::max_digits#0
char utoa::max_digits#1
char utoa::max_digits#10
char utoa::max_digits#2
char utoa::max_digits#3
char utoa::max_digits#4
char utoa::max_digits#5
char utoa::max_digits#6
char utoa::max_digits#7
char utoa::max_digits#8
char utoa::max_digits#9
char utoa::radix
char utoa::radix#0
char utoa::radix#1
char utoa::radix#2
char utoa::radix#3
char utoa::radix#4
char utoa::started
char utoa::started#0
char utoa::started#1
char utoa::started#2
char utoa::started#3
char utoa::started#4
unsigned int utoa::value
unsigned int utoa::value#0
unsigned int utoa::value#1
unsigned int utoa::value#10
unsigned int utoa::value#11
unsigned int utoa::value#12
unsigned int utoa::value#13
unsigned int utoa::value#14
unsigned int utoa::value#15
unsigned int utoa::value#2
unsigned int utoa::value#3
unsigned int utoa::value#4
unsigned int utoa::value#5
unsigned int utoa::value#6
unsigned int utoa::value#7
unsigned int utoa::value#8
unsigned int utoa::value#9
unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
bool utoa_append::$0
char *utoa_append::buffer
char *utoa_append::buffer#0
char *utoa_append::buffer#1
char *utoa_append::buffer#2
char *utoa_append::buffer#3
char *utoa_append::buffer#4
char utoa_append::digit
char utoa_append::digit#0
char utoa_append::digit#1
char utoa_append::digit#2
char utoa_append::digit#3
char utoa_append::digit#4
unsigned int utoa_append::return
unsigned int utoa_append::return#0
unsigned int utoa_append::return#1
unsigned int utoa_append::return#2
unsigned int utoa_append::return#3
unsigned int utoa_append::return#4
unsigned int utoa_append::sub
unsigned int utoa_append::sub#0
unsigned int utoa_append::sub#1
unsigned int utoa_append::sub#2
unsigned int utoa_append::sub#3
unsigned int utoa_append::value
unsigned int utoa_append::value#0
unsigned int utoa_append::value#1
unsigned int utoa_append::value#2
unsigned int utoa_append::value#3
unsigned int utoa_append::value#4
unsigned int utoa_append::value#5

Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#2 > 0
Adding number conversion cast (unumber) 0 in strlen::$0 = 0 != *strlen::str#3
Adding number conversion cast (unumber) 0 in strupr::$1 = 0 != *strupr::src#2
Adding number conversion cast (unumber) 5 in utoa::max_digits#1 = 5
Adding number conversion cast (unumber) 4 in utoa::max_digits#2 = 4
Adding number conversion cast (unumber) 6 in utoa::max_digits#3 = 6
Adding number conversion cast (unumber) $10 in utoa::max_digits#4 = $10
Adding number conversion cast (unumber) 0 in *utoa::buffer#2 = 0
Adding number conversion cast (unumber) 1 in utoa::$4 = utoa::max_digits#5 - 1
Adding number conversion cast (unumber) utoa::$4 in utoa::$4 = utoa::max_digits#5 - (unumber)1
Adding number conversion cast (unumber) 0 in *utoa::buffer#3 = 0
Adding number conversion cast (unumber) 1 in utoa::started#1 = 1
Adding number conversion cast (unumber) $19 in clrscr::$0 = clrscr::l#2 < $19
Adding number conversion cast (unumber) 0 in conio_cursor_x = 0
Adding number conversion cast (unumber) 0 in conio_cursor_y = 0
Adding number conversion cast (unumber) $28 in clrscr::$1 = clrscr::c#2 < $28
Adding number conversion cast (unumber) $28 in clrscr::line_text#1 = clrscr::line_text#3 + $28
Adding number conversion cast (unumber) $28 in clrscr::line_cols#1 = clrscr::line_cols#3 + $28
Adding number conversion cast (unumber) $19 in gotoxy::$0 = gotoxy::y#3 > $19
Adding number conversion cast (unumber) $28 in gotoxy::$2 = gotoxy::x#3 >= $28
Adding number conversion cast (unumber) 0 in gotoxy::y#0 = 0
Adding number conversion cast (unumber) $28 in gotoxy::line_offset#0 = gotoxy::$7 * $28
Adding number conversion cast (unumber) 0 in gotoxy::x#0 = 0
Adding number conversion cast (unumber) $28 in cputc::$1 = conio_cursor_x == $28
Adding number conversion cast (unumber) $28 in conio_line_text = conio_line_text + $28
Adding number conversion cast (unumber) $28 in conio_line_color = conio_line_color + $28
Adding number conversion cast (unumber) 0 in conio_cursor_x = 0
Adding number conversion cast (unumber) $19 in cscroll::$0 = conio_cursor_y == $19
Adding number conversion cast (unumber) 0 in cscroll::$7 = 0 != conio_scroll_enable
Adding number conversion cast (unumber) $28 in memcpy::source#0 = (void *)CONIO_SCREEN_TEXT+$28
Adding number conversion cast (unumber) $19*$28-$28 in memcpy::num#0 = $19*$28-$28
Adding number conversion cast (unumber) $28 in memcpy::source#1 = (void *)CONIO_SCREEN_COLORS+$28
Adding number conversion cast (unumber) $19*$28-$28 in memcpy::num#1 = $19*$28-$28
Adding number conversion cast (unumber) $28 in memset::str#0 = (void *)CONIO_SCREEN_TEXT+$19*$28-$28
Adding number conversion cast (unumber) $19*$28 in memset::str#0 = (void *)CONIO_SCREEN_TEXT+$19*$28-(unumber)$28
Adding number conversion cast (unumber) $28 in memset::num#0 = $28
Adding number conversion cast (unumber) $28 in memset::str#1 = (void *)CONIO_SCREEN_COLORS+$19*$28-$28
Adding number conversion cast (unumber) $19*$28 in memset::str#1 = (void *)CONIO_SCREEN_COLORS+$19*$28-(unumber)$28
Adding number conversion cast (unumber) $28 in memset::num#1 = $28
Adding number conversion cast (unumber) $28 in conio_line_text = conio_line_text - $28
Adding number conversion cast (unumber) $28 in conio_line_color = conio_line_color - $28
Adding number conversion cast (unumber) 0 in gotoxy::x#1 = 0
Adding number conversion cast (unumber) 0 in gotoxy::y#1 = 0
Adding number conversion cast (unumber) $19 in conio_c64_init::$0 = conio_c64_init::line#0 >= $19
Adding number conversion cast (unumber) 0 in gotoxy::x#2 = 0
Adding number conversion cast (unumber) $19-1 in conio_c64_init::line#1 = $19-1
Adding number conversion cast (unumber) 0 in printf_str::$2 = 0 != printf_str::$0
Adding number conversion cast (unumber) 0 in printf_uint::$5 = 0 != printf_uint::format_sign_always#4
Adding number conversion cast (unumber) printf_uint::$2 in printf_uint::format_upper_case#5 = phi( printf_uint::@1/printf_uint::format_upper_case#6, printf_uint::@2/printf_uint::format_upper_case#7 )
  printf_uint::format_zero_padding#5 = phi( printf_uint::@1/printf_uint::format_zero_padding#6, printf_uint::@2/printf_uint::format_zero_padding#7 )
  printf_uint::format_sign_always#6 = phi( printf_uint::@1/printf_uint::format_sign_always#7, printf_uint::@2/printf_uint::format_sign_always#8 )
  printf_uint::format_justify_left#5 = phi( printf_uint::@1/printf_uint::format_justify_left#6, printf_uint::@2/printf_uint::format_justify_left#7 )
  printf_uint::format_min_length#5 = phi( printf_uint::@1/printf_uint::format_min_length#6, printf_uint::@2/printf_uint::format_min_length#7 )
  printf_uint::putc#5 = phi( printf_uint::@1/printf_uint::putc#6, printf_uint::@2/printf_uint::putc#7 )
  printf_uint::format_radix#4 = phi( printf_uint::@1/printf_uint::format_radix#6, printf_uint::@2/printf_uint::format_radix#7 )
  printf_uint::uvalue#4 = phi( printf_uint::@1/printf_uint::uvalue#5, printf_uint::@2/printf_uint::uvalue#6 )
  printf_uint::$2 = phi( printf_uint::@1/printf_uint::$1, printf_uint::@2/printf_uint::$0 )
Adding number conversion cast (unumber) printf_uint::$0 in printf_uint::format_upper_case#5 = phi( printf_uint::@1/printf_uint::format_upper_case#6, printf_uint::@2/printf_uint::format_upper_case#7 )
  printf_uint::format_zero_padding#5 = phi( printf_uint::@1/printf_uint::format_zero_padding#6, printf_uint::@2/printf_uint::format_zero_padding#7 )
  printf_uint::format_sign_always#6 = phi( printf_uint::@1/printf_uint::format_sign_always#7, printf_uint::@2/printf_uint::format_sign_always#8 )
  printf_uint::format_justify_left#5 = phi( printf_uint::@1/printf_uint::format_justify_left#6, printf_uint::@2/printf_uint::format_justify_left#7 )
  printf_uint::format_min_length#5 = phi( printf_uint::@1/printf_uint::format_min_length#6, printf_uint::@2/printf_uint::format_min_length#7 )
  printf_uint::putc#5 = phi( printf_uint::@1/printf_uint::putc#6, printf_uint::@2/printf_uint::putc#7 )
  printf_uint::format_radix#4 = phi( printf_uint::@1/printf_uint::format_radix#6, printf_uint::@2/printf_uint::format_radix#7 )
  printf_uint::uvalue#4 = phi( printf_uint::@1/printf_uint::uvalue#5, printf_uint::@2/printf_uint::uvalue#6 )
  printf_uint::$2 = phi( printf_uint::@1/printf_uint::$1, printf_uint::@2/printf_uint::$0 )
Adding number conversion cast (unumber) 0 in printf_number_buffer::$26 = 0 != printf_number_buffer::format_min_length#1
Adding number conversion cast (unumber) 0 in printf_number_buffer::$27 = 0 != printf_number_buffer::format_justify_left#1
Adding number conversion cast (unumber) 0 in printf_number_buffer::$28 = 0 != printf_number_buffer::format_zero_padding#1
Adding number conversion cast (unumber) 0 in printf_number_buffer::$29 = 0 != printf_number_buffer::buffer_sign#1
Adding number conversion cast (snumber) 0 in printf_number_buffer::$22 = printf_number_buffer::padding#1 < 0
Adding number conversion cast (snumber) 0 in printf_number_buffer::padding#2 = 0
Adding number conversion cast (unumber) 0 in printf_number_buffer::$30 = 0 != printf_number_buffer::buffer_sign#2
Adding number conversion cast (unumber) 0 in printf_number_buffer::$31 = 0 != printf_number_buffer::format_upper_case#1
Adding number conversion cast (unumber) 0 in printf_number_buffer::$32 = 0 != printf_number_buffer::format_zero_padding#3
Adding number conversion cast (unumber) 0 in printf_string::$14 = 0 != printf_string::format_min_length#4
Adding number conversion cast (unumber) 0 in printf_string::$15 = 0 != printf_string::format_justify_left#4
Adding number conversion cast (snumber) 0 in printf_string::$11 = printf_string::padding#1 < 0
Adding number conversion cast (snumber) 0 in printf_string::padding#2 = 0
Adding number conversion cast (unumber) $e in memchr::n#0 = $e
Adding number conversion cast (unumber) 8 in assert_uint::expect#0 = 8
Adding number conversion cast (unumber) 7 in memchr::n#1 = 7
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) 0 in printf_uint::$0 = 0
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast memcpy::src#0 = (char *)memcpy::source#2
Inlining cast memcpy::dst#0 = (char *)memcpy::destination#2
Inlining cast memset::dst#0 = (char *)memset::str#3
Inlining cast memchr::ptr#0 = (char *)memchr::str#2
Inlining cast memchr::return#1 = (void *)memchr::ptr#4
Inlining cast utoa::max_digits#1 = (unumber)5
Inlining cast utoa::max_digits#2 = (unumber)4
Inlining cast utoa::max_digits#3 = (unumber)6
Inlining cast utoa::max_digits#4 = (unumber)$10
Inlining cast *utoa::buffer#2 = (unumber)0
Inlining cast *utoa::buffer#3 = (unumber)0
Inlining cast utoa::started#1 = (unumber)1
Inlining cast conio_cursor_x = (unumber)0
Inlining cast conio_cursor_y = (unumber)0
Inlining cast gotoxy::y#0 = (unumber)0
Inlining cast gotoxy::x#0 = (unumber)0
Inlining cast conio_cursor_x = (unumber)0
Inlining cast memcpy::num#0 = (unumber)$19*$28-$28
Inlining cast memcpy::num#1 = (unumber)$19*$28-$28
Inlining cast memset::num#0 = (unumber)$28
Inlining cast memset::num#1 = (unumber)$28
Inlining cast gotoxy::x#1 = (unumber)0
Inlining cast gotoxy::y#1 = (unumber)0
Inlining cast gotoxy::x#2 = (unumber)0
Inlining cast conio_c64_init::line#1 = (unumber)$19-1
Inlining cast printf_uint::$0 = (unumber)0
Inlining cast printf_number_buffer::padding#2 = (snumber)0
Inlining cast printf_string::padding#2 = (snumber)0
Inlining cast memchr::n#0 = (unumber)$e
Inlining cast main::ptr#0 = (char *)memchr::return#6
Inlining cast assert_uint::expect#0 = (unumber)8
Inlining cast memchr::n#1 = (unumber)7
Inlining cast main::ptr2#0 = (char *)memchr::return#7
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 55296
Simplifying constant pointer cast (char *) 1024
Simplifying constant pointer cast (char *) 214
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant pointer cast (void *) 0
Simplifying constant integer cast 0
Simplifying constant integer cast 5
Simplifying constant integer cast 4
Simplifying constant integer cast 6
Simplifying constant integer cast $10
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast $19
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $19
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast $19
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $19
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $e
Simplifying constant integer cast 8
Simplifying constant integer cast 7
Simplifying constant pointer cast (void *) 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 5
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized unsigned number type (char) $e
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 7
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to char in utoa::$4 = utoa::max_digits#5 - 1
Inferred type updated to char in printf_uint::$0 = 0
Inferred type updated to char for printf_uint::$2
Inversing boolean not [19] memset::$1 = memset::num#2 <= 0 from [18] memset::$0 = memset::num#2 > 0
Inversing boolean not [57] memchr::$2 = *memchr::ptr#2 != memchr::c#2 from [56] memchr::$1 = *memchr::ptr#2 == memchr::c#2
Inversing boolean not [206] gotoxy::$1 = gotoxy::y#3 <= $19 from [205] gotoxy::$0 = gotoxy::y#3 > $19
Inversing boolean not [210] gotoxy::$3 = gotoxy::x#3 < $28 from [209] gotoxy::$2 = gotoxy::x#3 >= $28
Inversing boolean not [235] cputc::$2 = conio_cursor_x != $28 from [234] cputc::$1 = conio_cursor_x == $28
Inversing boolean not [253] cscroll::$1 = conio_cursor_y != $19 from [252] cscroll::$0 = conio_cursor_y == $19
Inversing boolean not [286] conio_c64_init::$1 = conio_c64_init::line#0 < $19 from [285] conio_c64_init::$0 = conio_c64_init::line#0 >= $19
Inversing boolean not [347] printf_number_buffer::$0 = 0 == printf_number_buffer::format_min_length#1 from [346] printf_number_buffer::$26 = 0 != printf_number_buffer::format_min_length#1
Inversing boolean not [351] printf_number_buffer::$1 = 0 == printf_number_buffer::format_justify_left#1 from [350] printf_number_buffer::$27 = 0 != printf_number_buffer::format_justify_left#1
Inversing boolean not [353] printf_number_buffer::$2 = 0 == printf_number_buffer::format_zero_padding#1 from [352] printf_number_buffer::$28 = 0 != printf_number_buffer::format_zero_padding#1
Inversing boolean not [366] printf_number_buffer::$20 = 0 == printf_number_buffer::buffer_sign#1 from [365] printf_number_buffer::$29 = 0 != printf_number_buffer::buffer_sign#1
Inversing boolean not [373] printf_number_buffer::$23 = printf_number_buffer::padding#1 >= 0 from [372] printf_number_buffer::$22 = printf_number_buffer::padding#1 < 0
Inversing boolean not [381] printf_number_buffer::$7 = 0 == printf_number_buffer::buffer_sign#2 from [380] printf_number_buffer::$30 = 0 != printf_number_buffer::buffer_sign#2
Inversing boolean not [399] printf_number_buffer::$12 = 0 == printf_number_buffer::format_upper_case#1 from [398] printf_number_buffer::$31 = 0 != printf_number_buffer::format_upper_case#1
Inversing boolean not [413] printf_number_buffer::$14 = 0 == printf_number_buffer::format_zero_padding#3 from [412] printf_number_buffer::$32 = 0 != printf_number_buffer::format_zero_padding#3
Inversing boolean not [432] printf_string::$0 = 0 == printf_string::format_min_length#4 from [431] printf_string::$14 = 0 != printf_string::format_min_length#4
Inversing boolean not [436] printf_string::$1 = 0 == printf_string::format_justify_left#4 from [435] printf_string::$15 = 0 != printf_string::format_justify_left#4
Inversing boolean not [451] printf_string::$12 = printf_string::padding#1 >= 0 from [450] printf_string::$11 = printf_string::padding#1 < 0
Successful SSA optimization Pass2UnaryNotSimplification
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Alias memcpy::src#2 = memcpy::src#3 
Alias memcpy::dst#2 = memcpy::dst#3 
Alias memcpy::src_end#1 = memcpy::src_end#2 
Alias memcpy::destination#3 = memcpy::destination#5 memcpy::destination#4 memcpy::return#0 memcpy::return#4 memcpy::return#1 
Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 
Alias memset::str#3 = memset::str#4 
Alias memset::num#2 = memset::num#3 
Alias memset::c#4 = memset::c#5 
Alias memset::c#2 = memset::c#3 
Alias memset::dst#2 = memset::dst#3 
Alias memset::end#1 = memset::end#2 
Alias memset::str#5 = memset::str#6 
Alias strlen::len#2 = strlen::len#4 strlen::len#3 strlen::return#0 strlen::return#4 strlen::return#1 
Alias strlen::str#3 = strlen::str#4 
Alias memchr::ptr#2 = memchr::ptr#5 memchr::ptr#3 memchr::ptr#4 
Alias memchr::c#2 = memchr::c#3 memchr::c#5 
Alias memchr::i#2 = memchr::i#4 memchr::i#3 
Alias memchr::n#2 = memchr::n#5 memchr::n#4 
Alias memchr::return#2 = memchr::return#5 
Alias toupper::ch#1 = toupper::ch#2 toupper::ch#3 toupper::return#1 
Alias toupper::return#0 = toupper::$3 
Alias toupper::return#2 = toupper::return#4 
Alias strupr::src#0 = strupr::str#1 
Alias strupr::src#2 = strupr::src#3 strupr::src#4 
Alias strupr::str#2 = strupr::str#5 strupr::str#3 strupr::str#4 strupr::return#0 strupr::return#3 strupr::return#1 
Alias toupper::return#3 = toupper::return#5 
Alias utoa::value#10 = utoa::value#8 utoa::value#12 utoa::value#13 utoa::value#9 utoa::value#14 utoa::value#15 utoa::value#11 
Alias utoa::buffer#10 = utoa::buffer#17 utoa::buffer#21 utoa::buffer#16 utoa::buffer#18 utoa::buffer#13 utoa::buffer#19 utoa::buffer#20 utoa::buffer#6 
Alias utoa::radix#1 = utoa::radix#2 utoa::radix#3 utoa::radix#4 
Alias utoa::digit#2 = utoa::digit#3 utoa::digit#6 utoa::digit#5 
Alias utoa::digit_values#10 = utoa::digit_values#5 utoa::digit_values#6 utoa::digit_values#9 
Alias utoa::value#2 = utoa::value#5 utoa::value#3 utoa::value#4 
Alias utoa::started#2 = utoa::started#3 
Alias utoa::buffer#11 = utoa::buffer#12 utoa::buffer#7 utoa::buffer#8 utoa::buffer#9 
Alias utoa::max_digits#10 = utoa::max_digits#8 utoa::max_digits#5 utoa::max_digits#9 
Alias utoa::digit_value#0 = utoa::digit_value#1 
Alias utoa_append::return#0 = utoa_append::return#3 
Alias utoa::value#0 = utoa::$9 
Alias utoa_append::digit#2 = utoa_append::digit#4 utoa_append::digit#3 
Alias utoa_append::value#2 = utoa_append::value#3 utoa_append::value#4 utoa_append::return#1 utoa_append::return#4 utoa_append::return#2 
Alias utoa_append::sub#1 = utoa_append::sub#2 
Alias utoa_append::buffer#1 = utoa_append::buffer#4 utoa_append::buffer#2 
Alias clrscr::line_text#5 = clrscr::line_text#6 
Alias clrscr::line_cols#5 = clrscr::line_cols#6 
Alias clrscr::l#2 = clrscr::l#5 
Alias clrscr::line_text#2 = clrscr::line_text#4 clrscr::line_text#3 
Alias clrscr::c#2 = clrscr::c#3 
Alias clrscr::line_cols#2 = clrscr::line_cols#4 clrscr::line_cols#3 
Alias clrscr::l#3 = clrscr::l#6 clrscr::l#4 
Alias gotoxy::x#5 = gotoxy::x#6 
Alias gotoxy::y#5 = gotoxy::y#6 
Alias cputc::c#0 = cputc::c#1 
Alias textcolor::return#0 = textcolor::old#0 textcolor::return#6 textcolor::return#1 
Alias printf_str::c#1 = printf_str::$0 printf_str::c#2 
Alias printf_str::putc#14 = printf_str::putc#15 
Alias printf_str::s#0 = printf_str::s#17 
Alias printf_padding::pad#5 = printf_padding::pad#6 printf_padding::pad#8 
Alias printf_padding::putc#5 = printf_padding::putc#6 printf_padding::putc#8 
Alias printf_padding::i#2 = printf_padding::i#4 printf_padding::i#3 
Alias printf_padding::length#5 = printf_padding::length#8 printf_padding::length#7 
Alias printf_uint::uvalue#5 = printf_uint::uvalue#7 printf_uint::uvalue#6 
Alias printf_uint::format_radix#6 = printf_uint::format_radix#8 printf_uint::format_radix#7 
Alias printf_uint::putc#6 = printf_uint::putc#8 printf_uint::putc#7 
Alias printf_uint::format_min_length#6 = printf_uint::format_min_length#8 printf_uint::format_min_length#7 
Alias printf_uint::format_justify_left#6 = printf_uint::format_justify_left#8 printf_uint::format_justify_left#7 
Alias printf_uint::format_sign_always#4 = printf_uint::format_sign_always#7 printf_uint::format_sign_always#8 
Alias printf_uint::format_zero_padding#6 = printf_uint::format_zero_padding#8 printf_uint::format_zero_padding#7 
Alias printf_uint::format_upper_case#6 = printf_uint::format_upper_case#8 printf_uint::format_upper_case#7 
Alias printf_uint::putc#4 = printf_uint::putc#5 
Alias printf_uint::format_min_length#4 = printf_uint::format_min_length#5 
Alias printf_uint::format_justify_left#4 = printf_uint::format_justify_left#5 
Alias printf_uint::format_sign_always#5 = printf_uint::format_sign_always#6 
Alias printf_uint::format_zero_padding#4 = printf_uint::format_zero_padding#5 
Alias printf_uint::format_upper_case#4 = printf_uint::format_upper_case#5 
Alias printf_uint::format_radix#4 = printf_uint::format_radix#5 
Alias printf_number_buffer::buffer_digits#1 = printf_number_buffer::buffer_digits#4 printf_number_buffer::buffer_digits#17 printf_number_buffer::buffer_digits#18 
Alias printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#7 printf_number_buffer::buffer_sign#11 
Alias printf_number_buffer::format_min_length#1 = printf_number_buffer::format_min_length#5 printf_number_buffer::format_min_length#3 printf_number_buffer::format_min_length#4 
Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#3 printf_number_buffer::format_justify_left#7 printf_number_buffer::format_justify_left#8 
Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#15 printf_number_buffer::format_zero_padding#4 printf_number_buffer::format_zero_padding#11 
Alias printf_number_buffer::putc#12 = printf_number_buffer::putc#20 printf_number_buffer::putc#18 printf_number_buffer::putc#19 
Alias printf_number_buffer::format_upper_case#13 = printf_number_buffer::format_upper_case#15 printf_number_buffer::format_upper_case#9 printf_number_buffer::format_upper_case#14 
Alias strlen::return#2 = strlen::return#5 
Alias printf_number_buffer::padding#1 = printf_number_buffer::$21 
Alias printf_number_buffer::len#0 = printf_number_buffer::len#3 
Alias printf_number_buffer::format_justify_left#4 = printf_number_buffer::format_justify_left#5 
Alias printf_number_buffer::format_zero_padding#5 = printf_number_buffer::format_zero_padding#6 
Alias printf_number_buffer::buffer_sign#8 = printf_number_buffer::buffer_sign#9 
Alias printf_number_buffer::putc#13 = printf_number_buffer::putc#14 
Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#11 
Alias printf_number_buffer::buffer_digits#14 = printf_number_buffer::buffer_digits#15 
Alias printf_number_buffer::putc#1 = printf_number_buffer::putc#6 printf_number_buffer::putc#15 
Alias printf_number_buffer::padding#12 = printf_number_buffer::padding#4 printf_number_buffer::padding#3 
Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#6 
Alias printf_number_buffer::format_zero_padding#1 = printf_number_buffer::format_zero_padding#16 printf_number_buffer::format_zero_padding#12 
Alias printf_number_buffer::format_upper_case#12 = printf_number_buffer::format_upper_case#7 printf_number_buffer::format_upper_case#8 
Alias printf_number_buffer::buffer_digits#12 = printf_number_buffer::buffer_digits#16 printf_number_buffer::buffer_digits#13 
Alias printf_number_buffer::format_justify_left#1 = printf_number_buffer::format_justify_left#19 printf_number_buffer::format_justify_left#18 
Alias printf_number_buffer::buffer_sign#2 = printf_number_buffer::buffer_sign#3 
Alias printf_number_buffer::putc#2 = printf_number_buffer::putc#7 
Alias printf_number_buffer::format_zero_padding#7 = printf_number_buffer::format_zero_padding#8 
Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#9 
Alias printf_number_buffer::format_upper_case#4 = printf_number_buffer::format_upper_case#5 
Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#9 
Alias printf_number_buffer::format_justify_left#15 = printf_number_buffer::format_justify_left#16 
Alias printf_number_buffer::putc#16 = printf_number_buffer::putc#3 printf_number_buffer::putc#8 
Alias printf_number_buffer::padding#15 = printf_number_buffer::padding#6 printf_number_buffer::padding#5 
Alias printf_number_buffer::format_upper_case#2 = printf_number_buffer::format_upper_case#6 printf_number_buffer::format_upper_case#3 
Alias printf_number_buffer::buffer_digits#11 = printf_number_buffer::buffer_digits#8 printf_number_buffer::buffer_digits#7 
Alias printf_number_buffer::format_zero_padding#17 = printf_number_buffer::format_zero_padding#19 printf_number_buffer::format_zero_padding#2 
Alias printf_number_buffer::format_justify_left#12 = printf_number_buffer::format_justify_left#17 printf_number_buffer::format_justify_left#13 
Alias printf_number_buffer::format_zero_padding#3 = printf_number_buffer::format_zero_padding#9 
Alias printf_number_buffer::format_justify_left#2 = printf_number_buffer::format_justify_left#6 
Alias printf_number_buffer::padding#11 = printf_number_buffer::padding#7 printf_number_buffer::padding#8 
Alias printf_number_buffer::putc#11 = printf_number_buffer::putc#4 printf_number_buffer::putc#5 
Alias printf_number_buffer::buffer_digits#3 = printf_number_buffer::buffer_digits#6 printf_number_buffer::buffer_digits#5 
Alias printf_number_buffer::putc#10 = printf_number_buffer::putc#17 printf_number_buffer::putc#9 
Alias printf_number_buffer::format_zero_padding#13 = printf_number_buffer::format_zero_padding#18 printf_number_buffer::format_zero_padding#14 
Alias printf_number_buffer::format_justify_left#10 = printf_number_buffer::format_justify_left#14 printf_number_buffer::format_justify_left#9 
Alias printf_number_buffer::padding#13 = printf_number_buffer::padding#16 printf_number_buffer::padding#14 
Alias printf_string::str#10 = printf_string::str#4 printf_string::str#6 printf_string::str#9 
Alias printf_string::format_min_length#4 = printf_string::format_min_length#6 printf_string::format_min_length#5 
Alias printf_string::format_justify_left#10 = printf_string::format_justify_left#6 printf_string::format_justify_left#8 printf_string::format_justify_left#7 
Alias printf_string::putc#10 = printf_string::putc#13 printf_string::putc#12 printf_string::putc#11 
Alias strlen::return#3 = strlen::return#6 
Alias printf_string::padding#1 = printf_string::$10 
Alias printf_string::format_justify_left#5 = printf_string::format_justify_left#9 
Alias printf_string::padding#4 = printf_string::padding#7 printf_string::padding#6 
Alias printf_string::putc#4 = printf_string::putc#9 printf_string::putc#6 
Alias printf_string::putc#5 = printf_string::putc#7 printf_string::putc#8 
Alias printf_string::padding#3 = printf_string::padding#5 printf_string::padding#8 
Alias printf_string::str#11 = printf_string::str#7 printf_string::str#8 
Alias printf_string::format_justify_left#11 = printf_string::format_justify_left#12 printf_string::format_justify_left#4 
Alias memchr::return#3 = memchr::return#6 
Alias assert_uint::actual#0 = main::$2 
Alias memchr::return#4 = memchr::return#7 
Alias assert_uint::expect#1 = assert_uint::expect#4 assert_uint::expect#3 assert_uint::expect#2 
Alias assert_uint::actual#1 = assert_uint::actual#6 assert_uint::actual#5 assert_uint::actual#4 assert_uint::actual#3 assert_uint::actual#2 
Alias assert_uint::message#1 = assert_uint::message#11 assert_uint::message#8 assert_uint::message#10 assert_uint::message#9 assert_uint::message#7 assert_uint::message#5 assert_uint::message#3 assert_uint::message#6 assert_uint::message#4 assert_uint::message#2 
Alias assert_ptr::expect#1 = assert_ptr::expect#4 assert_ptr::expect#3 assert_ptr::expect#2 
Alias assert_ptr::actual#1 = assert_ptr::actual#6 assert_ptr::actual#5 assert_ptr::actual#4 assert_ptr::actual#3 assert_ptr::actual#2 
Alias assert_ptr::message#1 = assert_ptr::message#11 assert_ptr::message#8 assert_ptr::message#10 assert_ptr::message#9 assert_ptr::message#7 assert_ptr::message#5 assert_ptr::message#3 assert_ptr::message#6 assert_ptr::message#4 assert_ptr::message#2 
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Alias utoa::value#10 = utoa::value#7 
Alias utoa::buffer#10 = utoa::buffer#15 
Alias utoa::digit#2 = utoa::digit#4 
Alias utoa::max_digits#10 = utoa::max_digits#6 
Alias utoa::digit_values#10 = utoa::digit_values#7 
Alias gotoxy::x#3 = gotoxy::x#5 
Alias gotoxy::y#4 = gotoxy::y#5 
Alias printf_uint::uvalue#4 = printf_uint::uvalue#5 
Alias printf_uint::format_radix#4 = printf_uint::format_radix#6 
Alias printf_uint::putc#4 = printf_uint::putc#6 
Alias printf_uint::format_min_length#4 = printf_uint::format_min_length#6 
Alias printf_uint::format_justify_left#4 = printf_uint::format_justify_left#6 
Alias printf_uint::format_sign_always#4 = printf_uint::format_sign_always#5 
Alias printf_uint::format_zero_padding#4 = printf_uint::format_zero_padding#6 
Alias printf_uint::format_upper_case#4 = printf_uint::format_upper_case#6 
Alias printf_number_buffer::format_min_length#1 = printf_number_buffer::format_min_length#2 
Alias printf_number_buffer::format_justify_left#11 = printf_number_buffer::format_justify_left#4 
Alias printf_number_buffer::format_zero_padding#10 = printf_number_buffer::format_zero_padding#5 
Alias printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#8 
Alias printf_number_buffer::putc#12 = printf_number_buffer::putc#13 
Alias printf_number_buffer::format_upper_case#10 = printf_number_buffer::format_upper_case#13 
Alias printf_number_buffer::buffer_digits#1 = printf_number_buffer::buffer_digits#14 
Alias printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 
Alias printf_number_buffer::format_zero_padding#1 = printf_number_buffer::format_zero_padding#7 printf_number_buffer::format_zero_padding#17 printf_number_buffer::format_zero_padding#13 printf_number_buffer::format_zero_padding#3 
Alias printf_number_buffer::padding#10 = printf_number_buffer::padding#12 printf_number_buffer::padding#15 printf_number_buffer::padding#13 printf_number_buffer::padding#11 
Alias printf_number_buffer::putc#1 = printf_number_buffer::putc#2 printf_number_buffer::putc#16 printf_number_buffer::putc#10 printf_number_buffer::putc#11 
Alias printf_number_buffer::format_upper_case#1 = printf_number_buffer::format_upper_case#4 printf_number_buffer::format_upper_case#12 printf_number_buffer::format_upper_case#2 
Alias printf_number_buffer::buffer_digits#10 = printf_number_buffer::buffer_digits#12 printf_number_buffer::buffer_digits#11 printf_number_buffer::buffer_digits#3 printf_number_buffer::buffer_digits#2 
Alias printf_number_buffer::format_justify_left#1 = printf_number_buffer::format_justify_left#15 printf_number_buffer::format_justify_left#12 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_justify_left#2 
Alias printf_string::format_justify_left#10 = printf_string::format_justify_left#11 printf_string::format_justify_left#5 
Alias printf_string::putc#10 = printf_string::putc#5 printf_string::putc#4 
Alias printf_string::str#10 = printf_string::str#11 printf_string::str#5 
Alias printf_string::padding#3 = printf_string::padding#4 
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Alias printf_number_buffer::format_justify_left#1 = printf_number_buffer::format_justify_left#11 
Alias printf_number_buffer::format_zero_padding#1 = printf_number_buffer::format_zero_padding#10 
Alias printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 
Alias printf_number_buffer::putc#1 = printf_number_buffer::putc#12 
Alias printf_number_buffer::format_upper_case#1 = printf_number_buffer::format_upper_case#10 
Alias printf_number_buffer::buffer_digits#1 = printf_number_buffer::buffer_digits#10 
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Identical Phi Values memcpy::src_end#1 memcpy::src_end#0
Identical Phi Values memcpy::destination#3 memcpy::destination#2
Identical Phi Values memset::end#1 memset::end#0
Identical Phi Values memset::str#5 memset::str#3
Identical Phi Values memset::c#2 memset::c#4
Identical Phi Values memchr::n#2 memchr::n#3
Identical Phi Values memchr::c#2 memchr::c#4
Identical Phi Values toupper::ch#1 toupper::ch#0
Identical Phi Values strupr::src#0 strupr::str#0
Identical Phi Values strupr::str#2 strupr::src#0
Identical Phi Values utoa::radix#1 utoa::radix#0
Identical Phi Values utoa::value#10 utoa::value#1
Identical Phi Values utoa::buffer#10 utoa::buffer#5
Identical Phi Values utoa::max_digits#10 utoa::max_digits#7
Identical Phi Values utoa::digit_values#10 utoa::digit_values#8
Identical Phi Values utoa_append::value#5 utoa_append::value#0
Identical Phi Values utoa_append::sub#3 utoa_append::sub#0
Identical Phi Values utoa_append::buffer#3 utoa_append::buffer#0
Identical Phi Values utoa_append::sub#1 utoa_append::sub#3
Identical Phi Values utoa_append::buffer#1 utoa_append::buffer#3
Identical Phi Values clrscr::line_text#2 clrscr::line_text#5
Identical Phi Values clrscr::line_cols#2 clrscr::line_cols#5
Identical Phi Values clrscr::l#3 clrscr::l#2
Identical Phi Values printf_str::putc#14 printf_str::putc#16
Identical Phi Values printf_padding::length#5 printf_padding::length#6
Identical Phi Values printf_padding::pad#5 printf_padding::pad#7
Identical Phi Values printf_padding::putc#5 printf_padding::putc#7
Identical Phi Values printf_number_buffer::format_min_length#1 printf_number_buffer::format_min_length#0
Identical Phi Values printf_number_buffer::format_justify_left#1 printf_number_buffer::format_justify_left#0
Identical Phi Values printf_number_buffer::format_zero_padding#1 printf_number_buffer::format_zero_padding#0
Identical Phi Values printf_number_buffer::buffer_digits#1 printf_number_buffer::buffer_digits#0
Identical Phi Values printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0
Identical Phi Values printf_number_buffer::putc#1 printf_number_buffer::putc#0
Identical Phi Values printf_number_buffer::format_upper_case#1 printf_number_buffer::format_upper_case#0
Identical Phi Values assert_uint::expect#1 assert_uint::expect#0
Identical Phi Values assert_uint::actual#1 assert_uint::actual#0
Identical Phi Values assert_uint::message#1 assert_uint::message#0
Identical Phi Values assert_ptr::expect#1 assert_ptr::expect#0
Identical Phi Values assert_ptr::actual#1 assert_ptr::actual#0
Identical Phi Values assert_ptr::message#1 assert_ptr::message#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values memset::return#0 memset::str#3
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition memcpy::$1 [7] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
Simple Condition memset::$1 [14] if(memset::num#2<=0) goto memset::@1
Simple Condition memset::$3 [21] if(memset::dst#2!=memset::end#0) goto memset::@4
Simple Condition strlen::$0 [29] if(0!=*strlen::str#3) goto strlen::@2
Simple Condition memchr::$0 [38] if(memchr::i#2<memchr::n#3) goto memchr::@2
Simple Condition memchr::$2 [40] if(*memchr::ptr#2!=memchr::c#4) goto memchr::@4
Simple Condition strupr::$1 [58] if(0!=*strupr::src#2) goto strupr::@2
Simple Condition utoa::$0 [70] if(utoa::radix#0==DECIMAL) goto utoa::@1
Simple Condition utoa::$1 [74] if(utoa::radix#0==HEXADECIMAL) goto utoa::@2
Simple Condition utoa::$2 [78] if(utoa::radix#0==OCTAL) goto utoa::@3
Simple Condition utoa::$3 [82] if(utoa::radix#0==BINARY) goto utoa::@4
Simple Condition utoa::$5 [99] if(utoa::digit#2<utoa::$4) goto utoa::@11
Simple Condition utoa_append::$0 [124] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2
Simple Condition clrscr::$0 [134] if(clrscr::l#2<$19) goto clrscr::@2
Simple Condition clrscr::$1 [142] if(clrscr::c#2<$28) goto clrscr::@5
Simple Condition gotoxy::$1 [152] if(gotoxy::y#3<=$19) goto gotoxy::@1
Simple Condition gotoxy::$3 [155] if(gotoxy::x#3<$28) goto gotoxy::@2
Simple Condition cputc::$0 [170] if(cputc::c#0=='
') goto cputc::@1
Simple Condition cputc::$2 [176] if(conio_cursor_x!=$28) goto cputc::@return
Simple Condition cscroll::$1 [190] if(conio_cursor_y!=$19) goto cscroll::@return
Simple Condition cscroll::$7 [192] if(0!=conio_scroll_enable) goto cscroll::@3
Simple Condition conio_c64_init::$1 [222] if(conio_c64_init::line#0<$19) goto conio_c64_init::@1
Simple Condition printf_str::$2 [235] if(0!=printf_str::c#1) goto printf_str::@2
Simple Condition printf_padding::$0 [244] if(printf_padding::i#2<printf_padding::length#6) goto printf_padding::@2
Simple Condition printf_uint::$5 [252] if(0!=printf_uint::format_sign_always#4) goto printf_uint::@1
Simple Condition printf_number_buffer::$0 [275] if(0==printf_number_buffer::format_min_length#0) goto printf_number_buffer::@1
Simple Condition printf_number_buffer::$20 [289] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@13
Simple Condition printf_number_buffer::$23 [294] if(printf_number_buffer::padding#1>=0) goto printf_number_buffer::@1
Simple Condition printf_number_buffer::$7 [298] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@3
Simple Condition printf_number_buffer::$12 [310] if(0==printf_number_buffer::format_upper_case#0) goto printf_number_buffer::@5
Simple Condition printf_string::$0 [334] if(0==printf_string::format_min_length#4) goto printf_string::@1
Simple Condition printf_string::$12 [348] if(printf_string::padding#1>=0) goto printf_string::@1
Simple Condition assert_uint::$0 [389] if(assert_uint::expect#0!=assert_uint::actual#0) goto assert_uint::@1
Simple Condition assert_ptr::$0 [445] if(assert_ptr::expect#0!=assert_ptr::actual#0) goto assert_ptr::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting && if()-condition to two if()s [50] toupper::$2 = toupper::$0 && toupper::$1
Rewriting ! if()-condition to reversed if() [104] utoa::$8 = ! utoa::$7
Rewriting || if()-condition to two if()s [103] utoa::$7 = utoa::started#2 || utoa::$6
Rewriting ! if()-condition to reversed if() [281] printf_number_buffer::$5 = ! printf_number_buffer::$4
Rewriting && if()-condition to two if()s [280] printf_number_buffer::$4 = printf_number_buffer::$3 && printf_number_buffer::padding#10
Rewriting && if()-condition to two if()s [279] printf_number_buffer::$3 = printf_number_buffer::$1 && printf_number_buffer::$2
Rewriting ! if()-condition to reversed if() [304] printf_number_buffer::$10 = ! printf_number_buffer::$9
Rewriting && if()-condition to two if()s [303] printf_number_buffer::$9 = printf_number_buffer::format_zero_padding#0 && printf_number_buffer::padding#10
Rewriting ! if()-condition to reversed if() [321] printf_number_buffer::$17 = ! printf_number_buffer::$16
Rewriting && if()-condition to two if()s [320] printf_number_buffer::$16 = printf_number_buffer::$15 && printf_number_buffer::padding#10
Rewriting && if()-condition to two if()s [319] printf_number_buffer::$15 = printf_number_buffer::format_justify_left#0 && printf_number_buffer::$14
Rewriting ! if()-condition to reversed if() [338] printf_string::$3 = ! printf_string::$2
Rewriting && if()-condition to two if()s [337] printf_string::$2 = printf_string::$1 && printf_string::padding#3
Rewriting ! if()-condition to reversed if() [354] printf_string::$7 = ! printf_string::$6
Rewriting && if()-condition to two if()s [353] printf_string::$6 = printf_string::format_justify_left#10 && printf_string::padding#3
Successful SSA optimization Pass2ConditionalAndOrRewriting
Warning! Adding boolean cast to non-boolean condition utoa::started#2
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::format_zero_padding#0
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::format_justify_left#0
Warning! Adding boolean cast to non-boolean condition printf_string::format_justify_left#10
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::padding#10
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::padding#10
Warning! Adding boolean cast to non-boolean condition printf_number_buffer::padding#10
Warning! Adding boolean cast to non-boolean condition printf_string::padding#3
Warning! Adding boolean cast to non-boolean condition printf_string::padding#3
Constant right-side identified [195] memcpy::num#0 = (unumber)$19*$28-$28
Constant right-side identified [200] memcpy::num#1 = (unumber)$19*$28-$28
Constant right-side identified [227] conio_c64_init::line#1 = (unumber)$19-1
Constant right-side identified [366] memchr::str#0 = (const void *)main::str
Constant right-side identified [376] memchr::str#1 = (const void *)main::str
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant strlen::len#0 = 0
Constant memchr::i#0 = 0
Constant memchr::return#0 = (void *) 0
Constant utoa::max_digits#0 = 0
Constant utoa::digit_values#0 = (unsigned int *) 0
Constant utoa::max_digits#1 = 5
Constant utoa::digit_values#1 = RADIX_DECIMAL_VALUES
Constant utoa::max_digits#2 = 4
Constant utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES
Constant utoa::max_digits#3 = 6
Constant utoa::digit_values#3 = RADIX_OCTAL_VALUES
Constant utoa::max_digits#4 = $10
Constant utoa::digit_values#4 = RADIX_BINARY_VALUES
Constant utoa::started#0 = 0
Constant utoa::digit#0 = 0
Constant utoa::started#1 = 1
Constant utoa_append::digit#0 = 0
Constant clrscr::line_text#0 = CONIO_SCREEN_TEXT
Constant clrscr::line_cols#0 = CONIO_SCREEN_COLORS
Constant clrscr::l#0 = 0
Constant clrscr::c#0 = 0
Constant gotoxy::y#0 = 0
Constant gotoxy::x#0 = 0
Constant memcpy::destination#0 = (void *)CONIO_SCREEN_TEXT
Constant memcpy::source#0 = (void *)CONIO_SCREEN_TEXT+$28
Constant memcpy::num#0 = (unumber)$19*$28-$28
Constant memcpy::destination#1 = (void *)CONIO_SCREEN_COLORS
Constant memcpy::source#1 = (void *)CONIO_SCREEN_COLORS+$28
Constant memcpy::num#1 = (unumber)$19*$28-$28
Constant memset::str#0 = (void *)CONIO_SCREEN_TEXT+(unsigned int)$19*$28-$28
Constant memset::c#0 = ' '
Constant memset::num#0 = $28
Constant memset::str#1 = (void *)CONIO_SCREEN_COLORS+(unsigned int)$19*$28-$28
Constant memset::num#1 = $28
Constant gotoxy::x#1 = 0
Constant gotoxy::y#1 = 0
Constant gotoxy::x#2 = 0
Constant conio_c64_init::line#1 = (unumber)$19-1
Constant printf_str::c#0 = 0
Constant printf_padding::i#0 = 0
Constant printf_uint::$1 = '+'
Constant printf_uint::$0 = 0
Constant utoa::buffer#5 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Constant printf_number_buffer::buffer_digits#0 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Constant printf_number_buffer::padding#0 = 0
Constant printf_number_buffer::padding#2 = 0
Constant printf_padding::pad#0 = ' '
Constant printf_padding::pad#1 = '0'
Constant printf_padding::pad#2 = ' '
Constant printf_string::padding#0 = 0
Constant printf_string::padding#2 = 0
Constant printf_padding::pad#3 = ' '
Constant printf_padding::pad#4 = ' '
Constant memchr::str#0 = (const void *)main::str
Constant memchr::c#0 = 'a'
Constant memchr::n#0 = $e
Constant assert_uint::expect#0 = 8
Constant assert_uint::message#0 = main::message
Constant memchr::str#1 = (const void *)main::str
Constant memchr::c#1 = 'a'
Constant memchr::n#1 = 7
Constant assert_ptr::expect#0 = (void *) 0
Constant assert_ptr::message#0 = main::message1
Constant textcolor::color#0 = RED
Constant printf_str::putc#2 = &cputc
Constant printf_str::s#3 = assert_uint::s
Constant printf_uint::putc#0 = &cputc
Constant printf_uint::format_min_length#0 = 0
Constant printf_uint::format_justify_left#0 = 0
Constant printf_uint::format_sign_always#0 = 0
Constant printf_uint::format_zero_padding#0 = 0
Constant printf_uint::format_upper_case#0 = 0
Constant printf_uint::format_radix#0 = DECIMAL
Constant printf_str::putc#3 = &cputc
Constant printf_str::s#4 = assert_uint::s1
Constant printf_uint::putc#1 = &cputc
Constant printf_uint::format_min_length#1 = 0
Constant printf_uint::format_justify_left#1 = 0
Constant printf_uint::format_sign_always#1 = 0
Constant printf_uint::format_zero_padding#1 = 0
Constant printf_uint::format_upper_case#1 = 0
Constant printf_uint::format_radix#1 = DECIMAL
Constant printf_str::putc#4 = &cputc
Constant printf_str::s#5 = assert_uint::s2
Constant printf_string::putc#0 = &cputc
Constant printf_string::format_min_length#0 = 0
Constant printf_string::format_justify_left#0 = 0
Constant printf_str::putc#5 = &cputc
Constant printf_str::s#6 = assert_uint::s3
Constant textcolor::color#1 = GREEN
Constant printf_str::putc#6 = &cputc
Constant printf_str::s#7 = assert_uint::s4
Constant printf_string::putc#1 = &cputc
Constant printf_string::format_min_length#1 = 0
Constant printf_string::format_justify_left#1 = 0
Constant printf_str::putc#7 = &cputc
Constant printf_str::s#8 = assert_uint::s5
Constant textcolor::color#2 = RED
Constant printf_str::putc#8 = &cputc
Constant printf_str::s#9 = assert_ptr::s
Constant printf_uint::putc#2 = &cputc
Constant printf_uint::format_min_length#2 = 0
Constant printf_uint::format_justify_left#2 = 0
Constant printf_uint::format_sign_always#2 = 0
Constant printf_uint::format_zero_padding#2 = 0
Constant printf_uint::format_upper_case#2 = 0
Constant printf_uint::format_radix#2 = HEXADECIMAL
Constant printf_str::putc#9 = &cputc
Constant printf_str::s#10 = assert_ptr::s1
Constant printf_uint::putc#3 = &cputc
Constant printf_uint::format_min_length#3 = 0
Constant printf_uint::format_justify_left#3 = 0
Constant printf_uint::format_sign_always#3 = 0
Constant printf_uint::format_zero_padding#3 = 0
Constant printf_uint::format_upper_case#3 = 0
Constant printf_uint::format_radix#3 = HEXADECIMAL
Constant printf_str::putc#10 = &cputc
Constant printf_str::s#11 = assert_ptr::s2
Constant printf_string::putc#2 = &cputc
Constant printf_string::format_min_length#2 = 0
Constant printf_string::format_justify_left#2 = 0
Constant printf_str::putc#11 = &cputc
Constant printf_str::s#12 = assert_ptr::s3
Constant textcolor::color#3 = GREEN
Constant printf_str::putc#12 = &cputc
Constant printf_str::s#13 = assert_ptr::s4
Constant printf_string::putc#3 = &cputc
Constant printf_string::format_min_length#3 = 0
Constant printf_string::format_justify_left#3 = 0
Constant printf_str::putc#13 = &cputc
Constant printf_str::s#14 = assert_ptr::s5
Constant conio_scroll_enable = 1
Successful SSA optimization Pass2ConstantIdentification
Constant strlen::str#1 = printf_number_buffer::buffer_digits#0
Constant printf_str::s#1 = printf_number_buffer::buffer_digits#0
Constant strupr::str#0 = printf_number_buffer::buffer_digits#0
Constant printf_uint::uvalue#0 = assert_uint::expect#0
Constant printf_string::str#0 = assert_uint::message#0
Constant printf_string::str#1 = assert_uint::message#0
Constant printf_uint::uvalue#2 = (unsigned int)assert_ptr::expect#0
Constant printf_string::str#2 = assert_ptr::message#0
Constant printf_string::str#3 = assert_ptr::message#0
Successful SSA optimization Pass2ConstantIdentification
Constant strupr::return#2 = strupr::str#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [192] if(0!=conio_scroll_enable) goto cscroll::@3
Successful SSA optimization Pass2ConstantIfs
Consolidated constant strings into s2
Consolidated constant strings into s3
Consolidated constant strings into s4
Successful SSA optimization Pass2ConstantStringConsolidation
Rewriting conditional comparison [152] if(gotoxy::y#3<=$19) goto gotoxy::@1
Simplifying constant evaluating to zero (unsigned int)assert_ptr::expect#0 in 
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero (char *)&printf_buffer in [256] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN) = printf_uint::$2
Simplifying expression containing zero (char *)&printf_buffer in [262] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN)
Successful SSA optimization PassNSimplifyExpressionWithZero
Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
Removing unused block cscroll::@2
Removing unused block cscroll::@8
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused variable memcpy::return#2 and assignment [142] memcpy::return#2 = memcpy::destination#2
Eliminating unused variable memcpy::return#3 and assignment [144] memcpy::return#3 = memcpy::destination#2
Eliminating unused variable memset::return#2 and assignment [146] memset::return#2 = memset::str#3
Eliminating unused variable memset::return#3 and assignment [149] memset::return#3 = memset::str#3
Eliminating unused variable printf_number_buffer::format_sign_always#0 and assignment [188] printf_number_buffer::format_sign_always#0 = printf_uint::format_sign_always#4
Eliminating unused variable printf_number_buffer::format_radix#0 and assignment [191] printf_number_buffer::format_radix#0 = printf_uint::format_radix#4
Eliminating unused variable textcolor::return#2 and assignment [271] textcolor::return#2 = textcolor::return#0
Eliminating unused variable textcolor::return#3 and assignment [281] textcolor::return#3 = textcolor::return#0
Eliminating unused variable textcolor::return#4 and assignment [288] textcolor::return#4 = textcolor::return#0
Eliminating unused variable textcolor::return#5 and assignment [298] textcolor::return#5 = textcolor::return#0
Eliminating unused constant strupr::return#2
Eliminating unused constant utoa::max_digits#0
Eliminating unused constant utoa::digit_values#0
Eliminating unused constant gotoxy::x#1
Eliminating unused constant gotoxy::y#1
Eliminating unused constant printf_str::c#0
Eliminating unused constant OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_SIGN
Eliminating unused constant conio_scroll_enable
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable textcolor::return#0 and assignment [137] textcolor::return#0 = conio_textcolor
Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) 0 in utoa::$12 = 0 != utoa::started#2
Adding number conversion cast (unumber) $19+1 in if(gotoxy::y#3<$19+1) goto gotoxy::@1
Adding number conversion cast (unumber) 1 in if(gotoxy::y#3<(unumber)$19+1) goto gotoxy::@1
Adding number conversion cast (unumber) 0 in printf_number_buffer::$33 = 0 != printf_number_buffer::format_zero_padding#0
Adding number conversion cast (unumber) 0 in printf_number_buffer::$34 = 0 != printf_number_buffer::format_justify_left#0
Adding number conversion cast (unumber) 0 in printf_string::$16 = 0 != printf_string::format_justify_left#10
Adding number conversion cast (snumber) 0 in printf_number_buffer::$35 = 0 != printf_number_buffer::padding#10
Adding number conversion cast (snumber) 0 in printf_number_buffer::$36 = 0 != printf_number_buffer::padding#10
Adding number conversion cast (snumber) 0 in printf_number_buffer::$37 = 0 != printf_number_buffer::padding#10
Adding number conversion cast (snumber) 0 in printf_string::$17 = 0 != printf_string::padding#3
Adding number conversion cast (snumber) 0 in printf_string::$18 = 0 != printf_string::padding#3
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 0
Simplifying constant integer cast $19+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Identical Phi Values gotoxy::y#3 gotoxy::y#2
Identical Phi Values gotoxy::x#3 gotoxy::x#2
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition toupper::$0 [39] if(toupper::ch#0>='a') goto toupper::@3
Simple Condition utoa::$12 [72] if(0!=utoa::started#2) goto utoa::@14
Simple Condition printf_number_buffer::$1 [191] if(0==printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@22
Simple Condition printf_number_buffer::$33 [207] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@23
Simple Condition printf_number_buffer::$34 [219] if(0!=printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@25
Simple Condition printf_string::$1 [229] if(0==printf_string::format_justify_left#10) goto printf_string::@11
Simple Condition printf_string::$16 [242] if(0!=printf_string::format_justify_left#10) goto printf_string::@12
Simple Condition toupper::$1 [300] if(toupper::ch#0<='z') goto toupper::@1
Simple Condition utoa::$6 [301] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@14
Simple Condition printf_number_buffer::$35 [303] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@8
Simple Condition printf_number_buffer::$2 [304] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@21
Simple Condition printf_number_buffer::$36 [306] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@10
Simple Condition printf_number_buffer::$37 [308] if(0!=printf_number_buffer::padding#10) goto printf_number_buffer::@12
Simple Condition printf_number_buffer::$14 [309] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@24
Simple Condition printf_string::$17 [311] if(0!=printf_string::padding#3) goto printf_string::@5
Simple Condition printf_string::$18 [313] if(0!=printf_string::padding#3) goto printf_string::@6
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [39] if(toupper::ch#0<'a') goto toupper::@2
Negating conditional jump and destination [191] if(0!=printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@2
Negating conditional jump and destination [207] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@4
Negating conditional jump and destination [219] if(0==printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@return
Negating conditional jump and destination [229] if(0!=printf_string::format_justify_left#10) goto printf_string::@2
Negating conditional jump and destination [242] if(0==printf_string::format_justify_left#10) goto printf_string::@return
Negating conditional jump and destination [304] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@2
Negating conditional jump and destination [309] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@return
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
Constant right-side identified [57] utoa::buffer#0 = ++ utoa::buffer#5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant utoa::buffer#0 = ++utoa::buffer#5
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [110] if(gotoxy::x#2<$28) goto gotoxy::@2
Successful SSA optimization Pass2ConstantIfs
Removing PHI-reference to removed block (gotoxy::@4) in block gotoxy::@2
Removing unused block gotoxy::@4
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused constant gotoxy::x#0
Successful SSA optimization PassNEliminateUnusedVars
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Identical Phi Values gotoxy::x#4 gotoxy::x#2
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [56] utoa::buffer#1 = ++ utoa::buffer#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant utoa::buffer#1 = ++utoa::buffer#0
Successful SSA optimization Pass2ConstantIdentification
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Constant right-side identified [57] utoa::buffer#2 = ++ utoa::buffer#1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant utoa::buffer#2 = ++utoa::buffer#1
Successful SSA optimization Pass2ConstantIdentification
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Inlining Noop Cast [1] memcpy::src#0 = (char *)memcpy::source#2 keeping memcpy::source#2
Inlining Noop Cast [2] memcpy::dst#0 = (char *)memcpy::destination#2 keeping memcpy::destination#2
Inlining Noop Cast [3] memcpy::$2 = (char *)memcpy::source#2 keeping memcpy::source#2
Inlining Noop Cast [13] memset::$4 = (char *)memset::str#3 keeping memset::str#3
Inlining Noop Cast [15] memset::dst#0 = (char *)memset::str#3 keeping memset::str#3
Inlining Noop Cast [28] memchr::ptr#0 = (char *)memchr::str#2 keeping memchr::str#2
Inlining Noop Cast [34] memchr::return#1 = (void *)memchr::ptr#2 keeping memchr::ptr#2
Inlining Noop Cast [186] printf_number_buffer::$25 = (signed char)printf_number_buffer::format_min_length#0 keeping printf_number_buffer::format_min_length#0
Inlining Noop Cast [219] printf_string::$13 = (signed char)printf_string::format_min_length#4 keeping printf_string::format_min_length#4
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [63] utoa::$10 = utoa::digit#2 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift and addition[105] gotoxy::line_offset#0 = gotoxy::$7 * $28
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings memcpy::destination#0
Inlining constant with var siblings memcpy::source#0
Inlining constant with var siblings memcpy::num#0
Inlining constant with var siblings memcpy::destination#1
Inlining constant with var siblings memcpy::source#1
Inlining constant with var siblings memcpy::num#1
Inlining constant with var siblings memset::str#0
Inlining constant with var siblings memset::c#0
Inlining constant with var siblings memset::num#0
Inlining constant with var siblings memset::str#1
Inlining constant with var siblings memset::num#1
Inlining constant with var siblings strlen::len#0
Inlining constant with var siblings strlen::str#1
Inlining constant with var siblings memchr::i#0
Inlining constant with var siblings memchr::return#0
Inlining constant with var siblings memchr::str#0
Inlining constant with var siblings memchr::c#0
Inlining constant with var siblings memchr::n#0
Inlining constant with var siblings memchr::str#1
Inlining constant with var siblings memchr::c#1
Inlining constant with var siblings memchr::n#1
Inlining constant with var siblings utoa::max_digits#1
Inlining constant with var siblings utoa::digit_values#1
Inlining constant with var siblings utoa::max_digits#2
Inlining constant with var siblings utoa::digit_values#2
Inlining constant with var siblings utoa::max_digits#3
Inlining constant with var siblings utoa::digit_values#3
Inlining constant with var siblings utoa::max_digits#4
Inlining constant with var siblings utoa::digit_values#4
Inlining constant with var siblings utoa::started#0
Inlining constant with var siblings utoa::digit#0
Inlining constant with var siblings utoa::started#1
Inlining constant with var siblings utoa::buffer#5
Inlining constant with var siblings utoa::buffer#0
Inlining constant with var siblings utoa::buffer#1
Inlining constant with var siblings utoa::buffer#2
Inlining constant with var siblings utoa_append::digit#0
Inlining constant with var siblings clrscr::line_text#0
Inlining constant with var siblings clrscr::line_cols#0
Inlining constant with var siblings clrscr::l#0
Inlining constant with var siblings clrscr::c#0
Inlining constant with var siblings gotoxy::y#0
Inlining constant with var siblings textcolor::color#0
Inlining constant with var siblings textcolor::color#1
Inlining constant with var siblings textcolor::color#2
Inlining constant with var siblings textcolor::color#3
Inlining constant with var siblings conio_c64_init::line#1
Inlining constant with var siblings printf_str::putc#2
Inlining constant with var siblings printf_str::s#3
Inlining constant with var siblings printf_str::putc#3
Inlining constant with var siblings printf_str::s#4
Inlining constant with var siblings printf_str::putc#4
Inlining constant with var siblings printf_str::s#5
Inlining constant with var siblings printf_str::putc#5
Inlining constant with var siblings printf_str::s#6
Inlining constant with var siblings printf_str::putc#6
Inlining constant with var siblings printf_str::s#7
Inlining constant with var siblings printf_str::putc#7
Inlining constant with var siblings printf_str::s#8
Inlining constant with var siblings printf_str::putc#8
Inlining constant with var siblings printf_str::s#9
Inlining constant with var siblings printf_str::putc#9
Inlining constant with var siblings printf_str::s#10
Inlining constant with var siblings printf_str::putc#10
Inlining constant with var siblings printf_str::s#11
Inlining constant with var siblings printf_str::putc#11
Inlining constant with var siblings printf_str::s#12
Inlining constant with var siblings printf_str::putc#12
Inlining constant with var siblings printf_str::s#13
Inlining constant with var siblings printf_str::putc#13
Inlining constant with var siblings printf_str::s#14
Inlining constant with var siblings printf_str::s#1
Inlining constant with var siblings printf_padding::i#0
Inlining constant with var siblings printf_padding::pad#0
Inlining constant with var siblings printf_padding::pad#1
Inlining constant with var siblings printf_padding::pad#2
Inlining constant with var siblings printf_padding::pad#3
Inlining constant with var siblings printf_padding::pad#4
Inlining constant with var siblings printf_uint::putc#0
Inlining constant with var siblings printf_uint::format_min_length#0
Inlining constant with var siblings printf_uint::format_justify_left#0
Inlining constant with var siblings printf_uint::format_sign_always#0
Inlining constant with var siblings printf_uint::format_zero_padding#0
Inlining constant with var siblings printf_uint::format_upper_case#0
Inlining constant with var siblings printf_uint::format_radix#0
Inlining constant with var siblings printf_uint::putc#1
Inlining constant with var siblings printf_uint::format_min_length#1
Inlining constant with var siblings printf_uint::format_justify_left#1
Inlining constant with var siblings printf_uint::format_sign_always#1
Inlining constant with var siblings printf_uint::format_zero_padding#1
Inlining constant with var siblings printf_uint::format_upper_case#1
Inlining constant with var siblings printf_uint::format_radix#1
Inlining constant with var siblings printf_uint::putc#2
Inlining constant with var siblings printf_uint::format_min_length#2
Inlining constant with var siblings printf_uint::format_justify_left#2
Inlining constant with var siblings printf_uint::format_sign_always#2
Inlining constant with var siblings printf_uint::format_zero_padding#2
Inlining constant with var siblings printf_uint::format_upper_case#2
Inlining constant with var siblings printf_uint::format_radix#2
Inlining constant with var siblings printf_uint::putc#3
Inlining constant with var siblings printf_uint::format_min_length#3
Inlining constant with var siblings printf_uint::format_justify_left#3
Inlining constant with var siblings printf_uint::format_sign_always#3
Inlining constant with var siblings printf_uint::format_zero_padding#3
Inlining constant with var siblings printf_uint::format_upper_case#3
Inlining constant with var siblings printf_uint::format_radix#3
Inlining constant with var siblings printf_uint::uvalue#0
Inlining constant with var siblings printf_uint::uvalue#2
Inlining constant with var siblings printf_number_buffer::padding#0
Inlining constant with var siblings printf_number_buffer::padding#2
Inlining constant with var siblings printf_string::padding#0
Inlining constant with var siblings printf_string::padding#2
Inlining constant with var siblings printf_string::putc#0
Inlining constant with var siblings printf_string::format_min_length#0
Inlining constant with var siblings printf_string::format_justify_left#0
Inlining constant with var siblings printf_string::putc#1
Inlining constant with var siblings printf_string::format_min_length#1
Inlining constant with var siblings printf_string::format_justify_left#1
Inlining constant with var siblings printf_string::putc#2
Inlining constant with var siblings printf_string::format_min_length#2
Inlining constant with var siblings printf_string::format_justify_left#2
Inlining constant with var siblings printf_string::putc#3
Inlining constant with var siblings printf_string::format_min_length#3
Inlining constant with var siblings printf_string::format_justify_left#3
Inlining constant with var siblings printf_string::str#0
Inlining constant with var siblings printf_string::str#1
Inlining constant with var siblings printf_string::str#2
Inlining constant with var siblings printf_string::str#3
Constant inlined memchr::str#1 = (const void *)main::str
Constant inlined utoa::digit_values#1 = RADIX_DECIMAL_VALUES
Constant inlined memchr::str#0 = (const void *)main::str
Constant inlined utoa::digit_values#4 = RADIX_BINARY_VALUES
Constant inlined utoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES
Constant inlined utoa::digit_values#3 = RADIX_OCTAL_VALUES
Constant inlined printf_string::format_min_length#3 = 0
Constant inlined clrscr::l#0 = 0
Constant inlined strlen::len#0 = 0
Constant inlined printf_string::format_min_length#0 = 0
Constant inlined printf_string::format_min_length#1 = 0
Constant inlined printf_string::format_min_length#2 = 0
Constant inlined printf_str::s#9 = assert_ptr::s
Constant inlined printf_str::s#7 = s4
Constant inlined printf_str::s#8 = s3
Constant inlined printf_str::s#5 = s2
Constant inlined assert_ptr::s3 = s3
Constant inlined printf_str::s#6 = s3
Constant inlined assert_ptr::s2 = s2
Constant inlined printf_str::s#3 = assert_uint::s
Constant inlined assert_ptr::s5 = s3
Constant inlined printf_str::s#4 = assert_uint::s1
Constant inlined assert_ptr::s4 = s4
Constant inlined CONIO_SCREEN_TEXT = DEFAULT_SCREEN
Constant inlined printf_str::s#1 = printf_number_buffer::buffer_digits#0
Constant inlined clrscr::line_text#0 = DEFAULT_SCREEN
Constant inlined printf_str::s#13 = s4
Constant inlined printf_str::s#12 = s3
Constant inlined printf_str::s#14 = s3
Constant inlined memcpy::source#0 = (void *)DEFAULT_SCREEN+$28
Constant inlined printf_str::s#11 = s2
Constant inlined printf_str::s#10 = assert_ptr::s1
Constant inlined printf_string::padding#0 = 0
Constant inlined memchr::return#0 = (void *) 0
Constant inlined printf_string::padding#2 = 0
Constant inlined memset::c#0 = ' '
Constant inlined utoa_append::digit#0 = 0
Constant inlined memcpy::destination#0 = (void *)DEFAULT_SCREEN
Constant inlined memcpy::destination#1 = (void *)COLORRAM
Constant inlined textcolor::color#3 = GREEN
Constant inlined assert_uint::s5 = s3
Constant inlined textcolor::color#2 = RED
Constant inlined assert_uint::s4 = s4
Constant inlined utoa::digit#0 = 0
Constant inlined textcolor::color#1 = GREEN
Constant inlined assert_uint::s3 = s3
Constant inlined textcolor::color#0 = RED
Constant inlined assert_uint::s2 = s2
Constant inlined printf_uint::format_upper_case#3 = 0
Constant inlined printf_uint::format_upper_case#2 = 0
Constant inlined printf_uint::format_upper_case#1 = 0
Constant inlined printf_uint::format_upper_case#0 = 0
Constant inlined strupr::str#0 = printf_number_buffer::buffer_digits#0
Constant inlined CONIO_TEXTCOLOR_DEFAULT = LIGHT_BLUE
Constant inlined printf_padding::pad#0 = ' '
Constant inlined printf_padding::i#0 = 0
Constant inlined printf_padding::pad#1 = '0'
Constant inlined printf_padding::pad#2 = ' '
Constant inlined utoa::started#1 = 1
Constant inlined utoa::started#0 = 0
Constant inlined printf_padding::pad#3 = ' '
Constant inlined printf_padding::pad#4 = ' '
Constant inlined memchr::i#0 = 0
Constant inlined gotoxy::y#0 = 0
Constant inlined printf_str::putc#12 = &cputc
Constant inlined printf_str::putc#11 = &cputc
Constant inlined printf_str::putc#13 = &cputc
Constant inlined printf_string::format_justify_left#1 = 0
Constant inlined printf_string::format_justify_left#0 = 0
Constant inlined printf_str::putc#10 = &cputc
Constant inlined printf_string::format_justify_left#3 = 0
Constant inlined printf_string::format_justify_left#2 = 0
Constant inlined utoa::buffer#0 = ++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Constant inlined utoa::buffer#1 = ++++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Constant inlined memset::num#1 = $28
Constant inlined printf_str::putc#2 = &cputc
Constant inlined memset::num#0 = $28
Constant inlined memchr::n#1 = 7
Constant inlined printf_str::putc#3 = &cputc
Constant inlined memchr::n#0 = $e
Constant inlined printf_str::putc#8 = &cputc
Constant inlined printf_str::putc#9 = &cputc
Constant inlined printf_str::putc#4 = &cputc
Constant inlined printf_str::putc#5 = &cputc
Constant inlined printf_str::putc#6 = &cputc
Constant inlined printf_str::putc#7 = &cputc
Constant inlined printf_string::putc#1 = &cputc
Constant inlined printf_string::putc#0 = &cputc
Constant inlined printf_string::putc#3 = &cputc
Constant inlined printf_string::putc#2 = &cputc
Constant inlined printf_uint::format_zero_padding#3 = 0
Constant inlined printf_number_buffer::padding#2 = 0
Constant inlined printf_uint::format_zero_padding#1 = 0
Constant inlined printf_uint::putc#3 = &cputc
Constant inlined printf_uint::format_zero_padding#2 = 0
Constant inlined printf_uint::putc#1 = &cputc
Constant inlined printf_uint::putc#2 = &cputc
Constant inlined printf_uint::putc#0 = &cputc
Constant inlined utoa::buffer#5 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Constant inlined printf_uint::uvalue#2 = 0
Constant inlined utoa::buffer#2 = ++++++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Constant inlined printf_uint::format_sign_always#0 = 0
Constant inlined printf_uint::uvalue#0 = assert_uint::expect#0
Constant inlined printf_uint::format_sign_always#1 = 0
Constant inlined utoa::max_digits#1 = 5
Constant inlined printf_uint::format_sign_always#2 = 0
Constant inlined printf_uint::format_radix#0 = DECIMAL
Constant inlined utoa::max_digits#2 = 4
Constant inlined printf_uint::format_sign_always#3 = 0
Constant inlined printf_uint::format_radix#1 = DECIMAL
Constant inlined utoa::max_digits#3 = 6
Constant inlined printf_uint::format_radix#2 = HEXADECIMAL
Constant inlined utoa::max_digits#4 = $10
Constant inlined printf_uint::format_radix#3 = HEXADECIMAL
Constant inlined printf_uint::format_zero_padding#0 = 0
Constant inlined printf_number_buffer::padding#0 = 0
Constant inlined printf_uint::format_justify_left#0 = 0
Constant inlined printf_uint::format_justify_left#2 = 0
Constant inlined printf_uint::format_justify_left#1 = 0
Constant inlined strlen::str#1 = printf_number_buffer::buffer_digits#0
Constant inlined printf_uint::format_justify_left#3 = 0
Constant inlined conio_c64_init::line#1 = (char)$19-1
Constant inlined assert_ptr::message#0 = main::message1
Constant inlined memcpy::source#1 = (void *)COLORRAM+$28
Constant inlined printf_string::str#0 = main::message
Constant inlined printf_uint::format_min_length#0 = 0
Constant inlined printf_uint::format_min_length#1 = 0
Constant inlined printf_uint::format_min_length#2 = 0
Constant inlined printf_uint::format_min_length#3 = 0
Constant inlined printf_string::str#3 = main::message1
Constant inlined printf_string::str#2 = main::message1
Constant inlined printf_string::str#1 = main::message
Constant inlined memset::str#1 = (void *)COLORRAM+(unsigned int)$19*$28-$28
Constant inlined memset::str#0 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28
Constant inlined CONIO_SCREEN_COLORS = COLORRAM
Constant inlined printf_uint::$1 = '+'
Constant inlined printf_uint::$0 = 0
Constant inlined assert_uint::message#0 = main::message
Constant inlined memcpy::num#1 = (unsigned int)$19*$28-$28
Constant inlined memcpy::num#0 = (unsigned int)$19*$28-$28
Constant inlined memchr::c#1 = 'a'
Constant inlined memchr::c#0 = 'a'
Constant inlined clrscr::c#0 = 0
Constant inlined clrscr::line_cols#0 = COLORRAM
Successful SSA optimization Pass2ConstantInlining
Simplifying constant integer increment ++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Simplifying constant integer increment ++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
Simplifying constant integer increment ++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1
Successful SSA optimization Pass2ConstantSimplification
Simplifying constant integer increment ++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1
Simplifying constant integer increment ++(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2
Successful SSA optimization Pass2ConstantSimplification
Adding number conversion cast (unumber) 1 in [55] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1) = 'r'
Adding number conversion cast (unumber) 2 in [56] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2) = 'r'
Adding number conversion cast (unumber) 3 in [57] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3) = 0
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 3
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Alias gotoxy::line_offset#0 = gotoxy::$10 
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Identical Phi Values memcpy::num#2 (unsigned int)$19*$28-$28
Identical Phi Values memset::num#2 $28
Identical Phi Values memchr::str#2 (const void *)main::str
Identical Phi Values printf_uint::format_sign_always#4 0
Identical Phi Values printf_uint::putc#4 &cputc
Identical Phi Values printf_uint::format_min_length#4 0
Identical Phi Values printf_uint::format_justify_left#4 0
Identical Phi Values printf_uint::format_zero_padding#4 0
Identical Phi Values printf_uint::format_upper_case#4 0
Identical Phi Values printf_string::format_min_length#4 0
Identical Phi Values printf_string::format_justify_left#10 0
Identical Phi Values printf_string::putc#10 &cputc
Successful SSA optimization Pass2IdenticalPhiElimination
Constant printf_number_buffer::putc#0 = &cputc
Constant printf_number_buffer::format_min_length#0 = 0
Constant printf_number_buffer::format_justify_left#0 = 0
Constant printf_number_buffer::format_zero_padding#0 = 0
Constant printf_number_buffer::format_upper_case#0 = 0
Constant printf_str::putc#1 = &cputc
Constant printf_padding::putc#3 = &cputc
Constant printf_padding::putc#4 = &cputc
Successful SSA optimization Pass2ConstantIdentification
Constant printf_padding::putc#0 = printf_number_buffer::putc#0
Constant printf_padding::putc#1 = printf_number_buffer::putc#0
Constant printf_str::putc#0 = printf_number_buffer::putc#0
Constant printf_padding::putc#2 = printf_number_buffer::putc#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (char *)(const void *)main::str in [23] memchr::ptr#2 = phi( memchr/(char *)(const void *)main::str, memchr::@4/memchr::ptr#1 )
  [23] memchr::i#2 = phi( memchr/0, memchr::@4/memchr::i#1 )
Constant value identified (signed char)printf_number_buffer::format_min_length#0 in [181] printf_number_buffer::padding#1 = (signed char)printf_number_buffer::format_min_length#0 - printf_number_buffer::len#2
Constant value identified (signed char)0 in [213] printf_string::padding#1 = (signed char)0 - printf_string::len#0
Successful SSA optimization Pass2ConstantValues
Replacing constant pointer function [190] callexecute cputc 
Successful SSA optimization Pass2ConstantCallPointerIdentification
if() condition always false - eliminating [9] if($28<=0) goto memset::@1
if() condition always false - eliminating [158] if(0!=0) goto printf_uint::@1
if() condition always true - replacing block destination [172] if(0==printf_number_buffer::format_min_length#0) goto printf_number_buffer::@1
if() condition always false - eliminating [174] if(0!=printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@2
if() condition always true - replacing block destination [188] if(0==printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@4
if() condition always true - replacing block destination [192] if(0==printf_number_buffer::format_upper_case#0) goto printf_number_buffer::@5
if() condition always true - replacing block destination [198] if(0==printf_number_buffer::format_justify_left#0) goto printf_number_buffer::@return
if() condition always true - replacing block destination [205] if(0==0) goto printf_string::@1
if() condition always false - eliminating [207] if(0!=0) goto printf_string::@2
if() condition always true - replacing block destination [218] if(0==0) goto printf_string::@return
if() condition always false - eliminating [279] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@2
if() condition always false - eliminating [282] if(0!=printf_number_buffer::format_zero_padding#0) goto printf_number_buffer::@return
Successful SSA optimization Pass2ConstantIfs
Simplifying constant evaluating to zero (signed char)printf_number_buffer::format_min_length#0 in [181] printf_number_buffer::padding#1 = (signed char)printf_number_buffer::format_min_length#0 - printf_number_buffer::len#2
Simplifying constant evaluating to zero (signed char)0 in [213] printf_string::padding#1 = (signed char)0 - printf_string::len#0
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero printf_number_buffer::len#2 in [181] printf_number_buffer::padding#1 = 0 - printf_number_buffer::len#2
Simplifying expression containing zero printf_string::len#0 in [213] printf_string::padding#1 = 0 - printf_string::len#0
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating variable strlen::str#5 from unused block strlen
Eliminating variable strlen::str#3 from unused block strlen::@1
Eliminating variable strlen::len#2 from unused block strlen::@1
Eliminating variable strlen::len#1 from unused block strlen::@2
Eliminating variable strlen::str#0 from unused block strlen::@2
Eliminating variable toupper::return#0 from unused block toupper::@1
Eliminating variable toupper::return#2 from unused block toupper::@return
Eliminating variable strupr::src#2 from unused block strupr::@1
Eliminating variable toupper::ch#0 from unused block strupr::@2
Eliminating variable toupper::return#3 from unused block strupr::@2
Eliminating variable strupr::$0 from unused block strupr::@4
Eliminating variable strupr::src#1 from unused block strupr::@4
Eliminating variable strlen::return#2 from unused block printf_number_buffer::@6
Eliminating variable printf_number_buffer::$19 from unused block printf_number_buffer::@15
Eliminating variable printf_number_buffer::len#0 from unused block printf_number_buffer::@15
Eliminating variable printf_number_buffer::len#2 from unused block printf_number_buffer::@13
Eliminating variable printf_number_buffer::padding#1 from unused block printf_number_buffer::@13
Eliminating variable printf_number_buffer::len#1 from unused block printf_number_buffer::@7
Eliminating variable printf_padding::length#1 from unused block printf_number_buffer::@10
Eliminating variable printf_padding::length#2 from unused block printf_number_buffer::@12
Eliminating variable strlen::str#2 from unused block printf_string::@3
Eliminating variable strlen::return#3 from unused block printf_string::@3
Eliminating variable printf_string::$9 from unused block printf_string::@7
Eliminating variable printf_string::len#0 from unused block printf_string::@7
Eliminating variable printf_string::padding#1 from unused block printf_string::@7
Eliminating variable printf_padding::length#4 from unused block printf_string::@6
Removing unused procedure strlen
Removing unused procedure block strlen
Removing PHI-reference to removed block (strlen) in block strlen::@1
Removing PHI-reference to removed block (strlen) in block strlen::@1
Removing unused procedure block strlen::@1
Removing unused procedure block strlen::@2
Removing unused procedure block strlen::@3
Removing unused procedure block strlen::@return
Removing unused procedure toupper
Removing unused procedure block toupper
Removing unused procedure block toupper::@1
Removing PHI-reference to removed block (toupper::@1) in block toupper::@return
Removing unused procedure block toupper::@2
Removing PHI-reference to removed block (toupper::@2) in block toupper::@return
Removing unused procedure block toupper::@return
Removing unused procedure block toupper::@3
Removing unused procedure strupr
Removing unused procedure block strupr
Removing PHI-reference to removed block (strupr) in block strupr::@1
Removing unused procedure block strupr::@1
Removing unused procedure block strupr::@2
Removing unused procedure block strupr::@4
Removing unused procedure block strupr::@3
Removing unused procedure block strupr::@return
Removing PHI-reference to removed block (printf_uint::@1) in block printf_uint::@3
Removing unused block printf_uint::@1
Removing unused block printf_number_buffer::@6
Removing PHI-reference to removed block (printf_number_buffer::@15) in block printf_number_buffer::@13
Removing unused block printf_number_buffer::@15
Removing PHI-reference to removed block (printf_number_buffer::@13) in block printf_number_buffer::@1
Removing unused block printf_number_buffer::@13
Removing unused block printf_number_buffer::@7
Removing PHI-reference to removed block (printf_number_buffer::@14) in block printf_number_buffer::@1
Removing unused block printf_number_buffer::@14
Removing PHI-reference to removed block (printf_number_buffer::@10) in block printf_padding
Removing PHI-reference to removed block (printf_number_buffer::@10) in block printf_padding
Removing PHI-reference to removed block (printf_number_buffer::@10) in block printf_padding
Removing unused block printf_number_buffer::@10
Removing unused block printf_number_buffer::@17
Removing unused block printf_number_buffer::@11
Removing unused block printf_number_buffer::@19
Removing PHI-reference to removed block (printf_number_buffer::@12) in block printf_padding
Removing PHI-reference to removed block (printf_number_buffer::@12) in block printf_padding
Removing PHI-reference to removed block (printf_number_buffer::@12) in block printf_padding
Removing unused block printf_number_buffer::@12
Removing unused block printf_number_buffer::@20
Removing unused block printf_string::@3
Removing PHI-reference to removed block (printf_string::@7) in block printf_string::@1
Removing unused block printf_string::@7
Removing PHI-reference to removed block (printf_string::@4) in block printf_string::@1
Removing unused block printf_string::@4
Removing PHI-reference to removed block (printf_string::@6) in block printf_padding
Removing PHI-reference to removed block (printf_string::@6) in block printf_padding
Removing PHI-reference to removed block (printf_string::@6) in block printf_padding
Removing unused block printf_string::@6
Removing unused block printf_string::@10
Removing unused block printf_number_buffer::@23
Removing unused block printf_number_buffer::@24
Removing unused block printf_number_buffer::@25
Removing unused block printf_string::@12
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused constant printf_padding::putc#4
Eliminating unused constant printf_padding::putc#1
Eliminating unused constant printf_padding::putc#2
Eliminating unused constant printf_number_buffer::format_min_length#0
Eliminating unused constant printf_number_buffer::format_justify_left#0
Eliminating unused constant printf_number_buffer::format_zero_padding#0
Eliminating unused constant printf_number_buffer::format_upper_case#0
Eliminating unused constant SIZEOF_UNSIGNED_INT
Successful SSA optimization PassNEliminateUnusedVars
Inlining constant with var siblings printf_str::putc#1
Inlining constant with var siblings printf_str::putc#0
Inlining constant with var siblings printf_padding::putc#3
Inlining constant with var siblings printf_padding::putc#0
Constant inlined printf_str::putc#0 = printf_number_buffer::putc#0
Constant inlined printf_str::putc#1 = &cputc
Constant inlined printf_padding::putc#3 = &cputc
Constant inlined printf_padding::putc#0 = printf_number_buffer::putc#0
Successful SSA optimization Pass2ConstantInlining
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Identical Phi Values printf_uint::$2 0
Identical Phi Values printf_number_buffer::padding#10 0
Identical Phi Values printf_string::padding#3 0
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [148] printf_padding::length#0 = (char)0
Constant right-side identified [159] printf_padding::length#3 = (char)0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant printf_padding::length#0 = (char)0
Constant printf_padding::length#3 = (char)0
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [213] if(0!=0) goto printf_number_buffer::@8
if() condition always false - eliminating [214] if(0!=0) goto printf_string::@5
Successful SSA optimization Pass2ConstantIfs
Simplifying constant evaluating to zero (char)0 in 
Simplifying constant evaluating to zero (char)0 in 
Successful SSA optimization PassNSimplifyConstantZero
Eliminating variable printf_padding::length#6 from unused block printf_padding
Eliminating variable printf_padding::pad#7 from unused block printf_padding
Eliminating variable printf_padding::putc#7 from unused block printf_padding
Eliminating variable printf_padding::i#2 from unused block printf_padding::@1
Eliminating variable printf_padding::i#1 from unused block printf_padding::@3
Removing unused procedure printf_padding
Removing unused procedure block printf_padding
Removing PHI-reference to removed block (printf_padding) in block printf_padding::@1
Removing unused procedure block printf_padding::@1
Removing unused procedure block printf_padding::@2
Removing unused procedure block printf_padding::@3
Removing unused procedure block printf_padding::@return
Removing unused block printf_number_buffer::@8
Removing unused block printf_number_buffer::@16
Removing unused block printf_string::@5
Removing unused block printf_string::@9
Successful SSA optimization Pass2EliminateUnusedBlocks
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $19
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simplifying constant integer cast $19-1
Successful SSA optimization PassNCastSimplification
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_color = gotoxy::$6 
Added new block during phi lifting utoa::@17(between utoa::@16 and utoa::@13)
Added new block during phi lifting gotoxy::@5(between gotoxy and gotoxy::@1)
Added new block during phi lifting conio_c64_init::@4(between conio_c64_init and conio_c64_init::@1)
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::@2
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of __start::@3
Adding NOP phi() at start of conio_c64_init::@2
Adding NOP phi() at start of conio_c64_init::@3
Adding NOP phi() at start of cputc::@3
Adding NOP phi() at start of cputc::@5
Adding NOP phi() at start of cputc::@1
Adding NOP phi() at start of cputc::@4
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of gotoxy::@3
Adding NOP phi() at start of cputln::@1
Adding NOP phi() at start of clrscr
Adding NOP phi() at start of clrscr::@2
Adding NOP phi() at start of memchr::@3
Adding NOP phi() at start of assert_uint::@2
Adding NOP phi() at start of assert_uint::@11
Adding NOP phi() at start of assert_uint::@12
Adding NOP phi() at start of assert_uint::@13
Adding NOP phi() at start of assert_uint::@14
Adding NOP phi() at start of assert_uint::@1
Adding NOP phi() at start of assert_uint::@3
Adding NOP phi() at start of assert_uint::@4
Adding NOP phi() at start of assert_uint::@5
Adding NOP phi() at start of assert_uint::@7
Adding NOP phi() at start of assert_uint::@8
Adding NOP phi() at start of assert_uint::@9
Adding NOP phi() at start of assert_uint::@10
Adding NOP phi() at start of assert_ptr::@2
Adding NOP phi() at start of assert_ptr::@11
Adding NOP phi() at start of assert_ptr::@12
Adding NOP phi() at start of assert_ptr::@13
Adding NOP phi() at start of assert_ptr::@14
Adding NOP phi() at start of assert_ptr::@1
Adding NOP phi() at start of assert_ptr::@3
Adding NOP phi() at start of assert_ptr::@4
Adding NOP phi() at start of assert_ptr::@5
Adding NOP phi() at start of assert_ptr::@7
Adding NOP phi() at start of assert_ptr::@8
Adding NOP phi() at start of assert_ptr::@9
Adding NOP phi() at start of assert_ptr::@10
Adding NOP phi() at start of cscroll::@1
Adding NOP phi() at start of cscroll::@3
Adding NOP phi() at start of cscroll::@4
Adding NOP phi() at start of cscroll::@5
Adding NOP phi() at start of printf_string::@1
Adding NOP phi() at start of printf_string::@11
Adding NOP phi() at start of printf_string::@8
Adding NOP phi() at start of printf_uint::@2
Adding NOP phi() at start of printf_uint::@5
Adding NOP phi() at start of memcpy::@3
Adding NOP phi() at start of memset::@1
Adding NOP phi() at start of utoa::@4
Adding NOP phi() at start of utoa::@3
Adding NOP phi() at start of utoa::@2
Adding NOP phi() at start of utoa::@1
Adding NOP phi() at start of printf_number_buffer
Adding NOP phi() at start of printf_number_buffer::@1
Adding NOP phi() at start of printf_number_buffer::@22
Adding NOP phi() at start of printf_number_buffer::@21
Adding NOP phi() at start of printf_number_buffer::@3
Adding NOP phi() at start of printf_number_buffer::@4
Adding NOP phi() at start of printf_number_buffer::@5
Adding NOP phi() at start of printf_number_buffer::@18
CALL GRAPH
Calls in [__start] to conio_c64_init:6 main:9 
Calls in [conio_c64_init] to gotoxy:17 
Calls in [cputc] to cputln:28 cputln:32 
Calls in [main] to clrscr:35 memchr:37 assert_uint:41 memchr:43 assert_ptr:47 
Calls in [cputln] to cscroll:69 
Calls in [assert_uint] to textcolor:107 printf_str:109 printf_string:111 printf_str:113 textcolor:117 printf_str:119 printf_uint:121 printf_str:123 printf_uint:126 printf_str:128 printf_string:130 printf_str:132 
Calls in [assert_ptr] to textcolor:136 printf_str:138 printf_string:140 printf_str:142 textcolor:146 printf_str:148 printf_uint:150 printf_str:152 printf_uint:155 printf_str:157 printf_string:159 printf_str:161 
Calls in [cscroll] to memcpy:166 memcpy:168 memset:170 memset:173 
Calls in [printf_str] to null:189 
Calls in [printf_string] to printf_str:197 
Calls in [printf_uint] to utoa:205 printf_number_buffer:207 
Calls in [utoa] to utoa_append:268 
Calls in [printf_number_buffer] to cputc:283 printf_str:288 

Created 36 initial phi equivalence classes
Coalesced [20] conio_c64_init::line#3 = conio_c64_init::line#0
Coalesced [64] gotoxy::y#7 = gotoxy::y#2
Coalesced [86] clrscr::l#7 = clrscr::l#1
Coalesced [87] clrscr::line_text#7 = clrscr::line_text#1
Coalesced [88] clrscr::line_cols#7 = clrscr::line_cols#1
Coalesced [92] clrscr::c#4 = clrscr::c#1
Coalesced [103] memchr::i#5 = memchr::i#1
Coalesced [104] memchr::ptr#6 = memchr::ptr#1
Coalesced [125] printf_uint::uvalue#9 = printf_uint::uvalue#1
Coalesced [154] printf_uint::uvalue#8 = printf_uint::uvalue#3
Coalesced [172] memset::c#6 = memset::c#1
Coalesced [182] printf_str::s#19 = printf_str::s#16
Coalesced [191] printf_str::s#20 = printf_str::s#0
Coalesced [196] printf_str::s#18 = printf_str::s#2
Coalesced [221] memcpy::src#5 = memcpy::src#1
Coalesced [222] memcpy::dst#5 = memcpy::dst#1
Coalesced [232] memset::dst#5 = memset::dst#1
Coalesced [244] utoa::value#17 = utoa::value#1
Coalesced [256] utoa::value#18 = utoa::value#2
Coalesced [257] utoa::started#6 = utoa::started#2
Coalesced [258] utoa::buffer#23 = utoa::buffer#11
Coalesced [261] utoa::digit#7 = utoa::digit#1
Coalesced (already) [262] utoa::value#16 = utoa::value#6
Coalesced (already) [263] utoa::started#5 = utoa::started#4
Coalesced (already) [264] utoa::buffer#22 = utoa::buffer#14
Coalesced [272] utoa::value#19 = utoa::value#0
Coalesced [273] utoa::buffer#24 = utoa::buffer#4
Coalesced [291] utoa_append::value#6 = utoa_append::value#0
Coalesced [298] utoa_append::value#7 = utoa_append::value#1
Coalesced [299] utoa_append::digit#5 = utoa_append::digit#1
Coalesced down to 32 phi equivalence classes
Culled Empty Block label __start::@2
Culled Empty Block label __start::@3
Culled Empty Block label conio_c64_init::@2
Culled Empty Block label conio_c64_init::@3
Culled Empty Block label cputc::@5
Culled Empty Block label cputc::@4
Culled Empty Block label main::@5
Culled Empty Block label gotoxy::@3
Culled Empty Block label cputln::@1
Culled Empty Block label clrscr::@2
Culled Empty Block label memchr::@3
Culled Empty Block label assert_uint::@14
Culled Empty Block label assert_uint::@10
Culled Empty Block label assert_ptr::@14
Culled Empty Block label assert_ptr::@10
Culled Empty Block label cscroll::@1
Culled Empty Block label printf_string::@1
Culled Empty Block label printf_string::@11
Culled Empty Block label printf_string::@8
Culled Empty Block label printf_uint::@2
Culled Empty Block label printf_uint::@5
Culled Empty Block label memcpy::@3
Culled Empty Block label memset::@1
Culled Empty Block label utoa::@4
Culled Empty Block label utoa::@17
Culled Empty Block label utoa::@3
Culled Empty Block label utoa::@2
Culled Empty Block label utoa::@1
Culled Empty Block label printf_number_buffer::@1
Culled Empty Block label printf_number_buffer::@22
Culled Empty Block label printf_number_buffer::@21
Culled Empty Block label printf_number_buffer::@3
Culled Empty Block label printf_number_buffer::@4
Culled Empty Block label printf_number_buffer::@18
Renumbering block memset::@2 to memset::@1
Renumbering block memset::@3 to memset::@2
Renumbering block memset::@4 to memset::@3
Renumbering block memchr::@4 to memchr::@3
Renumbering block memchr::@5 to memchr::@4
Renumbering block utoa::@5 to utoa::@1
Renumbering block utoa::@6 to utoa::@2
Renumbering block utoa::@7 to utoa::@3
Renumbering block utoa::@8 to utoa::@4
Renumbering block utoa::@9 to utoa::@5
Renumbering block utoa::@10 to utoa::@6
Renumbering block utoa::@11 to utoa::@7
Renumbering block utoa::@12 to utoa::@8
Renumbering block utoa::@13 to utoa::@9
Renumbering block utoa::@14 to utoa::@10
Renumbering block utoa::@15 to utoa::@11
Renumbering block utoa::@16 to utoa::@12
Renumbering block clrscr::@3 to clrscr::@2
Renumbering block clrscr::@4 to clrscr::@3
Renumbering block clrscr::@5 to clrscr::@4
Renumbering block clrscr::@6 to clrscr::@5
Renumbering block gotoxy::@5 to gotoxy::@3
Renumbering block cscroll::@3 to cscroll::@1
Renumbering block cscroll::@4 to cscroll::@2
Renumbering block cscroll::@5 to cscroll::@3
Renumbering block cscroll::@6 to cscroll::@4
Renumbering block cscroll::@7 to cscroll::@5
Renumbering block conio_c64_init::@4 to conio_c64_init::@2
Renumbering block printf_uint::@3 to printf_uint::@1
Renumbering block printf_uint::@4 to printf_uint::@2
Renumbering block printf_number_buffer::@2 to printf_number_buffer::@1
Renumbering block printf_number_buffer::@5 to printf_number_buffer::@2
Renumbering block printf_number_buffer::@9 to printf_number_buffer::@3
Renumbering block printf_string::@2 to printf_string::@1
Renumbering block assert_uint::@11 to assert_uint::@10
Renumbering block assert_uint::@12 to assert_uint::@11
Renumbering block assert_uint::@13 to assert_uint::@12
Renumbering block assert_ptr::@11 to assert_ptr::@10
Renumbering block assert_ptr::@12 to assert_ptr::@11
Renumbering block assert_ptr::@13 to assert_ptr::@12
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of conio_c64_init::@2
Adding NOP phi() at start of cputc::@3
Adding NOP phi() at start of cputc::@1
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of gotoxy::@3
Adding NOP phi() at start of clrscr
Adding NOP phi() at start of assert_uint::@2
Adding NOP phi() at start of assert_uint::@10
Adding NOP phi() at start of assert_uint::@11
Adding NOP phi() at start of assert_uint::@12
Adding NOP phi() at start of assert_uint::@1
Adding NOP phi() at start of assert_uint::@3
Adding NOP phi() at start of assert_uint::@4
Adding NOP phi() at start of assert_uint::@5
Adding NOP phi() at start of assert_uint::@7
Adding NOP phi() at start of assert_uint::@8
Adding NOP phi() at start of assert_uint::@9
Adding NOP phi() at start of assert_ptr::@2
Adding NOP phi() at start of assert_ptr::@10
Adding NOP phi() at start of assert_ptr::@11
Adding NOP phi() at start of assert_ptr::@12
Adding NOP phi() at start of assert_ptr::@1
Adding NOP phi() at start of assert_ptr::@3
Adding NOP phi() at start of assert_ptr::@4
Adding NOP phi() at start of assert_ptr::@5
Adding NOP phi() at start of assert_ptr::@7
Adding NOP phi() at start of assert_ptr::@8
Adding NOP phi() at start of assert_ptr::@9
Adding NOP phi() at start of cscroll::@1
Adding NOP phi() at start of cscroll::@2
Adding NOP phi() at start of cscroll::@3
Adding NOP phi() at start of printf_number_buffer
Adding NOP phi() at start of printf_number_buffer::@2
Adding NOP phi() at start of utoa_append

FINAL CONTROL FLOW GRAPH

void __start()
__start: scope:[__start]  from
  [0] phi()
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  [1] conio_cursor_x = 0
  [2] conio_cursor_y = 0
  [3] conio_line_text = DEFAULT_SCREEN
  [4] conio_line_color = COLORRAM
  [5] conio_textcolor = LIGHT_BLUE
  [6] call conio_c64_init
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  [7] phi()
  [8] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [9] return 
  to:@return

void conio_c64_init()
conio_c64_init: scope:[conio_c64_init]  from __start::__init1
  [10] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE
  [11] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2
  to:conio_c64_init::@1
conio_c64_init::@2: scope:[conio_c64_init]  from conio_c64_init
  [12] phi()
  to:conio_c64_init::@1
conio_c64_init::@1: scope:[conio_c64_init]  from conio_c64_init conio_c64_init::@2
  [13] conio_c64_init::line#2 = phi( conio_c64_init::@2/conio_c64_init::line#0, conio_c64_init/$19-1 )
  [14] gotoxy::y#2 = conio_c64_init::line#2
  [15] call gotoxy
  to:conio_c64_init::@return
conio_c64_init::@return: scope:[conio_c64_init]  from conio_c64_init::@1
  [16] return 
  to:@return

__stackcall void cputc(char c)
cputc: scope:[cputc]  from printf_number_buffer::@3
  [17] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C)
  [18] if(cputc::c#0=='
') goto cputc::@1
  to:cputc::@2
cputc::@2: scope:[cputc]  from cputc
  [19] conio_line_text[conio_cursor_x] = cputc::c#0
  [20] conio_line_color[conio_cursor_x] = conio_textcolor
  [21] conio_cursor_x = ++ conio_cursor_x
  [22] if(conio_cursor_x!=$28) goto cputc::@return
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc::@2
  [23] phi()
  [24] call cputln
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@1 cputc::@2 cputc::@3
  [25] return 
  to:@return
cputc::@1: scope:[cputc]  from cputc
  [26] phi()
  [27] call cputln
  to:cputc::@return

void main()
main: scope:[main]  from __start::@1
  [28] phi()
  [29] call clrscr
  to:main::@1
main::@1: scope:[main]  from main
  [30] phi()
  [31] call memchr
  [32] memchr::return#3 = memchr::return#2
  to:main::@2
main::@2: scope:[main]  from main::@1
  [33] main::ptr#0 = (char *)memchr::return#3
  [34] assert_uint::actual#0 = main::ptr#0 - main::str
  [35] call assert_uint
  to:main::@3
main::@3: scope:[main]  from main::@2
  [36] phi()
  [37] call memchr
  [38] memchr::return#4 = memchr::return#2
  to:main::@4
main::@4: scope:[main]  from main::@3
  [39] main::ptr2#0 = (char *)memchr::return#4
  [40] assert_ptr::actual#0 = (void *)main::ptr2#0
  [41] call assert_ptr
  to:main::@return
main::@return: scope:[main]  from main::@4
  [42] return 
  to:@return

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from conio_c64_init::@1
  [43] if(gotoxy::y#2<$19+1) goto gotoxy::@3
  to:gotoxy::@1
gotoxy::@3: scope:[gotoxy]  from gotoxy
  [44] phi()
  to:gotoxy::@1
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  [45] gotoxy::y#4 = phi( gotoxy::@3/gotoxy::y#2, gotoxy/0 )
  to:gotoxy::@2
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1
  [46] conio_cursor_x = gotoxy::x#2
  [47] conio_cursor_y = gotoxy::y#4
  [48] gotoxy::$7 = (unsigned int)gotoxy::y#4
  [49] gotoxy::$8 = gotoxy::$7 << 2
  [50] gotoxy::$9 = gotoxy::$8 + gotoxy::$7
  [51] gotoxy::line_offset#0 = gotoxy::$9 << 3
  [52] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0
  [53] conio_line_text = gotoxy::$5
  [54] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0
  [55] conio_line_color = gotoxy::$6
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  [56] return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  [57] conio_line_text = conio_line_text + $28
  [58] conio_line_color = conio_line_color + $28
  [59] conio_cursor_x = 0
  [60] conio_cursor_y = ++ conio_cursor_y
  [61] call cscroll
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln
  [62] return 
  to:@return

void clrscr()
clrscr: scope:[clrscr]  from main
  [63] phi()
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr clrscr::@5
  [64] clrscr::line_cols#5 = phi( clrscr/COLORRAM, clrscr::@5/clrscr::line_cols#1 )
  [64] clrscr::line_text#5 = phi( clrscr/DEFAULT_SCREEN, clrscr::@5/clrscr::line_text#1 )
  [64] clrscr::l#2 = phi( clrscr/0, clrscr::@5/clrscr::l#1 )
  [65] if(clrscr::l#2<$19) goto clrscr::@3
  to:clrscr::@2
clrscr::@2: scope:[clrscr]  from clrscr::@1
  [66] conio_cursor_x = 0
  [67] conio_cursor_y = 0
  [68] conio_line_text = DEFAULT_SCREEN
  [69] conio_line_color = COLORRAM
  to:clrscr::@return
clrscr::@return: scope:[clrscr]  from clrscr::@2
  [70] return 
  to:@return
clrscr::@3: scope:[clrscr]  from clrscr::@1 clrscr::@4
  [71] clrscr::c#2 = phi( clrscr::@1/0, clrscr::@4/clrscr::c#1 )
  [72] if(clrscr::c#2<$28) goto clrscr::@4
  to:clrscr::@5
clrscr::@5: scope:[clrscr]  from clrscr::@3
  [73] clrscr::line_text#1 = clrscr::line_text#5 + $28
  [74] clrscr::line_cols#1 = clrscr::line_cols#5 + $28
  [75] clrscr::l#1 = ++ clrscr::l#2
  to:clrscr::@1
clrscr::@4: scope:[clrscr]  from clrscr::@3
  [76] clrscr::line_text#5[clrscr::c#2] = ' '
  [77] clrscr::line_cols#5[clrscr::c#2] = conio_textcolor
  [78] clrscr::c#1 = ++ clrscr::c#2
  to:clrscr::@3

void * memchr(const void *str , char c , unsigned int n)
memchr: scope:[memchr]  from main::@1 main::@3
  [79] memchr::c#4 = phi( main::@1/'a', main::@3/'a' )
  [79] memchr::n#3 = phi( main::@1/$e, main::@3/7 )
  to:memchr::@1
memchr::@1: scope:[memchr]  from memchr memchr::@3
  [80] memchr::ptr#2 = phi( memchr/(char *)(const void *)main::str, memchr::@3/memchr::ptr#1 )
  [80] memchr::i#2 = phi( memchr/0, memchr::@3/memchr::i#1 )
  [81] if(memchr::i#2<memchr::n#3) goto memchr::@2
  to:memchr::@return
memchr::@return: scope:[memchr]  from memchr::@1 memchr::@4
  [82] memchr::return#2 = phi( memchr::@1/(void *) 0, memchr::@4/memchr::return#8 )
  [83] return 
  to:@return
memchr::@2: scope:[memchr]  from memchr::@1
  [84] if(*memchr::ptr#2!=memchr::c#4) goto memchr::@3
  to:memchr::@4
memchr::@4: scope:[memchr]  from memchr::@2
  [85] memchr::return#8 = (void *)memchr::ptr#2
  to:memchr::@return
memchr::@3: scope:[memchr]  from memchr::@2
  [86] memchr::ptr#1 = ++ memchr::ptr#2
  [87] memchr::i#1 = ++ memchr::i#2
  to:memchr::@1

void assert_uint(unsigned int expect , unsigned int actual , char *message)
assert_uint: scope:[assert_uint]  from main::@2
  [88] if(assert_uint::expect#0!=assert_uint::actual#0) goto assert_uint::@1
  to:assert_uint::@2
assert_uint::@2: scope:[assert_uint]  from assert_uint
  [89] phi()
  [90] call textcolor
  to:assert_uint::@10
assert_uint::@10: scope:[assert_uint]  from assert_uint::@2
  [91] phi()
  [92] call printf_str
  to:assert_uint::@11
assert_uint::@11: scope:[assert_uint]  from assert_uint::@10
  [93] phi()
  [94] call printf_string
  to:assert_uint::@12
assert_uint::@12: scope:[assert_uint]  from assert_uint::@11
  [95] phi()
  [96] call printf_str
  to:assert_uint::@return
assert_uint::@return: scope:[assert_uint]  from assert_uint::@12 assert_uint::@9
  [97] return 
  to:@return
assert_uint::@1: scope:[assert_uint]  from assert_uint
  [98] phi()
  [99] call textcolor
  to:assert_uint::@3
assert_uint::@3: scope:[assert_uint]  from assert_uint::@1
  [100] phi()
  [101] call printf_str
  to:assert_uint::@4
assert_uint::@4: scope:[assert_uint]  from assert_uint::@3
  [102] phi()
  [103] call printf_uint
  to:assert_uint::@5
assert_uint::@5: scope:[assert_uint]  from assert_uint::@4
  [104] phi()
  [105] call printf_str
  to:assert_uint::@6
assert_uint::@6: scope:[assert_uint]  from assert_uint::@5
  [106] printf_uint::uvalue#1 = assert_uint::actual#0
  [107] call printf_uint
  to:assert_uint::@7
assert_uint::@7: scope:[assert_uint]  from assert_uint::@6
  [108] phi()
  [109] call printf_str
  to:assert_uint::@8
assert_uint::@8: scope:[assert_uint]  from assert_uint::@7
  [110] phi()
  [111] call printf_string
  to:assert_uint::@9
assert_uint::@9: scope:[assert_uint]  from assert_uint::@8
  [112] phi()
  [113] call printf_str
  to:assert_uint::@return

void assert_ptr(void *expect , void *actual , char *message)
assert_ptr: scope:[assert_ptr]  from main::@4
  [114] if(assert_ptr::expect#0!=assert_ptr::actual#0) goto assert_ptr::@1
  to:assert_ptr::@2
assert_ptr::@2: scope:[assert_ptr]  from assert_ptr
  [115] phi()
  [116] call textcolor
  to:assert_ptr::@10
assert_ptr::@10: scope:[assert_ptr]  from assert_ptr::@2
  [117] phi()
  [118] call printf_str
  to:assert_ptr::@11
assert_ptr::@11: scope:[assert_ptr]  from assert_ptr::@10
  [119] phi()
  [120] call printf_string
  to:assert_ptr::@12
assert_ptr::@12: scope:[assert_ptr]  from assert_ptr::@11
  [121] phi()
  [122] call printf_str
  to:assert_ptr::@return
assert_ptr::@return: scope:[assert_ptr]  from assert_ptr::@12 assert_ptr::@9
  [123] return 
  to:@return
assert_ptr::@1: scope:[assert_ptr]  from assert_ptr
  [124] phi()
  [125] call textcolor
  to:assert_ptr::@3
assert_ptr::@3: scope:[assert_ptr]  from assert_ptr::@1
  [126] phi()
  [127] call printf_str
  to:assert_ptr::@4
assert_ptr::@4: scope:[assert_ptr]  from assert_ptr::@3
  [128] phi()
  [129] call printf_uint
  to:assert_ptr::@5
assert_ptr::@5: scope:[assert_ptr]  from assert_ptr::@4
  [130] phi()
  [131] call printf_str
  to:assert_ptr::@6
assert_ptr::@6: scope:[assert_ptr]  from assert_ptr::@5
  [132] printf_uint::uvalue#3 = (unsigned int)assert_ptr::actual#0
  [133] call printf_uint
  to:assert_ptr::@7
assert_ptr::@7: scope:[assert_ptr]  from assert_ptr::@6
  [134] phi()
  [135] call printf_str
  to:assert_ptr::@8
assert_ptr::@8: scope:[assert_ptr]  from assert_ptr::@7
  [136] phi()
  [137] call printf_string
  to:assert_ptr::@9
assert_ptr::@9: scope:[assert_ptr]  from assert_ptr::@8
  [138] phi()
  [139] call printf_str
  to:assert_ptr::@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  [140] if(conio_cursor_y!=$19) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll
  [141] phi()
  [142] call memcpy
  to:cscroll::@2
cscroll::@2: scope:[cscroll]  from cscroll::@1
  [143] phi()
  [144] call memcpy
  to:cscroll::@3
cscroll::@3: scope:[cscroll]  from cscroll::@2
  [145] phi()
  [146] call memset
  to:cscroll::@4
cscroll::@4: scope:[cscroll]  from cscroll::@3
  [147] memset::c#1 = conio_textcolor
  [148] call memset
  to:cscroll::@5
cscroll::@5: scope:[cscroll]  from cscroll::@4
  [149] conio_line_text = conio_line_text - $28
  [150] conio_line_color = conio_line_color - $28
  [151] conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@5
  [152] return 
  to:@return

char textcolor(char color)
textcolor: scope:[textcolor]  from assert_ptr::@1 assert_ptr::@2 assert_uint::@1 assert_uint::@2
  [153] textcolor::color#4 = phi( assert_ptr::@1/RED, assert_ptr::@2/GREEN, assert_uint::@1/RED, assert_uint::@2/GREEN )
  [154] conio_textcolor = textcolor::color#4
  to:textcolor::@return
textcolor::@return: scope:[textcolor]  from textcolor
  [155] return 
  to:@return

void printf_str(void (*putc)(char) , const char *s)
printf_str: scope:[printf_str]  from assert_ptr::@10 assert_ptr::@12 assert_ptr::@3 assert_ptr::@5 assert_ptr::@7 assert_ptr::@9 assert_uint::@10 assert_uint::@12 assert_uint::@3 assert_uint::@5 assert_uint::@7 assert_uint::@9 printf_number_buffer::@2 printf_string::@1
  [156] printf_str::putc#16 = phi( assert_ptr::@10/&cputc, assert_ptr::@12/&cputc, assert_ptr::@3/&cputc, assert_ptr::@5/&cputc, assert_ptr::@7/&cputc, assert_ptr::@9/&cputc, assert_uint::@10/&cputc, assert_uint::@12/&cputc, assert_uint::@3/&cputc, assert_uint::@5/&cputc, assert_uint::@7/&cputc, assert_uint::@9/&cputc, printf_number_buffer::@2/printf_number_buffer::putc#0, printf_string::@1/&cputc )
  [156] printf_str::s#16 = phi( assert_ptr::@10/s4, assert_ptr::@12/s3, assert_ptr::@3/assert_ptr::s, assert_ptr::@5/assert_ptr::s1, assert_ptr::@7/s2, assert_ptr::@9/s3, assert_uint::@10/s4, assert_uint::@12/s3, assert_uint::@3/assert_uint::s, assert_uint::@5/assert_uint::s1, assert_uint::@7/s2, assert_uint::@9/s3, printf_number_buffer::@2/printf_number_buffer::buffer_digits#0, printf_string::@1/printf_str::s#2 )
  to:printf_str::@1
printf_str::@1: scope:[printf_str]  from printf_str printf_str::@2
  [157] printf_str::s#15 = phi( printf_str/printf_str::s#16, printf_str::@2/printf_str::s#0 )
  [158] printf_str::c#1 = *printf_str::s#15
  [159] printf_str::s#0 = ++ printf_str::s#15
  [160] if(0!=printf_str::c#1) goto printf_str::@2
  to:printf_str::@return
printf_str::@return: scope:[printf_str]  from printf_str::@1
  [161] return 
  to:@return
printf_str::@2: scope:[printf_str]  from printf_str::@1
  [162] stackpush(char) = printf_str::c#1
  [163] callexecute *printf_str::putc#16 
  sideeffect stackpullbytes(1)
  to:printf_str::@1

void printf_string(void (*putc)(char) , char *str , char format_min_length , char format_justify_left)
printf_string: scope:[printf_string]  from assert_ptr::@11 assert_ptr::@8 assert_uint::@11 assert_uint::@8
  [165] printf_string::str#10 = phi( assert_ptr::@11/main::message1, assert_ptr::@8/main::message1, assert_uint::@11/main::message, assert_uint::@8/main::message )
  to:printf_string::@1
printf_string::@1: scope:[printf_string]  from printf_string
  [166] printf_str::s#2 = printf_string::str#10
  [167] call printf_str
  to:printf_string::@return
printf_string::@return: scope:[printf_string]  from printf_string::@1
  [168] return 
  to:@return

void printf_uint(void (*putc)(char) , unsigned int uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
printf_uint: scope:[printf_uint]  from assert_ptr::@4 assert_ptr::@6 assert_uint::@4 assert_uint::@6
  [169] printf_uint::format_radix#4 = phi( assert_ptr::@4/HEXADECIMAL, assert_ptr::@6/HEXADECIMAL, assert_uint::@4/DECIMAL, assert_uint::@6/DECIMAL )
  [169] printf_uint::uvalue#4 = phi( assert_ptr::@4/0, assert_ptr::@6/printf_uint::uvalue#3, assert_uint::@4/assert_uint::expect#0, assert_uint::@6/printf_uint::uvalue#1 )
  to:printf_uint::@1
printf_uint::@1: scope:[printf_uint]  from printf_uint
  [170] *((char *)&printf_buffer) = 0
  [171] utoa::value#1 = printf_uint::uvalue#4
  [172] utoa::radix#0 = printf_uint::format_radix#4
  [173] call utoa
  to:printf_uint::@2
printf_uint::@2: scope:[printf_uint]  from printf_uint::@1
  [174] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer)
  [175] call printf_number_buffer
  to:printf_uint::@return
printf_uint::@return: scope:[printf_uint]  from printf_uint::@2
  [176] return 
  to:@return

void * memcpy(void *destination , void *source , unsigned int num)
memcpy: scope:[memcpy]  from cscroll::@1 cscroll::@2
  [177] memcpy::destination#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN, cscroll::@2/(void *)COLORRAM )
  [177] memcpy::source#2 = phi( cscroll::@1/(void *)DEFAULT_SCREEN+$28, cscroll::@2/(void *)COLORRAM+$28 )
  [178] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28
  [179] memcpy::src#4 = (char *)memcpy::source#2
  [180] memcpy::dst#4 = (char *)memcpy::destination#2
  to:memcpy::@1
memcpy::@1: scope:[memcpy]  from memcpy memcpy::@2
  [181] memcpy::dst#2 = phi( memcpy/memcpy::dst#4, memcpy::@2/memcpy::dst#1 )
  [181] memcpy::src#2 = phi( memcpy/memcpy::src#4, memcpy::@2/memcpy::src#1 )
  [182] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2
  to:memcpy::@return
memcpy::@return: scope:[memcpy]  from memcpy::@1
  [183] return 
  to:@return
memcpy::@2: scope:[memcpy]  from memcpy::@1
  [184] *memcpy::dst#2 = *memcpy::src#2
  [185] memcpy::dst#1 = ++ memcpy::dst#2
  [186] memcpy::src#1 = ++ memcpy::src#2
  to:memcpy::@1

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from cscroll::@3 cscroll::@4
  [187] memset::c#4 = phi( cscroll::@3/' ', cscroll::@4/memset::c#1 )
  [187] memset::str#3 = phi( cscroll::@3/(void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28, cscroll::@4/(void *)COLORRAM+(unsigned int)$19*$28-$28 )
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [188] memset::end#0 = (char *)memset::str#3 + $28
  [189] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [190] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [191] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset::@2
  [192] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [193] *memset::dst#2 = memset::c#4
  [194] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

void utoa(unsigned int value , char *buffer , char radix)
utoa: scope:[utoa]  from printf_uint::@1
  [195] if(utoa::radix#0==DECIMAL) goto utoa::@1
  to:utoa::@2
utoa::@2: scope:[utoa]  from utoa
  [196] if(utoa::radix#0==HEXADECIMAL) goto utoa::@1
  to:utoa::@3
utoa::@3: scope:[utoa]  from utoa::@2
  [197] if(utoa::radix#0==OCTAL) goto utoa::@1
  to:utoa::@4
utoa::@4: scope:[utoa]  from utoa::@3
  [198] if(utoa::radix#0==BINARY) goto utoa::@1
  to:utoa::@5
utoa::@5: scope:[utoa]  from utoa::@4
  [199] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS) = 'e'
  [200] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1) = 'r'
  [201] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2) = 'r'
  [202] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3) = 0
  to:utoa::@return
utoa::@return: scope:[utoa]  from utoa::@5 utoa::@8
  [203] return 
  to:@return
utoa::@1: scope:[utoa]  from utoa utoa::@2 utoa::@3 utoa::@4
  [204] utoa::digit_values#8 = phi( utoa/RADIX_DECIMAL_VALUES, utoa::@2/RADIX_HEXADECIMAL_VALUES, utoa::@3/RADIX_OCTAL_VALUES, utoa::@4/RADIX_BINARY_VALUES )
  [204] utoa::max_digits#7 = phi( utoa/5, utoa::@2/4, utoa::@3/6, utoa::@4/$10 )
  to:utoa::@6
utoa::@6: scope:[utoa]  from utoa::@1 utoa::@9
  [205] utoa::buffer#11 = phi( utoa::@9/utoa::buffer#14, utoa::@1/(char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
  [205] utoa::started#2 = phi( utoa::@9/utoa::started#4, utoa::@1/0 )
  [205] utoa::value#2 = phi( utoa::@9/utoa::value#6, utoa::@1/utoa::value#1 )
  [205] utoa::digit#2 = phi( utoa::@9/utoa::digit#1, utoa::@1/0 )
  [206] utoa::$4 = utoa::max_digits#7 - 1
  [207] if(utoa::digit#2<utoa::$4) goto utoa::@7
  to:utoa::@8
utoa::@8: scope:[utoa]  from utoa::@6
  [208] utoa::$11 = (char)utoa::value#2
  [209] *utoa::buffer#11 = DIGITS[utoa::$11]
  [210] utoa::buffer#3 = ++ utoa::buffer#11
  [211] *utoa::buffer#3 = 0
  to:utoa::@return
utoa::@7: scope:[utoa]  from utoa::@6
  [212] utoa::$10 = utoa::digit#2 << 1
  [213] utoa::digit_value#0 = utoa::digit_values#8[utoa::$10]
  [214] if(0!=utoa::started#2) goto utoa::@10
  to:utoa::@12
utoa::@12: scope:[utoa]  from utoa::@7
  [215] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@10
  to:utoa::@9
utoa::@9: scope:[utoa]  from utoa::@11 utoa::@12
  [216] utoa::buffer#14 = phi( utoa::@12/utoa::buffer#11, utoa::@11/utoa::buffer#4 )
  [216] utoa::started#4 = phi( utoa::@12/utoa::started#2, utoa::@11/1 )
  [216] utoa::value#6 = phi( utoa::@12/utoa::value#2, utoa::@11/utoa::value#0 )
  [217] utoa::digit#1 = ++ utoa::digit#2
  to:utoa::@6
utoa::@10: scope:[utoa]  from utoa::@12 utoa::@7
  [218] utoa_append::buffer#0 = utoa::buffer#11
  [219] utoa_append::value#0 = utoa::value#2
  [220] utoa_append::sub#0 = utoa::digit_value#0
  [221] call utoa_append
  [222] utoa_append::return#0 = utoa_append::value#2
  to:utoa::@11
utoa::@11: scope:[utoa]  from utoa::@10
  [223] utoa::value#0 = utoa_append::return#0
  [224] utoa::buffer#4 = ++ utoa::buffer#11
  to:utoa::@9

void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
printf_number_buffer: scope:[printf_number_buffer]  from printf_uint::@2
  [225] phi()
  to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer]  from printf_number_buffer
  [226] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@2
  to:printf_number_buffer::@3
printf_number_buffer::@3: scope:[printf_number_buffer]  from printf_number_buffer::@1
  [227] stackpush(char) = printf_number_buffer::buffer_sign#0
  [228] callexecute cputc 
  sideeffect stackpullbytes(1)
  to:printf_number_buffer::@2
printf_number_buffer::@2: scope:[printf_number_buffer]  from printf_number_buffer::@1 printf_number_buffer::@3
  [230] phi()
  [231] call printf_str
  to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer]  from printf_number_buffer::@2
  [232] return 
  to:@return

unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
utoa_append: scope:[utoa_append]  from utoa::@10
  [233] phi()
  to:utoa_append::@1
utoa_append::@1: scope:[utoa_append]  from utoa_append utoa_append::@2
  [234] utoa_append::digit#2 = phi( utoa_append/0, utoa_append::@2/utoa_append::digit#1 )
  [234] utoa_append::value#2 = phi( utoa_append/utoa_append::value#0, utoa_append::@2/utoa_append::value#1 )
  [235] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2
  to:utoa_append::@3
utoa_append::@3: scope:[utoa_append]  from utoa_append::@1
  [236] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2]
  to:utoa_append::@return
utoa_append::@return: scope:[utoa_append]  from utoa_append::@3
  [237] return 
  to:@return
utoa_append::@2: scope:[utoa_append]  from utoa_append::@1
  [238] utoa_append::digit#1 = ++ utoa_append::digit#2
  [239] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0
  to:utoa_append::@1


VARIABLE REGISTER WEIGHTS
void __start()
void assert_ptr(void *expect , void *actual , char *message)
void *assert_ptr::actual
void *assert_ptr::actual#0 // 11.2
void *assert_ptr::expect
char *assert_ptr::message
void assert_uint(unsigned int expect , unsigned int actual , char *message)
unsigned int assert_uint::actual
unsigned int assert_uint::actual#0 // 21.299999999999997
unsigned int assert_uint::expect
char *assert_uint::message
void clrscr()
char clrscr::c
char clrscr::c#1 // 20002.0
char clrscr::c#2 // 12501.25
char clrscr::l
char clrscr::l#1 // 2002.0
char clrscr::l#2 // 333.6666666666667
char *clrscr::line_cols
char *clrscr::line_cols#1 // 1001.0
char *clrscr::line_cols#5 // 1500.375
char *clrscr::line_text
char *clrscr::line_text#1 // 667.3333333333334
char *clrscr::line_text#5 // 1714.7142857142858
void conio_c64_init()
char conio_c64_init::line
char conio_c64_init::line#0 // 11.0
char conio_c64_init::line#2 // 22.0
__loadstore char conio_cursor_x // 18295.243902439026
__loadstore char conio_cursor_y // 326532.7448979592
__loadstore char *conio_line_color // 230210.51041666666
__loadstore char *conio_line_text // 227837.20618556702
__loadstore char conio_textcolor // 127987.417721519
__stackcall void cputc(char c)
char cputc::c
char cputc::c#0 // 150001.5
void cputln()
void cscroll()
void gotoxy(char x , char y)
char *gotoxy::$5 // 202.0
char *gotoxy::$6 // 202.0
unsigned int gotoxy::$7 // 151.5
unsigned int gotoxy::$8 // 202.0
unsigned int gotoxy::$9 // 202.0
unsigned int gotoxy::line_offset
unsigned int gotoxy::line_offset#0 // 101.0
char gotoxy::x
char gotoxy::y
char gotoxy::y#2 // 71.0
char gotoxy::y#4 // 67.33333333333333
void main()
char *main::ptr
char *main::ptr#0 // 22.0
char *main::ptr2
char *main::ptr2#0 // 11.0
void * memchr(const void *str , char c , unsigned int n)
char memchr::c
char memchr::c#4 // 166.83333333333334
unsigned int memchr::i
unsigned int memchr::i#1 // 2002.0
unsigned int memchr::i#2 // 750.75
unsigned int memchr::n
unsigned int memchr::n#3 // 166.83333333333334
char *memchr::ptr
char *memchr::ptr#1 // 1001.0
char *memchr::ptr#2 // 1001.0
void *memchr::return
void *memchr::return#2 // 30.75
void *memchr::return#3 // 11.0
void *memchr::return#4 // 11.0
void *memchr::return#8 // 202.0
const void *memchr::str
void * memcpy(void *destination , void *source , unsigned int num)
void *memcpy::destination
void *memcpy::destination#2
char *memcpy::dst
char *memcpy::dst#1 // 1.000000001E9
char *memcpy::dst#2 // 1.0333333346666667E9
char *memcpy::dst#4 // 2.00000002E8
unsigned int memcpy::num
void *memcpy::return
void *memcpy::source
void *memcpy::source#2
char *memcpy::src
char *memcpy::src#1 // 2.000000002E9
char *memcpy::src#2 // 1.02500000125E9
char *memcpy::src#4 // 1.00000001E8
char *memcpy::src_end
char *memcpy::src_end#0 // 1.3750000025E8
void * memset(void *str , char c , unsigned int num)
char memset::c
char memset::c#1 // 2.0000002E7
char memset::c#4 // 1.4428571457142857E8
char *memset::dst
char *memset::dst#1 // 2.000000002E9
char *memset::dst#2 // 1.3666666683333335E9
char *memset::dst#4 // 2.00000002E8
char *memset::end
char *memset::end#0 // 1.833333336666667E8
unsigned int memset::num
void *memset::return
void *memset::str
void *memset::str#3
__loadstore struct printf_buffer_number printf_buffer = {}
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
struct printf_buffer_number printf_number_buffer::buffer
char *printf_number_buffer::buffer_digits
char printf_number_buffer::buffer_sign
char printf_number_buffer::buffer_sign#0 // 7001.0
struct printf_format_number printf_number_buffer::format
char printf_number_buffer::format_justify_left
char printf_number_buffer::format_min_length
char printf_number_buffer::format_radix
char printf_number_buffer::format_sign_always
char printf_number_buffer::format_upper_case
char printf_number_buffer::format_zero_padding
signed char printf_number_buffer::len
signed char printf_number_buffer::padding
void (*printf_number_buffer::putc)(char)
void printf_str(void (*putc)(char) , const char *s)
char printf_str::c
char printf_str::c#1 // 1000001.0
void (*printf_str::putc)(char)
void (*printf_str::putc#16)(char)
const char *printf_str::s
const char *printf_str::s#0 // 1000001.0
const char *printf_str::s#15 // 1550002.0
const char *printf_str::s#16 // 101002.0
const char *printf_str::s#2 // 2002.0
void printf_string(void (*putc)(char) , char *str , char format_min_length , char format_justify_left)
struct printf_format_string printf_string::format
char printf_string::format_justify_left
char printf_string::format_min_length
signed char printf_string::len
signed char printf_string::padding
void (*printf_string::putc)(char)
char *printf_string::str
char *printf_string::str#10 // 1001.0
void printf_uint(void (*putc)(char) , unsigned int uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
struct printf_format_number printf_uint::format
char printf_uint::format_justify_left
char printf_uint::format_min_length
char printf_uint::format_radix
char printf_uint::format_radix#4 // 333.6666666666667
char printf_uint::format_sign_always
char printf_uint::format_upper_case
char printf_uint::format_zero_padding
void (*printf_uint::putc)(char)
unsigned int printf_uint::uvalue
unsigned int printf_uint::uvalue#1 // 202.0
unsigned int printf_uint::uvalue#3 // 202.0
unsigned int printf_uint::uvalue#4 // 601.5
char textcolor(char color)
char textcolor::color
char textcolor::color#4 // 1001.0
char textcolor::old
char textcolor::return
void utoa(unsigned int value , char *buffer , char radix)
char utoa::$10 // 200002.0
char utoa::$11 // 20002.0
char utoa::$4 // 200002.0
char *utoa::buffer
char *utoa::buffer#11 // 28000.4
char *utoa::buffer#14 // 150001.5
char *utoa::buffer#3 // 20002.0
char *utoa::buffer#4 // 200002.0
char utoa::digit
char utoa::digit#1 // 200002.0
char utoa::digit#2 // 26666.933333333334
unsigned int utoa::digit_value
unsigned int utoa::digit_value#0 // 60000.600000000006
unsigned int *utoa::digit_values
unsigned int *utoa::digit_values#8 // 5882.411764705882
char utoa::max_digits
char utoa::max_digits#7 // 5882.411764705882
char utoa::radix
char utoa::radix#0 // 10251.25
char utoa::started
char utoa::started#2 // 42857.57142857143
char utoa::started#4 // 100001.0
unsigned int utoa::value
unsigned int utoa::value#0 // 100001.0
unsigned int utoa::value#1 // 1571.7142857142858
unsigned int utoa::value#2 // 51250.625
unsigned int utoa::value#6 // 150001.5
unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
char *utoa_append::buffer
char *utoa_append::buffer#0 // 137500.25
char utoa_append::digit
char utoa_append::digit#1 // 1.00000001E8
char utoa_append::digit#2 // 1.005000015E8
unsigned int utoa_append::return
unsigned int utoa_append::return#0 // 200002.0
unsigned int utoa_append::sub
unsigned int utoa_append::sub#0 // 3.33500005E7
unsigned int utoa_append::value
unsigned int utoa_append::value#0 // 366667.3333333334
unsigned int utoa_append::value#1 // 2.00000002E8
unsigned int utoa_append::value#2 // 5.018333416666667E7

Initial phi equivalence classes
[ conio_c64_init::line#2 conio_c64_init::line#0 ]
[ gotoxy::y#4 gotoxy::y#2 ]
[ clrscr::l#2 clrscr::l#1 ]
[ clrscr::line_text#5 clrscr::line_text#1 ]
[ clrscr::line_cols#5 clrscr::line_cols#1 ]
[ clrscr::c#2 clrscr::c#1 ]
[ memchr::n#3 ]
[ memchr::c#4 ]
[ memchr::i#2 memchr::i#1 ]
[ memchr::ptr#2 memchr::ptr#1 ]
[ memchr::return#2 memchr::return#8 ]
[ textcolor::color#4 ]
[ printf_str::putc#16 ]
[ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 ]
[ printf_string::str#10 ]
[ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 ]
[ printf_uint::format_radix#4 ]
[ memcpy::source#2 ]
[ memcpy::destination#2 ]
[ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
[ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
[ memset::str#3 ]
[ memset::c#4 memset::c#1 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ utoa::max_digits#7 ]
[ utoa::digit_values#8 ]
[ utoa::digit#2 utoa::digit#1 ]
[ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ]
[ utoa::started#2 utoa::started#4 ]
[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ]
[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ]
[ utoa_append::digit#2 utoa_append::digit#1 ]
Added variable conio_cursor_x to live range equivalence class [ conio_cursor_x ]
Added variable conio_cursor_y to live range equivalence class [ conio_cursor_y ]
Added variable conio_line_text to live range equivalence class [ conio_line_text ]
Added variable conio_line_color to live range equivalence class [ conio_line_color ]
Added variable conio_textcolor to live range equivalence class [ conio_textcolor ]
Added variable cputc::c#0 to live range equivalence class [ cputc::c#0 ]
Added variable memchr::return#3 to live range equivalence class [ memchr::return#3 ]
Added variable main::ptr#0 to live range equivalence class [ main::ptr#0 ]
Added variable assert_uint::actual#0 to live range equivalence class [ assert_uint::actual#0 ]
Added variable memchr::return#4 to live range equivalence class [ memchr::return#4 ]
Added variable main::ptr2#0 to live range equivalence class [ main::ptr2#0 ]
Added variable assert_ptr::actual#0 to live range equivalence class [ assert_ptr::actual#0 ]
Added variable gotoxy::$7 to live range equivalence class [ gotoxy::$7 ]
Added variable gotoxy::$8 to live range equivalence class [ gotoxy::$8 ]
Added variable gotoxy::$9 to live range equivalence class [ gotoxy::$9 ]
Added variable gotoxy::line_offset#0 to live range equivalence class [ gotoxy::line_offset#0 ]
Added variable gotoxy::$5 to live range equivalence class [ gotoxy::$5 ]
Added variable gotoxy::$6 to live range equivalence class [ gotoxy::$6 ]
Added variable printf_str::c#1 to live range equivalence class [ printf_str::c#1 ]
Added variable utoa::radix#0 to live range equivalence class [ utoa::radix#0 ]
Added variable printf_number_buffer::buffer_sign#0 to live range equivalence class [ printf_number_buffer::buffer_sign#0 ]
Added variable memcpy::src_end#0 to live range equivalence class [ memcpy::src_end#0 ]
Added variable memset::end#0 to live range equivalence class [ memset::end#0 ]
Added variable utoa::$4 to live range equivalence class [ utoa::$4 ]
Added variable utoa::$11 to live range equivalence class [ utoa::$11 ]
Added variable utoa::buffer#3 to live range equivalence class [ utoa::buffer#3 ]
Added variable utoa::$10 to live range equivalence class [ utoa::$10 ]
Added variable utoa::digit_value#0 to live range equivalence class [ utoa::digit_value#0 ]
Added variable utoa_append::buffer#0 to live range equivalence class [ utoa_append::buffer#0 ]
Added variable utoa_append::sub#0 to live range equivalence class [ utoa_append::sub#0 ]
Added variable utoa_append::return#0 to live range equivalence class [ utoa_append::return#0 ]
Added variable printf_buffer to live range equivalence class [ printf_buffer ]
Complete equivalence classes
[ conio_c64_init::line#2 conio_c64_init::line#0 ]
[ gotoxy::y#4 gotoxy::y#2 ]
[ clrscr::l#2 clrscr::l#1 ]
[ clrscr::line_text#5 clrscr::line_text#1 ]
[ clrscr::line_cols#5 clrscr::line_cols#1 ]
[ clrscr::c#2 clrscr::c#1 ]
[ memchr::n#3 ]
[ memchr::c#4 ]
[ memchr::i#2 memchr::i#1 ]
[ memchr::ptr#2 memchr::ptr#1 ]
[ memchr::return#2 memchr::return#8 ]
[ textcolor::color#4 ]
[ printf_str::putc#16 ]
[ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 ]
[ printf_string::str#10 ]
[ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 ]
[ printf_uint::format_radix#4 ]
[ memcpy::source#2 ]
[ memcpy::destination#2 ]
[ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
[ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
[ memset::str#3 ]
[ memset::c#4 memset::c#1 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ utoa::max_digits#7 ]
[ utoa::digit_values#8 ]
[ utoa::digit#2 utoa::digit#1 ]
[ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ]
[ utoa::started#2 utoa::started#4 ]
[ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ]
[ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ]
[ utoa_append::digit#2 utoa_append::digit#1 ]
[ conio_cursor_x ]
[ conio_cursor_y ]
[ conio_line_text ]
[ conio_line_color ]
[ conio_textcolor ]
[ cputc::c#0 ]
[ memchr::return#3 ]
[ main::ptr#0 ]
[ assert_uint::actual#0 ]
[ memchr::return#4 ]
[ main::ptr2#0 ]
[ assert_ptr::actual#0 ]
[ gotoxy::$7 ]
[ gotoxy::$8 ]
[ gotoxy::$9 ]
[ gotoxy::line_offset#0 ]
[ gotoxy::$5 ]
[ gotoxy::$6 ]
[ printf_str::c#1 ]
[ utoa::radix#0 ]
[ printf_number_buffer::buffer_sign#0 ]
[ memcpy::src_end#0 ]
[ memset::end#0 ]
[ utoa::$4 ]
[ utoa::$11 ]
[ utoa::buffer#3 ]
[ utoa::$10 ]
[ utoa::digit_value#0 ]
[ utoa_append::buffer#0 ]
[ utoa_append::sub#0 ]
[ utoa_append::return#0 ]
[ printf_buffer ]
Allocated zp[1]:2 [ conio_c64_init::line#2 conio_c64_init::line#0 ]
Allocated zp[1]:3 [ gotoxy::y#4 gotoxy::y#2 ]
Allocated zp[1]:4 [ clrscr::l#2 clrscr::l#1 ]
Allocated zp[2]:5 [ clrscr::line_text#5 clrscr::line_text#1 ]
Allocated zp[2]:7 [ clrscr::line_cols#5 clrscr::line_cols#1 ]
Allocated zp[1]:9 [ clrscr::c#2 clrscr::c#1 ]
Allocated zp[2]:10 [ memchr::n#3 ]
Allocated zp[1]:12 [ memchr::c#4 ]
Allocated zp[2]:13 [ memchr::i#2 memchr::i#1 ]
Allocated zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 ]
Allocated zp[2]:17 [ memchr::return#2 memchr::return#8 ]
Allocated zp[1]:19 [ textcolor::color#4 ]
Allocated zp[2]:20 [ printf_str::putc#16 ]
Allocated zp[2]:22 [ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 ]
Allocated zp[2]:24 [ printf_string::str#10 ]
Allocated zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 ]
Allocated zp[1]:28 [ printf_uint::format_radix#4 ]
Allocated zp[2]:29 [ memcpy::source#2 ]
Allocated zp[2]:31 [ memcpy::destination#2 ]
Allocated zp[2]:33 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
Allocated zp[2]:35 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
Allocated zp[2]:37 [ memset::str#3 ]
Allocated zp[1]:39 [ memset::c#4 memset::c#1 ]
Allocated zp[2]:40 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated zp[1]:42 [ utoa::max_digits#7 ]
Allocated zp[2]:43 [ utoa::digit_values#8 ]
Allocated zp[1]:45 [ utoa::digit#2 utoa::digit#1 ]
Allocated zp[2]:46 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ]
Allocated zp[1]:48 [ utoa::started#2 utoa::started#4 ]
Allocated zp[2]:49 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ]
Allocated zp[2]:51 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ]
Allocated zp[1]:53 [ utoa_append::digit#2 utoa_append::digit#1 ]
Allocated zp[1]:54 [ conio_cursor_x ]
Allocated zp[1]:55 [ conio_cursor_y ]
Allocated zp[2]:56 [ conio_line_text ]
Allocated zp[2]:58 [ conio_line_color ]
Allocated zp[1]:60 [ conio_textcolor ]
Allocated zp[1]:61 [ cputc::c#0 ]
Allocated zp[2]:62 [ memchr::return#3 ]
Allocated zp[2]:64 [ main::ptr#0 ]
Allocated zp[2]:66 [ assert_uint::actual#0 ]
Allocated zp[2]:68 [ memchr::return#4 ]
Allocated zp[2]:70 [ main::ptr2#0 ]
Allocated zp[2]:72 [ assert_ptr::actual#0 ]
Allocated zp[2]:74 [ gotoxy::$7 ]
Allocated zp[2]:76 [ gotoxy::$8 ]
Allocated zp[2]:78 [ gotoxy::$9 ]
Allocated zp[2]:80 [ gotoxy::line_offset#0 ]
Allocated zp[2]:82 [ gotoxy::$5 ]
Allocated zp[2]:84 [ gotoxy::$6 ]
Allocated zp[1]:86 [ printf_str::c#1 ]
Allocated zp[1]:87 [ utoa::radix#0 ]
Allocated zp[1]:88 [ printf_number_buffer::buffer_sign#0 ]
Allocated zp[2]:89 [ memcpy::src_end#0 ]
Allocated zp[2]:91 [ memset::end#0 ]
Allocated zp[1]:93 [ utoa::$4 ]
Allocated zp[1]:94 [ utoa::$11 ]
Allocated zp[2]:95 [ utoa::buffer#3 ]
Allocated zp[1]:97 [ utoa::$10 ]
Allocated zp[2]:98 [ utoa::digit_value#0 ]
Allocated zp[2]:100 [ utoa_append::buffer#0 ]
Allocated zp[2]:102 [ utoa_append::sub#0 ]
Allocated zp[2]:104 [ utoa_append::return#0 ]
Allocated mem[12] [ printf_buffer ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] conio_cursor_x = 0 [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [2] conio_cursor_y = 0 [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [3] conio_line_text = DEFAULT_SCREEN [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [4] conio_line_color = COLORRAM [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [5] conio_textcolor = LIGHT_BLUE [ conio_textcolor printf_buffer ] (  [ conio_textcolor printf_buffer ] { }  ) always clobbers reg byte a 
Statement [17] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte x 
Statement [19] conio_line_text[conio_cursor_x] = cputc::c#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte y 
Statement [20] conio_line_color[conio_cursor_x] = conio_textcolor [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte y 
Statement [22] if(conio_cursor_x!=$28) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [32] memchr::return#3 = memchr::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#3 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#3 printf_buffer ] { { memchr::return#2 = memchr::return#3 } }  ) always clobbers reg byte a 
Statement [33] main::ptr#0 = (char *)memchr::return#3 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [34] assert_uint::actual#0 = main::ptr#0 - main::str [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [38] memchr::return#4 = memchr::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#4 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#4 printf_buffer ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a 
Statement [39] main::ptr2#0 = (char *)memchr::return#4 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr2#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr2#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [40] assert_ptr::actual#0 = (void *)main::ptr2#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [46] conio_cursor_x = gotoxy::x#2 [ gotoxy::y#4 ] ( gotoxy:15 [ gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:3 [ gotoxy::y#4 gotoxy::y#2 ]
Statement [48] gotoxy::$7 = (unsigned int)gotoxy::y#4 [ gotoxy::$7 ] ( gotoxy:15 [ gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [49] gotoxy::$8 = gotoxy::$7 << 2 [ gotoxy::$7 gotoxy::$8 ] ( gotoxy:15 [ gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [50] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 [ gotoxy::$9 ] ( gotoxy:15 [ gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [51] gotoxy::line_offset#0 = gotoxy::$9 << 3 [ gotoxy::line_offset#0 ] ( gotoxy:15 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [52] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 [ gotoxy::line_offset#0 gotoxy::$5 ] ( gotoxy:15 [ gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [53] conio_line_text = gotoxy::$5 [ gotoxy::line_offset#0 ] ( gotoxy:15 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [54] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 [ gotoxy::$6 ] ( gotoxy:15 [ gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [55] conio_line_color = gotoxy::$6 [ ] ( gotoxy:15 [ ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [57] conio_line_text = conio_line_text + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [58] conio_line_color = conio_line_color + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [59] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [66] conio_cursor_x = 0 [ conio_cursor_x ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x ] { }  ) always clobbers reg byte a 
Statement [67] conio_cursor_y = 0 [ conio_cursor_x conio_cursor_y ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x conio_cursor_y ] { }  ) always clobbers reg byte a 
Statement [68] conio_line_text = DEFAULT_SCREEN [ conio_cursor_x conio_cursor_y conio_line_text ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text ] { }  ) always clobbers reg byte a 
Statement [69] conio_line_color = COLORRAM [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { }  ) always clobbers reg byte a 
Statement [73] clrscr::line_text#1 = clrscr::line_text#5 + $28 [ conio_textcolor clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ clrscr::l#2 clrscr::l#1 ]
Statement [74] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 [ conio_textcolor clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] { }  ) always clobbers reg byte a 
Statement [76] clrscr::line_text#5[clrscr::c#2] = ' ' [ conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:9 [ clrscr::c#2 clrscr::c#1 ]
Statement [77] clrscr::line_cols#5[clrscr::c#2] = conio_textcolor [ conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { }  ) always clobbers reg byte a 
Statement [81] if(memchr::i#2<memchr::n#3) goto memchr::@2 [ memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] ( main:8::memchr:31 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#3 } }  main:8::memchr:37 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:12 [ memchr::c#4 ]
Statement [84] if(*memchr::ptr#2!=memchr::c#4) goto memchr::@3 [ memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] ( main:8::memchr:31 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#3 } }  main:8::memchr:37 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:12 [ memchr::c#4 ]
Statement [85] memchr::return#8 = (void *)memchr::ptr#2 [ memchr::return#8 ] ( main:8::memchr:31 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::return#8 ] { { memchr::return#2 = memchr::return#3 } }  main:8::memchr:37 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::return#8 ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a 
Statement [88] if(assert_uint::expect#0!=assert_uint::actual#0) goto assert_uint::@1 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] ( main:8::assert_uint:35 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [106] printf_uint::uvalue#1 = assert_uint::actual#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#1 printf_buffer ] ( main:8::assert_uint:35 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#1 printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  ) always clobbers reg byte a 
Statement [114] if(assert_ptr::expect#0!=assert_ptr::actual#0) goto assert_ptr::@1 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] ( main:8::assert_ptr:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [132] printf_uint::uvalue#3 = (unsigned int)assert_ptr::actual#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#3 printf_buffer ] ( main:8::assert_ptr:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#3 printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [140] if(conio_cursor_y!=$19) goto cscroll::@return [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [149] conio_line_text = conio_line_text - $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [150] conio_line_color = conio_line_color - $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [158] printf_str::c#1 = *printf_str::s#15 [ printf_str::s#15 printf_str::c#1 ] ( main:8::assert_uint:35::printf_str:92 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:96 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:101 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:105 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:109 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:118 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:122 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:131 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:135 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:139 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_string:94::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_string:111::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:120::printf_str:167 [ printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:137::printf_str:167 [ printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::printf_str:231 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::printf_str:231 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte y 
Statement [163] callexecute *printf_str::putc#16  [ printf_str::s#0 ] ( main:8::assert_uint:35::printf_str:92 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:96 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:101 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:105 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:109 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:118 [ printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:122 [ printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:131 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:135 [ printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:139 [ printf_str::s#0 ] { }  main:8::assert_uint:35::printf_string:94::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_string:111::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:120::printf_str:167 [ printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:137::printf_str:167 [ printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::printf_str:231 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::printf_str:231 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte x reg byte y 
Statement sideeffect stackpullbytes(1) always clobbers reg byte a 
Statement [166] printf_str::s#2 = printf_string::str#10 [ printf_str::s#2 ] ( main:8::assert_uint:35::printf_string:94 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_string:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:120 [ printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:137 [ printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  ) always clobbers reg byte a 
Statement [170] *((char *)&printf_buffer) = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] ( main:8::assert_uint:35::printf_uint:103 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:28 [ printf_uint::format_radix#4 ]
Statement [171] utoa::value#1 = printf_uint::uvalue#4 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] ( main:8::assert_uint:35::printf_uint:103 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [178] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [179] memcpy::src#4 = (char *)memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [180] memcpy::dst#4 = (char *)memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [182] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [184] *memcpy::dst#2 = *memcpy::src#2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte y 
Statement [188] memset::end#0 = (char *)memset::str#3 + $28 [ memset::str#3 memset::c#4 memset::end#0 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:39 [ memset::c#4 memset::c#1 ]
Statement [189] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a 
Statement [191] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a 
Statement [193] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:39 [ memset::c#4 memset::c#1 ]
Statement [199] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS) = 'e' [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [200] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1) = 'r' [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [201] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2) = 'r' [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [202] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3) = 0 [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [209] *utoa::buffer#11 = DIGITS[utoa::$11] [ printf_buffer utoa::buffer#11 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a reg byte y 
Statement [210] utoa::buffer#3 = ++ utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [211] *utoa::buffer#3 = 0 [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a reg byte y 
Statement [212] utoa::$10 = utoa::digit#2 << 1 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:42 [ utoa::max_digits#7 ]
Removing always clobbered register reg byte a as potential for zp[1]:45 [ utoa::digit#2 utoa::digit#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:48 [ utoa::started#2 utoa::started#4 ]
Statement [213] utoa::digit_value#0 = utoa::digit_values#8[utoa::$10] [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:42 [ utoa::max_digits#7 ]
Removing always clobbered register reg byte y as potential for zp[1]:45 [ utoa::digit#2 utoa::digit#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:48 [ utoa::started#2 utoa::started#4 ]
Statement [215] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@10 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [218] utoa_append::buffer#0 = utoa::buffer#11 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [219] utoa_append::value#0 = utoa::value#2 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [220] utoa_append::sub#0 = utoa::digit_value#0 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [222] utoa_append::return#0 = utoa_append::value#2 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [223] utoa::value#0 = utoa_append::return#0 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement sideeffect stackpullbytes(1) always clobbers reg byte a 
Statement [235] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173::utoa_append:221 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173::utoa_append:221 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:53 [ utoa_append::digit#2 utoa_append::digit#1 ]
Statement [236] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] [ utoa_append::value#2 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173::utoa_append:221 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173::utoa_append:221 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a reg byte y 
Statement [239] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173::utoa_append:221 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173::utoa_append:221 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [1] conio_cursor_x = 0 [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [2] conio_cursor_y = 0 [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [3] conio_line_text = DEFAULT_SCREEN [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [4] conio_line_color = COLORRAM [ printf_buffer ] (  [ printf_buffer ] { }  ) always clobbers reg byte a 
Statement [5] conio_textcolor = LIGHT_BLUE [ conio_textcolor printf_buffer ] (  [ conio_textcolor printf_buffer ] { }  ) always clobbers reg byte a 
Statement [17] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor cputc::c#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte x 
Statement [19] conio_line_text[conio_cursor_x] = cputc::c#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte y 
Statement [20] conio_line_color[conio_cursor_x] = conio_textcolor [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte y 
Statement [22] if(conio_cursor_x!=$28) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] (  [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [32] memchr::return#3 = memchr::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#3 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#3 printf_buffer ] { { memchr::return#2 = memchr::return#3 } }  ) always clobbers reg byte a 
Statement [33] main::ptr#0 = (char *)memchr::return#3 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [34] assert_uint::actual#0 = main::ptr#0 - main::str [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [38] memchr::return#4 = memchr::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#4 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memchr::return#4 printf_buffer ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a 
Statement [39] main::ptr2#0 = (char *)memchr::return#4 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr2#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::ptr2#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [40] assert_ptr::actual#0 = (void *)main::ptr2#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] ( main:8 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [46] conio_cursor_x = gotoxy::x#2 [ gotoxy::y#4 ] ( gotoxy:15 [ gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [48] gotoxy::$7 = (unsigned int)gotoxy::y#4 [ gotoxy::$7 ] ( gotoxy:15 [ gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [49] gotoxy::$8 = gotoxy::$7 << 2 [ gotoxy::$7 gotoxy::$8 ] ( gotoxy:15 [ gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [50] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 [ gotoxy::$9 ] ( gotoxy:15 [ gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [51] gotoxy::line_offset#0 = gotoxy::$9 << 3 [ gotoxy::line_offset#0 ] ( gotoxy:15 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [52] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 [ gotoxy::line_offset#0 gotoxy::$5 ] ( gotoxy:15 [ gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::line_offset#0 gotoxy::$5 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [53] conio_line_text = gotoxy::$5 [ gotoxy::line_offset#0 ] ( gotoxy:15 [ gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::line_offset#0 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [54] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 [ gotoxy::$6 ] ( gotoxy:15 [ gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer gotoxy::$6 ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [55] conio_line_color = gotoxy::$6 [ ] ( gotoxy:15 [ ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  conio_c64_init:6::gotoxy:15 [ conio_textcolor printf_buffer ] { { gotoxy::y#2 = conio_c64_init::line#2 } }  ) always clobbers reg byte a 
Statement [57] conio_line_text = conio_line_text + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [58] conio_line_color = conio_line_color + $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27 [ assert_uint::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27 [ assert_ptr::actual#0 printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [59] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [66] conio_cursor_x = 0 [ conio_cursor_x ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x ] { }  ) always clobbers reg byte a 
Statement [67] conio_cursor_y = 0 [ conio_cursor_x conio_cursor_y ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x conio_cursor_y ] { }  ) always clobbers reg byte a 
Statement [68] conio_line_text = DEFAULT_SCREEN [ conio_cursor_x conio_cursor_y conio_line_text ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text ] { }  ) always clobbers reg byte a 
Statement [69] conio_line_color = COLORRAM [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( main:8::clrscr:29 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { }  ) always clobbers reg byte a 
Statement [73] clrscr::line_text#1 = clrscr::line_text#5 + $28 [ conio_textcolor clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] { }  ) always clobbers reg byte a 
Statement [74] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 [ conio_textcolor clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] { }  ) always clobbers reg byte a 
Statement [76] clrscr::line_text#5[clrscr::c#2] = ' ' [ conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { }  ) always clobbers reg byte a 
Statement [77] clrscr::line_cols#5[clrscr::c#2] = conio_textcolor [ conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:8::clrscr:29 [ printf_buffer conio_textcolor clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { }  ) always clobbers reg byte a 
Statement [81] if(memchr::i#2<memchr::n#3) goto memchr::@2 [ memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] ( main:8::memchr:31 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#3 } }  main:8::memchr:37 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a 
Statement [84] if(*memchr::ptr#2!=memchr::c#4) goto memchr::@3 [ memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] ( main:8::memchr:31 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#3 } }  main:8::memchr:37 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::n#3 memchr::c#4 memchr::i#2 memchr::ptr#2 ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a reg byte y 
Statement [85] memchr::return#8 = (void *)memchr::ptr#2 [ memchr::return#8 ] ( main:8::memchr:31 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::return#8 ] { { memchr::return#2 = memchr::return#3 } }  main:8::memchr:37 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer memchr::return#8 ] { { memchr::return#2 = memchr::return#4 } }  ) always clobbers reg byte a 
Statement [88] if(assert_uint::expect#0!=assert_uint::actual#0) goto assert_uint::@1 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] ( main:8::assert_uint:35 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_uint::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [106] printf_uint::uvalue#1 = assert_uint::actual#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#1 printf_buffer ] ( main:8::assert_uint:35 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#1 printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  ) always clobbers reg byte a 
Statement [114] if(assert_ptr::expect#0!=assert_ptr::actual#0) goto assert_ptr::@1 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] ( main:8::assert_ptr:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color assert_ptr::actual#0 printf_buffer ] { }  ) always clobbers reg byte a 
Statement [132] printf_uint::uvalue#3 = (unsigned int)assert_ptr::actual#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#3 printf_buffer ] ( main:8::assert_ptr:41 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#3 printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [140] if(conio_cursor_y!=$19) goto cscroll::@return [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [149] conio_line_text = conio_line_text - $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [150] conio_line_color = conio_line_color - $28 [ conio_cursor_y conio_line_text conio_line_color conio_textcolor ] ( cputln:24::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [158] printf_str::c#1 = *printf_str::s#15 [ printf_str::s#15 printf_str::c#1 ] ( main:8::assert_uint:35::printf_str:92 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:96 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:101 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:105 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:109 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_str:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:118 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:122 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:131 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:135 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_str:139 [ printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_string:94::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_string:111::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:120::printf_str:167 [ printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:137::printf_str:167 [ printf_str::s#15 printf_str::c#1 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::printf_str:231 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::printf_str:231 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#15 printf_str::c#1 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte y 
Statement [163] callexecute *printf_str::putc#16  [ printf_str::s#0 ] ( main:8::assert_uint:35::printf_str:92 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:96 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:101 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:105 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_uint::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:109 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_uint:35::printf_str:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:118 [ printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:122 [ printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:127 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:131 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor assert_ptr::actual#0 printf_buffer printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:135 [ printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_str:139 [ printf_str::s#0 ] { }  main:8::assert_uint:35::printf_string:94::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_string:111::printf_str:167 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:120::printf_str:167 [ printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:137::printf_str:167 [ printf_str::s#0 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::printf_str:231 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::printf_str:231 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::printf_str:231 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_str::s#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte x reg byte y 
Statement sideeffect stackpullbytes(1) always clobbers reg byte a 
Statement [166] printf_str::s#2 = printf_string::str#10 [ printf_str::s#2 ] ( main:8::assert_uint:35::printf_string:94 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_uint:35::printf_string:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:120 [ printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  main:8::assert_ptr:41::printf_string:137 [ printf_str::s#2 ] { { printf_str::s#16 = printf_str::s#2 printf_string::str#10 } }  ) always clobbers reg byte a 
Statement [170] *((char *)&printf_buffer) = 0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] ( main:8::assert_uint:35::printf_uint:103 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::uvalue#4 printf_uint::format_radix#4 printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [171] utoa::value#1 = printf_uint::uvalue#4 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] ( main:8::assert_uint:35::printf_uint:103 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_uint::format_radix#4 printf_buffer utoa::value#1 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [178] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [179] memcpy::src#4 = (char *)memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [180] memcpy::dst#4 = (char *)memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [182] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a 
Statement [184] *memcpy::dst#2 = *memcpy::src#2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:24::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:142 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:142 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memcpy:144 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memcpy:144 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  ) always clobbers reg byte a reg byte y 
Statement [188] memset::end#0 = (char *)memset::str#3 + $28 [ memset::str#3 memset::c#4 memset::end#0 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::str#3 memset::c#4 memset::end#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a 
Statement [189] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#4 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a 
Statement [191] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a 
Statement [193] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:24::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:27::cscroll:61::memset:146 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:146 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } }  cputln:24::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:24::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  cputln:27::cscroll:61::memset:148 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:103::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_uint::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_uint:35::printf_uint:107::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 } { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:129::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ assert_ptr::actual#0 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { memset::c#1 = memset::c#4 conio_textcolor } }  main:8::assert_ptr:41::printf_uint:133::printf_number_buffer:175::cputc:228::cputln:27::cscroll:61::memset:148 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor memset::c#4 memset::end#0 memset::dst#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 } { memset::c#1 = memset::c#4 conio_textcolor } }  ) always clobbers reg byte a reg byte y 
Statement [199] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS) = 'e' [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [200] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1) = 'r' [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [201] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2) = 'r' [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [202] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3) = 0 [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [209] *utoa::buffer#11 = DIGITS[utoa::$11] [ printf_buffer utoa::buffer#11 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#11 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a reg byte y 
Statement [210] utoa::buffer#3 = ++ utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::buffer#3 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [211] *utoa::buffer#3 = 0 [ printf_buffer ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a reg byte y 
Statement [212] utoa::$10 = utoa::digit#2 << 1 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [213] utoa::digit_value#0 = utoa::digit_values#8[utoa::$10] [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a reg byte y 
Statement [215] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@10 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement [218] utoa_append::buffer#0 = utoa::buffer#11 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [219] utoa_append::value#0 = utoa::value#2 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 utoa_append::value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [220] utoa_append::sub#0 = utoa::digit_value#0 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::value#0 utoa_append::sub#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [222] utoa_append::return#0 = utoa_append::value#2 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::return#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [223] utoa::value#0 = utoa_append::return#0 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_uint:35::printf_uint:107::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } }  ) always clobbers reg byte a 
Statement sideeffect stackpullbytes(1) always clobbers reg byte a 
Statement [235] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173::utoa_append:221 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173::utoa_append:221 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [236] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] [ utoa_append::value#2 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173::utoa_append:221 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173::utoa_append:221 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a reg byte y 
Statement [239] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:8::assert_uint:35::printf_uint:103::utoa:173::utoa_append:221 [ assert_uint::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_uint:35::printf_uint:107::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { printf_uint::uvalue#1 = printf_uint::uvalue#4 assert_uint::actual#0 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:129::utoa:173::utoa_append:221 [ assert_ptr::actual#0 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { utoa::value#1 = printf_uint::uvalue#4 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  main:8::assert_ptr:41::printf_uint:133::utoa:173::utoa_append:221 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { printf_uint::uvalue#3 = printf_uint::uvalue#4 utoa::value#1 } { utoa::radix#0 = printf_uint::format_radix#4 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } }  ) always clobbers reg byte a 
Potential registers zp[1]:2 [ conio_c64_init::line#2 conio_c64_init::line#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:3 [ gotoxy::y#4 gotoxy::y#2 ] : zp[1]:3 , reg byte x , reg byte y , 
Potential registers zp[1]:4 [ clrscr::l#2 clrscr::l#1 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[2]:5 [ clrscr::line_text#5 clrscr::line_text#1 ] : zp[2]:5 , 
Potential registers zp[2]:7 [ clrscr::line_cols#5 clrscr::line_cols#1 ] : zp[2]:7 , 
Potential registers zp[1]:9 [ clrscr::c#2 clrscr::c#1 ] : zp[1]:9 , reg byte x , reg byte y , 
Potential registers zp[2]:10 [ memchr::n#3 ] : zp[2]:10 , 
Potential registers zp[1]:12 [ memchr::c#4 ] : zp[1]:12 , reg byte x , 
Potential registers zp[2]:13 [ memchr::i#2 memchr::i#1 ] : zp[2]:13 , 
Potential registers zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 ] : zp[2]:15 , 
Potential registers zp[2]:17 [ memchr::return#2 memchr::return#8 ] : zp[2]:17 , 
Potential registers zp[1]:19 [ textcolor::color#4 ] : zp[1]:19 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:20 [ printf_str::putc#16 ] : zp[2]:20 , 
Potential registers zp[2]:22 [ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 ] : zp[2]:22 , 
Potential registers zp[2]:24 [ printf_string::str#10 ] : zp[2]:24 , 
Potential registers zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 ] : zp[2]:26 , 
Potential registers zp[1]:28 [ printf_uint::format_radix#4 ] : zp[1]:28 , reg byte x , reg byte y , 
Potential registers zp[2]:29 [ memcpy::source#2 ] : zp[2]:29 , 
Potential registers zp[2]:31 [ memcpy::destination#2 ] : zp[2]:31 , 
Potential registers zp[2]:33 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] : zp[2]:33 , 
Potential registers zp[2]:35 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] : zp[2]:35 , 
Potential registers zp[2]:37 [ memset::str#3 ] : zp[2]:37 , 
Potential registers zp[1]:39 [ memset::c#4 memset::c#1 ] : zp[1]:39 , reg byte x , 
Potential registers zp[2]:40 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:40 , 
Potential registers zp[1]:42 [ utoa::max_digits#7 ] : zp[1]:42 , reg byte x , 
Potential registers zp[2]:43 [ utoa::digit_values#8 ] : zp[2]:43 , 
Potential registers zp[1]:45 [ utoa::digit#2 utoa::digit#1 ] : zp[1]:45 , reg byte x , 
Potential registers zp[2]:46 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] : zp[2]:46 , 
Potential registers zp[1]:48 [ utoa::started#2 utoa::started#4 ] : zp[1]:48 , reg byte x , 
Potential registers zp[2]:49 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] : zp[2]:49 , 
Potential registers zp[2]:51 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] : zp[2]:51 , 
Potential registers zp[1]:53 [ utoa_append::digit#2 utoa_append::digit#1 ] : zp[1]:53 , reg byte x , reg byte y , 
Potential registers zp[1]:54 [ conio_cursor_x ] : zp[1]:54 , 
Potential registers zp[1]:55 [ conio_cursor_y ] : zp[1]:55 , 
Potential registers zp[2]:56 [ conio_line_text ] : zp[2]:56 , 
Potential registers zp[2]:58 [ conio_line_color ] : zp[2]:58 , 
Potential registers zp[1]:60 [ conio_textcolor ] : zp[1]:60 , 
Potential registers zp[1]:61 [ cputc::c#0 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:62 [ memchr::return#3 ] : zp[2]:62 , 
Potential registers zp[2]:64 [ main::ptr#0 ] : zp[2]:64 , 
Potential registers zp[2]:66 [ assert_uint::actual#0 ] : zp[2]:66 , 
Potential registers zp[2]:68 [ memchr::return#4 ] : zp[2]:68 , 
Potential registers zp[2]:70 [ main::ptr2#0 ] : zp[2]:70 , 
Potential registers zp[2]:72 [ assert_ptr::actual#0 ] : zp[2]:72 , 
Potential registers zp[2]:74 [ gotoxy::$7 ] : zp[2]:74 , 
Potential registers zp[2]:76 [ gotoxy::$8 ] : zp[2]:76 , 
Potential registers zp[2]:78 [ gotoxy::$9 ] : zp[2]:78 , 
Potential registers zp[2]:80 [ gotoxy::line_offset#0 ] : zp[2]:80 , 
Potential registers zp[2]:82 [ gotoxy::$5 ] : zp[2]:82 , 
Potential registers zp[2]:84 [ gotoxy::$6 ] : zp[2]:84 , 
Potential registers zp[1]:86 [ printf_str::c#1 ] : zp[1]:86 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:87 [ utoa::radix#0 ] : zp[1]:87 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:88 [ printf_number_buffer::buffer_sign#0 ] : zp[1]:88 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:89 [ memcpy::src_end#0 ] : zp[2]:89 , 
Potential registers zp[2]:91 [ memset::end#0 ] : zp[2]:91 , 
Potential registers zp[1]:93 [ utoa::$4 ] : zp[1]:93 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:94 [ utoa::$11 ] : zp[1]:94 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:95 [ utoa::buffer#3 ] : zp[2]:95 , 
Potential registers zp[1]:97 [ utoa::$10 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:98 [ utoa::digit_value#0 ] : zp[2]:98 , 
Potential registers zp[2]:100 [ utoa_append::buffer#0 ] : zp[2]:100 , 
Potential registers zp[2]:102 [ utoa_append::sub#0 ] : zp[2]:102 , 
Potential registers zp[2]:104 [ utoa_append::return#0 ] : zp[2]:104 , 
Potential registers mem[12] [ printf_buffer ] : mem[12] , 

REGISTER UPLIFT SCOPES
Uplift Scope [memcpy] 3,125,000,004.25: zp[2]:33 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 2,233,333,337.67: zp[2]:35 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 137,500,000.25: zp[2]:89 [ memcpy::src_end#0 ] 0: zp[2]:29 [ memcpy::source#2 ] 0: zp[2]:31 [ memcpy::destination#2 ] 
Uplift Scope [memset] 3,566,666,672.33: zp[2]:40 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183,333,333.67: zp[2]:91 [ memset::end#0 ] 164,285,716.57: zp[1]:39 [ memset::c#4 memset::c#1 ] 0: zp[2]:37 [ memset::str#3 ] 
Uplift Scope [utoa_append] 250,550,003.5: zp[2]:51 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 200,500,002.5: zp[1]:53 [ utoa_append::digit#2 utoa_append::digit#1 ] 33,350,000.5: zp[2]:102 [ utoa_append::sub#0 ] 200,002: zp[2]:104 [ utoa_append::return#0 ] 137,500.25: zp[2]:100 [ utoa_append::buffer#0 ] 
Uplift Scope [printf_str] 2,653,007: zp[2]:22 [ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 ] 1,000,001: zp[1]:86 [ printf_str::c#1 ] 0: zp[2]:20 [ printf_str::putc#16 ] 
Uplift Scope [utoa] 378,003.9: zp[2]:49 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 302,824.84: zp[2]:46 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] 226,668.93: zp[1]:45 [ utoa::digit#2 utoa::digit#1 ] 200,002: zp[1]:93 [ utoa::$4 ] 200,002: zp[1]:97 [ utoa::$10 ] 142,858.57: zp[1]:48 [ utoa::started#2 utoa::started#4 ] 60,000.6: zp[2]:98 [ utoa::digit_value#0 ] 20,002: zp[1]:94 [ utoa::$11 ] 20,002: zp[2]:95 [ utoa::buffer#3 ] 10,251.25: zp[1]:87 [ utoa::radix#0 ] 5,882.41: zp[1]:42 [ utoa::max_digits#7 ] 5,882.41: zp[2]:43 [ utoa::digit_values#8 ] 
Uplift Scope [] 326,532.74: zp[1]:55 [ conio_cursor_y ] 230,210.51: zp[2]:58 [ conio_line_color ] 227,837.21: zp[2]:56 [ conio_line_text ] 127,987.42: zp[1]:60 [ conio_textcolor ] 18,295.24: zp[1]:54 [ conio_cursor_x ] 0: mem[12] [ printf_buffer ] 
Uplift Scope [cputc] 150,001.5: zp[1]:61 [ cputc::c#0 ] 
Uplift Scope [clrscr] 32,503.25: zp[1]:9 [ clrscr::c#2 clrscr::c#1 ] 2,501.38: zp[2]:7 [ clrscr::line_cols#5 clrscr::line_cols#1 ] 2,382.05: zp[2]:5 [ clrscr::line_text#5 clrscr::line_text#1 ] 2,335.67: zp[1]:4 [ clrscr::l#2 clrscr::l#1 ] 
Uplift Scope [printf_number_buffer] 7,001: zp[1]:88 [ printf_number_buffer::buffer_sign#0 ] 
Uplift Scope [memchr] 2,752.75: zp[2]:13 [ memchr::i#2 memchr::i#1 ] 2,002: zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 ] 232.75: zp[2]:17 [ memchr::return#2 memchr::return#8 ] 166.83: zp[2]:10 [ memchr::n#3 ] 166.83: zp[1]:12 [ memchr::c#4 ] 11: zp[2]:62 [ memchr::return#3 ] 11: zp[2]:68 [ memchr::return#4 ] 
Uplift Scope [printf_uint] 1,005.5: zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 ] 333.67: zp[1]:28 [ printf_uint::format_radix#4 ] 
Uplift Scope [gotoxy] 202: zp[2]:76 [ gotoxy::$8 ] 202: zp[2]:78 [ gotoxy::$9 ] 202: zp[2]:82 [ gotoxy::$5 ] 202: zp[2]:84 [ gotoxy::$6 ] 151.5: zp[2]:74 [ gotoxy::$7 ] 138.33: zp[1]:3 [ gotoxy::y#4 gotoxy::y#2 ] 101: zp[2]:80 [ gotoxy::line_offset#0 ] 
Uplift Scope [textcolor] 1,001: zp[1]:19 [ textcolor::color#4 ] 
Uplift Scope [printf_string] 1,001: zp[2]:24 [ printf_string::str#10 ] 
Uplift Scope [conio_c64_init] 33: zp[1]:2 [ conio_c64_init::line#2 conio_c64_init::line#0 ] 
Uplift Scope [main] 22: zp[2]:64 [ main::ptr#0 ] 11: zp[2]:70 [ main::ptr2#0 ] 
Uplift Scope [assert_uint] 21.3: zp[2]:66 [ assert_uint::actual#0 ] 
Uplift Scope [assert_ptr] 11.2: zp[2]:72 [ assert_ptr::actual#0 ] 
Uplift Scope [RADIX] 
Uplift Scope [cputln] 
Uplift Scope [MOS6526_CIA] 
Uplift Scope [MOS6569_VICII] 
Uplift Scope [MOS6581_SID] 
Uplift Scope [cscroll] 
Uplift Scope [printf_format_number] 
Uplift Scope [printf_buffer_number] 
Uplift Scope [printf_format_string] 
Uplift Scope [__start] 

Uplifting [memcpy] best 18320 combination zp[2]:33 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:35 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:89 [ memcpy::src_end#0 ] zp[2]:29 [ memcpy::source#2 ] zp[2]:31 [ memcpy::destination#2 ] 
Uplifting [memset] best 18304 combination zp[2]:40 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:91 [ memset::end#0 ] reg byte x [ memset::c#4 memset::c#1 ] zp[2]:37 [ memset::str#3 ] 
Uplifting [utoa_append] best 17701 combination zp[2]:51 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:102 [ utoa_append::sub#0 ] zp[2]:104 [ utoa_append::return#0 ] zp[2]:100 [ utoa_append::buffer#0 ] 
Uplifting [printf_str] best 17631 combination zp[2]:22 [ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 ] reg byte a [ printf_str::c#1 ] zp[2]:20 [ printf_str::putc#16 ] 
Uplifting [utoa] best 17506 combination zp[2]:49 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:46 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:45 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$4 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:98 [ utoa::digit_value#0 ] zp[1]:94 [ utoa::$11 ] zp[2]:95 [ utoa::buffer#3 ] zp[1]:87 [ utoa::radix#0 ] zp[1]:42 [ utoa::max_digits#7 ] zp[2]:43 [ utoa::digit_values#8 ] 
Limited combination testing to 100 combinations of 2048 possible.
Uplifting [] best 17506 combination zp[1]:55 [ conio_cursor_y ] zp[2]:58 [ conio_line_color ] zp[2]:56 [ conio_line_text ] zp[1]:60 [ conio_textcolor ] zp[1]:54 [ conio_cursor_x ] mem[12] [ printf_buffer ] 
Uplifting [cputc] best 17497 combination reg byte a [ cputc::c#0 ] 
Uplifting [clrscr] best 15907 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:7 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:5 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ] 
Uplifting [printf_number_buffer] best 15900 combination reg byte a [ printf_number_buffer::buffer_sign#0 ] 
Uplifting [memchr] best 15900 combination zp[2]:13 [ memchr::i#2 memchr::i#1 ] zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 ] zp[2]:17 [ memchr::return#2 memchr::return#8 ] zp[2]:10 [ memchr::n#3 ] zp[1]:12 [ memchr::c#4 ] zp[2]:62 [ memchr::return#3 ] zp[2]:68 [ memchr::return#4 ] 
Uplifting [printf_uint] best 15885 combination zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 ] reg byte x [ printf_uint::format_radix#4 ] 
Uplifting [gotoxy] best 15872 combination zp[2]:76 [ gotoxy::$8 ] zp[2]:78 [ gotoxy::$9 ] zp[2]:82 [ gotoxy::$5 ] zp[2]:84 [ gotoxy::$6 ] zp[2]:74 [ gotoxy::$7 ] reg byte x [ gotoxy::y#4 gotoxy::y#2 ] zp[2]:80 [ gotoxy::line_offset#0 ] 
Uplifting [textcolor] best 15857 combination reg byte a [ textcolor::color#4 ] 
Uplifting [printf_string] best 15857 combination zp[2]:24 [ printf_string::str#10 ] 
Uplifting [conio_c64_init] best 15845 combination reg byte x [ conio_c64_init::line#2 conio_c64_init::line#0 ] 
Uplifting [main] best 15845 combination zp[2]:64 [ main::ptr#0 ] zp[2]:70 [ main::ptr2#0 ] 
Uplifting [assert_uint] best 15845 combination zp[2]:66 [ assert_uint::actual#0 ] 
Uplifting [assert_ptr] best 15845 combination zp[2]:72 [ assert_ptr::actual#0 ] 
Uplifting [RADIX] best 15845 combination 
Uplifting [cputln] best 15845 combination 
Uplifting [MOS6526_CIA] best 15845 combination 
Uplifting [MOS6569_VICII] best 15845 combination 
Uplifting [MOS6581_SID] best 15845 combination 
Uplifting [cscroll] best 15845 combination 
Uplifting [printf_format_number] best 15845 combination 
Uplifting [printf_buffer_number] best 15845 combination 
Uplifting [printf_format_string] best 15845 combination 
Uplifting [__start] best 15845 combination 
Attempting to uplift remaining variables inzp[1]:55 [ conio_cursor_y ]
Uplifting [] best 15845 combination zp[1]:55 [ conio_cursor_y ] 
Attempting to uplift remaining variables inzp[1]:45 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 15845 combination zp[1]:45 [ utoa::digit#2 utoa::digit#1 ] 
Attempting to uplift remaining variables inzp[1]:60 [ conio_textcolor ]
Uplifting [] best 15845 combination zp[1]:60 [ conio_textcolor ] 
Attempting to uplift remaining variables inzp[1]:94 [ utoa::$11 ]
Uplifting [utoa] best 15839 combination reg byte x [ utoa::$11 ] 
Attempting to uplift remaining variables inzp[1]:54 [ conio_cursor_x ]
Uplifting [] best 15839 combination zp[1]:54 [ conio_cursor_x ] 
Attempting to uplift remaining variables inzp[1]:87 [ utoa::radix#0 ]
Uplifting [utoa] best 15824 combination reg byte x [ utoa::radix#0 ] 
Attempting to uplift remaining variables inzp[1]:42 [ utoa::max_digits#7 ]
Uplifting [utoa] best 15824 combination zp[1]:42 [ utoa::max_digits#7 ] 
Attempting to uplift remaining variables inzp[1]:12 [ memchr::c#4 ]
Uplifting [memchr] best 15824 combination zp[1]:12 [ memchr::c#4 ] 
Coalescing zero page register [ zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 ] ] with [ zp[2]:17 [ memchr::return#2 memchr::return#8 ] ] - score: 1
Coalescing zero page register [ zp[2]:22 [ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 ] ] with [ zp[2]:24 [ printf_string::str#10 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 ] ] with [ zp[2]:46 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:29 [ memcpy::source#2 ] ] with [ zp[2]:33 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:31 [ memcpy::destination#2 ] ] with [ zp[2]:35 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:37 [ memset::str#3 ] ] with [ zp[2]:40 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:49 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] ] with [ zp[2]:95 [ utoa::buffer#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:49 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 ] ] with [ zp[2]:100 [ utoa_append::buffer#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:51 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] with [ zp[2]:104 [ utoa_append::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:62 [ memchr::return#3 ] ] with [ zp[2]:64 [ main::ptr#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:68 [ memchr::return#4 ] ] with [ zp[2]:70 [ main::ptr2#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:74 [ gotoxy::$7 ] ] with [ zp[2]:78 [ gotoxy::$9 ] ] - score: 1
Coalescing zero page register [ zp[2]:80 [ gotoxy::line_offset#0 ] ] with [ zp[2]:84 [ gotoxy::$6 ] ] - score: 1
Coalescing zero page register [ zp[2]:98 [ utoa::digit_value#0 ] ] with [ zp[2]:102 [ utoa_append::sub#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] ] with [ zp[2]:51 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 ] ] - score: 2
Coalescing zero page register [ zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 memchr::return#2 memchr::return#8 ] ] with [ zp[2]:62 [ memchr::return#3 main::ptr#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 memchr::return#2 memchr::return#8 memchr::return#3 main::ptr#0 ] ] with [ zp[2]:68 [ memchr::return#4 main::ptr2#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:74 [ gotoxy::$7 gotoxy::$9 ] ] with [ zp[2]:80 [ gotoxy::line_offset#0 gotoxy::$6 ] ] - score: 1
Coalescing zero page register [ zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 memchr::return#2 memchr::return#8 memchr::return#3 main::ptr#0 memchr::return#4 main::ptr2#0 ] ] with [ zp[2]:66 [ assert_uint::actual#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:15 [ memchr::ptr#2 memchr::ptr#1 memchr::return#2 memchr::return#8 memchr::return#3 main::ptr#0 memchr::return#4 main::ptr2#0 assert_uint::actual#0 ] ] with [ zp[2]:72 [ assert_ptr::actual#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:10 [ memchr::n#3 ] ] with [ zp[2]:5 [ clrscr::line_text#5 clrscr::line_text#1 ] ]
Coalescing zero page register [ zp[2]:13 [ memchr::i#2 memchr::i#1 ] ] with [ zp[2]:7 [ clrscr::line_cols#5 clrscr::line_cols#1 ] ]
Coalescing zero page register [ zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 ] ] with [ zp[2]:20 [ printf_str::putc#16 ] ]
Coalescing zero page register [ zp[2]:37 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:29 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ]
Coalescing zero page register [ zp[1]:42 [ utoa::max_digits#7 ] ] with [ zp[1]:12 [ memchr::c#4 ] ]
Coalescing zero page register [ zp[2]:43 [ utoa::digit_values#8 ] ] with [ zp[2]:22 [ printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 printf_string::str#10 ] ]
Coalescing zero page register [ zp[2]:91 [ memset::end#0 ] ] with [ zp[2]:31 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ]
Coalescing zero page register [ zp[2]:26 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 printf_str::putc#16 ] ] with [ zp[2]:10 [ memchr::n#3 clrscr::line_text#5 clrscr::line_text#1 ] ]
Coalescing zero page register [ zp[2]:43 [ utoa::digit_values#8 printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 printf_string::str#10 ] ] with [ zp[2]:13 [ memchr::i#2 memchr::i#1 clrscr::line_cols#5 clrscr::line_cols#1 ] ]
Allocated (was zp[2]:15) zp[2]:2 [ memchr::ptr#2 memchr::ptr#1 memchr::return#2 memchr::return#8 memchr::return#3 main::ptr#0 memchr::return#4 main::ptr2#0 assert_uint::actual#0 assert_ptr::actual#0 ]
Allocated (was zp[2]:26) zp[2]:4 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 printf_str::putc#16 memchr::n#3 clrscr::line_text#5 clrscr::line_text#1 ]
Allocated (was zp[2]:37) zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
Allocated (was zp[1]:42) zp[1]:8 [ utoa::max_digits#7 memchr::c#4 ]
Allocated (was zp[2]:43) zp[2]:9 [ utoa::digit_values#8 printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 printf_string::str#10 memchr::i#2 memchr::i#1 clrscr::line_cols#5 clrscr::line_cols#1 ]
Allocated (was zp[1]:45) zp[1]:11 [ utoa::digit#2 utoa::digit#1 ]
Allocated (was zp[2]:49) zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ]
Allocated (was zp[1]:54) zp[1]:14 [ conio_cursor_x ]
Allocated (was zp[1]:55) zp[1]:15 [ conio_cursor_y ]
Allocated (was zp[2]:56) zp[2]:16 [ conio_line_text ]
Allocated (was zp[2]:58) zp[2]:18 [ conio_line_color ]
Allocated (was zp[1]:60) zp[1]:20 [ conio_textcolor ]
Allocated (was zp[2]:74) zp[2]:21 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
Allocated (was zp[2]:76) zp[2]:23 [ gotoxy::$8 ]
Allocated (was zp[2]:82) zp[2]:25 [ gotoxy::$5 ]
Allocated (was zp[2]:89) zp[2]:27 [ memcpy::src_end#0 ]
Allocated (was zp[2]:91) zp[2]:29 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
Allocated (was zp[2]:98) zp[2]:31 [ utoa::digit_value#0 utoa_append::sub#0 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Test standard library <string.h> memchr()
  // Upstart
  // Commodore 64 PRG executable file
.file [name="stdlib-string-memchr-1.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(__start)
  // Global Constants & labels
  .const BINARY = 2
  .const OCTAL = 8
  .const DECIMAL = $a
  .const HEXADECIMAL = $10
  .const RED = 2
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
  .const STACK_BASE = $103
  .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c
  /// Color Ram
  .label COLORRAM = $d800
  /// Default address of screen character matrix
  .label DEFAULT_SCREEN = $400
  // The number of bytes on the screen
  // The current cursor x-position
  .label conio_cursor_x = $e
  // The current cursor y-position
  .label conio_cursor_y = $f
  // The current text cursor line start
  .label conio_line_text = $10
  // The current color cursor line start
  .label conio_line_color = $12
  // The current text color
  .label conio_textcolor = $14
.segment Code
  // __start
__start: {
    jmp __init1
    // __start::__init1
  __init1:
    // [1] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // [2] conio_cursor_y = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_y
    // [3] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1 
    lda #<DEFAULT_SCREEN
    sta.z conio_line_text
    lda #>DEFAULT_SCREEN
    sta.z conio_line_text+1
    // [4] conio_line_color = COLORRAM -- pbuz1=pbuc1 
    lda #<COLORRAM
    sta.z conio_line_color
    lda #>COLORRAM
    sta.z conio_line_color+1
    // [5] conio_textcolor = LIGHT_BLUE -- vbuz1=vbuc1 
    lda #LIGHT_BLUE
    sta.z conio_textcolor
    // [6] call conio_c64_init
    jsr conio_c64_init
    // [7] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
  __b1_from___init1:
    jmp __b1
    // __start::@1
  __b1:
    // [8] call main
    // [28] phi from __start::@1 to main [phi:__start::@1->main]
  main_from___b1:
    jsr main
    jmp __breturn
    // __start::@return
  __breturn:
    // [9] return 
    rts
}
  // conio_c64_init
// Set initial cursor position
conio_c64_init: {
    // Position cursor at current line
    .label BASIC_CURSOR_LINE = $d6
    // [10] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE -- vbuxx=_deref_pbuc1 
    ldx BASIC_CURSOR_LINE
    // [11] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$19
    bcc __b2_from_conio_c64_init
    // [13] phi from conio_c64_init to conio_c64_init::@1 [phi:conio_c64_init->conio_c64_init::@1]
  __b1_from_conio_c64_init:
    // [13] phi conio_c64_init::line#2 = $19-1 [phi:conio_c64_init->conio_c64_init::@1#0] -- vbuxx=vbuc1 
    ldx #$19-1
    jmp __b1
    // [12] phi from conio_c64_init to conio_c64_init::@2 [phi:conio_c64_init->conio_c64_init::@2]
  __b2_from_conio_c64_init:
    jmp __b2
    // conio_c64_init::@2
  __b2:
    // [13] phi from conio_c64_init::@2 to conio_c64_init::@1 [phi:conio_c64_init::@2->conio_c64_init::@1]
  __b1_from___b2:
    // [13] phi conio_c64_init::line#2 = conio_c64_init::line#0 [phi:conio_c64_init::@2->conio_c64_init::@1#0] -- register_copy 
    jmp __b1
    // conio_c64_init::@1
  __b1:
    // [14] gotoxy::y#2 = conio_c64_init::line#2
    // [15] call gotoxy
    jsr gotoxy
    jmp __breturn
    // conio_c64_init::@return
  __breturn:
    // [16] return 
    rts
}
  // cputc
// Output one character at the current cursor position
// Moves the cursor forward. Scrolls the entire screen if needed
// void cputc(__register(A) char c)
cputc: {
    .const OFFSET_STACK_C = 0
    // [17] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) -- vbuaa=_stackidxbyte_vbuc1 
    tsx
    lda STACK_BASE+OFFSET_STACK_C,x
    // [18] if(cputc::c#0==' ') goto cputc::@1 -- vbuaa_eq_vbuc1_then_la1 
    cmp #'\n'
    beq __b1_from_cputc
    jmp __b2
    // cputc::@2
  __b2:
    // [19] conio_line_text[conio_cursor_x] = cputc::c#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z conio_cursor_x
    sta (conio_line_text),y
    // [20] conio_line_color[conio_cursor_x] = conio_textcolor -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z conio_textcolor
    ldy.z conio_cursor_x
    sta (conio_line_color),y
    // [21] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_x
    // [22] if(conio_cursor_x!=$28) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$28
    cmp.z conio_cursor_x
    bne __breturn
    // [23] phi from cputc::@2 to cputc::@3 [phi:cputc::@2->cputc::@3]
  __b3_from___b2:
    jmp __b3
    // cputc::@3
  __b3:
    // [24] call cputln
    jsr cputln
    jmp __breturn
    // cputc::@return
  __breturn:
    // [25] return 
    rts
    // [26] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
  __b1_from_cputc:
    jmp __b1
    // cputc::@1
  __b1:
    // [27] call cputln
    jsr cputln
    jmp __breturn
}
  // main
main: {
    .label ptr = 2
    .label ptr2 = 2
    // [29] call clrscr
    // [63] phi from main to clrscr [phi:main->clrscr]
  clrscr_from_main:
    jsr clrscr
    // [30] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    jmp __b1
    // main::@1
  __b1:
    // [31] call memchr
    // [79] phi from main::@1 to memchr [phi:main::@1->memchr]
  memchr_from___b1:
    // [79] phi memchr::c#4 = 'a' [phi:main::@1->memchr#0] -- vbuz1=vbuc1 
    lda #'a'
    sta.z memchr.c
    // [79] phi memchr::n#3 = $e [phi:main::@1->memchr#1] -- vwuz1=vbuc1 
    lda #<$e
    sta.z memchr.n
    lda #>$e
    sta.z memchr.n+1
    jsr memchr
    // [32] memchr::return#3 = memchr::return#2
    jmp __b2
    // main::@2
  __b2:
    // [33] main::ptr#0 = (char *)memchr::return#3
    // [34] assert_uint::actual#0 = main::ptr#0 - main::str -- vwuz1=pbuz1_minus_pbuc1 
    lda.z assert_uint.actual
    sec
    sbc #<str
    sta.z assert_uint.actual
    lda.z assert_uint.actual+1
    sbc #>str
    sta.z assert_uint.actual+1
    // [35] call assert_uint
    jsr assert_uint
    // [36] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
  __b3_from___b2:
    jmp __b3
    // main::@3
  __b3:
    // [37] call memchr
    // [79] phi from main::@3 to memchr [phi:main::@3->memchr]
  memchr_from___b3:
    // [79] phi memchr::c#4 = 'a' [phi:main::@3->memchr#0] -- vbuz1=vbuc1 
    lda #'a'
    sta.z memchr.c
    // [79] phi memchr::n#3 = 7 [phi:main::@3->memchr#1] -- vwuz1=vbuc1 
    lda #<7
    sta.z memchr.n
    lda #>7
    sta.z memchr.n+1
    jsr memchr
    // [38] memchr::return#4 = memchr::return#2
    jmp __b4
    // main::@4
  __b4:
    // [39] main::ptr2#0 = (char *)memchr::return#4
    // [40] assert_ptr::actual#0 = (void *)main::ptr2#0
    // [41] call assert_ptr
    jsr assert_ptr
    jmp __breturn
    // main::@return
  __breturn:
    // [42] return 
    rts
  .segment Data
    str: .text "this is a test"
    .byte 0
    message: .text "finding a"
    .byte 0
    message1: .text "not finding a"
    .byte 0
}
.segment Code
  // gotoxy
// Set the cursor to the specified position
// void gotoxy(char x, __register(X) char y)
gotoxy: {
    .const x = 0
    .label __5 = $19
    .label __6 = $15
    .label __7 = $15
    .label line_offset = $15
    .label __8 = $17
    .label __9 = $15
    // [43] if(gotoxy::y#2<$19+1) goto gotoxy::@3 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$19+1
    bcc __b3_from_gotoxy
    // [45] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
  __b1_from_gotoxy:
    // [45] phi gotoxy::y#4 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // [44] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
  __b3_from_gotoxy:
    jmp __b3
    // gotoxy::@3
  __b3:
    // [45] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
  __b1_from___b3:
    // [45] phi gotoxy::y#4 = gotoxy::y#2 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy 
    jmp __b1
    // gotoxy::@1
  __b1:
    jmp __b2
    // gotoxy::@2
  __b2:
    // [46] conio_cursor_x = gotoxy::x#2 -- vbuz1=vbuc1 
    lda #x
    sta.z conio_cursor_x
    // [47] conio_cursor_y = gotoxy::y#4 -- vbuz1=vbuxx 
    stx.z conio_cursor_y
    // [48] gotoxy::$7 = (unsigned int)gotoxy::y#4 -- vwuz1=_word_vbuxx 
    txa
    sta.z __7
    lda #0
    sta.z __7+1
    // [49] gotoxy::$8 = gotoxy::$7 << 2 -- vwuz1=vwuz2_rol_2 
    lda.z __7
    asl
    sta.z __8
    lda.z __7+1
    rol
    sta.z __8+1
    asl.z __8
    rol.z __8+1
    // [50] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 -- vwuz1=vwuz2_plus_vwuz1 
    clc
    lda.z __9
    adc.z __8
    sta.z __9
    lda.z __9+1
    adc.z __8+1
    sta.z __9+1
    // [51] gotoxy::line_offset#0 = gotoxy::$9 << 3 -- vwuz1=vwuz1_rol_3 
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    // [52] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz2 
    lda.z line_offset
    clc
    adc #<DEFAULT_SCREEN
    sta.z __5
    lda.z line_offset+1
    adc #>DEFAULT_SCREEN
    sta.z __5+1
    // [53] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2 
    lda.z __5
    sta.z conio_line_text
    lda.z __5+1
    sta.z conio_line_text+1
    // [54] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __6
    clc
    adc #<COLORRAM
    sta.z __6
    lda.z __6+1
    adc #>COLORRAM
    sta.z __6+1
    // [55] conio_line_color = gotoxy::$6 -- pbuz1=pbuz2 
    lda.z __6
    sta.z conio_line_color
    lda.z __6+1
    sta.z conio_line_color+1
    jmp __breturn
    // gotoxy::@return
  __breturn:
    // [56] return 
    rts
}
  // cputln
// Print a newline
cputln: {
    // [57] conio_line_text = conio_line_text + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z conio_line_text
    sta.z conio_line_text
    bcc !+
    inc.z conio_line_text+1
  !:
    // [58] conio_line_color = conio_line_color + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z conio_line_color
    sta.z conio_line_color
    bcc !+
    inc.z conio_line_color+1
  !:
    // [59] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // [60] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_y
    // [61] call cscroll
    jsr cscroll
    jmp __breturn
    // cputln::@return
  __breturn:
    // [62] return 
    rts
}
  // clrscr
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
clrscr: {
    .label line_text = 4
    .label line_cols = 9
    // [64] phi from clrscr to clrscr::@1 [phi:clrscr->clrscr::@1]
  __b1_from_clrscr:
    // [64] phi clrscr::line_cols#5 = COLORRAM [phi:clrscr->clrscr::@1#0] -- pbuz1=pbuc1 
    lda #<COLORRAM
    sta.z line_cols
    lda #>COLORRAM
    sta.z line_cols+1
    // [64] phi clrscr::line_text#5 = DEFAULT_SCREEN [phi:clrscr->clrscr::@1#1] -- pbuz1=pbuc1 
    lda #<DEFAULT_SCREEN
    sta.z line_text
    lda #>DEFAULT_SCREEN
    sta.z line_text+1
    // [64] phi clrscr::l#2 = 0 [phi:clrscr->clrscr::@1#2] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // clrscr::@1
  __b1:
    // [65] if(clrscr::l#2<$19) goto clrscr::@3 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$19
    bcc __b3_from___b1
    jmp __b2
    // clrscr::@2
  __b2:
    // [66] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // [67] conio_cursor_y = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_y
    // [68] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1 
    lda #<DEFAULT_SCREEN
    sta.z conio_line_text
    lda #>DEFAULT_SCREEN
    sta.z conio_line_text+1
    // [69] conio_line_color = COLORRAM -- pbuz1=pbuc1 
    lda #<COLORRAM
    sta.z conio_line_color
    lda #>COLORRAM
    sta.z conio_line_color+1
    jmp __breturn
    // clrscr::@return
  __breturn:
    // [70] return 
    rts
    // [71] phi from clrscr::@1 to clrscr::@3 [phi:clrscr::@1->clrscr::@3]
  __b3_from___b1:
    // [71] phi clrscr::c#2 = 0 [phi:clrscr::@1->clrscr::@3#0] -- vbuyy=vbuc1 
    ldy #0
    jmp __b3
    // clrscr::@3
  __b3:
    // [72] if(clrscr::c#2<$28) goto clrscr::@4 -- vbuyy_lt_vbuc1_then_la1 
    cpy #$28
    bcc __b4
    jmp __b5
    // clrscr::@5
  __b5:
    // [73] clrscr::line_text#1 = clrscr::line_text#5 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z line_text
    sta.z line_text
    bcc !+
    inc.z line_text+1
  !:
    // [74] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z line_cols
    sta.z line_cols
    bcc !+
    inc.z line_cols+1
  !:
    // [75] clrscr::l#1 = ++ clrscr::l#2 -- vbuxx=_inc_vbuxx 
    inx
    // [64] phi from clrscr::@5 to clrscr::@1 [phi:clrscr::@5->clrscr::@1]
  __b1_from___b5:
    // [64] phi clrscr::line_cols#5 = clrscr::line_cols#1 [phi:clrscr::@5->clrscr::@1#0] -- register_copy 
    // [64] phi clrscr::line_text#5 = clrscr::line_text#1 [phi:clrscr::@5->clrscr::@1#1] -- register_copy 
    // [64] phi clrscr::l#2 = clrscr::l#1 [phi:clrscr::@5->clrscr::@1#2] -- register_copy 
    jmp __b1
    // clrscr::@4
  __b4:
    // [76] clrscr::line_text#5[clrscr::c#2] = ' ' -- pbuz1_derefidx_vbuyy=vbuc1 
    lda #' '
    sta (line_text),y
    // [77] clrscr::line_cols#5[clrscr::c#2] = conio_textcolor -- pbuz1_derefidx_vbuyy=vbuz2 
    lda.z conio_textcolor
    sta (line_cols),y
    // [78] clrscr::c#1 = ++ clrscr::c#2 -- vbuyy=_inc_vbuyy 
    iny
    // [71] phi from clrscr::@4 to clrscr::@3 [phi:clrscr::@4->clrscr::@3]
  __b3_from___b4:
    // [71] phi clrscr::c#2 = clrscr::c#1 [phi:clrscr::@4->clrscr::@3#0] -- register_copy 
    jmp __b3
}
  // memchr
// Searches for the first occurrence of the character c (an unsigned char) in the first n bytes of the string pointed to, by the argument str.
// - str: The memory to search
// - c: A character to search for
// - n: The number of bytes to look through
// Return: A pointer to the matching byte or NULL if the character does not occur in the given memory area.
// __zp(2) void * memchr(const void *str, __zp(8) char c, __zp(4) unsigned int n)
memchr: {
    .label ptr = 2
    .label i = 9
    .label return = 2
    .label n = 4
    .label c = 8
    // [80] phi from memchr to memchr::@1 [phi:memchr->memchr::@1]
  __b1_from_memchr:
    // [80] phi memchr::ptr#2 = (char *)(const void *)main::str [phi:memchr->memchr::@1#0] -- pbuz1=pbuc1 
    lda #<main.str
    sta.z ptr
    lda #>main.str
    sta.z ptr+1
    // [80] phi memchr::i#2 = 0 [phi:memchr->memchr::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b1
    // memchr::@1
  __b1:
    // [81] if(memchr::i#2<memchr::n#3) goto memchr::@2 -- vwuz1_lt_vwuz2_then_la1 
    lda.z i+1
    cmp.z n+1
    bcc __b2
    bne !+
    lda.z i
    cmp.z n
    bcc __b2
  !:
    // [82] phi from memchr::@1 to memchr::@return [phi:memchr::@1->memchr::@return]
  __breturn_from___b1:
    // [82] phi memchr::return#2 = (void *) 0 [phi:memchr::@1->memchr::@return#0] -- pvoz1=pvoc1 
    lda #<0
    sta.z return
    lda #>0
    sta.z return+1
    jmp __breturn
    // memchr::@return
  __breturn:
    // [83] return 
    rts
    // memchr::@2
  __b2:
    // [84] if(*memchr::ptr#2!=memchr::c#4) goto memchr::@3 -- _deref_pbuz1_neq_vbuz2_then_la1 
    ldy #0
    lda (ptr),y
    cmp.z c
    bne __b3
    jmp __b4
    // memchr::@4
  __b4:
    // [85] memchr::return#8 = (void *)memchr::ptr#2
    // [82] phi from memchr::@4 to memchr::@return [phi:memchr::@4->memchr::@return]
  __breturn_from___b4:
    // [82] phi memchr::return#2 = memchr::return#8 [phi:memchr::@4->memchr::@return#0] -- register_copy 
    jmp __breturn
    // memchr::@3
  __b3:
    // [86] memchr::ptr#1 = ++ memchr::ptr#2 -- pbuz1=_inc_pbuz1 
    inc.z ptr
    bne !+
    inc.z ptr+1
  !:
    // [87] memchr::i#1 = ++ memchr::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [80] phi from memchr::@3 to memchr::@1 [phi:memchr::@3->memchr::@1]
  __b1_from___b3:
    // [80] phi memchr::ptr#2 = memchr::ptr#1 [phi:memchr::@3->memchr::@1#0] -- register_copy 
    // [80] phi memchr::i#2 = memchr::i#1 [phi:memchr::@3->memchr::@1#1] -- register_copy 
    jmp __b1
}
  // assert_uint
// void assert_uint(unsigned int expect, __zp(2) unsigned int actual, char *message)
assert_uint: {
    .const expect = 8
    .label actual = 2
    // [88] if(assert_uint::expect#0!=assert_uint::actual#0) goto assert_uint::@1 -- vwuc1_neq_vwuz1_then_la1 
    lda.z actual+1
    cmp #>expect
    bne __b1_from_assert_uint
    lda.z actual
    cmp #<expect
    bne __b1_from_assert_uint
    // [89] phi from assert_uint to assert_uint::@2 [phi:assert_uint->assert_uint::@2]
  __b2_from_assert_uint:
    jmp __b2
    // assert_uint::@2
  __b2:
    // [90] call textcolor
    // [153] phi from assert_uint::@2 to textcolor [phi:assert_uint::@2->textcolor]
  textcolor_from___b2:
    // [153] phi textcolor::color#4 = GREEN [phi:assert_uint::@2->textcolor#0] -- vbuaa=vbuc1 
    lda #GREEN
    jsr textcolor
    // [91] phi from assert_uint::@2 to assert_uint::@10 [phi:assert_uint::@2->assert_uint::@10]
  __b10_from___b2:
    jmp __b10
    // assert_uint::@10
  __b10:
    // [92] call printf_str
    // [156] phi from assert_uint::@10 to printf_str [phi:assert_uint::@10->printf_str]
  printf_str_from___b10:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@10->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s4 [phi:assert_uint::@10->printf_str#1] -- pbuz1=pbuc1 
    lda #<s4
    sta.z printf_str.s
    lda #>s4
    sta.z printf_str.s+1
    jsr printf_str
    // [93] phi from assert_uint::@10 to assert_uint::@11 [phi:assert_uint::@10->assert_uint::@11]
  __b11_from___b10:
    jmp __b11
    // assert_uint::@11
  __b11:
    // [94] call printf_string
    // [165] phi from assert_uint::@11 to printf_string [phi:assert_uint::@11->printf_string]
  printf_string_from___b11:
    // [165] phi printf_string::str#10 = main::message [phi:assert_uint::@11->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message
    sta.z printf_string.str
    lda #>main.message
    sta.z printf_string.str+1
    jsr printf_string
    // [95] phi from assert_uint::@11 to assert_uint::@12 [phi:assert_uint::@11->assert_uint::@12]
  __b12_from___b11:
    jmp __b12
    // assert_uint::@12
  __b12:
    // [96] call printf_str
    // [156] phi from assert_uint::@12 to printf_str [phi:assert_uint::@12->printf_str]
  printf_str_from___b12:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@12->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_uint::@12->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    jmp __breturn
    // assert_uint::@return
  __breturn:
    // [97] return 
    rts
    // [98] phi from assert_uint to assert_uint::@1 [phi:assert_uint->assert_uint::@1]
  __b1_from_assert_uint:
    jmp __b1
    // assert_uint::@1
  __b1:
    // [99] call textcolor
    // [153] phi from assert_uint::@1 to textcolor [phi:assert_uint::@1->textcolor]
  textcolor_from___b1:
    // [153] phi textcolor::color#4 = RED [phi:assert_uint::@1->textcolor#0] -- vbuaa=vbuc1 
    lda #RED
    jsr textcolor
    // [100] phi from assert_uint::@1 to assert_uint::@3 [phi:assert_uint::@1->assert_uint::@3]
  __b3_from___b1:
    jmp __b3
    // assert_uint::@3
  __b3:
    // [101] call printf_str
    // [156] phi from assert_uint::@3 to printf_str [phi:assert_uint::@3->printf_str]
  printf_str_from___b3:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@3->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_uint::s [phi:assert_uint::@3->printf_str#1] -- pbuz1=pbuc1 
    lda #<s
    sta.z printf_str.s
    lda #>s
    sta.z printf_str.s+1
    jsr printf_str
    // [102] phi from assert_uint::@3 to assert_uint::@4 [phi:assert_uint::@3->assert_uint::@4]
  __b4_from___b3:
    jmp __b4
    // assert_uint::@4
  __b4:
    // [103] call printf_uint
    // [169] phi from assert_uint::@4 to printf_uint [phi:assert_uint::@4->printf_uint]
  printf_uint_from___b4:
    // [169] phi printf_uint::format_radix#4 = DECIMAL [phi:assert_uint::@4->printf_uint#0] -- vbuxx=vbuc1 
    ldx #DECIMAL
    // [169] phi printf_uint::uvalue#4 = assert_uint::expect#0 [phi:assert_uint::@4->printf_uint#1] -- vwuz1=vwuc1 
    lda #<expect
    sta.z printf_uint.uvalue
    lda #>expect
    sta.z printf_uint.uvalue+1
    jsr printf_uint
    // [104] phi from assert_uint::@4 to assert_uint::@5 [phi:assert_uint::@4->assert_uint::@5]
  __b5_from___b4:
    jmp __b5
    // assert_uint::@5
  __b5:
    // [105] call printf_str
    // [156] phi from assert_uint::@5 to printf_str [phi:assert_uint::@5->printf_str]
  printf_str_from___b5:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@5->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_uint::s1 [phi:assert_uint::@5->printf_str#1] -- pbuz1=pbuc1 
    lda #<s1
    sta.z printf_str.s
    lda #>s1
    sta.z printf_str.s+1
    jsr printf_str
    jmp __b6
    // assert_uint::@6
  __b6:
    // [106] printf_uint::uvalue#1 = assert_uint::actual#0 -- vwuz1=vwuz2 
    lda.z actual
    sta.z printf_uint.uvalue
    lda.z actual+1
    sta.z printf_uint.uvalue+1
    // [107] call printf_uint
    // [169] phi from assert_uint::@6 to printf_uint [phi:assert_uint::@6->printf_uint]
  printf_uint_from___b6:
    // [169] phi printf_uint::format_radix#4 = DECIMAL [phi:assert_uint::@6->printf_uint#0] -- vbuxx=vbuc1 
    ldx #DECIMAL
    // [169] phi printf_uint::uvalue#4 = printf_uint::uvalue#1 [phi:assert_uint::@6->printf_uint#1] -- register_copy 
    jsr printf_uint
    // [108] phi from assert_uint::@6 to assert_uint::@7 [phi:assert_uint::@6->assert_uint::@7]
  __b7_from___b6:
    jmp __b7
    // assert_uint::@7
  __b7:
    // [109] call printf_str
    // [156] phi from assert_uint::@7 to printf_str [phi:assert_uint::@7->printf_str]
  printf_str_from___b7:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@7->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s2 [phi:assert_uint::@7->printf_str#1] -- pbuz1=pbuc1 
    lda #<s2
    sta.z printf_str.s
    lda #>s2
    sta.z printf_str.s+1
    jsr printf_str
    // [110] phi from assert_uint::@7 to assert_uint::@8 [phi:assert_uint::@7->assert_uint::@8]
  __b8_from___b7:
    jmp __b8
    // assert_uint::@8
  __b8:
    // [111] call printf_string
    // [165] phi from assert_uint::@8 to printf_string [phi:assert_uint::@8->printf_string]
  printf_string_from___b8:
    // [165] phi printf_string::str#10 = main::message [phi:assert_uint::@8->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message
    sta.z printf_string.str
    lda #>main.message
    sta.z printf_string.str+1
    jsr printf_string
    // [112] phi from assert_uint::@8 to assert_uint::@9 [phi:assert_uint::@8->assert_uint::@9]
  __b9_from___b8:
    jmp __b9
    // assert_uint::@9
  __b9:
    // [113] call printf_str
    // [156] phi from assert_uint::@9 to printf_str [phi:assert_uint::@9->printf_str]
  printf_str_from___b9:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@9->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_uint::@9->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    jmp __breturn
  .segment Data
    s: .text "Assert failed. expected:"
    .byte 0
    s1: .text " actual:"
    .byte 0
}
.segment Code
  // assert_ptr
// void assert_ptr(void *expect, __zp(2) void *actual, char *message)
assert_ptr: {
    .label expect = 0
    .label actual = 2
    // [114] if(assert_ptr::expect#0!=assert_ptr::actual#0) goto assert_ptr::@1 -- pvoc1_neq_pvoz1_then_la1 
    lda.z actual+1
    cmp #>expect
    bne __b1_from_assert_ptr
    lda.z actual
    cmp #<expect
    bne __b1_from_assert_ptr
    // [115] phi from assert_ptr to assert_ptr::@2 [phi:assert_ptr->assert_ptr::@2]
  __b2_from_assert_ptr:
    jmp __b2
    // assert_ptr::@2
  __b2:
    // [116] call textcolor
    // [153] phi from assert_ptr::@2 to textcolor [phi:assert_ptr::@2->textcolor]
  textcolor_from___b2:
    // [153] phi textcolor::color#4 = GREEN [phi:assert_ptr::@2->textcolor#0] -- vbuaa=vbuc1 
    lda #GREEN
    jsr textcolor
    // [117] phi from assert_ptr::@2 to assert_ptr::@10 [phi:assert_ptr::@2->assert_ptr::@10]
  __b10_from___b2:
    jmp __b10
    // assert_ptr::@10
  __b10:
    // [118] call printf_str
    // [156] phi from assert_ptr::@10 to printf_str [phi:assert_ptr::@10->printf_str]
  printf_str_from___b10:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@10->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s4 [phi:assert_ptr::@10->printf_str#1] -- pbuz1=pbuc1 
    lda #<s4
    sta.z printf_str.s
    lda #>s4
    sta.z printf_str.s+1
    jsr printf_str
    // [119] phi from assert_ptr::@10 to assert_ptr::@11 [phi:assert_ptr::@10->assert_ptr::@11]
  __b11_from___b10:
    jmp __b11
    // assert_ptr::@11
  __b11:
    // [120] call printf_string
    // [165] phi from assert_ptr::@11 to printf_string [phi:assert_ptr::@11->printf_string]
  printf_string_from___b11:
    // [165] phi printf_string::str#10 = main::message1 [phi:assert_ptr::@11->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message1
    sta.z printf_string.str
    lda #>main.message1
    sta.z printf_string.str+1
    jsr printf_string
    // [121] phi from assert_ptr::@11 to assert_ptr::@12 [phi:assert_ptr::@11->assert_ptr::@12]
  __b12_from___b11:
    jmp __b12
    // assert_ptr::@12
  __b12:
    // [122] call printf_str
    // [156] phi from assert_ptr::@12 to printf_str [phi:assert_ptr::@12->printf_str]
  printf_str_from___b12:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@12->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_ptr::@12->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    jmp __breturn
    // assert_ptr::@return
  __breturn:
    // [123] return 
    rts
    // [124] phi from assert_ptr to assert_ptr::@1 [phi:assert_ptr->assert_ptr::@1]
  __b1_from_assert_ptr:
    jmp __b1
    // assert_ptr::@1
  __b1:
    // [125] call textcolor
    // [153] phi from assert_ptr::@1 to textcolor [phi:assert_ptr::@1->textcolor]
  textcolor_from___b1:
    // [153] phi textcolor::color#4 = RED [phi:assert_ptr::@1->textcolor#0] -- vbuaa=vbuc1 
    lda #RED
    jsr textcolor
    // [126] phi from assert_ptr::@1 to assert_ptr::@3 [phi:assert_ptr::@1->assert_ptr::@3]
  __b3_from___b1:
    jmp __b3
    // assert_ptr::@3
  __b3:
    // [127] call printf_str
    // [156] phi from assert_ptr::@3 to printf_str [phi:assert_ptr::@3->printf_str]
  printf_str_from___b3:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@3->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_ptr::s [phi:assert_ptr::@3->printf_str#1] -- pbuz1=pbuc1 
    lda #<s
    sta.z printf_str.s
    lda #>s
    sta.z printf_str.s+1
    jsr printf_str
    // [128] phi from assert_ptr::@3 to assert_ptr::@4 [phi:assert_ptr::@3->assert_ptr::@4]
  __b4_from___b3:
    jmp __b4
    // assert_ptr::@4
  __b4:
    // [129] call printf_uint
    // [169] phi from assert_ptr::@4 to printf_uint [phi:assert_ptr::@4->printf_uint]
  printf_uint_from___b4:
    // [169] phi printf_uint::format_radix#4 = HEXADECIMAL [phi:assert_ptr::@4->printf_uint#0] -- vbuxx=vbuc1 
    ldx #HEXADECIMAL
    // [169] phi printf_uint::uvalue#4 = 0 [phi:assert_ptr::@4->printf_uint#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z printf_uint.uvalue
    lda #>0
    sta.z printf_uint.uvalue+1
    jsr printf_uint
    // [130] phi from assert_ptr::@4 to assert_ptr::@5 [phi:assert_ptr::@4->assert_ptr::@5]
  __b5_from___b4:
    jmp __b5
    // assert_ptr::@5
  __b5:
    // [131] call printf_str
    // [156] phi from assert_ptr::@5 to printf_str [phi:assert_ptr::@5->printf_str]
  printf_str_from___b5:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@5->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_ptr::s1 [phi:assert_ptr::@5->printf_str#1] -- pbuz1=pbuc1 
    lda #<s1
    sta.z printf_str.s
    lda #>s1
    sta.z printf_str.s+1
    jsr printf_str
    jmp __b6
    // assert_ptr::@6
  __b6:
    // [132] printf_uint::uvalue#3 = (unsigned int)assert_ptr::actual#0 -- vwuz1=vwuz2 
    lda.z actual
    sta.z printf_uint.uvalue
    lda.z actual+1
    sta.z printf_uint.uvalue+1
    // [133] call printf_uint
    // [169] phi from assert_ptr::@6 to printf_uint [phi:assert_ptr::@6->printf_uint]
  printf_uint_from___b6:
    // [169] phi printf_uint::format_radix#4 = HEXADECIMAL [phi:assert_ptr::@6->printf_uint#0] -- vbuxx=vbuc1 
    ldx #HEXADECIMAL
    // [169] phi printf_uint::uvalue#4 = printf_uint::uvalue#3 [phi:assert_ptr::@6->printf_uint#1] -- register_copy 
    jsr printf_uint
    // [134] phi from assert_ptr::@6 to assert_ptr::@7 [phi:assert_ptr::@6->assert_ptr::@7]
  __b7_from___b6:
    jmp __b7
    // assert_ptr::@7
  __b7:
    // [135] call printf_str
    // [156] phi from assert_ptr::@7 to printf_str [phi:assert_ptr::@7->printf_str]
  printf_str_from___b7:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@7->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s2 [phi:assert_ptr::@7->printf_str#1] -- pbuz1=pbuc1 
    lda #<s2
    sta.z printf_str.s
    lda #>s2
    sta.z printf_str.s+1
    jsr printf_str
    // [136] phi from assert_ptr::@7 to assert_ptr::@8 [phi:assert_ptr::@7->assert_ptr::@8]
  __b8_from___b7:
    jmp __b8
    // assert_ptr::@8
  __b8:
    // [137] call printf_string
    // [165] phi from assert_ptr::@8 to printf_string [phi:assert_ptr::@8->printf_string]
  printf_string_from___b8:
    // [165] phi printf_string::str#10 = main::message1 [phi:assert_ptr::@8->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message1
    sta.z printf_string.str
    lda #>main.message1
    sta.z printf_string.str+1
    jsr printf_string
    // [138] phi from assert_ptr::@8 to assert_ptr::@9 [phi:assert_ptr::@8->assert_ptr::@9]
  __b9_from___b8:
    jmp __b9
    // assert_ptr::@9
  __b9:
    // [139] call printf_str
    // [156] phi from assert_ptr::@9 to printf_str [phi:assert_ptr::@9->printf_str]
  printf_str_from___b9:
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@9->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_ptr::@9->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    jmp __breturn
  .segment Data
    s: .text "Assert failed. expected:0x"
    .byte 0
    s1: .text " actual:0x"
    .byte 0
}
.segment Code
  // cscroll
// Scroll the entire screen if the cursor is beyond the last line
cscroll: {
    // [140] if(conio_cursor_y!=$19) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$19
    cmp.z conio_cursor_y
    bne __breturn
    // [141] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
  __b1_from_cscroll:
    jmp __b1
    // cscroll::@1
  __b1:
    // [142] call memcpy
    // [177] phi from cscroll::@1 to memcpy [phi:cscroll::@1->memcpy]
  memcpy_from___b1:
    // [177] phi memcpy::destination#2 = (void *)DEFAULT_SCREEN [phi:cscroll::@1->memcpy#0] -- pvoz1=pvoc1 
    lda #<DEFAULT_SCREEN
    sta.z memcpy.destination
    lda #>DEFAULT_SCREEN
    sta.z memcpy.destination+1
    // [177] phi memcpy::source#2 = (void *)DEFAULT_SCREEN+$28 [phi:cscroll::@1->memcpy#1] -- pvoz1=pvoc1 
    lda #<DEFAULT_SCREEN+$28
    sta.z memcpy.source
    lda #>DEFAULT_SCREEN+$28
    sta.z memcpy.source+1
    jsr memcpy
    // [143] phi from cscroll::@1 to cscroll::@2 [phi:cscroll::@1->cscroll::@2]
  __b2_from___b1:
    jmp __b2
    // cscroll::@2
  __b2:
    // [144] call memcpy
    // [177] phi from cscroll::@2 to memcpy [phi:cscroll::@2->memcpy]
  memcpy_from___b2:
    // [177] phi memcpy::destination#2 = (void *)COLORRAM [phi:cscroll::@2->memcpy#0] -- pvoz1=pvoc1 
    lda #<COLORRAM
    sta.z memcpy.destination
    lda #>COLORRAM
    sta.z memcpy.destination+1
    // [177] phi memcpy::source#2 = (void *)COLORRAM+$28 [phi:cscroll::@2->memcpy#1] -- pvoz1=pvoc1 
    lda #<COLORRAM+$28
    sta.z memcpy.source
    lda #>COLORRAM+$28
    sta.z memcpy.source+1
    jsr memcpy
    // [145] phi from cscroll::@2 to cscroll::@3 [phi:cscroll::@2->cscroll::@3]
  __b3_from___b2:
    jmp __b3
    // cscroll::@3
  __b3:
    // [146] call memset
    // [187] phi from cscroll::@3 to memset [phi:cscroll::@3->memset]
  memset_from___b3:
    // [187] phi memset::c#4 = ' ' [phi:cscroll::@3->memset#0] -- vbuxx=vbuc1 
    ldx #' '
    // [187] phi memset::str#3 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28 [phi:cscroll::@3->memset#1] -- pvoz1=pvoc1 
    lda #<DEFAULT_SCREEN+$19*$28-$28
    sta.z memset.str
    lda #>DEFAULT_SCREEN+$19*$28-$28
    sta.z memset.str+1
    jsr memset
    jmp __b4
    // cscroll::@4
  __b4:
    // [147] memset::c#1 = conio_textcolor -- vbuxx=vbuz1 
    ldx.z conio_textcolor
    // [148] call memset
    // [187] phi from cscroll::@4 to memset [phi:cscroll::@4->memset]
  memset_from___b4:
    // [187] phi memset::c#4 = memset::c#1 [phi:cscroll::@4->memset#0] -- register_copy 
    // [187] phi memset::str#3 = (void *)COLORRAM+(unsigned int)$19*$28-$28 [phi:cscroll::@4->memset#1] -- pvoz1=pvoc1 
    lda #<COLORRAM+$19*$28-$28
    sta.z memset.str
    lda #>COLORRAM+$19*$28-$28
    sta.z memset.str+1
    jsr memset
    jmp __b5
    // cscroll::@5
  __b5:
    // [149] conio_line_text = conio_line_text - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z conio_line_text
    sbc #$28
    sta.z conio_line_text
    lda.z conio_line_text+1
    sbc #0
    sta.z conio_line_text+1
    // [150] conio_line_color = conio_line_color - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z conio_line_color
    sbc #$28
    sta.z conio_line_color
    lda.z conio_line_color+1
    sbc #0
    sta.z conio_line_color+1
    // [151] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1 
    dec.z conio_cursor_y
    jmp __breturn
    // cscroll::@return
  __breturn:
    // [152] return 
    rts
}
  // textcolor
// Set the color for text output. The old color setting is returned.
// char textcolor(__register(A) char color)
textcolor: {
    // [154] conio_textcolor = textcolor::color#4 -- vbuz1=vbuaa 
    sta.z conio_textcolor
    jmp __breturn
    // textcolor::@return
  __breturn:
    // [155] return 
    rts
}
  // printf_str
/// Print a NUL-terminated string
// void printf_str(__zp(4) void (*putc)(char), __zp(9) const char *s)
printf_str: {
    .label s = 9
    .label putc = 4
    // [157] phi from printf_str printf_str::@2 to printf_str::@1 [phi:printf_str/printf_str::@2->printf_str::@1]
  __b1_from_printf_str:
  __b1_from___b2:
    // [157] phi printf_str::s#15 = printf_str::s#16 [phi:printf_str/printf_str::@2->printf_str::@1#0] -- register_copy 
    jmp __b1
    // printf_str::@1
  __b1:
    // [158] printf_str::c#1 = *printf_str::s#15 -- vbuaa=_deref_pbuz1 
    ldy #0
    lda (s),y
    // [159] printf_str::s#0 = ++ printf_str::s#15 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [160] if(0!=printf_str::c#1) goto printf_str::@2 -- 0_neq_vbuaa_then_la1 
    cmp #0
    bne __b2
    jmp __breturn
    // printf_str::@return
  __breturn:
    // [161] return 
    rts
    // printf_str::@2
  __b2:
    // [162] stackpush(char) = printf_str::c#1 -- _stackpushbyte_=vbuaa 
    pha
    // [163] callexecute *printf_str::putc#16  -- call__deref_pprz1 
    jsr icall1
    // sideeffect stackpullbytes(1) -- _stackpullbyte_1 
    pla
    jmp __b1_from___b2
    // Outside Flow
  icall1:
    jmp (putc)
}
  // printf_string
// Print a string value using a specific format
// Handles justification and min length 
// void printf_string(void (*putc)(char), __zp(9) char *str, char format_min_length, char format_justify_left)
printf_string: {
    .label str = 9
    jmp __b1
    // printf_string::@1
  __b1:
    // [166] printf_str::s#2 = printf_string::str#10
    // [167] call printf_str
    // [156] phi from printf_string::@1 to printf_str [phi:printf_string::@1->printf_str]
  printf_str_from___b1:
    // [156] phi printf_str::putc#16 = &cputc [phi:printf_string::@1->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = printf_str::s#2 [phi:printf_string::@1->printf_str#1] -- register_copy 
    jsr printf_str
    jmp __breturn
    // printf_string::@return
  __breturn:
    // [168] return 
    rts
}
  // printf_uint
// Print an unsigned int using a specific format
// void printf_uint(void (*putc)(char), __zp(4) unsigned int uvalue, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, __register(X) char format_radix)
printf_uint: {
    .label uvalue = 4
    jmp __b1
    // printf_uint::@1
  __b1:
    // [170] *((char *)&printf_buffer) = 0 -- _deref_pbuc1=vbuc2 
    // Handle any sign
    lda #0
    sta printf_buffer
    // [171] utoa::value#1 = printf_uint::uvalue#4
    // [172] utoa::radix#0 = printf_uint::format_radix#4
    // [173] call utoa
    // Format number into buffer
    jsr utoa
    jmp __b2
    // printf_uint::@2
  __b2:
    // [174] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer) -- vbuaa=_deref_pbuc1 
    lda printf_buffer
    // [175] call printf_number_buffer
  // Print using format
    // [225] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer]
  printf_number_buffer_from___b2:
    jsr printf_number_buffer
    jmp __breturn
    // printf_uint::@return
  __breturn:
    // [176] return 
    rts
}
  // memcpy
// Copy block of memory (forwards)
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
// void * memcpy(__zp($1d) void *destination, __zp(6) void *source, unsigned int num)
memcpy: {
    .label src_end = $1b
    .label dst = $1d
    .label src = 6
    .label source = 6
    .label destination = $1d
    // [178] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1 
    lda.z source
    clc
    adc #<$19*$28-$28
    sta.z src_end
    lda.z source+1
    adc #>$19*$28-$28
    sta.z src_end+1
    // [179] memcpy::src#4 = (char *)memcpy::source#2
    // [180] memcpy::dst#4 = (char *)memcpy::destination#2
    // [181] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1]
  __b1_from_memcpy:
  __b1_from___b2:
    // [181] phi memcpy::dst#2 = memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy 
    // [181] phi memcpy::src#2 = memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy 
    jmp __b1
    // memcpy::@1
  __b1:
    // [182] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda.z src+1
    cmp.z src_end+1
    bne __b2
    lda.z src
    cmp.z src_end
    bne __b2
    jmp __breturn
    // memcpy::@return
  __breturn:
    // [183] return 
    rts
    // memcpy::@2
  __b2:
    // [184] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (src),y
    ldy #0
    sta (dst),y
    // [185] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [186] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1 
    inc.z src
    bne !+
    inc.z src+1
  !:
    jmp __b1_from___b2
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(__zp(6) void *str, __register(X) char c, unsigned int num)
memset: {
    .label end = $1d
    .label dst = 6
    .label str = 6
    jmp __b1
    // memset::@1
  __b1:
    // [188] memset::end#0 = (char *)memset::str#3 + $28 -- pbuz1=pbuz2_plus_vbuc1 
    lda #$28
    clc
    adc.z str
    sta.z end
    lda #0
    adc.z str+1
    sta.z end+1
    // [189] memset::dst#4 = (char *)memset::str#3
    // [190] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
  __b2_from___b1:
  __b2_from___b3:
    // [190] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy 
    jmp __b2
    // memset::@2
  __b2:
    // [191] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 
    lda.z dst+1
    cmp.z end+1
    bne __b3
    lda.z dst
    cmp.z end
    bne __b3
    jmp __breturn
    // memset::@return
  __breturn:
    // [192] return 
    rts
    // memset::@3
  __b3:
    // [193] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // [194] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp __b2_from___b3
}
  // utoa
// Converts unsigned number value to a string representing it in RADIX format.
// If the leading digits are zero they are not included in the string.
// - value : The number to be converted to RADIX
// - buffer : receives the string representing the number and zero-termination.
// - radix : The radix to convert the number to (from the enum RADIX)
// void utoa(__zp(4) unsigned int value, __zp($c) char *buffer, __register(X) char radix)
utoa: {
    .label digit_value = $1f
    .label buffer = $c
    .label digit = $b
    .label value = 4
    .label max_digits = 8
    .label digit_values = 9
    // [195] if(utoa::radix#0==DECIMAL) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #DECIMAL
    beq __b1_from_utoa
    jmp __b2
    // utoa::@2
  __b2:
    // [196] if(utoa::radix#0==HEXADECIMAL) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #HEXADECIMAL
    beq __b1_from___b2
    jmp __b3
    // utoa::@3
  __b3:
    // [197] if(utoa::radix#0==OCTAL) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #OCTAL
    beq __b1_from___b3
    jmp __b4
    // utoa::@4
  __b4:
    // [198] if(utoa::radix#0==BINARY) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #BINARY
    beq __b1_from___b4
    jmp __b5
    // utoa::@5
  __b5:
    // [199] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS) = 'e' -- _deref_pbuc1=vbuc2 
    // Unknown radix
    lda #'e'
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    // [200] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1) = 'r' -- _deref_pbuc1=vbuc2 
    lda #'r'
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1
    // [201] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2) = 'r' -- _deref_pbuc1=vbuc2 
    lda #'r'
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2
    // [202] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3) = 0 -- _deref_pbuc1=vbuc2 
    lda #0
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3
    jmp __breturn
    // utoa::@return
  __breturn:
    // [203] return 
    rts
    // [204] phi from utoa to utoa::@1 [phi:utoa->utoa::@1]
  __b1_from_utoa:
    // [204] phi utoa::digit_values#8 = RADIX_DECIMAL_VALUES [phi:utoa->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_DECIMAL_VALUES
    sta.z digit_values
    lda #>RADIX_DECIMAL_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = 5 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 
    lda #5
    sta.z max_digits
    jmp __b1
    // [204] phi from utoa::@2 to utoa::@1 [phi:utoa::@2->utoa::@1]
  __b1_from___b2:
    // [204] phi utoa::digit_values#8 = RADIX_HEXADECIMAL_VALUES [phi:utoa::@2->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_HEXADECIMAL_VALUES
    sta.z digit_values
    lda #>RADIX_HEXADECIMAL_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = 4 [phi:utoa::@2->utoa::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z max_digits
    jmp __b1
    // [204] phi from utoa::@3 to utoa::@1 [phi:utoa::@3->utoa::@1]
  __b1_from___b3:
    // [204] phi utoa::digit_values#8 = RADIX_OCTAL_VALUES [phi:utoa::@3->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_OCTAL_VALUES
    sta.z digit_values
    lda #>RADIX_OCTAL_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = 6 [phi:utoa::@3->utoa::@1#1] -- vbuz1=vbuc1 
    lda #6
    sta.z max_digits
    jmp __b1
    // [204] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1]
  __b1_from___b4:
    // [204] phi utoa::digit_values#8 = RADIX_BINARY_VALUES [phi:utoa::@4->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_BINARY_VALUES
    sta.z digit_values
    lda #>RADIX_BINARY_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = $10 [phi:utoa::@4->utoa::@1#1] -- vbuz1=vbuc1 
    lda #$10
    sta.z max_digits
    jmp __b1
    // utoa::@1
  __b1:
    // [205] phi from utoa::@1 to utoa::@6 [phi:utoa::@1->utoa::@6]
  __b6_from___b1:
    // [205] phi utoa::buffer#11 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa::@1->utoa::@6#0] -- pbuz1=pbuc1 
    lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    sta.z buffer
    lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    sta.z buffer+1
    // [205] phi utoa::started#2 = 0 [phi:utoa::@1->utoa::@6#1] -- vbuxx=vbuc1 
    ldx #0
    // [205] phi utoa::value#2 = utoa::value#1 [phi:utoa::@1->utoa::@6#2] -- register_copy 
    // [205] phi utoa::digit#2 = 0 [phi:utoa::@1->utoa::@6#3] -- vbuz1=vbuc1 
    lda #0
    sta.z digit
    jmp __b6
    // utoa::@6
  __b6:
    // [206] utoa::$4 = utoa::max_digits#7 - 1 -- vbuaa=vbuz1_minus_1 
    lda.z max_digits
    sec
    sbc #1
    // [207] if(utoa::digit#2<utoa::$4) goto utoa::@7 -- vbuz1_lt_vbuaa_then_la1 
    cmp.z digit
    beq !+
    bcs __b7
  !:
    jmp __b8
    // utoa::@8
  __b8:
    // [208] utoa::$11 = (char)utoa::value#2 -- vbuxx=_byte_vwuz1 
    ldx.z value
    // [209] *utoa::buffer#11 = DIGITS[utoa::$11] -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda DIGITS,x
    ldy #0
    sta (buffer),y
    // [210] utoa::buffer#3 = ++ utoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // [211] *utoa::buffer#3 = 0 -- _deref_pbuz1=vbuc1 
    lda #0
    ldy #0
    sta (buffer),y
    jmp __breturn
    // utoa::@7
  __b7:
    // [212] utoa::$10 = utoa::digit#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z digit
    asl
    // [213] utoa::digit_value#0 = utoa::digit_values#8[utoa::$10] -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (digit_values),y
    sta.z digit_value
    iny
    lda (digit_values),y
    sta.z digit_value+1
    // [214] if(0!=utoa::started#2) goto utoa::@10 -- 0_neq_vbuxx_then_la1 
    cpx #0
    bne __b10
    jmp __b12
    // utoa::@12
  __b12:
    // [215] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@10 -- vwuz1_ge_vwuz2_then_la1 
    lda.z digit_value+1
    cmp.z value+1
    bne !+
    lda.z digit_value
    cmp.z value
    beq __b10
  !:
    bcc __b10
    // [216] phi from utoa::@12 to utoa::@9 [phi:utoa::@12->utoa::@9]
  __b9_from___b12:
    // [216] phi utoa::buffer#14 = utoa::buffer#11 [phi:utoa::@12->utoa::@9#0] -- register_copy 
    // [216] phi utoa::started#4 = utoa::started#2 [phi:utoa::@12->utoa::@9#1] -- register_copy 
    // [216] phi utoa::value#6 = utoa::value#2 [phi:utoa::@12->utoa::@9#2] -- register_copy 
    jmp __b9
    // utoa::@9
  __b9:
    // [217] utoa::digit#1 = ++ utoa::digit#2 -- vbuz1=_inc_vbuz1 
    inc.z digit
    // [205] phi from utoa::@9 to utoa::@6 [phi:utoa::@9->utoa::@6]
  __b6_from___b9:
    // [205] phi utoa::buffer#11 = utoa::buffer#14 [phi:utoa::@9->utoa::@6#0] -- register_copy 
    // [205] phi utoa::started#2 = utoa::started#4 [phi:utoa::@9->utoa::@6#1] -- register_copy 
    // [205] phi utoa::value#2 = utoa::value#6 [phi:utoa::@9->utoa::@6#2] -- register_copy 
    // [205] phi utoa::digit#2 = utoa::digit#1 [phi:utoa::@9->utoa::@6#3] -- register_copy 
    jmp __b6
    // utoa::@10
  __b10:
    // [218] utoa_append::buffer#0 = utoa::buffer#11
    // [219] utoa_append::value#0 = utoa::value#2
    // [220] utoa_append::sub#0 = utoa::digit_value#0
    // [221] call utoa_append
    // [233] phi from utoa::@10 to utoa_append [phi:utoa::@10->utoa_append]
  utoa_append_from___b10:
    jsr utoa_append
    // [222] utoa_append::return#0 = utoa_append::value#2
    jmp __b11
    // utoa::@11
  __b11:
    // [223] utoa::value#0 = utoa_append::return#0
    // [224] utoa::buffer#4 = ++ utoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // [216] phi from utoa::@11 to utoa::@9 [phi:utoa::@11->utoa::@9]
  __b9_from___b11:
    // [216] phi utoa::buffer#14 = utoa::buffer#4 [phi:utoa::@11->utoa::@9#0] -- register_copy 
    // [216] phi utoa::started#4 = 1 [phi:utoa::@11->utoa::@9#1] -- vbuxx=vbuc1 
    ldx #1
    // [216] phi utoa::value#6 = utoa::value#0 [phi:utoa::@11->utoa::@9#2] -- register_copy 
    jmp __b9
}
  // printf_number_buffer
// Print the contents of the number buffer using a specific format.
// This handles minimum length, zero-filling, and left/right justification from the format
// void printf_number_buffer(void (*putc)(char), __register(A) char buffer_sign, char *buffer_digits, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
printf_number_buffer: {
    .label buffer_digits = printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    .label putc = cputc
    jmp __b1
    // printf_number_buffer::@1
  __b1:
    // [226] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@2 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b2_from___b1
    jmp __b3
    // printf_number_buffer::@3
  __b3:
    // [227] stackpush(char) = printf_number_buffer::buffer_sign#0 -- _stackpushbyte_=vbuaa 
    pha
    // [228] callexecute cputc  -- call_vprc1 
    jsr cputc
    // sideeffect stackpullbytes(1) -- _stackpullbyte_1 
    pla
    // [230] phi from printf_number_buffer::@1 printf_number_buffer::@3 to printf_number_buffer::@2 [phi:printf_number_buffer::@1/printf_number_buffer::@3->printf_number_buffer::@2]
  __b2_from___b1:
  __b2_from___b3:
    jmp __b2
    // printf_number_buffer::@2
  __b2:
    // [231] call printf_str
    // [156] phi from printf_number_buffer::@2 to printf_str [phi:printf_number_buffer::@2->printf_str]
  printf_str_from___b2:
    // [156] phi printf_str::putc#16 = printf_number_buffer::putc#0 [phi:printf_number_buffer::@2->printf_str#0] -- pprz1=pprc1 
    lda #<putc
    sta.z printf_str.putc
    lda #>putc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = printf_number_buffer::buffer_digits#0 [phi:printf_number_buffer::@2->printf_str#1] -- pbuz1=pbuc1 
    lda #<buffer_digits
    sta.z printf_str.s
    lda #>buffer_digits
    sta.z printf_str.s+1
    jsr printf_str
    jmp __breturn
    // printf_number_buffer::@return
  __breturn:
    // [232] return 
    rts
}
  // utoa_append
// Used to convert a single digit of an unsigned number value to a string representation
// Counts a single digit up from '0' as long as the value is larger than sub.
// Each time the digit is increased sub is subtracted from value.
// - buffer : pointer to the char that receives the digit
// - value : The value where the digit will be derived from
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
//        (For decimal the subs used are 10000, 1000, 100, 10, 1)
// returns : the value reduced by sub * digit so that it is less than sub.
// __zp(4) unsigned int utoa_append(__zp($c) char *buffer, __zp(4) unsigned int value, __zp($1f) unsigned int sub)
utoa_append: {
    .label buffer = $c
    .label value = 4
    .label sub = $1f
    .label return = 4
    // [234] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1]
  __b1_from_utoa_append:
    // [234] phi utoa_append::digit#2 = 0 [phi:utoa_append->utoa_append::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [234] phi utoa_append::value#2 = utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy 
    jmp __b1
    // utoa_append::@1
  __b1:
    // [235] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 
    lda.z sub+1
    cmp.z value+1
    bne !+
    lda.z sub
    cmp.z value
    beq __b2
  !:
    bcc __b2
    jmp __b3
    // utoa_append::@3
  __b3:
    // [236] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda DIGITS,x
    ldy #0
    sta (buffer),y
    jmp __breturn
    // utoa_append::@return
  __breturn:
    // [237] return 
    rts
    // utoa_append::@2
  __b2:
    // [238] utoa_append::digit#1 = ++ utoa_append::digit#2 -- vbuxx=_inc_vbuxx 
    inx
    // [239] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z value
    sec
    sbc.z sub
    sta.z value
    lda.z value+1
    sbc.z sub+1
    sta.z value+1
    // [234] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1]
  __b1_from___b2:
    // [234] phi utoa_append::digit#2 = utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy 
    // [234] phi utoa_append::value#2 = utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy 
    jmp __b1
}
  // File Data
.segment Data
  // The digits used for numbers
  DIGITS: .text "0123456789abcdef"
  // Values of binary digits
  RADIX_BINARY_VALUES: .word $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2
  // Values of octal digits
  RADIX_OCTAL_VALUES: .word $8000, $1000, $200, $40, 8
  // Values of decimal digits
  RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a
  // Values of hexadecimal digits
  RADIX_HEXADECIMAL_VALUES: .word $1000, $100, $10
  s2: .text ". "
  .byte 0
  s3: .text @"\n"
  .byte 0
  s4: .text "ok! "
  .byte 0
  // Buffer used for stringified number being printed
  printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __init1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b4
Removing instruction jmp __b2
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b2
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b6
Removing instruction jmp __b8
Removing instruction jmp __b12
Removing instruction jmp __b9
Removing instruction jmp __b11
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction ldy.z conio_cursor_x
Removing instruction lda #0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction ldy #0
Removing instruction lda #'r'
Replacing instruction lda #0 with TXA
Replacing instruction ldy #0 with TAY
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __b2_from_conio_c64_init with __b1
Replacing label __b1_from_cputc with __b1
Replacing label __b3_from_gotoxy with __b2
Replacing label __b1 with __b2
Replacing label __b1_from_assert_uint with __b1
Replacing label __b1_from_assert_uint with __b1
Replacing label __b1_from_assert_ptr with __b1
Replacing label __b1_from_assert_ptr with __b1
Replacing label __b1_from___b2 with __b1
Replacing label __b1_from___b2 with __b1
Replacing label __b2_from___b3 with __b2
Replacing label __b2_from___b1 with __b2
Removing instruction __b1_from___init1:
Removing instruction main_from___b1:
Removing instruction __b2_from_conio_c64_init:
Removing instruction __b2:
Removing instruction __b1_from___b2:
Removing instruction __b3_from___b2:
Removing instruction __b1_from_cputc:
Removing instruction __b1_from_main:
Removing instruction memchr_from___b1:
Removing instruction __b3_from___b2:
Removing instruction memchr_from___b3:
Removing instruction __b3_from_gotoxy:
Removing instruction __b3:
Removing instruction __b1_from___b3:
Removing instruction __b1:
Removing instruction __breturn_from___b4:
Removing instruction __b2_from_assert_uint:
Removing instruction textcolor_from___b2:
Removing instruction __b10_from___b2:
Removing instruction printf_str_from___b10:
Removing instruction __b11_from___b10:
Removing instruction printf_string_from___b11:
Removing instruction __b12_from___b11:
Removing instruction printf_str_from___b12:
Removing instruction __b1_from_assert_uint:
Removing instruction textcolor_from___b1:
Removing instruction __b3_from___b1:
Removing instruction printf_str_from___b3:
Removing instruction __b4_from___b3:
Removing instruction printf_uint_from___b4:
Removing instruction __b5_from___b4:
Removing instruction printf_str_from___b5:
Removing instruction __b7_from___b6:
Removing instruction printf_str_from___b7:
Removing instruction __b8_from___b7:
Removing instruction printf_string_from___b8:
Removing instruction __b9_from___b8:
Removing instruction printf_str_from___b9:
Removing instruction __b2_from_assert_ptr:
Removing instruction textcolor_from___b2:
Removing instruction __b10_from___b2:
Removing instruction printf_str_from___b10:
Removing instruction __b11_from___b10:
Removing instruction printf_string_from___b11:
Removing instruction __b12_from___b11:
Removing instruction printf_str_from___b12:
Removing instruction __b1_from_assert_ptr:
Removing instruction textcolor_from___b1:
Removing instruction __b3_from___b1:
Removing instruction printf_str_from___b3:
Removing instruction __b4_from___b3:
Removing instruction printf_uint_from___b4:
Removing instruction __b5_from___b4:
Removing instruction printf_str_from___b5:
Removing instruction __b7_from___b6:
Removing instruction printf_str_from___b7:
Removing instruction __b8_from___b7:
Removing instruction printf_string_from___b8:
Removing instruction __b9_from___b8:
Removing instruction printf_str_from___b9:
Removing instruction __b1_from_cscroll:
Removing instruction memcpy_from___b1:
Removing instruction __b2_from___b1:
Removing instruction memcpy_from___b2:
Removing instruction __b3_from___b2:
Removing instruction memset_from___b3:
Removing instruction __b1_from_printf_str:
Removing instruction __b1_from___b2:
Removing instruction printf_str_from___b1:
Removing instruction __b1_from_memcpy:
Removing instruction __b1_from___b2:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b3:
Removing instruction __b6_from___b1:
Removing instruction __b9_from___b12:
Removing instruction utoa_append_from___b10:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b3:
Removing instruction printf_str_from___b2:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __init1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b1_from_conio_c64_init:
Removing instruction __breturn:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction clrscr_from_main:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction __b1_from_gotoxy:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1_from_clrscr:
Removing instruction __b2:
Removing instruction __breturn:
Removing instruction __b5:
Removing instruction __b1_from___b5:
Removing instruction __b3_from___b4:
Removing instruction __b1_from_memchr:
Removing instruction __breturn_from___b1:
Removing instruction __b4:
Removing instruction __b1_from___b3:
Removing instruction __b2:
Removing instruction __b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction printf_uint_from___b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b2:
Removing instruction __b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction printf_uint_from___b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction memset_from___b4:
Removing instruction __b5:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction printf_number_buffer_from___b2:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b8:
Removing instruction __b12:
Removing instruction __b6_from___b9:
Removing instruction __b11:
Removing instruction __b9_from___b11:
Removing instruction __b1:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b1_from_utoa_append:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Succesful ASM optimization Pass5UnusedLabelElimination
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label __b3_from___b1 to __b2
Relabelling long label __b1_from_utoa to __b2
Relabelling long label __b1_from___b2 to __b3
Relabelling long label __b1_from___b3 to __b4
Relabelling long label __b1_from___b4 to __b5
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Removing instruction jmp __b2
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda.z digit_value+1
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
__constant char BINARY = 2
__constant char * const COLORRAM = (char *) 55296
__constant char DECIMAL = $a
__constant char * const DEFAULT_SCREEN = (char *) 1024
__constant char DIGITS[] = "0123456789abcdef"z
__constant const char GREEN = 5
__constant char HEXADECIMAL = $10
__constant const char LIGHT_BLUE = $e
__constant char OCTAL = 8
__constant char OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant unsigned int RADIX_BINARY_VALUES[] = { $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2 }
__constant unsigned int RADIX_DECIMAL_VALUES[] = { $2710, $3e8, $64, $a }
__constant unsigned int RADIX_HEXADECIMAL_VALUES[] = { $1000, $100, $10 }
__constant unsigned int RADIX_OCTAL_VALUES[] = { $8000, $1000, $200, $40, 8 }
__constant const char RED = 2
__constant char SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c
__constant unsigned int STACK_BASE = $103
void __start()
void assert_ptr(void *expect , void *actual , char *message)
void *assert_ptr::actual
void *assert_ptr::actual#0 // actual zp[2]:2 11.2
void *assert_ptr::expect
__constant void *assert_ptr::expect#0 = (void *) 0 // expect
char *assert_ptr::message
__constant char assert_ptr::s[$1b] = "Assert failed. expected:0x"
__constant char assert_ptr::s1[$b] = " actual:0x"
void assert_uint(unsigned int expect , unsigned int actual , char *message)
unsigned int assert_uint::actual
unsigned int assert_uint::actual#0 // actual zp[2]:2 21.299999999999997
unsigned int assert_uint::expect
__constant unsigned int assert_uint::expect#0 = 8 // expect
char *assert_uint::message
__constant char assert_uint::s[$19] = "Assert failed. expected:"
__constant char assert_uint::s1[9] = " actual:"
void clrscr()
char clrscr::c
char clrscr::c#1 // reg byte y 20002.0
char clrscr::c#2 // reg byte y 12501.25
char clrscr::l
char clrscr::l#1 // reg byte x 2002.0
char clrscr::l#2 // reg byte x 333.6666666666667
char *clrscr::line_cols
char *clrscr::line_cols#1 // line_cols zp[2]:9 1001.0
char *clrscr::line_cols#5 // line_cols zp[2]:9 1500.375
char *clrscr::line_text
char *clrscr::line_text#1 // line_text zp[2]:4 667.3333333333334
char *clrscr::line_text#5 // line_text zp[2]:4 1714.7142857142858
void conio_c64_init()
__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *) 214
char conio_c64_init::line
char conio_c64_init::line#0 // reg byte x 11.0
char conio_c64_init::line#2 // reg byte x 22.0
__loadstore char conio_cursor_x // zp[1]:14 18295.243902439026
__loadstore char conio_cursor_y // zp[1]:15 326532.7448979592
__loadstore char *conio_line_color // zp[2]:18 230210.51041666666
__loadstore char *conio_line_text // zp[2]:16 227837.20618556702
__loadstore char conio_textcolor // zp[1]:20 127987.417721519
__stackcall void cputc(char c)
__constant char cputc::OFFSET_STACK_C = 0
char cputc::c
char cputc::c#0 // reg byte a 150001.5
void cputln()
void cscroll()
void gotoxy(char x , char y)
char *gotoxy::$5 // zp[2]:25 202.0
char *gotoxy::$6 // zp[2]:21 202.0
unsigned int gotoxy::$7 // zp[2]:21 151.5
unsigned int gotoxy::$8 // zp[2]:23 202.0
unsigned int gotoxy::$9 // zp[2]:21 202.0
unsigned int gotoxy::line_offset
unsigned int gotoxy::line_offset#0 // line_offset zp[2]:21 101.0
char gotoxy::x
__constant char gotoxy::x#2 = 0 // x
char gotoxy::y
char gotoxy::y#2 // reg byte x 71.0
char gotoxy::y#4 // reg byte x 67.33333333333333
void main()
__constant char main::message[$a] = "finding a"
__constant char main::message1[$e] = "not finding a"
char *main::ptr
char *main::ptr#0 // ptr zp[2]:2 22.0
char *main::ptr2
char *main::ptr2#0 // ptr2 zp[2]:2 11.0
__constant char *main::str = "this is a test"
void * memchr(const void *str , char c , unsigned int n)
char memchr::c
char memchr::c#4 // c zp[1]:8 166.83333333333334
unsigned int memchr::i
unsigned int memchr::i#1 // i zp[2]:9 2002.0
unsigned int memchr::i#2 // i zp[2]:9 750.75
unsigned int memchr::n
unsigned int memchr::n#3 // n zp[2]:4 166.83333333333334
char *memchr::ptr
char *memchr::ptr#1 // ptr zp[2]:2 1001.0
char *memchr::ptr#2 // ptr zp[2]:2 1001.0
void *memchr::return
void *memchr::return#2 // return zp[2]:2 30.75
void *memchr::return#3 // return zp[2]:2 11.0
void *memchr::return#4 // return zp[2]:2 11.0
void *memchr::return#8 // return zp[2]:2 202.0
const void *memchr::str
void * memcpy(void *destination , void *source , unsigned int num)
void *memcpy::destination
void *memcpy::destination#2 // destination zp[2]:29
char *memcpy::dst
char *memcpy::dst#1 // dst zp[2]:29 1.000000001E9
char *memcpy::dst#2 // dst zp[2]:29 1.0333333346666667E9
char *memcpy::dst#4 // dst zp[2]:29 2.00000002E8
unsigned int memcpy::num
void *memcpy::return
void *memcpy::source
void *memcpy::source#2 // source zp[2]:6
char *memcpy::src
char *memcpy::src#1 // src zp[2]:6 2.000000002E9
char *memcpy::src#2 // src zp[2]:6 1.02500000125E9
char *memcpy::src#4 // src zp[2]:6 1.00000001E8
char *memcpy::src_end
char *memcpy::src_end#0 // src_end zp[2]:27 1.3750000025E8
void * memset(void *str , char c , unsigned int num)
char memset::c
char memset::c#1 // reg byte x 2.0000002E7
char memset::c#4 // reg byte x 1.4428571457142857E8
char *memset::dst
char *memset::dst#1 // dst zp[2]:6 2.000000002E9
char *memset::dst#2 // dst zp[2]:6 1.3666666683333335E9
char *memset::dst#4 // dst zp[2]:6 2.00000002E8
char *memset::end
char *memset::end#0 // end zp[2]:29 1.833333336666667E8
unsigned int memset::num
void *memset::return
void *memset::str
void *memset::str#3 // str zp[2]:6
__loadstore struct printf_buffer_number printf_buffer = {} // mem[12]
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
struct printf_buffer_number printf_number_buffer::buffer
char *printf_number_buffer::buffer_digits
__constant char *printf_number_buffer::buffer_digits#0 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS // buffer_digits
char printf_number_buffer::buffer_sign
char printf_number_buffer::buffer_sign#0 // reg byte a 7001.0
struct printf_format_number printf_number_buffer::format
char printf_number_buffer::format_justify_left
char printf_number_buffer::format_min_length
char printf_number_buffer::format_radix
char printf_number_buffer::format_sign_always
char printf_number_buffer::format_upper_case
char printf_number_buffer::format_zero_padding
signed char printf_number_buffer::len
signed char printf_number_buffer::padding
void (*printf_number_buffer::putc)(char)
__constant void (*printf_number_buffer::putc#0)(char) = &cputc // putc
void printf_str(void (*putc)(char) , const char *s)
char printf_str::c
char printf_str::c#1 // reg byte a 1000001.0
void (*printf_str::putc)(char)
void (*printf_str::putc#16)(char) // putc zp[2]:4
const char *printf_str::s
const char *printf_str::s#0 // s zp[2]:9 1000001.0
const char *printf_str::s#15 // s zp[2]:9 1550002.0
const char *printf_str::s#16 // s zp[2]:9 101002.0
const char *printf_str::s#2 // s zp[2]:9 2002.0
void printf_string(void (*putc)(char) , char *str , char format_min_length , char format_justify_left)
struct printf_format_string printf_string::format
char printf_string::format_justify_left
char printf_string::format_min_length
signed char printf_string::len
signed char printf_string::padding
void (*printf_string::putc)(char)
char *printf_string::str
char *printf_string::str#10 // str zp[2]:9 1001.0
void printf_uint(void (*putc)(char) , unsigned int uvalue , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
struct printf_format_number printf_uint::format
char printf_uint::format_justify_left
char printf_uint::format_min_length
char printf_uint::format_radix
char printf_uint::format_radix#4 // reg byte x 333.6666666666667
char printf_uint::format_sign_always
char printf_uint::format_upper_case
char printf_uint::format_zero_padding
void (*printf_uint::putc)(char)
unsigned int printf_uint::uvalue
unsigned int printf_uint::uvalue#1 // uvalue zp[2]:4 202.0
unsigned int printf_uint::uvalue#3 // uvalue zp[2]:4 202.0
unsigned int printf_uint::uvalue#4 // uvalue zp[2]:4 601.5
__constant char s2[3] = ". "
__constant char s3[2] = "
"
__constant char s4[5] = "ok! "
char textcolor(char color)
char textcolor::color
char textcolor::color#4 // reg byte a 1001.0
char textcolor::old
char textcolor::return
void utoa(unsigned int value , char *buffer , char radix)
char utoa::$10 // reg byte a 200002.0
char utoa::$11 // reg byte x 20002.0
char utoa::$4 // reg byte a 200002.0
char *utoa::buffer
char *utoa::buffer#11 // buffer zp[2]:12 28000.4
char *utoa::buffer#14 // buffer zp[2]:12 150001.5
char *utoa::buffer#3 // buffer zp[2]:12 20002.0
char *utoa::buffer#4 // buffer zp[2]:12 200002.0
char utoa::digit
char utoa::digit#1 // digit zp[1]:11 200002.0
char utoa::digit#2 // digit zp[1]:11 26666.933333333334
unsigned int utoa::digit_value
unsigned int utoa::digit_value#0 // digit_value zp[2]:31 60000.600000000006
unsigned int *utoa::digit_values
unsigned int *utoa::digit_values#8 // digit_values zp[2]:9 5882.411764705882
char utoa::max_digits
char utoa::max_digits#7 // max_digits zp[1]:8 5882.411764705882
char utoa::radix
char utoa::radix#0 // reg byte x 10251.25
char utoa::started
char utoa::started#2 // reg byte x 42857.57142857143
char utoa::started#4 // reg byte x 100001.0
unsigned int utoa::value
unsigned int utoa::value#0 // value zp[2]:4 100001.0
unsigned int utoa::value#1 // value zp[2]:4 1571.7142857142858
unsigned int utoa::value#2 // value zp[2]:4 51250.625
unsigned int utoa::value#6 // value zp[2]:4 150001.5
unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
char *utoa_append::buffer
char *utoa_append::buffer#0 // buffer zp[2]:12 137500.25
char utoa_append::digit
char utoa_append::digit#1 // reg byte x 1.00000001E8
char utoa_append::digit#2 // reg byte x 1.005000015E8
unsigned int utoa_append::return
unsigned int utoa_append::return#0 // return zp[2]:4 200002.0
unsigned int utoa_append::sub
unsigned int utoa_append::sub#0 // sub zp[2]:31 3.33500005E7
unsigned int utoa_append::value
unsigned int utoa_append::value#0 // value zp[2]:4 366667.3333333334
unsigned int utoa_append::value#1 // value zp[2]:4 2.00000002E8
unsigned int utoa_append::value#2 // value zp[2]:4 5.018333416666667E7

reg byte x [ conio_c64_init::line#2 conio_c64_init::line#0 ]
reg byte x [ gotoxy::y#4 gotoxy::y#2 ]
reg byte x [ clrscr::l#2 clrscr::l#1 ]
reg byte y [ clrscr::c#2 clrscr::c#1 ]
zp[2]:2 [ memchr::ptr#2 memchr::ptr#1 memchr::return#2 memchr::return#8 memchr::return#3 main::ptr#0 memchr::return#4 main::ptr2#0 assert_uint::actual#0 assert_ptr::actual#0 ]
reg byte a [ textcolor::color#4 ]
zp[2]:4 [ printf_uint::uvalue#4 printf_uint::uvalue#3 printf_uint::uvalue#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 printf_str::putc#16 memchr::n#3 clrscr::line_text#5 clrscr::line_text#1 ]
reg byte x [ printf_uint::format_radix#4 ]
zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
reg byte x [ memset::c#4 memset::c#1 ]
zp[1]:8 [ utoa::max_digits#7 memchr::c#4 ]
zp[2]:9 [ utoa::digit_values#8 printf_str::s#15 printf_str::s#16 printf_str::s#2 printf_str::s#0 printf_string::str#10 memchr::i#2 memchr::i#1 clrscr::line_cols#5 clrscr::line_cols#1 ]
zp[1]:11 [ utoa::digit#2 utoa::digit#1 ]
reg byte x [ utoa::started#2 utoa::started#4 ]
zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ]
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
zp[1]:14 [ conio_cursor_x ]
zp[1]:15 [ conio_cursor_y ]
zp[2]:16 [ conio_line_text ]
zp[2]:18 [ conio_line_color ]
zp[1]:20 [ conio_textcolor ]
reg byte a [ cputc::c#0 ]
zp[2]:21 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
zp[2]:23 [ gotoxy::$8 ]
zp[2]:25 [ gotoxy::$5 ]
reg byte a [ printf_str::c#1 ]
reg byte x [ utoa::radix#0 ]
reg byte a [ printf_number_buffer::buffer_sign#0 ]
zp[2]:27 [ memcpy::src_end#0 ]
zp[2]:29 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
reg byte a [ utoa::$4 ]
reg byte x [ utoa::$11 ]
reg byte a [ utoa::$10 ]
zp[2]:31 [ utoa::digit_value#0 utoa_append::sub#0 ]
mem[12] [ printf_buffer ]


FINAL ASSEMBLER
Score: 12978

  // File Comments
// Test standard library <string.h> memchr()
  // Upstart
  // Commodore 64 PRG executable file
.file [name="stdlib-string-memchr-1.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(__start)
  // Global Constants & labels
  .const BINARY = 2
  .const OCTAL = 8
  .const DECIMAL = $a
  .const HEXADECIMAL = $10
  .const RED = 2
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = 1
  .const STACK_BASE = $103
  .const SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = $c
  /// Color Ram
  .label COLORRAM = $d800
  /// Default address of screen character matrix
  .label DEFAULT_SCREEN = $400
  // The number of bytes on the screen
  // The current cursor x-position
  .label conio_cursor_x = $e
  // The current cursor y-position
  .label conio_cursor_y = $f
  // The current text cursor line start
  .label conio_line_text = $10
  // The current color cursor line start
  .label conio_line_color = $12
  // The current text color
  .label conio_textcolor = $14
.segment Code
  // __start
__start: {
    // __start::__init1
    // __ma char conio_cursor_x = 0
    // [1] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // __ma char conio_cursor_y = 0
    // [2] conio_cursor_y = 0 -- vbuz1=vbuc1 
    sta.z conio_cursor_y
    // __ma char *conio_line_text = CONIO_SCREEN_TEXT
    // [3] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1 
    lda #<DEFAULT_SCREEN
    sta.z conio_line_text
    lda #>DEFAULT_SCREEN
    sta.z conio_line_text+1
    // __ma char *conio_line_color = CONIO_SCREEN_COLORS
    // [4] conio_line_color = COLORRAM -- pbuz1=pbuc1 
    lda #<COLORRAM
    sta.z conio_line_color
    lda #>COLORRAM
    sta.z conio_line_color+1
    // __ma char conio_textcolor = CONIO_TEXTCOLOR_DEFAULT
    // [5] conio_textcolor = LIGHT_BLUE -- vbuz1=vbuc1 
    lda #LIGHT_BLUE
    sta.z conio_textcolor
    // #pragma constructor_for(conio_c64_init, cputc, clrscr, cscroll)
    // [6] call conio_c64_init
    jsr conio_c64_init
    // [7] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
    // __start::@1
    // [8] call main
    // [28] phi from __start::@1 to main [phi:__start::@1->main]
    jsr main
    // __start::@return
    // [9] return 
    rts
}
  // conio_c64_init
// Set initial cursor position
conio_c64_init: {
    // Position cursor at current line
    .label BASIC_CURSOR_LINE = $d6
    // char line = *BASIC_CURSOR_LINE
    // [10] conio_c64_init::line#0 = *conio_c64_init::BASIC_CURSOR_LINE -- vbuxx=_deref_pbuc1 
    ldx BASIC_CURSOR_LINE
    // if(line>=CONIO_HEIGHT)
    // [11] if(conio_c64_init::line#0<$19) goto conio_c64_init::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$19
    bcc __b1
    // [13] phi from conio_c64_init to conio_c64_init::@1 [phi:conio_c64_init->conio_c64_init::@1]
    // [13] phi conio_c64_init::line#2 = $19-1 [phi:conio_c64_init->conio_c64_init::@1#0] -- vbuxx=vbuc1 
    ldx #$19-1
    // [12] phi from conio_c64_init to conio_c64_init::@2 [phi:conio_c64_init->conio_c64_init::@2]
    // conio_c64_init::@2
    // [13] phi from conio_c64_init::@2 to conio_c64_init::@1 [phi:conio_c64_init::@2->conio_c64_init::@1]
    // [13] phi conio_c64_init::line#2 = conio_c64_init::line#0 [phi:conio_c64_init::@2->conio_c64_init::@1#0] -- register_copy 
    // conio_c64_init::@1
  __b1:
    // gotoxy(0, line)
    // [14] gotoxy::y#2 = conio_c64_init::line#2
    // [15] call gotoxy
    jsr gotoxy
    // conio_c64_init::@return
    // }
    // [16] return 
    rts
}
  // cputc
// Output one character at the current cursor position
// Moves the cursor forward. Scrolls the entire screen if needed
// void cputc(__register(A) char c)
cputc: {
    .const OFFSET_STACK_C = 0
    // [17] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) -- vbuaa=_stackidxbyte_vbuc1 
    tsx
    lda STACK_BASE+OFFSET_STACK_C,x
    // if(c=='\n')
    // [18] if(cputc::c#0==' ') goto cputc::@1 -- vbuaa_eq_vbuc1_then_la1 
    cmp #'\n'
    beq __b1
    // cputc::@2
    // conio_line_text[conio_cursor_x] = c
    // [19] conio_line_text[conio_cursor_x] = cputc::c#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z conio_cursor_x
    sta (conio_line_text),y
    // conio_line_color[conio_cursor_x] = conio_textcolor
    // [20] conio_line_color[conio_cursor_x] = conio_textcolor -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z conio_textcolor
    sta (conio_line_color),y
    // if(++conio_cursor_x==CONIO_WIDTH)
    // [21] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_x
    // [22] if(conio_cursor_x!=$28) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$28
    cmp.z conio_cursor_x
    bne __breturn
    // [23] phi from cputc::@2 to cputc::@3 [phi:cputc::@2->cputc::@3]
    // cputc::@3
    // cputln()
    // [24] call cputln
    jsr cputln
    // cputc::@return
  __breturn:
    // }
    // [25] return 
    rts
    // [26] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
    // cputc::@1
  __b1:
    // cputln()
    // [27] call cputln
    jsr cputln
    rts
}
  // main
main: {
    .label ptr = 2
    .label ptr2 = 2
    // clrscr()
    // [29] call clrscr
    // [63] phi from main to clrscr [phi:main->clrscr]
    jsr clrscr
    // [30] phi from main to main::@1 [phi:main->main::@1]
    // main::@1
    // char* ptr = memchr( str, 'a', 14)
    // [31] call memchr
    // [79] phi from main::@1 to memchr [phi:main::@1->memchr]
    // [79] phi memchr::c#4 = 'a' [phi:main::@1->memchr#0] -- vbuz1=vbuc1 
    lda #'a'
    sta.z memchr.c
    // [79] phi memchr::n#3 = $e [phi:main::@1->memchr#1] -- vwuz1=vbuc1 
    lda #<$e
    sta.z memchr.n
    lda #>$e
    sta.z memchr.n+1
    jsr memchr
    // char* ptr = memchr( str, 'a', 14)
    // [32] memchr::return#3 = memchr::return#2
    // main::@2
    // [33] main::ptr#0 = (char *)memchr::return#3
    // assert_uint(8, (ptr-str), "finding a")
    // [34] assert_uint::actual#0 = main::ptr#0 - main::str -- vwuz1=pbuz1_minus_pbuc1 
    lda.z assert_uint.actual
    sec
    sbc #<str
    sta.z assert_uint.actual
    lda.z assert_uint.actual+1
    sbc #>str
    sta.z assert_uint.actual+1
    // [35] call assert_uint
    jsr assert_uint
    // [36] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
    // main::@3
    // char* ptr2 = memchr( str, 'a', 7)
    // [37] call memchr
    // [79] phi from main::@3 to memchr [phi:main::@3->memchr]
    // [79] phi memchr::c#4 = 'a' [phi:main::@3->memchr#0] -- vbuz1=vbuc1 
    lda #'a'
    sta.z memchr.c
    // [79] phi memchr::n#3 = 7 [phi:main::@3->memchr#1] -- vwuz1=vbuc1 
    lda #<7
    sta.z memchr.n
    lda #>7
    sta.z memchr.n+1
    jsr memchr
    // char* ptr2 = memchr( str, 'a', 7)
    // [38] memchr::return#4 = memchr::return#2
    // main::@4
    // [39] main::ptr2#0 = (char *)memchr::return#4
    // assert_ptr((void*)0, ptr2, "not finding a")
    // [40] assert_ptr::actual#0 = (void *)main::ptr2#0
    // [41] call assert_ptr
    jsr assert_ptr
    // main::@return
    // }
    // [42] return 
    rts
  .segment Data
    str: .text "this is a test"
    .byte 0
    message: .text "finding a"
    .byte 0
    message1: .text "not finding a"
    .byte 0
}
.segment Code
  // gotoxy
// Set the cursor to the specified position
// void gotoxy(char x, __register(X) char y)
gotoxy: {
    .const x = 0
    .label __5 = $19
    .label __6 = $15
    .label __7 = $15
    .label line_offset = $15
    .label __8 = $17
    .label __9 = $15
    // if(y>CONIO_HEIGHT)
    // [43] if(gotoxy::y#2<$19+1) goto gotoxy::@3 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$19+1
    bcc __b2
    // [45] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
    // [45] phi gotoxy::y#4 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [44] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
    // gotoxy::@3
    // [45] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
    // [45] phi gotoxy::y#4 = gotoxy::y#2 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy 
    // gotoxy::@1
    // gotoxy::@2
  __b2:
    // conio_cursor_x = x
    // [46] conio_cursor_x = gotoxy::x#2 -- vbuz1=vbuc1 
    lda #x
    sta.z conio_cursor_x
    // conio_cursor_y = y
    // [47] conio_cursor_y = gotoxy::y#4 -- vbuz1=vbuxx 
    stx.z conio_cursor_y
    // unsigned int line_offset = (unsigned int)y*CONIO_WIDTH
    // [48] gotoxy::$7 = (unsigned int)gotoxy::y#4 -- vwuz1=_word_vbuxx 
    txa
    sta.z __7
    lda #0
    sta.z __7+1
    // [49] gotoxy::$8 = gotoxy::$7 << 2 -- vwuz1=vwuz2_rol_2 
    lda.z __7
    asl
    sta.z __8
    lda.z __7+1
    rol
    sta.z __8+1
    asl.z __8
    rol.z __8+1
    // [50] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 -- vwuz1=vwuz2_plus_vwuz1 
    clc
    lda.z __9
    adc.z __8
    sta.z __9
    lda.z __9+1
    adc.z __8+1
    sta.z __9+1
    // [51] gotoxy::line_offset#0 = gotoxy::$9 << 3 -- vwuz1=vwuz1_rol_3 
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    // CONIO_SCREEN_TEXT + line_offset
    // [52] gotoxy::$5 = DEFAULT_SCREEN + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz2 
    lda.z line_offset
    clc
    adc #<DEFAULT_SCREEN
    sta.z __5
    lda.z line_offset+1
    adc #>DEFAULT_SCREEN
    sta.z __5+1
    // conio_line_text = CONIO_SCREEN_TEXT + line_offset
    // [53] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2 
    lda.z __5
    sta.z conio_line_text
    lda.z __5+1
    sta.z conio_line_text+1
    // CONIO_SCREEN_COLORS + line_offset
    // [54] gotoxy::$6 = COLORRAM + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __6
    clc
    adc #<COLORRAM
    sta.z __6
    lda.z __6+1
    adc #>COLORRAM
    sta.z __6+1
    // conio_line_color = CONIO_SCREEN_COLORS + line_offset
    // [55] conio_line_color = gotoxy::$6 -- pbuz1=pbuz2 
    lda.z __6
    sta.z conio_line_color
    lda.z __6+1
    sta.z conio_line_color+1
    // gotoxy::@return
    // }
    // [56] return 
    rts
}
  // cputln
// Print a newline
cputln: {
    // conio_line_text +=  CONIO_WIDTH
    // [57] conio_line_text = conio_line_text + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z conio_line_text
    sta.z conio_line_text
    bcc !+
    inc.z conio_line_text+1
  !:
    // conio_line_color += CONIO_WIDTH
    // [58] conio_line_color = conio_line_color + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z conio_line_color
    sta.z conio_line_color
    bcc !+
    inc.z conio_line_color+1
  !:
    // conio_cursor_x = 0
    // [59] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // conio_cursor_y++;
    // [60] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_y
    // cscroll()
    // [61] call cscroll
    jsr cscroll
    // cputln::@return
    // }
    // [62] return 
    rts
}
  // clrscr
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
clrscr: {
    .label line_text = 4
    .label line_cols = 9
    // [64] phi from clrscr to clrscr::@1 [phi:clrscr->clrscr::@1]
    // [64] phi clrscr::line_cols#5 = COLORRAM [phi:clrscr->clrscr::@1#0] -- pbuz1=pbuc1 
    lda #<COLORRAM
    sta.z line_cols
    lda #>COLORRAM
    sta.z line_cols+1
    // [64] phi clrscr::line_text#5 = DEFAULT_SCREEN [phi:clrscr->clrscr::@1#1] -- pbuz1=pbuc1 
    lda #<DEFAULT_SCREEN
    sta.z line_text
    lda #>DEFAULT_SCREEN
    sta.z line_text+1
    // [64] phi clrscr::l#2 = 0 [phi:clrscr->clrscr::@1#2] -- vbuxx=vbuc1 
    ldx #0
    // clrscr::@1
  __b1:
    // for( char l=0;l<CONIO_HEIGHT; l++ )
    // [65] if(clrscr::l#2<$19) goto clrscr::@3 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$19
    bcc __b2
    // clrscr::@2
    // conio_cursor_x = 0
    // [66] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // conio_cursor_y = 0
    // [67] conio_cursor_y = 0 -- vbuz1=vbuc1 
    sta.z conio_cursor_y
    // conio_line_text = CONIO_SCREEN_TEXT
    // [68] conio_line_text = DEFAULT_SCREEN -- pbuz1=pbuc1 
    lda #<DEFAULT_SCREEN
    sta.z conio_line_text
    lda #>DEFAULT_SCREEN
    sta.z conio_line_text+1
    // conio_line_color = CONIO_SCREEN_COLORS
    // [69] conio_line_color = COLORRAM -- pbuz1=pbuc1 
    lda #<COLORRAM
    sta.z conio_line_color
    lda #>COLORRAM
    sta.z conio_line_color+1
    // clrscr::@return
    // }
    // [70] return 
    rts
    // [71] phi from clrscr::@1 to clrscr::@3 [phi:clrscr::@1->clrscr::@3]
  __b2:
    // [71] phi clrscr::c#2 = 0 [phi:clrscr::@1->clrscr::@3#0] -- vbuyy=vbuc1 
    ldy #0
    // clrscr::@3
  __b3:
    // for( char c=0;c<CONIO_WIDTH; c++ )
    // [72] if(clrscr::c#2<$28) goto clrscr::@4 -- vbuyy_lt_vbuc1_then_la1 
    cpy #$28
    bcc __b4
    // clrscr::@5
    // line_text += CONIO_WIDTH
    // [73] clrscr::line_text#1 = clrscr::line_text#5 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z line_text
    sta.z line_text
    bcc !+
    inc.z line_text+1
  !:
    // line_cols += CONIO_WIDTH
    // [74] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z line_cols
    sta.z line_cols
    bcc !+
    inc.z line_cols+1
  !:
    // for( char l=0;l<CONIO_HEIGHT; l++ )
    // [75] clrscr::l#1 = ++ clrscr::l#2 -- vbuxx=_inc_vbuxx 
    inx
    // [64] phi from clrscr::@5 to clrscr::@1 [phi:clrscr::@5->clrscr::@1]
    // [64] phi clrscr::line_cols#5 = clrscr::line_cols#1 [phi:clrscr::@5->clrscr::@1#0] -- register_copy 
    // [64] phi clrscr::line_text#5 = clrscr::line_text#1 [phi:clrscr::@5->clrscr::@1#1] -- register_copy 
    // [64] phi clrscr::l#2 = clrscr::l#1 [phi:clrscr::@5->clrscr::@1#2] -- register_copy 
    jmp __b1
    // clrscr::@4
  __b4:
    // line_text[c] = ' '
    // [76] clrscr::line_text#5[clrscr::c#2] = ' ' -- pbuz1_derefidx_vbuyy=vbuc1 
    lda #' '
    sta (line_text),y
    // line_cols[c] = conio_textcolor
    // [77] clrscr::line_cols#5[clrscr::c#2] = conio_textcolor -- pbuz1_derefidx_vbuyy=vbuz2 
    lda.z conio_textcolor
    sta (line_cols),y
    // for( char c=0;c<CONIO_WIDTH; c++ )
    // [78] clrscr::c#1 = ++ clrscr::c#2 -- vbuyy=_inc_vbuyy 
    iny
    // [71] phi from clrscr::@4 to clrscr::@3 [phi:clrscr::@4->clrscr::@3]
    // [71] phi clrscr::c#2 = clrscr::c#1 [phi:clrscr::@4->clrscr::@3#0] -- register_copy 
    jmp __b3
}
  // memchr
// Searches for the first occurrence of the character c (an unsigned char) in the first n bytes of the string pointed to, by the argument str.
// - str: The memory to search
// - c: A character to search for
// - n: The number of bytes to look through
// Return: A pointer to the matching byte or NULL if the character does not occur in the given memory area.
// __zp(2) void * memchr(const void *str, __zp(8) char c, __zp(4) unsigned int n)
memchr: {
    .label ptr = 2
    .label i = 9
    .label return = 2
    .label n = 4
    .label c = 8
    // [80] phi from memchr to memchr::@1 [phi:memchr->memchr::@1]
    // [80] phi memchr::ptr#2 = (char *)(const void *)main::str [phi:memchr->memchr::@1#0] -- pbuz1=pbuc1 
    lda #<main.str
    sta.z ptr
    lda #>main.str
    sta.z ptr+1
    // [80] phi memchr::i#2 = 0 [phi:memchr->memchr::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    sta.z i+1
    // memchr::@1
  __b1:
    // for(size_t i=0;i<n;i++)
    // [81] if(memchr::i#2<memchr::n#3) goto memchr::@2 -- vwuz1_lt_vwuz2_then_la1 
    lda.z i+1
    cmp.z n+1
    bcc __b2
    bne !+
    lda.z i
    cmp.z n
    bcc __b2
  !:
    // [82] phi from memchr::@1 to memchr::@return [phi:memchr::@1->memchr::@return]
    // [82] phi memchr::return#2 = (void *) 0 [phi:memchr::@1->memchr::@return#0] -- pvoz1=pvoc1 
    lda #<0
    sta.z return
    sta.z return+1
    // memchr::@return
    // }
    // [83] return 
    rts
    // memchr::@2
  __b2:
    // if(*ptr==c)
    // [84] if(*memchr::ptr#2!=memchr::c#4) goto memchr::@3 -- _deref_pbuz1_neq_vbuz2_then_la1 
    ldy #0
    lda (ptr),y
    cmp.z c
    bne __b3
    // memchr::@4
    // [85] memchr::return#8 = (void *)memchr::ptr#2
    // [82] phi from memchr::@4 to memchr::@return [phi:memchr::@4->memchr::@return]
    // [82] phi memchr::return#2 = memchr::return#8 [phi:memchr::@4->memchr::@return#0] -- register_copy 
    rts
    // memchr::@3
  __b3:
    // ptr++;
    // [86] memchr::ptr#1 = ++ memchr::ptr#2 -- pbuz1=_inc_pbuz1 
    inc.z ptr
    bne !+
    inc.z ptr+1
  !:
    // for(size_t i=0;i<n;i++)
    // [87] memchr::i#1 = ++ memchr::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [80] phi from memchr::@3 to memchr::@1 [phi:memchr::@3->memchr::@1]
    // [80] phi memchr::ptr#2 = memchr::ptr#1 [phi:memchr::@3->memchr::@1#0] -- register_copy 
    // [80] phi memchr::i#2 = memchr::i#1 [phi:memchr::@3->memchr::@1#1] -- register_copy 
    jmp __b1
}
  // assert_uint
// void assert_uint(unsigned int expect, __zp(2) unsigned int actual, char *message)
assert_uint: {
    .const expect = 8
    .label actual = 2
    // if(expect!=actual)
    // [88] if(assert_uint::expect#0!=assert_uint::actual#0) goto assert_uint::@1 -- vwuc1_neq_vwuz1_then_la1 
    lda.z actual+1
    cmp #>expect
    bne __b1
    lda.z actual
    cmp #<expect
    bne __b1
    // [89] phi from assert_uint to assert_uint::@2 [phi:assert_uint->assert_uint::@2]
    // assert_uint::@2
    // textcolor(GREEN)
    // [90] call textcolor
    // [153] phi from assert_uint::@2 to textcolor [phi:assert_uint::@2->textcolor]
    // [153] phi textcolor::color#4 = GREEN [phi:assert_uint::@2->textcolor#0] -- vbuaa=vbuc1 
    lda #GREEN
    jsr textcolor
    // [91] phi from assert_uint::@2 to assert_uint::@10 [phi:assert_uint::@2->assert_uint::@10]
    // assert_uint::@10
    // printf("ok! %s\n", message)
    // [92] call printf_str
    // [156] phi from assert_uint::@10 to printf_str [phi:assert_uint::@10->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@10->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s4 [phi:assert_uint::@10->printf_str#1] -- pbuz1=pbuc1 
    lda #<s4
    sta.z printf_str.s
    lda #>s4
    sta.z printf_str.s+1
    jsr printf_str
    // [93] phi from assert_uint::@10 to assert_uint::@11 [phi:assert_uint::@10->assert_uint::@11]
    // assert_uint::@11
    // printf("ok! %s\n", message)
    // [94] call printf_string
    // [165] phi from assert_uint::@11 to printf_string [phi:assert_uint::@11->printf_string]
    // [165] phi printf_string::str#10 = main::message [phi:assert_uint::@11->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message
    sta.z printf_string.str
    lda #>main.message
    sta.z printf_string.str+1
    jsr printf_string
    // [95] phi from assert_uint::@11 to assert_uint::@12 [phi:assert_uint::@11->assert_uint::@12]
    // assert_uint::@12
    // printf("ok! %s\n", message)
    // [96] call printf_str
    // [156] phi from assert_uint::@12 to printf_str [phi:assert_uint::@12->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@12->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_uint::@12->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    // assert_uint::@return
    // }
    // [97] return 
    rts
    // [98] phi from assert_uint to assert_uint::@1 [phi:assert_uint->assert_uint::@1]
    // assert_uint::@1
  __b1:
    // textcolor(RED)
    // [99] call textcolor
    // [153] phi from assert_uint::@1 to textcolor [phi:assert_uint::@1->textcolor]
    // [153] phi textcolor::color#4 = RED [phi:assert_uint::@1->textcolor#0] -- vbuaa=vbuc1 
    lda #RED
    jsr textcolor
    // [100] phi from assert_uint::@1 to assert_uint::@3 [phi:assert_uint::@1->assert_uint::@3]
    // assert_uint::@3
    // printf("Assert failed. expected:%u actual:%u. %s\n", expect, actual, message)
    // [101] call printf_str
    // [156] phi from assert_uint::@3 to printf_str [phi:assert_uint::@3->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@3->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_uint::s [phi:assert_uint::@3->printf_str#1] -- pbuz1=pbuc1 
    lda #<s
    sta.z printf_str.s
    lda #>s
    sta.z printf_str.s+1
    jsr printf_str
    // [102] phi from assert_uint::@3 to assert_uint::@4 [phi:assert_uint::@3->assert_uint::@4]
    // assert_uint::@4
    // printf("Assert failed. expected:%u actual:%u. %s\n", expect, actual, message)
    // [103] call printf_uint
    // [169] phi from assert_uint::@4 to printf_uint [phi:assert_uint::@4->printf_uint]
    // [169] phi printf_uint::format_radix#4 = DECIMAL [phi:assert_uint::@4->printf_uint#0] -- vbuxx=vbuc1 
    ldx #DECIMAL
    // [169] phi printf_uint::uvalue#4 = assert_uint::expect#0 [phi:assert_uint::@4->printf_uint#1] -- vwuz1=vwuc1 
    lda #<expect
    sta.z printf_uint.uvalue
    lda #>expect
    sta.z printf_uint.uvalue+1
    jsr printf_uint
    // [104] phi from assert_uint::@4 to assert_uint::@5 [phi:assert_uint::@4->assert_uint::@5]
    // assert_uint::@5
    // printf("Assert failed. expected:%u actual:%u. %s\n", expect, actual, message)
    // [105] call printf_str
    // [156] phi from assert_uint::@5 to printf_str [phi:assert_uint::@5->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@5->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_uint::s1 [phi:assert_uint::@5->printf_str#1] -- pbuz1=pbuc1 
    lda #<s1
    sta.z printf_str.s
    lda #>s1
    sta.z printf_str.s+1
    jsr printf_str
    // assert_uint::@6
    // printf("Assert failed. expected:%u actual:%u. %s\n", expect, actual, message)
    // [106] printf_uint::uvalue#1 = assert_uint::actual#0 -- vwuz1=vwuz2 
    lda.z actual
    sta.z printf_uint.uvalue
    lda.z actual+1
    sta.z printf_uint.uvalue+1
    // [107] call printf_uint
    // [169] phi from assert_uint::@6 to printf_uint [phi:assert_uint::@6->printf_uint]
    // [169] phi printf_uint::format_radix#4 = DECIMAL [phi:assert_uint::@6->printf_uint#0] -- vbuxx=vbuc1 
    ldx #DECIMAL
    // [169] phi printf_uint::uvalue#4 = printf_uint::uvalue#1 [phi:assert_uint::@6->printf_uint#1] -- register_copy 
    jsr printf_uint
    // [108] phi from assert_uint::@6 to assert_uint::@7 [phi:assert_uint::@6->assert_uint::@7]
    // assert_uint::@7
    // printf("Assert failed. expected:%u actual:%u. %s\n", expect, actual, message)
    // [109] call printf_str
    // [156] phi from assert_uint::@7 to printf_str [phi:assert_uint::@7->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@7->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s2 [phi:assert_uint::@7->printf_str#1] -- pbuz1=pbuc1 
    lda #<s2
    sta.z printf_str.s
    lda #>s2
    sta.z printf_str.s+1
    jsr printf_str
    // [110] phi from assert_uint::@7 to assert_uint::@8 [phi:assert_uint::@7->assert_uint::@8]
    // assert_uint::@8
    // printf("Assert failed. expected:%u actual:%u. %s\n", expect, actual, message)
    // [111] call printf_string
    // [165] phi from assert_uint::@8 to printf_string [phi:assert_uint::@8->printf_string]
    // [165] phi printf_string::str#10 = main::message [phi:assert_uint::@8->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message
    sta.z printf_string.str
    lda #>main.message
    sta.z printf_string.str+1
    jsr printf_string
    // [112] phi from assert_uint::@8 to assert_uint::@9 [phi:assert_uint::@8->assert_uint::@9]
    // assert_uint::@9
    // printf("Assert failed. expected:%u actual:%u. %s\n", expect, actual, message)
    // [113] call printf_str
    // [156] phi from assert_uint::@9 to printf_str [phi:assert_uint::@9->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_uint::@9->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_uint::@9->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    rts
  .segment Data
    s: .text "Assert failed. expected:"
    .byte 0
    s1: .text " actual:"
    .byte 0
}
.segment Code
  // assert_ptr
// void assert_ptr(void *expect, __zp(2) void *actual, char *message)
assert_ptr: {
    .label expect = 0
    .label actual = 2
    // if(expect!=actual)
    // [114] if(assert_ptr::expect#0!=assert_ptr::actual#0) goto assert_ptr::@1 -- pvoc1_neq_pvoz1_then_la1 
    lda.z actual+1
    cmp #>expect
    bne __b1
    lda.z actual
    cmp #<expect
    bne __b1
    // [115] phi from assert_ptr to assert_ptr::@2 [phi:assert_ptr->assert_ptr::@2]
    // assert_ptr::@2
    // textcolor(GREEN)
    // [116] call textcolor
    // [153] phi from assert_ptr::@2 to textcolor [phi:assert_ptr::@2->textcolor]
    // [153] phi textcolor::color#4 = GREEN [phi:assert_ptr::@2->textcolor#0] -- vbuaa=vbuc1 
    lda #GREEN
    jsr textcolor
    // [117] phi from assert_ptr::@2 to assert_ptr::@10 [phi:assert_ptr::@2->assert_ptr::@10]
    // assert_ptr::@10
    // printf("ok! %s\n", message)
    // [118] call printf_str
    // [156] phi from assert_ptr::@10 to printf_str [phi:assert_ptr::@10->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@10->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s4 [phi:assert_ptr::@10->printf_str#1] -- pbuz1=pbuc1 
    lda #<s4
    sta.z printf_str.s
    lda #>s4
    sta.z printf_str.s+1
    jsr printf_str
    // [119] phi from assert_ptr::@10 to assert_ptr::@11 [phi:assert_ptr::@10->assert_ptr::@11]
    // assert_ptr::@11
    // printf("ok! %s\n", message)
    // [120] call printf_string
    // [165] phi from assert_ptr::@11 to printf_string [phi:assert_ptr::@11->printf_string]
    // [165] phi printf_string::str#10 = main::message1 [phi:assert_ptr::@11->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message1
    sta.z printf_string.str
    lda #>main.message1
    sta.z printf_string.str+1
    jsr printf_string
    // [121] phi from assert_ptr::@11 to assert_ptr::@12 [phi:assert_ptr::@11->assert_ptr::@12]
    // assert_ptr::@12
    // printf("ok! %s\n", message)
    // [122] call printf_str
    // [156] phi from assert_ptr::@12 to printf_str [phi:assert_ptr::@12->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@12->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_ptr::@12->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    // assert_ptr::@return
    // }
    // [123] return 
    rts
    // [124] phi from assert_ptr to assert_ptr::@1 [phi:assert_ptr->assert_ptr::@1]
    // assert_ptr::@1
  __b1:
    // textcolor(RED)
    // [125] call textcolor
    // [153] phi from assert_ptr::@1 to textcolor [phi:assert_ptr::@1->textcolor]
    // [153] phi textcolor::color#4 = RED [phi:assert_ptr::@1->textcolor#0] -- vbuaa=vbuc1 
    lda #RED
    jsr textcolor
    // [126] phi from assert_ptr::@1 to assert_ptr::@3 [phi:assert_ptr::@1->assert_ptr::@3]
    // assert_ptr::@3
    // printf("Assert failed. expected:0x%x actual:0x%x. %s\n", (unsigned int)expect, (unsigned int)actual, message)
    // [127] call printf_str
    // [156] phi from assert_ptr::@3 to printf_str [phi:assert_ptr::@3->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@3->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_ptr::s [phi:assert_ptr::@3->printf_str#1] -- pbuz1=pbuc1 
    lda #<s
    sta.z printf_str.s
    lda #>s
    sta.z printf_str.s+1
    jsr printf_str
    // [128] phi from assert_ptr::@3 to assert_ptr::@4 [phi:assert_ptr::@3->assert_ptr::@4]
    // assert_ptr::@4
    // printf("Assert failed. expected:0x%x actual:0x%x. %s\n", (unsigned int)expect, (unsigned int)actual, message)
    // [129] call printf_uint
    // [169] phi from assert_ptr::@4 to printf_uint [phi:assert_ptr::@4->printf_uint]
    // [169] phi printf_uint::format_radix#4 = HEXADECIMAL [phi:assert_ptr::@4->printf_uint#0] -- vbuxx=vbuc1 
    ldx #HEXADECIMAL
    // [169] phi printf_uint::uvalue#4 = 0 [phi:assert_ptr::@4->printf_uint#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z printf_uint.uvalue
    sta.z printf_uint.uvalue+1
    jsr printf_uint
    // [130] phi from assert_ptr::@4 to assert_ptr::@5 [phi:assert_ptr::@4->assert_ptr::@5]
    // assert_ptr::@5
    // printf("Assert failed. expected:0x%x actual:0x%x. %s\n", (unsigned int)expect, (unsigned int)actual, message)
    // [131] call printf_str
    // [156] phi from assert_ptr::@5 to printf_str [phi:assert_ptr::@5->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@5->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = assert_ptr::s1 [phi:assert_ptr::@5->printf_str#1] -- pbuz1=pbuc1 
    lda #<s1
    sta.z printf_str.s
    lda #>s1
    sta.z printf_str.s+1
    jsr printf_str
    // assert_ptr::@6
    // printf("Assert failed. expected:0x%x actual:0x%x. %s\n", (unsigned int)expect, (unsigned int)actual, message)
    // [132] printf_uint::uvalue#3 = (unsigned int)assert_ptr::actual#0 -- vwuz1=vwuz2 
    lda.z actual
    sta.z printf_uint.uvalue
    lda.z actual+1
    sta.z printf_uint.uvalue+1
    // [133] call printf_uint
    // [169] phi from assert_ptr::@6 to printf_uint [phi:assert_ptr::@6->printf_uint]
    // [169] phi printf_uint::format_radix#4 = HEXADECIMAL [phi:assert_ptr::@6->printf_uint#0] -- vbuxx=vbuc1 
    ldx #HEXADECIMAL
    // [169] phi printf_uint::uvalue#4 = printf_uint::uvalue#3 [phi:assert_ptr::@6->printf_uint#1] -- register_copy 
    jsr printf_uint
    // [134] phi from assert_ptr::@6 to assert_ptr::@7 [phi:assert_ptr::@6->assert_ptr::@7]
    // assert_ptr::@7
    // printf("Assert failed. expected:0x%x actual:0x%x. %s\n", (unsigned int)expect, (unsigned int)actual, message)
    // [135] call printf_str
    // [156] phi from assert_ptr::@7 to printf_str [phi:assert_ptr::@7->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@7->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s2 [phi:assert_ptr::@7->printf_str#1] -- pbuz1=pbuc1 
    lda #<s2
    sta.z printf_str.s
    lda #>s2
    sta.z printf_str.s+1
    jsr printf_str
    // [136] phi from assert_ptr::@7 to assert_ptr::@8 [phi:assert_ptr::@7->assert_ptr::@8]
    // assert_ptr::@8
    // printf("Assert failed. expected:0x%x actual:0x%x. %s\n", (unsigned int)expect, (unsigned int)actual, message)
    // [137] call printf_string
    // [165] phi from assert_ptr::@8 to printf_string [phi:assert_ptr::@8->printf_string]
    // [165] phi printf_string::str#10 = main::message1 [phi:assert_ptr::@8->printf_string#0] -- pbuz1=pbuc1 
    lda #<main.message1
    sta.z printf_string.str
    lda #>main.message1
    sta.z printf_string.str+1
    jsr printf_string
    // [138] phi from assert_ptr::@8 to assert_ptr::@9 [phi:assert_ptr::@8->assert_ptr::@9]
    // assert_ptr::@9
    // printf("Assert failed. expected:0x%x actual:0x%x. %s\n", (unsigned int)expect, (unsigned int)actual, message)
    // [139] call printf_str
    // [156] phi from assert_ptr::@9 to printf_str [phi:assert_ptr::@9->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:assert_ptr::@9->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = s3 [phi:assert_ptr::@9->printf_str#1] -- pbuz1=pbuc1 
    lda #<s3
    sta.z printf_str.s
    lda #>s3
    sta.z printf_str.s+1
    jsr printf_str
    rts
  .segment Data
    s: .text "Assert failed. expected:0x"
    .byte 0
    s1: .text " actual:0x"
    .byte 0
}
.segment Code
  // cscroll
// Scroll the entire screen if the cursor is beyond the last line
cscroll: {
    // if(conio_cursor_y==CONIO_HEIGHT)
    // [140] if(conio_cursor_y!=$19) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$19
    cmp.z conio_cursor_y
    bne __breturn
    // [141] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
    // cscroll::@1
    // memcpy(CONIO_SCREEN_TEXT, CONIO_SCREEN_TEXT+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
    // [142] call memcpy
    // [177] phi from cscroll::@1 to memcpy [phi:cscroll::@1->memcpy]
    // [177] phi memcpy::destination#2 = (void *)DEFAULT_SCREEN [phi:cscroll::@1->memcpy#0] -- pvoz1=pvoc1 
    lda #<DEFAULT_SCREEN
    sta.z memcpy.destination
    lda #>DEFAULT_SCREEN
    sta.z memcpy.destination+1
    // [177] phi memcpy::source#2 = (void *)DEFAULT_SCREEN+$28 [phi:cscroll::@1->memcpy#1] -- pvoz1=pvoc1 
    lda #<DEFAULT_SCREEN+$28
    sta.z memcpy.source
    lda #>DEFAULT_SCREEN+$28
    sta.z memcpy.source+1
    jsr memcpy
    // [143] phi from cscroll::@1 to cscroll::@2 [phi:cscroll::@1->cscroll::@2]
    // cscroll::@2
    // memcpy(CONIO_SCREEN_COLORS, CONIO_SCREEN_COLORS+CONIO_WIDTH, CONIO_BYTES-CONIO_WIDTH)
    // [144] call memcpy
    // [177] phi from cscroll::@2 to memcpy [phi:cscroll::@2->memcpy]
    // [177] phi memcpy::destination#2 = (void *)COLORRAM [phi:cscroll::@2->memcpy#0] -- pvoz1=pvoc1 
    lda #<COLORRAM
    sta.z memcpy.destination
    lda #>COLORRAM
    sta.z memcpy.destination+1
    // [177] phi memcpy::source#2 = (void *)COLORRAM+$28 [phi:cscroll::@2->memcpy#1] -- pvoz1=pvoc1 
    lda #<COLORRAM+$28
    sta.z memcpy.source
    lda #>COLORRAM+$28
    sta.z memcpy.source+1
    jsr memcpy
    // [145] phi from cscroll::@2 to cscroll::@3 [phi:cscroll::@2->cscroll::@3]
    // cscroll::@3
    // memset(CONIO_SCREEN_TEXT+CONIO_BYTES-CONIO_WIDTH, ' ', CONIO_WIDTH)
    // [146] call memset
    // [187] phi from cscroll::@3 to memset [phi:cscroll::@3->memset]
    // [187] phi memset::c#4 = ' ' [phi:cscroll::@3->memset#0] -- vbuxx=vbuc1 
    ldx #' '
    // [187] phi memset::str#3 = (void *)DEFAULT_SCREEN+(unsigned int)$19*$28-$28 [phi:cscroll::@3->memset#1] -- pvoz1=pvoc1 
    lda #<DEFAULT_SCREEN+$19*$28-$28
    sta.z memset.str
    lda #>DEFAULT_SCREEN+$19*$28-$28
    sta.z memset.str+1
    jsr memset
    // cscroll::@4
    // memset(CONIO_SCREEN_COLORS+CONIO_BYTES-CONIO_WIDTH, conio_textcolor, CONIO_WIDTH)
    // [147] memset::c#1 = conio_textcolor -- vbuxx=vbuz1 
    ldx.z conio_textcolor
    // [148] call memset
    // [187] phi from cscroll::@4 to memset [phi:cscroll::@4->memset]
    // [187] phi memset::c#4 = memset::c#1 [phi:cscroll::@4->memset#0] -- register_copy 
    // [187] phi memset::str#3 = (void *)COLORRAM+(unsigned int)$19*$28-$28 [phi:cscroll::@4->memset#1] -- pvoz1=pvoc1 
    lda #<COLORRAM+$19*$28-$28
    sta.z memset.str
    lda #>COLORRAM+$19*$28-$28
    sta.z memset.str+1
    jsr memset
    // cscroll::@5
    // conio_line_text -= CONIO_WIDTH
    // [149] conio_line_text = conio_line_text - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z conio_line_text
    sbc #$28
    sta.z conio_line_text
    lda.z conio_line_text+1
    sbc #0
    sta.z conio_line_text+1
    // conio_line_color -= CONIO_WIDTH
    // [150] conio_line_color = conio_line_color - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z conio_line_color
    sbc #$28
    sta.z conio_line_color
    lda.z conio_line_color+1
    sbc #0
    sta.z conio_line_color+1
    // conio_cursor_y--;
    // [151] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1 
    dec.z conio_cursor_y
    // cscroll::@return
  __breturn:
    // }
    // [152] return 
    rts
}
  // textcolor
// Set the color for text output. The old color setting is returned.
// char textcolor(__register(A) char color)
textcolor: {
    // conio_textcolor = color
    // [154] conio_textcolor = textcolor::color#4 -- vbuz1=vbuaa 
    sta.z conio_textcolor
    // textcolor::@return
    // }
    // [155] return 
    rts
}
  // printf_str
/// Print a NUL-terminated string
// void printf_str(__zp(4) void (*putc)(char), __zp(9) const char *s)
printf_str: {
    .label s = 9
    .label putc = 4
    // [157] phi from printf_str printf_str::@2 to printf_str::@1 [phi:printf_str/printf_str::@2->printf_str::@1]
    // [157] phi printf_str::s#15 = printf_str::s#16 [phi:printf_str/printf_str::@2->printf_str::@1#0] -- register_copy 
    // printf_str::@1
  __b1:
    // while(c=*s++)
    // [158] printf_str::c#1 = *printf_str::s#15 -- vbuaa=_deref_pbuz1 
    ldy #0
    lda (s),y
    // [159] printf_str::s#0 = ++ printf_str::s#15 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [160] if(0!=printf_str::c#1) goto printf_str::@2 -- 0_neq_vbuaa_then_la1 
    cmp #0
    bne __b2
    // printf_str::@return
    // }
    // [161] return 
    rts
    // printf_str::@2
  __b2:
    // putc(c)
    // [162] stackpush(char) = printf_str::c#1 -- _stackpushbyte_=vbuaa 
    pha
    // [163] callexecute *printf_str::putc#16  -- call__deref_pprz1 
    jsr icall1
    // sideeffect stackpullbytes(1) -- _stackpullbyte_1 
    pla
    jmp __b1
    // Outside Flow
  icall1:
    jmp (putc)
}
  // printf_string
// Print a string value using a specific format
// Handles justification and min length 
// void printf_string(void (*putc)(char), __zp(9) char *str, char format_min_length, char format_justify_left)
printf_string: {
    .label str = 9
    // printf_string::@1
    // printf_str(putc, str)
    // [166] printf_str::s#2 = printf_string::str#10
    // [167] call printf_str
    // [156] phi from printf_string::@1 to printf_str [phi:printf_string::@1->printf_str]
    // [156] phi printf_str::putc#16 = &cputc [phi:printf_string::@1->printf_str#0] -- pprz1=pprc1 
    lda #<cputc
    sta.z printf_str.putc
    lda #>cputc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = printf_str::s#2 [phi:printf_string::@1->printf_str#1] -- register_copy 
    jsr printf_str
    // printf_string::@return
    // }
    // [168] return 
    rts
}
  // printf_uint
// Print an unsigned int using a specific format
// void printf_uint(void (*putc)(char), __zp(4) unsigned int uvalue, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, __register(X) char format_radix)
printf_uint: {
    .label uvalue = 4
    // printf_uint::@1
    // printf_buffer.sign = format.sign_always?'+':0
    // [170] *((char *)&printf_buffer) = 0 -- _deref_pbuc1=vbuc2 
    // Handle any sign
    lda #0
    sta printf_buffer
    // utoa(uvalue, printf_buffer.digits, format.radix)
    // [171] utoa::value#1 = printf_uint::uvalue#4
    // [172] utoa::radix#0 = printf_uint::format_radix#4
    // [173] call utoa
    // Format number into buffer
    jsr utoa
    // printf_uint::@2
    // printf_number_buffer(putc, printf_buffer, format)
    // [174] printf_number_buffer::buffer_sign#0 = *((char *)&printf_buffer) -- vbuaa=_deref_pbuc1 
    lda printf_buffer
    // [175] call printf_number_buffer
  // Print using format
    // [225] phi from printf_uint::@2 to printf_number_buffer [phi:printf_uint::@2->printf_number_buffer]
    jsr printf_number_buffer
    // printf_uint::@return
    // }
    // [176] return 
    rts
}
  // memcpy
// Copy block of memory (forwards)
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
// void * memcpy(__zp($1d) void *destination, __zp(6) void *source, unsigned int num)
memcpy: {
    .label src_end = $1b
    .label dst = $1d
    .label src = 6
    .label source = 6
    .label destination = $1d
    // char* src_end = (char*)source+num
    // [178] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1 
    lda.z source
    clc
    adc #<$19*$28-$28
    sta.z src_end
    lda.z source+1
    adc #>$19*$28-$28
    sta.z src_end+1
    // [179] memcpy::src#4 = (char *)memcpy::source#2
    // [180] memcpy::dst#4 = (char *)memcpy::destination#2
    // [181] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1]
    // [181] phi memcpy::dst#2 = memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy 
    // [181] phi memcpy::src#2 = memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy 
    // memcpy::@1
  __b1:
    // while(src!=src_end)
    // [182] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda.z src+1
    cmp.z src_end+1
    bne __b2
    lda.z src
    cmp.z src_end
    bne __b2
    // memcpy::@return
    // }
    // [183] return 
    rts
    // memcpy::@2
  __b2:
    // *dst++ = *src++
    // [184] *memcpy::dst#2 = *memcpy::src#2 -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (src),y
    sta (dst),y
    // *dst++ = *src++;
    // [185] memcpy::dst#1 = ++ memcpy::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [186] memcpy::src#1 = ++ memcpy::src#2 -- pbuz1=_inc_pbuz1 
    inc.z src
    bne !+
    inc.z src+1
  !:
    jmp __b1
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(__zp(6) void *str, __register(X) char c, unsigned int num)
memset: {
    .label end = $1d
    .label dst = 6
    .label str = 6
    // memset::@1
    // char* end = (char*)str + num
    // [188] memset::end#0 = (char *)memset::str#3 + $28 -- pbuz1=pbuz2_plus_vbuc1 
    lda #$28
    clc
    adc.z str
    sta.z end
    lda #0
    adc.z str+1
    sta.z end+1
    // [189] memset::dst#4 = (char *)memset::str#3
    // [190] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
    // [190] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy 
    // memset::@2
  __b2:
    // for(char* dst = str; dst!=end; dst++)
    // [191] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 
    lda.z dst+1
    cmp.z end+1
    bne __b3
    lda.z dst
    cmp.z end
    bne __b3
    // memset::@return
    // }
    // [192] return 
    rts
    // memset::@3
  __b3:
    // *dst = c
    // [193] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [194] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp __b2
}
  // utoa
// Converts unsigned number value to a string representing it in RADIX format.
// If the leading digits are zero they are not included in the string.
// - value : The number to be converted to RADIX
// - buffer : receives the string representing the number and zero-termination.
// - radix : The radix to convert the number to (from the enum RADIX)
// void utoa(__zp(4) unsigned int value, __zp($c) char *buffer, __register(X) char radix)
utoa: {
    .label digit_value = $1f
    .label buffer = $c
    .label digit = $b
    .label value = 4
    .label max_digits = 8
    .label digit_values = 9
    // if(radix==DECIMAL)
    // [195] if(utoa::radix#0==DECIMAL) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #DECIMAL
    beq __b2
    // utoa::@2
    // if(radix==HEXADECIMAL)
    // [196] if(utoa::radix#0==HEXADECIMAL) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #HEXADECIMAL
    beq __b3
    // utoa::@3
    // if(radix==OCTAL)
    // [197] if(utoa::radix#0==OCTAL) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #OCTAL
    beq __b4
    // utoa::@4
    // if(radix==BINARY)
    // [198] if(utoa::radix#0==BINARY) goto utoa::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #BINARY
    beq __b5
    // utoa::@5
    // *buffer++ = 'e'
    // [199] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS) = 'e' -- _deref_pbuc1=vbuc2 
    // Unknown radix
    lda #'e'
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    // *buffer++ = 'r'
    // [200] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1) = 'r' -- _deref_pbuc1=vbuc2 
    lda #'r'
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+1
    // [201] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2) = 'r' -- _deref_pbuc1=vbuc2 
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+2
    // *buffer = 0
    // [202] *((char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3) = 0 -- _deref_pbuc1=vbuc2 
    lda #0
    sta printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS+3
    // utoa::@return
    // }
    // [203] return 
    rts
    // [204] phi from utoa to utoa::@1 [phi:utoa->utoa::@1]
  __b2:
    // [204] phi utoa::digit_values#8 = RADIX_DECIMAL_VALUES [phi:utoa->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_DECIMAL_VALUES
    sta.z digit_values
    lda #>RADIX_DECIMAL_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = 5 [phi:utoa->utoa::@1#1] -- vbuz1=vbuc1 
    lda #5
    sta.z max_digits
    jmp __b1
    // [204] phi from utoa::@2 to utoa::@1 [phi:utoa::@2->utoa::@1]
  __b3:
    // [204] phi utoa::digit_values#8 = RADIX_HEXADECIMAL_VALUES [phi:utoa::@2->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_HEXADECIMAL_VALUES
    sta.z digit_values
    lda #>RADIX_HEXADECIMAL_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = 4 [phi:utoa::@2->utoa::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z max_digits
    jmp __b1
    // [204] phi from utoa::@3 to utoa::@1 [phi:utoa::@3->utoa::@1]
  __b4:
    // [204] phi utoa::digit_values#8 = RADIX_OCTAL_VALUES [phi:utoa::@3->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_OCTAL_VALUES
    sta.z digit_values
    lda #>RADIX_OCTAL_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = 6 [phi:utoa::@3->utoa::@1#1] -- vbuz1=vbuc1 
    lda #6
    sta.z max_digits
    jmp __b1
    // [204] phi from utoa::@4 to utoa::@1 [phi:utoa::@4->utoa::@1]
  __b5:
    // [204] phi utoa::digit_values#8 = RADIX_BINARY_VALUES [phi:utoa::@4->utoa::@1#0] -- pwuz1=pwuc1 
    lda #<RADIX_BINARY_VALUES
    sta.z digit_values
    lda #>RADIX_BINARY_VALUES
    sta.z digit_values+1
    // [204] phi utoa::max_digits#7 = $10 [phi:utoa::@4->utoa::@1#1] -- vbuz1=vbuc1 
    lda #$10
    sta.z max_digits
    // utoa::@1
  __b1:
    // [205] phi from utoa::@1 to utoa::@6 [phi:utoa::@1->utoa::@6]
    // [205] phi utoa::buffer#11 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa::@1->utoa::@6#0] -- pbuz1=pbuc1 
    lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    sta.z buffer
    lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    sta.z buffer+1
    // [205] phi utoa::started#2 = 0 [phi:utoa::@1->utoa::@6#1] -- vbuxx=vbuc1 
    ldx #0
    // [205] phi utoa::value#2 = utoa::value#1 [phi:utoa::@1->utoa::@6#2] -- register_copy 
    // [205] phi utoa::digit#2 = 0 [phi:utoa::@1->utoa::@6#3] -- vbuz1=vbuc1 
    txa
    sta.z digit
    // utoa::@6
  __b6:
    // max_digits-1
    // [206] utoa::$4 = utoa::max_digits#7 - 1 -- vbuaa=vbuz1_minus_1 
    lda.z max_digits
    sec
    sbc #1
    // for( char digit=0; digit<max_digits-1; digit++ )
    // [207] if(utoa::digit#2<utoa::$4) goto utoa::@7 -- vbuz1_lt_vbuaa_then_la1 
    cmp.z digit
    beq !+
    bcs __b7
  !:
    // utoa::@8
    // *buffer++ = DIGITS[(char)value]
    // [208] utoa::$11 = (char)utoa::value#2 -- vbuxx=_byte_vwuz1 
    ldx.z value
    // [209] *utoa::buffer#11 = DIGITS[utoa::$11] -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda DIGITS,x
    ldy #0
    sta (buffer),y
    // *buffer++ = DIGITS[(char)value];
    // [210] utoa::buffer#3 = ++ utoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // *buffer = 0
    // [211] *utoa::buffer#3 = 0 -- _deref_pbuz1=vbuc1 
    lda #0
    tay
    sta (buffer),y
    rts
    // utoa::@7
  __b7:
    // unsigned int digit_value = digit_values[digit]
    // [212] utoa::$10 = utoa::digit#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z digit
    asl
    // [213] utoa::digit_value#0 = utoa::digit_values#8[utoa::$10] -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (digit_values),y
    sta.z digit_value
    iny
    lda (digit_values),y
    sta.z digit_value+1
    // if (started || value >= digit_value)
    // [214] if(0!=utoa::started#2) goto utoa::@10 -- 0_neq_vbuxx_then_la1 
    cpx #0
    bne __b10
    // utoa::@12
    // [215] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@10 -- vwuz1_ge_vwuz2_then_la1 
    cmp.z value+1
    bne !+
    lda.z digit_value
    cmp.z value
    beq __b10
  !:
    bcc __b10
    // [216] phi from utoa::@12 to utoa::@9 [phi:utoa::@12->utoa::@9]
    // [216] phi utoa::buffer#14 = utoa::buffer#11 [phi:utoa::@12->utoa::@9#0] -- register_copy 
    // [216] phi utoa::started#4 = utoa::started#2 [phi:utoa::@12->utoa::@9#1] -- register_copy 
    // [216] phi utoa::value#6 = utoa::value#2 [phi:utoa::@12->utoa::@9#2] -- register_copy 
    // utoa::@9
  __b9:
    // for( char digit=0; digit<max_digits-1; digit++ )
    // [217] utoa::digit#1 = ++ utoa::digit#2 -- vbuz1=_inc_vbuz1 
    inc.z digit
    // [205] phi from utoa::@9 to utoa::@6 [phi:utoa::@9->utoa::@6]
    // [205] phi utoa::buffer#11 = utoa::buffer#14 [phi:utoa::@9->utoa::@6#0] -- register_copy 
    // [205] phi utoa::started#2 = utoa::started#4 [phi:utoa::@9->utoa::@6#1] -- register_copy 
    // [205] phi utoa::value#2 = utoa::value#6 [phi:utoa::@9->utoa::@6#2] -- register_copy 
    // [205] phi utoa::digit#2 = utoa::digit#1 [phi:utoa::@9->utoa::@6#3] -- register_copy 
    jmp __b6
    // utoa::@10
  __b10:
    // utoa_append(buffer++, value, digit_value)
    // [218] utoa_append::buffer#0 = utoa::buffer#11
    // [219] utoa_append::value#0 = utoa::value#2
    // [220] utoa_append::sub#0 = utoa::digit_value#0
    // [221] call utoa_append
    // [233] phi from utoa::@10 to utoa_append [phi:utoa::@10->utoa_append]
    jsr utoa_append
    // utoa_append(buffer++, value, digit_value)
    // [222] utoa_append::return#0 = utoa_append::value#2
    // utoa::@11
    // value = utoa_append(buffer++, value, digit_value)
    // [223] utoa::value#0 = utoa_append::return#0
    // value = utoa_append(buffer++, value, digit_value);
    // [224] utoa::buffer#4 = ++ utoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // [216] phi from utoa::@11 to utoa::@9 [phi:utoa::@11->utoa::@9]
    // [216] phi utoa::buffer#14 = utoa::buffer#4 [phi:utoa::@11->utoa::@9#0] -- register_copy 
    // [216] phi utoa::started#4 = 1 [phi:utoa::@11->utoa::@9#1] -- vbuxx=vbuc1 
    ldx #1
    // [216] phi utoa::value#6 = utoa::value#0 [phi:utoa::@11->utoa::@9#2] -- register_copy 
    jmp __b9
}
  // printf_number_buffer
// Print the contents of the number buffer using a specific format.
// This handles minimum length, zero-filling, and left/right justification from the format
// void printf_number_buffer(void (*putc)(char), __register(A) char buffer_sign, char *buffer_digits, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
printf_number_buffer: {
    .label buffer_digits = printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
    .label putc = cputc
    // printf_number_buffer::@1
    // if(buffer.sign)
    // [226] if(0==printf_number_buffer::buffer_sign#0) goto printf_number_buffer::@2 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b2
    // printf_number_buffer::@3
    // putc(buffer.sign)
    // [227] stackpush(char) = printf_number_buffer::buffer_sign#0 -- _stackpushbyte_=vbuaa 
    pha
    // [228] callexecute cputc  -- call_vprc1 
    jsr cputc
    // sideeffect stackpullbytes(1) -- _stackpullbyte_1 
    pla
    // [230] phi from printf_number_buffer::@1 printf_number_buffer::@3 to printf_number_buffer::@2 [phi:printf_number_buffer::@1/printf_number_buffer::@3->printf_number_buffer::@2]
    // printf_number_buffer::@2
  __b2:
    // printf_str(putc, buffer.digits)
    // [231] call printf_str
    // [156] phi from printf_number_buffer::@2 to printf_str [phi:printf_number_buffer::@2->printf_str]
    // [156] phi printf_str::putc#16 = printf_number_buffer::putc#0 [phi:printf_number_buffer::@2->printf_str#0] -- pprz1=pprc1 
    lda #<putc
    sta.z printf_str.putc
    lda #>putc
    sta.z printf_str.putc+1
    // [156] phi printf_str::s#16 = printf_number_buffer::buffer_digits#0 [phi:printf_number_buffer::@2->printf_str#1] -- pbuz1=pbuc1 
    lda #<buffer_digits
    sta.z printf_str.s
    lda #>buffer_digits
    sta.z printf_str.s+1
    jsr printf_str
    // printf_number_buffer::@return
    // }
    // [232] return 
    rts
}
  // utoa_append
// Used to convert a single digit of an unsigned number value to a string representation
// Counts a single digit up from '0' as long as the value is larger than sub.
// Each time the digit is increased sub is subtracted from value.
// - buffer : pointer to the char that receives the digit
// - value : The value where the digit will be derived from
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
//        (For decimal the subs used are 10000, 1000, 100, 10, 1)
// returns : the value reduced by sub * digit so that it is less than sub.
// __zp(4) unsigned int utoa_append(__zp($c) char *buffer, __zp(4) unsigned int value, __zp($1f) unsigned int sub)
utoa_append: {
    .label buffer = $c
    .label value = 4
    .label sub = $1f
    .label return = 4
    // [234] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1]
    // [234] phi utoa_append::digit#2 = 0 [phi:utoa_append->utoa_append::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [234] phi utoa_append::value#2 = utoa_append::value#0 [phi:utoa_append->utoa_append::@1#1] -- register_copy 
    // utoa_append::@1
  __b1:
    // while (value >= sub)
    // [235] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 -- vwuz1_ge_vwuz2_then_la1 
    lda.z sub+1
    cmp.z value+1
    bne !+
    lda.z sub
    cmp.z value
    beq __b2
  !:
    bcc __b2
    // utoa_append::@3
    // *buffer = DIGITS[digit]
    // [236] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda DIGITS,x
    ldy #0
    sta (buffer),y
    // utoa_append::@return
    // }
    // [237] return 
    rts
    // utoa_append::@2
  __b2:
    // digit++;
    // [238] utoa_append::digit#1 = ++ utoa_append::digit#2 -- vbuxx=_inc_vbuxx 
    inx
    // value -= sub
    // [239] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z value
    sec
    sbc.z sub
    sta.z value
    lda.z value+1
    sbc.z sub+1
    sta.z value+1
    // [234] phi from utoa_append::@2 to utoa_append::@1 [phi:utoa_append::@2->utoa_append::@1]
    // [234] phi utoa_append::digit#2 = utoa_append::digit#1 [phi:utoa_append::@2->utoa_append::@1#0] -- register_copy 
    // [234] phi utoa_append::value#2 = utoa_append::value#1 [phi:utoa_append::@2->utoa_append::@1#1] -- register_copy 
    jmp __b1
}
  // File Data
.segment Data
  // The digits used for numbers
  DIGITS: .text "0123456789abcdef"
  // Values of binary digits
  RADIX_BINARY_VALUES: .word $8000, $4000, $2000, $1000, $800, $400, $200, $100, $80, $40, $20, $10, 8, 4, 2
  // Values of octal digits
  RADIX_OCTAL_VALUES: .word $8000, $1000, $200, $40, 8
  // Values of decimal digits
  RADIX_DECIMAL_VALUES: .word $2710, $3e8, $64, $a
  // Values of hexadecimal digits
  RADIX_HEXADECIMAL_VALUES: .word $1000, $100, $10
  s2: .text ". "
  .byte 0
  s3: .text @"\n"
  .byte 0
  s4: .text "ok! "
  .byte 0
  // Buffer used for stringified number being printed
  printf_buffer: .fill SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER, 0

