PARSING src/test/java/dk/camelot64/kickc/test/kc/constants.kc
import "print.kc"
const byte* BGCOL = $d021;
const byte GREEN = 5;
const byte RED = 2 ;

void main() {
    print_cls();
    *BGCOL = GREEN;
    test_bytes();
    test_sbytes();
}

// Test different byte constants
void test_bytes() {
    byte bb=0;
    assert_byte("0=0@", bb, 0);
    byte bc=bb+2;
    assert_byte("0+2=2@", bc, 2);
    byte bd=(byte)(bc-4);
    assert_byte("0+2-4=254@", bd, 254);
}

void assert_byte(byte* msg, byte b, byte c) {
    print_str(msg);
    print_str(" @");
    if(b!=c) {
        *BGCOL = RED;
        print_str("fail!@");
    } else {
        print_str("ok@");
    }
    print_ln();
}

// Test different signed byte constants
void test_sbytes() {
    signed byte bb=0;
    assert_sbyte("0=0@", bb, 0);
    signed byte bc=bb+2;
    assert_sbyte("0+2=2@", bc, 2);
    signed byte bd=bc-4;
    assert_sbyte("0+2-4=-2@", bd, -2);
    signed byte be=-bd;
    assert_sbyte("-(0+2-4)=2@", be, 2);
    signed byte bf=(signed byte)(-127-127);
    assert_sbyte("-127-127=2@", bf, 2);
}

void assert_sbyte(byte* msg, signed byte b, signed byte c) {
    print_str(msg);
    print_str(" @");
    if(b!=c) {
        *BGCOL = RED;
        print_str("fail!@");
    } else {
        print_str("ok@");
    }
    print_ln();
}

Importing print.kc
PARSING src/test/java/dk/camelot64/kickc/test/kc/print.kc

byte* line_cursor = $0400;
byte* char_cursor = line_cursor;

// Print a zero-terminated string
void print_str(byte* str) {
    while(*str!='@') {
        *(char_cursor++) = *(str++);
    }
}

// Print a newline
void print_ln() {
    do {
        line_cursor = line_cursor + $28;
    } while (line_cursor<char_cursor);
    char_cursor = line_cursor;
}

// Print a signed word as HEX
void print_sword(signed word w) {
    if(w<0) {
        print_char('-');
        w = -w;
    }
    print_word((word)w);
}

// Print a signed byte as HEX
void print_sbyte(signed byte b) {
    if(b<0) {
        print_char('-');
        b = -b;
    }
    print_byte((byte)b);
}

// Print a word as HEX
void print_word(word w) {
    print_byte(>w);
    print_byte(<w);
}

// Print a byte as HEX
void print_byte(byte b) {
    // Table of hexadecimal digits
    const byte[] hextab = "0123456789abcdef";
    print_char(hextab[b>>4]);
    print_char(hextab[b&$f]);
}

// Print a single char
void print_char(byte ch) {
    *(char_cursor++) = ch;
}

// Clear the screen
void print_cls() {
    for(byte* sc=$0400; sc!=$0400+1000; sc++) {
        *sc = ' ';
    }
}



Adding pre/post-modifier (byte*) char_cursor ← ++ (byte*) char_cursor
Adding pre/post-modifier (byte*) print_str::str ← ++ (byte*) print_str::str
Adding pre/post-modifier (byte*) char_cursor ← ++ (byte*) char_cursor
Adding pre/post-modifier (byte*) print_cls::sc ← ++ (byte*) print_cls::sc

STATEMENTS
  (byte*) line_cursor ← (word/signed word/dword/signed dword) 1024
  (byte*) char_cursor ← (byte*) line_cursor
proc (void()) print_str((byte*) print_str::str)
print_str::@1:
  (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@'
  if((boolean~) print_str::$0) goto print_str::@2
  goto print_str::@3
print_str::@2:
  *((byte*) char_cursor) ← *((byte*) print_str::str)
  (byte*) char_cursor ← ++ (byte*) char_cursor
  (byte*) print_str::str ← ++ (byte*) print_str::str
  goto print_str::@1
print_str::@3:
print_str::@return:
  return 
endproc // print_str()
proc (void()) print_ln()
print_ln::@1:
  (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) line_cursor ← (byte*~) print_ln::$0
  (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor
  if((boolean~) print_ln::$1) goto print_ln::@1
  (byte*) char_cursor ← (byte*) line_cursor
print_ln::@return:
  return 
endproc // print_ln()
proc (void()) print_sword((signed word) print_sword::w)
  (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0
  (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0
  if((boolean~) print_sword::$1) goto print_sword::@1
  (void~) print_sword::$2 ← call print_char (byte) '-' 
  (signed word~) print_sword::$3 ← - (signed word) print_sword::w
  (signed word) print_sword::w ← (signed word~) print_sword::$3
print_sword::@1:
  (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w
  (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 
print_sword::@return:
  return 
endproc // print_sword()
proc (void()) print_sbyte((signed byte) print_sbyte::b)
  (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0
  (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0
  if((boolean~) print_sbyte::$1) goto print_sbyte::@1
  (void~) print_sbyte::$2 ← call print_char (byte) '-' 
  (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b
  (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3
print_sbyte::@1:
  (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b
  (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 
print_sbyte::@return:
  return 
endproc // print_sbyte()
proc (void()) print_word((word) print_word::w)
  (byte~) print_word::$0 ← > (word) print_word::w
  (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 
  (byte~) print_word::$2 ← < (word) print_word::w
  (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 
print_word::@return:
  return 
endproc // print_word()
proc (void()) print_byte((byte) print_byte::b)
  (byte[]) print_byte::hextab ← (string) "0123456789abcdef"
  (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
  (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) 
  (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word/dword/signed dword) 15
  (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) 
print_byte::@return:
  return 
endproc // print_byte()
proc (void()) print_char((byte) print_char::ch)
  *((byte*) char_cursor) ← (byte) print_char::ch
  (byte*) char_cursor ← ++ (byte*) char_cursor
print_char::@return:
  return 
endproc // print_char()
proc (void()) print_cls()
  (byte*) print_cls::sc ← (word/signed word/dword/signed dword) 1024
print_cls::@1:
  *((byte*) print_cls::sc) ← (byte) ' '
  (byte*) print_cls::sc ← ++ (byte*) print_cls::sc
  (word/signed word/dword/signed dword~) print_cls::$0 ← (word/signed word/dword/signed dword) 1024 + (word/signed word/dword/signed dword) 1000
  (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (word/signed word/dword/signed dword~) print_cls::$0
  if((boolean~) print_cls::$1) goto print_cls::@1
print_cls::@return:
  return 
endproc // print_cls()
  (byte*) BGCOL ← (word/dword/signed dword) 53281
  (byte) GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) RED ← (byte/signed byte/word/signed word/dword/signed dword) 2
proc (void()) main()
  (void~) main::$0 ← call print_cls 
  *((byte*) BGCOL) ← (byte) GREEN
  (void~) main::$1 ← call test_bytes 
  (void~) main::$2 ← call test_sbytes 
main::@return:
  return 
endproc // main()
proc (void()) test_bytes()
  (byte) test_bytes::bb ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (void~) test_bytes::$0 ← call assert_byte (string) "0=0@" (byte) test_bytes::bb (byte/signed byte/word/signed word/dword/signed dword) 0 
  (byte/word~) test_bytes::$1 ← (byte) test_bytes::bb + (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) test_bytes::bc ← (byte/word~) test_bytes::$1
  (void~) test_bytes::$2 ← call assert_byte (string) "0+2=2@" (byte) test_bytes::bc (byte/signed byte/word/signed word/dword/signed dword) 2 
  (byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3 ← (byte) test_bytes::bc - (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte~) test_bytes::$4 ← ((byte)) (byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3
  (byte) test_bytes::bd ← (byte~) test_bytes::$4
  (void~) test_bytes::$5 ← call assert_byte (string) "0+2-4=254@" (byte) test_bytes::bd (byte/word/signed word/dword/signed dword) 254 
test_bytes::@return:
  return 
endproc // test_bytes()
proc (void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c)
  (void~) assert_byte::$0 ← call print_str (byte*) assert_byte::msg 
  (void~) assert_byte::$1 ← call print_str (string) " @" 
  (boolean~) assert_byte::$2 ← (byte) assert_byte::b != (byte) assert_byte::c
  (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2
  if((boolean~) assert_byte::$3) goto assert_byte::@1
  *((byte*) BGCOL) ← (byte) RED
  (void~) assert_byte::$4 ← call print_str (string) "fail!@" 
  goto assert_byte::@2
assert_byte::@1:
  (void~) assert_byte::$5 ← call print_str (string) "ok@" 
assert_byte::@2:
  (void~) assert_byte::$6 ← call print_ln 
assert_byte::@return:
  return 
endproc // assert_byte()
proc (void()) test_sbytes()
  (signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (void~) test_sbytes::$0 ← call assert_sbyte (string) "0=0@" (signed byte) test_sbytes::bb (byte/signed byte/word/signed word/dword/signed dword) 0 
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1 ← (signed byte) test_sbytes::bb + (byte/signed byte/word/signed word/dword/signed dword) 2
  (signed byte) test_sbytes::bc ← (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1
  (void~) test_sbytes::$2 ← call assert_sbyte (string) "0+2=2@" (signed byte) test_sbytes::bc (byte/signed byte/word/signed word/dword/signed dword) 2 
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3 ← (signed byte) test_sbytes::bc - (byte/signed byte/word/signed word/dword/signed dword) 4
  (signed byte) test_sbytes::bd ← (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3
  (signed byte/signed word/signed dword~) test_sbytes::$4 ← - (byte/signed byte/word/signed word/dword/signed dword) 2
  (void~) test_sbytes::$5 ← call assert_sbyte (string) "0+2-4=-2@" (signed byte) test_sbytes::bd (signed byte/signed word/signed dword~) test_sbytes::$4 
  (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd
  (signed byte) test_sbytes::be ← (signed byte~) test_sbytes::$6
  (void~) test_sbytes::$7 ← call assert_sbyte (string) "-(0+2-4)=2@" (signed byte) test_sbytes::be (byte/signed byte/word/signed word/dword/signed dword) 2 
  (signed byte/signed word/signed dword~) test_sbytes::$8 ← - (byte/signed byte/word/signed word/dword/signed dword) 127
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9 ← (signed byte/signed word/signed dword~) test_sbytes::$8 - (byte/signed byte/word/signed word/dword/signed dword) 127
  (signed byte~) test_sbytes::$10 ← ((signed byte)) (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9
  (signed byte) test_sbytes::bf ← (signed byte~) test_sbytes::$10
  (void~) test_sbytes::$11 ← call assert_sbyte (string) "-127-127=2@" (signed byte) test_sbytes::bf (byte/signed byte/word/signed word/dword/signed dword) 2 
test_sbytes::@return:
  return 
endproc // test_sbytes()
proc (void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
  (void~) assert_sbyte::$0 ← call print_str (byte*) assert_sbyte::msg 
  (void~) assert_sbyte::$1 ← call print_str (string) " @" 
  (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b != (signed byte) assert_sbyte::c
  (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2
  if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1
  *((byte*) BGCOL) ← (byte) RED
  (void~) assert_sbyte::$4 ← call print_str (string) "fail!@" 
  goto assert_sbyte::@2
assert_sbyte::@1:
  (void~) assert_sbyte::$5 ← call print_str (string) "ok@" 
assert_sbyte::@2:
  (void~) assert_sbyte::$6 ← call print_ln 
assert_sbyte::@return:
  return 
endproc // assert_sbyte()
  call main 

SYMBOLS
(byte*) BGCOL
(byte) GREEN
(byte) RED
(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c)
(void~) assert_byte::$0
(void~) assert_byte::$1
(boolean~) assert_byte::$2
(boolean~) assert_byte::$3
(void~) assert_byte::$4
(void~) assert_byte::$5
(void~) assert_byte::$6
(label) assert_byte::@1
(label) assert_byte::@2
(label) assert_byte::@return
(byte) assert_byte::b
(byte) assert_byte::c
(byte*) assert_byte::msg
(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
(void~) assert_sbyte::$0
(void~) assert_sbyte::$1
(boolean~) assert_sbyte::$2
(boolean~) assert_sbyte::$3
(void~) assert_sbyte::$4
(void~) assert_sbyte::$5
(void~) assert_sbyte::$6
(label) assert_sbyte::@1
(label) assert_sbyte::@2
(label) assert_sbyte::@return
(signed byte) assert_sbyte::b
(signed byte) assert_sbyte::c
(byte*) assert_sbyte::msg
(byte*) char_cursor
(byte*) line_cursor
(void()) main()
(void~) main::$0
(void~) main::$1
(void~) main::$2
(label) main::@return
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0
(void~) print_byte::$1
(byte~) print_byte::$2
(void~) print_byte::$3
(label) print_byte::@return
(byte) print_byte::b
(byte[]) print_byte::hextab
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(void()) print_cls()
(word/signed word/dword/signed dword~) print_cls::$0
(boolean~) print_cls::$1
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(void()) print_ln()
(byte*~) print_ln::$0
(boolean~) print_ln::$1
(label) print_ln::@1
(label) print_ln::@return
(void()) print_sbyte((signed byte) print_sbyte::b)
(boolean~) print_sbyte::$0
(boolean~) print_sbyte::$1
(void~) print_sbyte::$2
(signed byte~) print_sbyte::$3
(byte~) print_sbyte::$4
(void~) print_sbyte::$5
(label) print_sbyte::@1
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(void()) print_str((byte*) print_str::str)
(boolean~) print_str::$0
(label) print_str::@1
(label) print_str::@2
(label) print_str::@3
(label) print_str::@return
(byte*) print_str::str
(void()) print_sword((signed word) print_sword::w)
(boolean~) print_sword::$0
(boolean~) print_sword::$1
(void~) print_sword::$2
(signed word~) print_sword::$3
(word~) print_sword::$4
(void~) print_sword::$5
(label) print_sword::@1
(label) print_sword::@return
(signed word) print_sword::w
(void()) print_word((word) print_word::w)
(byte~) print_word::$0
(void~) print_word::$1
(byte~) print_word::$2
(void~) print_word::$3
(label) print_word::@return
(word) print_word::w
(void()) test_bytes()
(void~) test_bytes::$0
(byte/word~) test_bytes::$1
(void~) test_bytes::$2
(byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3
(byte~) test_bytes::$4
(void~) test_bytes::$5
(label) test_bytes::@return
(byte) test_bytes::bb
(byte) test_bytes::bc
(byte) test_bytes::bd
(void()) test_sbytes()
(void~) test_sbytes::$0
(byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1
(signed byte~) test_sbytes::$10
(void~) test_sbytes::$11
(void~) test_sbytes::$2
(byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3
(signed byte/signed word/signed dword~) test_sbytes::$4
(void~) test_sbytes::$5
(signed byte~) test_sbytes::$6
(void~) test_sbytes::$7
(signed byte/signed word/signed dword~) test_sbytes::$8
(byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9
(label) test_sbytes::@return
(signed byte) test_sbytes::bb
(signed byte) test_sbytes::bc
(signed byte) test_sbytes::bd
(signed byte) test_sbytes::be
(signed byte) test_sbytes::bf

Promoting word/signed word/dword/signed dword to byte* in line_cursor ← ((byte*)) 1024
Promoting word/signed word/dword/signed dword to byte* in print_cls::sc ← ((byte*)) 1024
Promoting word/dword/signed dword to byte* in BGCOL ← ((byte*)) 53281
INITIAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  (byte*) line_cursor ← ((byte*)) (word/signed word/dword/signed dword) 1024
  (byte*) char_cursor ← (byte*) line_cursor
  to:@1
print_str: scope:[print_str]  from
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@'
  if((boolean~) print_str::$0) goto print_str::@2
  to:print_str::@4
print_str::@2: scope:[print_str]  from print_str::@1 print_str::@5
  *((byte*) char_cursor) ← *((byte*) print_str::str)
  (byte*) char_cursor ← ++ (byte*) char_cursor
  (byte*) print_str::str ← ++ (byte*) print_str::str
  to:print_str::@1
print_str::@4: scope:[print_str]  from print_str::@1
  to:print_str::@3
print_str::@3: scope:[print_str]  from print_str::@4 print_str::@6
  to:print_str::@return
print_str::@5: scope:[print_str]  from
  to:print_str::@2
print_str::@6: scope:[print_str]  from
  to:print_str::@3
print_str::@return: scope:[print_str]  from print_str::@3
  return 
  to:@return
@1: scope:[]  from @begin
  to:@2
print_ln: scope:[print_ln]  from
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) line_cursor ← (byte*~) print_ln::$0
  (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor
  if((boolean~) print_ln::$1) goto print_ln::@1
  to:print_ln::@2
print_ln::@2: scope:[print_ln]  from print_ln::@1
  (byte*) char_cursor ← (byte*) line_cursor
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@2
  return 
  to:@return
@2: scope:[]  from @1
  to:@3
print_sword: scope:[print_sword]  from
  (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0
  (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0
  if((boolean~) print_sword::$1) goto print_sword::@1
  to:print_sword::@2
print_sword::@1: scope:[print_sword]  from print_sword print_sword::@2
  (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w
  (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 
  to:print_sword::@return
print_sword::@2: scope:[print_sword]  from print_sword
  (void~) print_sword::$2 ← call print_char (byte) '-' 
  (signed word~) print_sword::$3 ← - (signed word) print_sword::w
  (signed word) print_sword::w ← (signed word~) print_sword::$3
  to:print_sword::@1
print_sword::@return: scope:[print_sword]  from print_sword::@1
  return 
  to:@return
@3: scope:[]  from @2
  to:@4
print_sbyte: scope:[print_sbyte]  from
  (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0
  (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0
  if((boolean~) print_sbyte::$1) goto print_sbyte::@1
  to:print_sbyte::@2
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte print_sbyte::@2
  (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b
  (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 
  to:print_sbyte::@return
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte
  (void~) print_sbyte::$2 ← call print_char (byte) '-' 
  (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b
  (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3
  to:print_sbyte::@1
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@1
  return 
  to:@return
@4: scope:[]  from @3
  to:@5
print_word: scope:[print_word]  from
  (byte~) print_word::$0 ← > (word) print_word::w
  (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 
  (byte~) print_word::$2 ← < (word) print_word::w
  (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word
  return 
  to:@return
@5: scope:[]  from @4
  to:@6
print_byte: scope:[print_byte]  from
  (byte[]) print_byte::hextab ← (string) "0123456789abcdef"
  (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
  (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) 
  (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word/dword/signed dword) 15
  (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte
  return 
  to:@return
@6: scope:[]  from @5
  to:@7
print_char: scope:[print_char]  from
  *((byte*) char_cursor) ← (byte) print_char::ch
  (byte*) char_cursor ← ++ (byte*) char_cursor
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  return 
  to:@return
@7: scope:[]  from @6
  to:@8
print_cls: scope:[print_cls]  from
  (byte*) print_cls::sc ← ((byte*)) (word/signed word/dword/signed dword) 1024
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  *((byte*) print_cls::sc) ← (byte) ' '
  (byte*) print_cls::sc ← ++ (byte*) print_cls::sc
  (word/signed word/dword/signed dword~) print_cls::$0 ← (word/signed word/dword/signed dword) 1024 + (word/signed word/dword/signed dword) 1000
  (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (word/signed word/dword/signed dword~) print_cls::$0
  if((boolean~) print_cls::$1) goto print_cls::@1
  to:print_cls::@2
print_cls::@2: scope:[print_cls]  from print_cls::@1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@2
  return 
  to:@return
@8: scope:[]  from @7
  (byte*) BGCOL ← ((byte*)) (word/dword/signed dword) 53281
  (byte) GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) RED ← (byte/signed byte/word/signed word/dword/signed dword) 2
  to:@9
main: scope:[main]  from
  (void~) main::$0 ← call print_cls 
  *((byte*) BGCOL) ← (byte) GREEN
  (void~) main::$1 ← call test_bytes 
  (void~) main::$2 ← call test_sbytes 
  to:main::@return
main::@return: scope:[main]  from main
  return 
  to:@return
@9: scope:[]  from @8
  to:@10
test_bytes: scope:[test_bytes]  from
  (byte) test_bytes::bb ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (void~) test_bytes::$0 ← call assert_byte (string) "0=0@" (byte) test_bytes::bb (byte/signed byte/word/signed word/dword/signed dword) 0 
  (byte/word~) test_bytes::$1 ← (byte) test_bytes::bb + (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) test_bytes::bc ← (byte/word~) test_bytes::$1
  (void~) test_bytes::$2 ← call assert_byte (string) "0+2=2@" (byte) test_bytes::bc (byte/signed byte/word/signed word/dword/signed dword) 2 
  (byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3 ← (byte) test_bytes::bc - (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte~) test_bytes::$4 ← ((byte)) (byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3
  (byte) test_bytes::bd ← (byte~) test_bytes::$4
  (void~) test_bytes::$5 ← call assert_byte (string) "0+2-4=254@" (byte) test_bytes::bd (byte/word/signed word/dword/signed dword) 254 
  to:test_bytes::@return
test_bytes::@return: scope:[test_bytes]  from test_bytes
  return 
  to:@return
@10: scope:[]  from @9
  to:@11
assert_byte: scope:[assert_byte]  from
  (void~) assert_byte::$0 ← call print_str (byte*) assert_byte::msg 
  (void~) assert_byte::$1 ← call print_str (string) " @" 
  (boolean~) assert_byte::$2 ← (byte) assert_byte::b != (byte) assert_byte::c
  (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2
  if((boolean~) assert_byte::$3) goto assert_byte::@1
  to:assert_byte::@3
assert_byte::@1: scope:[assert_byte]  from assert_byte assert_byte::@4
  (void~) assert_byte::$5 ← call print_str (string) "ok@" 
  to:assert_byte::@2
assert_byte::@3: scope:[assert_byte]  from assert_byte
  *((byte*) BGCOL) ← (byte) RED
  (void~) assert_byte::$4 ← call print_str (string) "fail!@" 
  to:assert_byte::@2
assert_byte::@2: scope:[assert_byte]  from assert_byte::@1 assert_byte::@3
  (void~) assert_byte::$6 ← call print_ln 
  to:assert_byte::@return
assert_byte::@4: scope:[assert_byte]  from
  to:assert_byte::@1
assert_byte::@return: scope:[assert_byte]  from assert_byte::@2
  return 
  to:@return
@11: scope:[]  from @10
  to:@12
test_sbytes: scope:[test_sbytes]  from
  (signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (void~) test_sbytes::$0 ← call assert_sbyte (string) "0=0@" (signed byte) test_sbytes::bb (byte/signed byte/word/signed word/dword/signed dword) 0 
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1 ← (signed byte) test_sbytes::bb + (byte/signed byte/word/signed word/dword/signed dword) 2
  (signed byte) test_sbytes::bc ← (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1
  (void~) test_sbytes::$2 ← call assert_sbyte (string) "0+2=2@" (signed byte) test_sbytes::bc (byte/signed byte/word/signed word/dword/signed dword) 2 
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3 ← (signed byte) test_sbytes::bc - (byte/signed byte/word/signed word/dword/signed dword) 4
  (signed byte) test_sbytes::bd ← (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3
  (signed byte/signed word/signed dword~) test_sbytes::$4 ← - (byte/signed byte/word/signed word/dword/signed dword) 2
  (void~) test_sbytes::$5 ← call assert_sbyte (string) "0+2-4=-2@" (signed byte) test_sbytes::bd (signed byte/signed word/signed dword~) test_sbytes::$4 
  (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd
  (signed byte) test_sbytes::be ← (signed byte~) test_sbytes::$6
  (void~) test_sbytes::$7 ← call assert_sbyte (string) "-(0+2-4)=2@" (signed byte) test_sbytes::be (byte/signed byte/word/signed word/dword/signed dword) 2 
  (signed byte/signed word/signed dword~) test_sbytes::$8 ← - (byte/signed byte/word/signed word/dword/signed dword) 127
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9 ← (signed byte/signed word/signed dword~) test_sbytes::$8 - (byte/signed byte/word/signed word/dword/signed dword) 127
  (signed byte~) test_sbytes::$10 ← ((signed byte)) (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9
  (signed byte) test_sbytes::bf ← (signed byte~) test_sbytes::$10
  (void~) test_sbytes::$11 ← call assert_sbyte (string) "-127-127=2@" (signed byte) test_sbytes::bf (byte/signed byte/word/signed word/dword/signed dword) 2 
  to:test_sbytes::@return
test_sbytes::@return: scope:[test_sbytes]  from test_sbytes
  return 
  to:@return
@12: scope:[]  from @11
  to:@13
assert_sbyte: scope:[assert_sbyte]  from
  (void~) assert_sbyte::$0 ← call print_str (byte*) assert_sbyte::msg 
  (void~) assert_sbyte::$1 ← call print_str (string) " @" 
  (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b != (signed byte) assert_sbyte::c
  (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2
  if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1
  to:assert_sbyte::@3
assert_sbyte::@1: scope:[assert_sbyte]  from assert_sbyte assert_sbyte::@4
  (void~) assert_sbyte::$5 ← call print_str (string) "ok@" 
  to:assert_sbyte::@2
assert_sbyte::@3: scope:[assert_sbyte]  from assert_sbyte
  *((byte*) BGCOL) ← (byte) RED
  (void~) assert_sbyte::$4 ← call print_str (string) "fail!@" 
  to:assert_sbyte::@2
assert_sbyte::@2: scope:[assert_sbyte]  from assert_sbyte::@1 assert_sbyte::@3
  (void~) assert_sbyte::$6 ← call print_ln 
  to:assert_sbyte::@return
assert_sbyte::@4: scope:[assert_sbyte]  from
  to:assert_sbyte::@1
assert_sbyte::@return: scope:[assert_sbyte]  from assert_sbyte::@2
  return 
  to:@return
@13: scope:[]  from @12
  call main 
  to:@end
@end: scope:[]  from @13

Removing unused procedure print_sword
Removing unused procedure print_sbyte
Removing unused procedure print_word
Removing unused procedure print_byte
Removing unused procedure print_char
Eliminating unused variable - keeping the call (void~) main::$0
Eliminating unused variable - keeping the call (void~) main::$1
Eliminating unused variable - keeping the call (void~) main::$2
Eliminating unused variable - keeping the call (void~) test_bytes::$0
Eliminating unused variable - keeping the call (void~) test_bytes::$2
Eliminating unused variable - keeping the call (void~) test_bytes::$5
Eliminating unused variable - keeping the call (void~) assert_byte::$0
Eliminating unused variable - keeping the call (void~) assert_byte::$1
Eliminating unused variable - keeping the call (void~) assert_byte::$5
Eliminating unused variable - keeping the call (void~) assert_byte::$4
Eliminating unused variable - keeping the call (void~) assert_byte::$6
Eliminating unused variable - keeping the call (void~) test_sbytes::$0
Eliminating unused variable - keeping the call (void~) test_sbytes::$2
Eliminating unused variable - keeping the call (void~) test_sbytes::$5
Eliminating unused variable - keeping the call (void~) test_sbytes::$7
Eliminating unused variable - keeping the call (void~) test_sbytes::$11
Eliminating unused variable - keeping the call (void~) assert_sbyte::$0
Eliminating unused variable - keeping the call (void~) assert_sbyte::$1
Eliminating unused variable - keeping the call (void~) assert_sbyte::$5
Eliminating unused variable - keeping the call (void~) assert_sbyte::$4
Eliminating unused variable - keeping the call (void~) assert_sbyte::$6
Creating constant string variable for inline (const string) test_bytes::msg "0=0@"
Creating constant string variable for inline (const string) test_bytes::msg1 "0+2=2@"
Creating constant string variable for inline (const string) test_bytes::msg2 "0+2-4=254@"
Creating constant string variable for inline (const string) assert_byte::str " @"
Creating constant string variable for inline (const string) assert_byte::str1 "ok@"
Creating constant string variable for inline (const string) assert_byte::str2 "fail!@"
Creating constant string variable for inline (const string) test_sbytes::msg "0=0@"
Creating constant string variable for inline (const string) test_sbytes::msg1 "0+2=2@"
Creating constant string variable for inline (const string) test_sbytes::msg2 "0+2-4=-2@"
Creating constant string variable for inline (const string) test_sbytes::msg3 "-(0+2-4)=2@"
Creating constant string variable for inline (const string) test_sbytes::msg4 "-127-127=2@"
Creating constant string variable for inline (const string) assert_sbyte::str " @"
Creating constant string variable for inline (const string) assert_sbyte::str1 "ok@"
Creating constant string variable for inline (const string) assert_sbyte::str2 "fail!@"
Removing empty block print_str::@4
Removing empty block print_str::@3
Removing empty block print_str::@5
Removing empty block print_str::@6
Removing empty block @1
Removing empty block @2
Removing empty block @3
Removing empty block @4
Removing empty block @5
Removing empty block @6
Removing empty block @7
Removing empty block print_cls::@2
Removing empty block @9
Removing empty block @10
Removing empty block assert_byte::@4
Removing empty block @11
Removing empty block @12
Removing empty block assert_sbyte::@4
PROCEDURE MODIFY VARIABLE ANALYSIS
print_str modifies char_cursor
print_ln modifies line_cursor
print_ln modifies char_cursor
main modifies char_cursor
main modifies line_cursor
test_bytes modifies char_cursor
test_bytes modifies line_cursor
assert_byte modifies char_cursor
assert_byte modifies line_cursor
test_sbytes modifies char_cursor
test_sbytes modifies line_cursor
assert_sbyte modifies char_cursor
assert_sbyte modifies line_cursor

Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...

CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
@begin: scope:[]  from
  (byte*) line_cursor#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  (byte*) char_cursor#0 ← (byte*) line_cursor#0
  to:@8
print_str: scope:[print_str]  from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
  (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#66 assert_byte::@3/(byte*) char_cursor#67 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#71 assert_sbyte::@3/(byte*) char_cursor#72 assert_sbyte::@5/(byte*) char_cursor#24 )
  (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  (byte*) char_cursor#61 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 )
  (byte*) print_str::str#9 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 )
  (boolean~) print_str::$0 ← *((byte*) print_str::str#9) != (byte) '@'
  if((boolean~) print_str::$0) goto print_str::@2
  to:print_str::@return
print_str::@2: scope:[print_str]  from print_str::@1
  (byte*) char_cursor#31 ← phi( print_str::@1/(byte*) char_cursor#61 )
  (byte*) print_str::str#10 ← phi( print_str::@1/(byte*) print_str::str#9 )
  *((byte*) char_cursor#31) ← *((byte*) print_str::str#10)
  (byte*) char_cursor#1 ← ++ (byte*) char_cursor#31
  (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10
  to:print_str::@1
print_str::@return: scope:[print_str]  from print_str::@1
  (byte*) char_cursor#32 ← phi( print_str::@1/(byte*) char_cursor#61 )
  (byte*) char_cursor#2 ← (byte*) char_cursor#32
  return 
  to:@return
print_ln: scope:[print_ln]  from assert_byte::@2 assert_sbyte::@2
  (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 )
  (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 )
  (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 )
  (byte*~) print_ln::$0 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) line_cursor#1 ← (byte*~) print_ln::$0
  (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33
  if((boolean~) print_ln::$1) goto print_ln::@1
  to:print_ln::@2
print_ln::@2: scope:[print_ln]  from print_ln::@1
  (byte*) line_cursor#22 ← phi( print_ln::@1/(byte*) line_cursor#1 )
  (byte*) char_cursor#3 ← (byte*) line_cursor#22
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@2
  (byte*) char_cursor#34 ← phi( print_ln::@2/(byte*) char_cursor#3 )
  (byte*) line_cursor#23 ← phi( print_ln::@2/(byte*) line_cursor#22 )
  (byte*) line_cursor#2 ← (byte*) line_cursor#23
  (byte*) char_cursor#4 ← (byte*) char_cursor#34
  return 
  to:@return
print_cls: scope:[print_cls]  from main
  (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 )
  *((byte*) print_cls::sc#2) ← (byte) ' '
  (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
  (word/signed word/dword/signed dword~) print_cls::$0 ← (word/signed word/dword/signed dword) 1024 + (word/signed word/dword/signed dword) 1000
  (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word/dword/signed dword~) print_cls::$0
  if((boolean~) print_cls::$1) goto print_cls::@1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  return 
  to:@return
@8: scope:[]  from @begin
  (byte*) line_cursor#54 ← phi( @begin/(byte*) line_cursor#0 )
  (byte*) char_cursor#77 ← phi( @begin/(byte*) char_cursor#0 )
  (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
  (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  to:@13
main: scope:[main]  from @13
  (byte*) line_cursor#49 ← phi( @13/(byte*) line_cursor#48 )
  (byte*) char_cursor#76 ← phi( @13/(byte*) char_cursor#74 )
  call print_cls param-assignment
  to:main::@1
main::@1: scope:[main]  from main
  (byte*) line_cursor#43 ← phi( main/(byte*) line_cursor#49 )
  (byte*) char_cursor#63 ← phi( main/(byte*) char_cursor#76 )
  *((byte*) BGCOL#0) ← (byte) GREEN#0
  call test_bytes param-assignment
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#9 )
  (byte*) char_cursor#35 ← phi( main::@1/(byte*) char_cursor#11 )
  (byte*) char_cursor#5 ← (byte*) char_cursor#35
  (byte*) line_cursor#3 ← (byte*) line_cursor#24
  call test_sbytes param-assignment
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte*) line_cursor#25 ← phi( main::@2/(byte*) line_cursor#17 )
  (byte*) char_cursor#36 ← phi( main::@2/(byte*) char_cursor#23 )
  (byte*) char_cursor#6 ← (byte*) char_cursor#36
  (byte*) line_cursor#4 ← (byte*) line_cursor#25
  to:main::@return
main::@return: scope:[main]  from main::@3
  (byte*) line_cursor#26 ← phi( main::@3/(byte*) line_cursor#4 )
  (byte*) char_cursor#37 ← phi( main::@3/(byte*) char_cursor#6 )
  (byte*) char_cursor#7 ← (byte*) char_cursor#37
  (byte*) line_cursor#5 ← (byte*) line_cursor#26
  return 
  to:@return
test_bytes: scope:[test_bytes]  from main::@1
  (byte*) line_cursor#44 ← phi( main::@1/(byte*) line_cursor#43 )
  (byte*) char_cursor#64 ← phi( main::@1/(byte*) char_cursor#63 )
  (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*) assert_byte::msg#0 ← (const string) test_bytes::msg
  (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0
  (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  call assert_byte param-assignment
  to:test_bytes::@1
test_bytes::@1: scope:[test_bytes]  from test_bytes
  (byte) test_bytes::bb#1 ← phi( test_bytes/(byte) test_bytes::bb#0 )
  (byte*) line_cursor#27 ← phi( test_bytes/(byte*) line_cursor#11 )
  (byte*) char_cursor#38 ← phi( test_bytes/(byte*) char_cursor#17 )
  (byte*) char_cursor#8 ← (byte*) char_cursor#38
  (byte*) line_cursor#6 ← (byte*) line_cursor#27
  (byte/word~) test_bytes::$1 ← (byte) test_bytes::bb#1 + (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) test_bytes::bc#0 ← (byte/word~) test_bytes::$1
  (byte*) assert_byte::msg#1 ← (const string) test_bytes::msg1
  (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0
  (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  call assert_byte param-assignment
  to:test_bytes::@2
test_bytes::@2: scope:[test_bytes]  from test_bytes::@1
  (byte) test_bytes::bc#1 ← phi( test_bytes::@1/(byte) test_bytes::bc#0 )
  (byte*) line_cursor#28 ← phi( test_bytes::@1/(byte*) line_cursor#11 )
  (byte*) char_cursor#39 ← phi( test_bytes::@1/(byte*) char_cursor#17 )
  (byte*) char_cursor#9 ← (byte*) char_cursor#39
  (byte*) line_cursor#7 ← (byte*) line_cursor#28
  (byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3 ← (byte) test_bytes::bc#1 - (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte~) test_bytes::$4 ← ((byte)) (byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3
  (byte) test_bytes::bd#0 ← (byte~) test_bytes::$4
  (byte*) assert_byte::msg#2 ← (const string) test_bytes::msg2
  (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0
  (byte) assert_byte::c#2 ← (byte/word/signed word/dword/signed dword) 254
  call assert_byte param-assignment
  to:test_bytes::@3
test_bytes::@3: scope:[test_bytes]  from test_bytes::@2
  (byte*) line_cursor#29 ← phi( test_bytes::@2/(byte*) line_cursor#11 )
  (byte*) char_cursor#40 ← phi( test_bytes::@2/(byte*) char_cursor#17 )
  (byte*) char_cursor#10 ← (byte*) char_cursor#40
  (byte*) line_cursor#8 ← (byte*) line_cursor#29
  to:test_bytes::@return
test_bytes::@return: scope:[test_bytes]  from test_bytes::@3
  (byte*) line_cursor#30 ← phi( test_bytes::@3/(byte*) line_cursor#8 )
  (byte*) char_cursor#41 ← phi( test_bytes::@3/(byte*) char_cursor#10 )
  (byte*) char_cursor#11 ← (byte*) char_cursor#41
  (byte*) line_cursor#9 ← (byte*) line_cursor#30
  return 
  to:@return
assert_byte: scope:[assert_byte]  from test_bytes test_bytes::@1 test_bytes::@2
  (byte*) line_cursor#63 ← phi( test_bytes/(byte*) line_cursor#44 test_bytes::@1/(byte*) line_cursor#6 test_bytes::@2/(byte*) line_cursor#7 )
  (byte) assert_byte::c#5 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 )
  (byte) assert_byte::b#5 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 )
  (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#64 test_bytes::@1/(byte*) char_cursor#8 test_bytes::@2/(byte*) char_cursor#9 )
  (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 )
  (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3
  call print_str param-assignment
  to:assert_byte::@5
assert_byte::@5: scope:[assert_byte]  from assert_byte
  (byte*) line_cursor#61 ← phi( assert_byte/(byte*) line_cursor#63 )
  (byte) assert_byte::c#4 ← phi( assert_byte/(byte) assert_byte::c#5 )
  (byte) assert_byte::b#4 ← phi( assert_byte/(byte) assert_byte::b#5 )
  (byte*) char_cursor#42 ← phi( assert_byte/(byte*) char_cursor#2 )
  (byte*) char_cursor#12 ← (byte*) char_cursor#42
  (byte*) print_str::str#2 ← (const string) assert_byte::str
  call print_str param-assignment
  to:assert_byte::@6
assert_byte::@6: scope:[assert_byte]  from assert_byte::@5
  (byte*) line_cursor#59 ← phi( assert_byte::@5/(byte*) line_cursor#61 )
  (byte) assert_byte::c#3 ← phi( assert_byte::@5/(byte) assert_byte::c#4 )
  (byte) assert_byte::b#3 ← phi( assert_byte::@5/(byte) assert_byte::b#4 )
  (byte*) char_cursor#43 ← phi( assert_byte::@5/(byte*) char_cursor#2 )
  (byte*) char_cursor#13 ← (byte*) char_cursor#43
  (boolean~) assert_byte::$2 ← (byte) assert_byte::b#3 != (byte) assert_byte::c#3
  (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2
  if((boolean~) assert_byte::$3) goto assert_byte::@1
  to:assert_byte::@3
assert_byte::@1: scope:[assert_byte]  from assert_byte::@6
  (byte*) line_cursor#55 ← phi( assert_byte::@6/(byte*) line_cursor#59 )
  (byte*) char_cursor#66 ← phi( assert_byte::@6/(byte*) char_cursor#13 )
  (byte*) print_str::str#3 ← (const string) assert_byte::str1
  call print_str param-assignment
  to:assert_byte::@7
assert_byte::@7: scope:[assert_byte]  from assert_byte::@1
  (byte*) line_cursor#50 ← phi( assert_byte::@1/(byte*) line_cursor#55 )
  (byte*) char_cursor#44 ← phi( assert_byte::@1/(byte*) char_cursor#2 )
  (byte*) char_cursor#14 ← (byte*) char_cursor#44
  to:assert_byte::@2
assert_byte::@3: scope:[assert_byte]  from assert_byte::@6
  (byte*) line_cursor#56 ← phi( assert_byte::@6/(byte*) line_cursor#59 )
  (byte*) char_cursor#67 ← phi( assert_byte::@6/(byte*) char_cursor#13 )
  *((byte*) BGCOL#0) ← (byte) RED#0
  (byte*) print_str::str#4 ← (const string) assert_byte::str2
  call print_str param-assignment
  to:assert_byte::@8
assert_byte::@8: scope:[assert_byte]  from assert_byte::@3
  (byte*) line_cursor#51 ← phi( assert_byte::@3/(byte*) line_cursor#56 )
  (byte*) char_cursor#45 ← phi( assert_byte::@3/(byte*) char_cursor#2 )
  (byte*) char_cursor#15 ← (byte*) char_cursor#45
  to:assert_byte::@2
assert_byte::@2: scope:[assert_byte]  from assert_byte::@7 assert_byte::@8
  (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#14 assert_byte::@8/(byte*) char_cursor#15 )
  (byte*) line_cursor#45 ← phi( assert_byte::@7/(byte*) line_cursor#50 assert_byte::@8/(byte*) line_cursor#51 )
  call print_ln param-assignment
  to:assert_byte::@9
assert_byte::@9: scope:[assert_byte]  from assert_byte::@2
  (byte*) char_cursor#46 ← phi( assert_byte::@2/(byte*) char_cursor#4 )
  (byte*) line_cursor#31 ← phi( assert_byte::@2/(byte*) line_cursor#2 )
  (byte*) line_cursor#10 ← (byte*) line_cursor#31
  (byte*) char_cursor#16 ← (byte*) char_cursor#46
  to:assert_byte::@return
assert_byte::@return: scope:[assert_byte]  from assert_byte::@9
  (byte*) line_cursor#32 ← phi( assert_byte::@9/(byte*) line_cursor#10 )
  (byte*) char_cursor#47 ← phi( assert_byte::@9/(byte*) char_cursor#16 )
  (byte*) char_cursor#17 ← (byte*) char_cursor#47
  (byte*) line_cursor#11 ← (byte*) line_cursor#32
  return 
  to:@return
test_sbytes: scope:[test_sbytes]  from main::@2
  (byte*) line_cursor#46 ← phi( main::@2/(byte*) line_cursor#3 )
  (byte*) char_cursor#69 ← phi( main::@2/(byte*) char_cursor#5 )
  (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*) assert_sbyte::msg#0 ← (const string) test_sbytes::msg
  (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0
  (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  call assert_sbyte param-assignment
  to:test_sbytes::@1
test_sbytes::@1: scope:[test_sbytes]  from test_sbytes
  (signed byte) test_sbytes::bb#1 ← phi( test_sbytes/(signed byte) test_sbytes::bb#0 )
  (byte*) line_cursor#33 ← phi( test_sbytes/(byte*) line_cursor#19 )
  (byte*) char_cursor#48 ← phi( test_sbytes/(byte*) char_cursor#29 )
  (byte*) char_cursor#18 ← (byte*) char_cursor#48
  (byte*) line_cursor#12 ← (byte*) line_cursor#33
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1 ← (signed byte) test_sbytes::bb#1 + (byte/signed byte/word/signed word/dword/signed dword) 2
  (signed byte) test_sbytes::bc#0 ← (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1
  (byte*) assert_sbyte::msg#1 ← (const string) test_sbytes::msg1
  (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0
  (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  call assert_sbyte param-assignment
  to:test_sbytes::@2
test_sbytes::@2: scope:[test_sbytes]  from test_sbytes::@1
  (signed byte) test_sbytes::bc#1 ← phi( test_sbytes::@1/(signed byte) test_sbytes::bc#0 )
  (byte*) line_cursor#34 ← phi( test_sbytes::@1/(byte*) line_cursor#19 )
  (byte*) char_cursor#49 ← phi( test_sbytes::@1/(byte*) char_cursor#29 )
  (byte*) char_cursor#19 ← (byte*) char_cursor#49
  (byte*) line_cursor#13 ← (byte*) line_cursor#34
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3 ← (signed byte) test_sbytes::bc#1 - (byte/signed byte/word/signed word/dword/signed dword) 4
  (signed byte) test_sbytes::bd#0 ← (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3
  (signed byte/signed word/signed dword~) test_sbytes::$4 ← - (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte*) assert_sbyte::msg#2 ← (const string) test_sbytes::msg2
  (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0
  (signed byte) assert_sbyte::c#2 ← (signed byte/signed word/signed dword~) test_sbytes::$4
  call assert_sbyte param-assignment
  to:test_sbytes::@3
test_sbytes::@3: scope:[test_sbytes]  from test_sbytes::@2
  (signed byte) test_sbytes::bd#1 ← phi( test_sbytes::@2/(signed byte) test_sbytes::bd#0 )
  (byte*) line_cursor#35 ← phi( test_sbytes::@2/(byte*) line_cursor#19 )
  (byte*) char_cursor#50 ← phi( test_sbytes::@2/(byte*) char_cursor#29 )
  (byte*) char_cursor#20 ← (byte*) char_cursor#50
  (byte*) line_cursor#14 ← (byte*) line_cursor#35
  (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd#1
  (signed byte) test_sbytes::be#0 ← (signed byte~) test_sbytes::$6
  (byte*) assert_sbyte::msg#3 ← (const string) test_sbytes::msg3
  (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0
  (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  call assert_sbyte param-assignment
  to:test_sbytes::@4
test_sbytes::@4: scope:[test_sbytes]  from test_sbytes::@3
  (byte*) line_cursor#36 ← phi( test_sbytes::@3/(byte*) line_cursor#19 )
  (byte*) char_cursor#51 ← phi( test_sbytes::@3/(byte*) char_cursor#29 )
  (byte*) char_cursor#21 ← (byte*) char_cursor#51
  (byte*) line_cursor#15 ← (byte*) line_cursor#36
  (signed byte/signed word/signed dword~) test_sbytes::$8 ← - (byte/signed byte/word/signed word/dword/signed dword) 127
  (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9 ← (signed byte/signed word/signed dword~) test_sbytes::$8 - (byte/signed byte/word/signed word/dword/signed dword) 127
  (signed byte~) test_sbytes::$10 ← ((signed byte)) (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9
  (signed byte) test_sbytes::bf#0 ← (signed byte~) test_sbytes::$10
  (byte*) assert_sbyte::msg#4 ← (const string) test_sbytes::msg4
  (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0
  (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  call assert_sbyte param-assignment
  to:test_sbytes::@5
test_sbytes::@5: scope:[test_sbytes]  from test_sbytes::@4
  (byte*) line_cursor#37 ← phi( test_sbytes::@4/(byte*) line_cursor#19 )
  (byte*) char_cursor#52 ← phi( test_sbytes::@4/(byte*) char_cursor#29 )
  (byte*) char_cursor#22 ← (byte*) char_cursor#52
  (byte*) line_cursor#16 ← (byte*) line_cursor#37
  to:test_sbytes::@return
test_sbytes::@return: scope:[test_sbytes]  from test_sbytes::@5
  (byte*) line_cursor#38 ← phi( test_sbytes::@5/(byte*) line_cursor#16 )
  (byte*) char_cursor#53 ← phi( test_sbytes::@5/(byte*) char_cursor#22 )
  (byte*) char_cursor#23 ← (byte*) char_cursor#53
  (byte*) line_cursor#17 ← (byte*) line_cursor#38
  return 
  to:@return
assert_sbyte: scope:[assert_sbyte]  from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
  (byte*) line_cursor#64 ← phi( test_sbytes/(byte*) line_cursor#46 test_sbytes::@1/(byte*) line_cursor#12 test_sbytes::@2/(byte*) line_cursor#13 test_sbytes::@3/(byte*) line_cursor#14 test_sbytes::@4/(byte*) line_cursor#15 )
  (signed byte) assert_sbyte::c#7 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 )
  (signed byte) assert_sbyte::b#7 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 )
  (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) char_cursor#69 test_sbytes::@1/(byte*) char_cursor#18 test_sbytes::@2/(byte*) char_cursor#19 test_sbytes::@3/(byte*) char_cursor#20 test_sbytes::@4/(byte*) char_cursor#21 )
  (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 )
  (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
  call print_str param-assignment
  to:assert_sbyte::@5
assert_sbyte::@5: scope:[assert_sbyte]  from assert_sbyte
  (byte*) line_cursor#62 ← phi( assert_sbyte/(byte*) line_cursor#64 )
  (signed byte) assert_sbyte::c#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::c#7 )
  (signed byte) assert_sbyte::b#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::b#7 )
  (byte*) char_cursor#54 ← phi( assert_sbyte/(byte*) char_cursor#2 )
  (byte*) char_cursor#24 ← (byte*) char_cursor#54
  (byte*) print_str::str#6 ← (const string) assert_sbyte::str
  call print_str param-assignment
  to:assert_sbyte::@6
assert_sbyte::@6: scope:[assert_sbyte]  from assert_sbyte::@5
  (byte*) line_cursor#60 ← phi( assert_sbyte::@5/(byte*) line_cursor#62 )
  (signed byte) assert_sbyte::c#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::c#6 )
  (signed byte) assert_sbyte::b#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::b#6 )
  (byte*) char_cursor#55 ← phi( assert_sbyte::@5/(byte*) char_cursor#2 )
  (byte*) char_cursor#25 ← (byte*) char_cursor#55
  (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b#5 != (signed byte) assert_sbyte::c#5
  (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2
  if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1
  to:assert_sbyte::@3
assert_sbyte::@1: scope:[assert_sbyte]  from assert_sbyte::@6
  (byte*) line_cursor#57 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 )
  (byte*) char_cursor#71 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 )
  (byte*) print_str::str#7 ← (const string) assert_sbyte::str1
  call print_str param-assignment
  to:assert_sbyte::@7
assert_sbyte::@7: scope:[assert_sbyte]  from assert_sbyte::@1
  (byte*) line_cursor#52 ← phi( assert_sbyte::@1/(byte*) line_cursor#57 )
  (byte*) char_cursor#56 ← phi( assert_sbyte::@1/(byte*) char_cursor#2 )
  (byte*) char_cursor#26 ← (byte*) char_cursor#56
  to:assert_sbyte::@2
assert_sbyte::@3: scope:[assert_sbyte]  from assert_sbyte::@6
  (byte*) line_cursor#58 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 )
  (byte*) char_cursor#72 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 )
  *((byte*) BGCOL#0) ← (byte) RED#0
  (byte*) print_str::str#8 ← (const string) assert_sbyte::str2
  call print_str param-assignment
  to:assert_sbyte::@8
assert_sbyte::@8: scope:[assert_sbyte]  from assert_sbyte::@3
  (byte*) line_cursor#53 ← phi( assert_sbyte::@3/(byte*) line_cursor#58 )
  (byte*) char_cursor#57 ← phi( assert_sbyte::@3/(byte*) char_cursor#2 )
  (byte*) char_cursor#27 ← (byte*) char_cursor#57
  to:assert_sbyte::@2
assert_sbyte::@2: scope:[assert_sbyte]  from assert_sbyte::@7 assert_sbyte::@8
  (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#26 assert_sbyte::@8/(byte*) char_cursor#27 )
  (byte*) line_cursor#47 ← phi( assert_sbyte::@7/(byte*) line_cursor#52 assert_sbyte::@8/(byte*) line_cursor#53 )
  call print_ln param-assignment
  to:assert_sbyte::@9
assert_sbyte::@9: scope:[assert_sbyte]  from assert_sbyte::@2
  (byte*) char_cursor#58 ← phi( assert_sbyte::@2/(byte*) char_cursor#4 )
  (byte*) line_cursor#39 ← phi( assert_sbyte::@2/(byte*) line_cursor#2 )
  (byte*) line_cursor#18 ← (byte*) line_cursor#39
  (byte*) char_cursor#28 ← (byte*) char_cursor#58
  to:assert_sbyte::@return
assert_sbyte::@return: scope:[assert_sbyte]  from assert_sbyte::@9
  (byte*) line_cursor#40 ← phi( assert_sbyte::@9/(byte*) line_cursor#18 )
  (byte*) char_cursor#59 ← phi( assert_sbyte::@9/(byte*) char_cursor#28 )
  (byte*) char_cursor#29 ← (byte*) char_cursor#59
  (byte*) line_cursor#19 ← (byte*) line_cursor#40
  return 
  to:@return
@13: scope:[]  from @8
  (byte*) line_cursor#48 ← phi( @8/(byte*) line_cursor#54 )
  (byte*) char_cursor#74 ← phi( @8/(byte*) char_cursor#77 )
  call main param-assignment
  to:@14
@14: scope:[]  from @13
  (byte*) line_cursor#41 ← phi( @13/(byte*) line_cursor#5 )
  (byte*) char_cursor#60 ← phi( @13/(byte*) char_cursor#7 )
  (byte*) char_cursor#30 ← (byte*) char_cursor#60
  (byte*) line_cursor#20 ← (byte*) line_cursor#41
  to:@end
@end: scope:[]  from @14

SYMBOL TABLE SSA
(label) @13
(label) @14
(label) @8
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL#0
(byte) GREEN
(byte) GREEN#0
(byte) RED
(byte) RED#0
(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c)
(boolean~) assert_byte::$2
(boolean~) assert_byte::$3
(label) assert_byte::@1
(label) assert_byte::@2
(label) assert_byte::@3
(label) assert_byte::@5
(label) assert_byte::@6
(label) assert_byte::@7
(label) assert_byte::@8
(label) assert_byte::@9
(label) assert_byte::@return
(byte) assert_byte::b
(byte) assert_byte::b#0
(byte) assert_byte::b#1
(byte) assert_byte::b#2
(byte) assert_byte::b#3
(byte) assert_byte::b#4
(byte) assert_byte::b#5
(byte) assert_byte::c
(byte) assert_byte::c#0
(byte) assert_byte::c#1
(byte) assert_byte::c#2
(byte) assert_byte::c#3
(byte) assert_byte::c#4
(byte) assert_byte::c#5
(byte*) assert_byte::msg
(byte*) assert_byte::msg#0
(byte*) assert_byte::msg#1
(byte*) assert_byte::msg#2
(byte*) assert_byte::msg#3
(const string) assert_byte::str = (string) " @"
(const string) assert_byte::str1 = (string) "ok@"
(const string) assert_byte::str2 = (string) "fail!@"
(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
(boolean~) assert_sbyte::$2
(boolean~) assert_sbyte::$3
(label) assert_sbyte::@1
(label) assert_sbyte::@2
(label) assert_sbyte::@3
(label) assert_sbyte::@5
(label) assert_sbyte::@6
(label) assert_sbyte::@7
(label) assert_sbyte::@8
(label) assert_sbyte::@9
(label) assert_sbyte::@return
(signed byte) assert_sbyte::b
(signed byte) assert_sbyte::b#0
(signed byte) assert_sbyte::b#1
(signed byte) assert_sbyte::b#2
(signed byte) assert_sbyte::b#3
(signed byte) assert_sbyte::b#4
(signed byte) assert_sbyte::b#5
(signed byte) assert_sbyte::b#6
(signed byte) assert_sbyte::b#7
(signed byte) assert_sbyte::c
(signed byte) assert_sbyte::c#0
(signed byte) assert_sbyte::c#1
(signed byte) assert_sbyte::c#2
(signed byte) assert_sbyte::c#3
(signed byte) assert_sbyte::c#4
(signed byte) assert_sbyte::c#5
(signed byte) assert_sbyte::c#6
(signed byte) assert_sbyte::c#7
(byte*) assert_sbyte::msg
(byte*) assert_sbyte::msg#0
(byte*) assert_sbyte::msg#1
(byte*) assert_sbyte::msg#2
(byte*) assert_sbyte::msg#3
(byte*) assert_sbyte::msg#4
(byte*) assert_sbyte::msg#5
(const string) assert_sbyte::str = (string) " @"
(const string) assert_sbyte::str1 = (string) "ok@"
(const string) assert_sbyte::str2 = (string) "fail!@"
(byte*) char_cursor
(byte*) char_cursor#0
(byte*) char_cursor#1
(byte*) char_cursor#10
(byte*) char_cursor#11
(byte*) char_cursor#12
(byte*) char_cursor#13
(byte*) char_cursor#14
(byte*) char_cursor#15
(byte*) char_cursor#16
(byte*) char_cursor#17
(byte*) char_cursor#18
(byte*) char_cursor#19
(byte*) char_cursor#2
(byte*) char_cursor#20
(byte*) char_cursor#21
(byte*) char_cursor#22
(byte*) char_cursor#23
(byte*) char_cursor#24
(byte*) char_cursor#25
(byte*) char_cursor#26
(byte*) char_cursor#27
(byte*) char_cursor#28
(byte*) char_cursor#29
(byte*) char_cursor#3
(byte*) char_cursor#30
(byte*) char_cursor#31
(byte*) char_cursor#32
(byte*) char_cursor#33
(byte*) char_cursor#34
(byte*) char_cursor#35
(byte*) char_cursor#36
(byte*) char_cursor#37
(byte*) char_cursor#38
(byte*) char_cursor#39
(byte*) char_cursor#4
(byte*) char_cursor#40
(byte*) char_cursor#41
(byte*) char_cursor#42
(byte*) char_cursor#43
(byte*) char_cursor#44
(byte*) char_cursor#45
(byte*) char_cursor#46
(byte*) char_cursor#47
(byte*) char_cursor#48
(byte*) char_cursor#49
(byte*) char_cursor#5
(byte*) char_cursor#50
(byte*) char_cursor#51
(byte*) char_cursor#52
(byte*) char_cursor#53
(byte*) char_cursor#54
(byte*) char_cursor#55
(byte*) char_cursor#56
(byte*) char_cursor#57
(byte*) char_cursor#58
(byte*) char_cursor#59
(byte*) char_cursor#6
(byte*) char_cursor#60
(byte*) char_cursor#61
(byte*) char_cursor#62
(byte*) char_cursor#63
(byte*) char_cursor#64
(byte*) char_cursor#65
(byte*) char_cursor#66
(byte*) char_cursor#67
(byte*) char_cursor#68
(byte*) char_cursor#69
(byte*) char_cursor#7
(byte*) char_cursor#70
(byte*) char_cursor#71
(byte*) char_cursor#72
(byte*) char_cursor#73
(byte*) char_cursor#74
(byte*) char_cursor#75
(byte*) char_cursor#76
(byte*) char_cursor#77
(byte*) char_cursor#8
(byte*) char_cursor#9
(byte*) line_cursor
(byte*) line_cursor#0
(byte*) line_cursor#1
(byte*) line_cursor#10
(byte*) line_cursor#11
(byte*) line_cursor#12
(byte*) line_cursor#13
(byte*) line_cursor#14
(byte*) line_cursor#15
(byte*) line_cursor#16
(byte*) line_cursor#17
(byte*) line_cursor#18
(byte*) line_cursor#19
(byte*) line_cursor#2
(byte*) line_cursor#20
(byte*) line_cursor#21
(byte*) line_cursor#22
(byte*) line_cursor#23
(byte*) line_cursor#24
(byte*) line_cursor#25
(byte*) line_cursor#26
(byte*) line_cursor#27
(byte*) line_cursor#28
(byte*) line_cursor#29
(byte*) line_cursor#3
(byte*) line_cursor#30
(byte*) line_cursor#31
(byte*) line_cursor#32
(byte*) line_cursor#33
(byte*) line_cursor#34
(byte*) line_cursor#35
(byte*) line_cursor#36
(byte*) line_cursor#37
(byte*) line_cursor#38
(byte*) line_cursor#39
(byte*) line_cursor#4
(byte*) line_cursor#40
(byte*) line_cursor#41
(byte*) line_cursor#42
(byte*) line_cursor#43
(byte*) line_cursor#44
(byte*) line_cursor#45
(byte*) line_cursor#46
(byte*) line_cursor#47
(byte*) line_cursor#48
(byte*) line_cursor#49
(byte*) line_cursor#5
(byte*) line_cursor#50
(byte*) line_cursor#51
(byte*) line_cursor#52
(byte*) line_cursor#53
(byte*) line_cursor#54
(byte*) line_cursor#55
(byte*) line_cursor#56
(byte*) line_cursor#57
(byte*) line_cursor#58
(byte*) line_cursor#59
(byte*) line_cursor#6
(byte*) line_cursor#60
(byte*) line_cursor#61
(byte*) line_cursor#62
(byte*) line_cursor#63
(byte*) line_cursor#64
(byte*) line_cursor#7
(byte*) line_cursor#8
(byte*) line_cursor#9
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@return
(void()) print_cls()
(word/signed word/dword/signed dword~) print_cls::$0
(boolean~) print_cls::$1
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#0
(byte*) print_cls::sc#1
(byte*) print_cls::sc#2
(void()) print_ln()
(byte*~) print_ln::$0
(boolean~) print_ln::$1
(label) print_ln::@1
(label) print_ln::@2
(label) print_ln::@return
(void()) print_str((byte*) print_str::str)
(boolean~) print_str::$0
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0
(byte*) print_str::str#1
(byte*) print_str::str#10
(byte*) print_str::str#11
(byte*) print_str::str#2
(byte*) print_str::str#3
(byte*) print_str::str#4
(byte*) print_str::str#5
(byte*) print_str::str#6
(byte*) print_str::str#7
(byte*) print_str::str#8
(byte*) print_str::str#9
(void()) test_bytes()
(byte/word~) test_bytes::$1
(byte/signed byte/word/signed word/dword/signed dword~) test_bytes::$3
(byte~) test_bytes::$4
(label) test_bytes::@1
(label) test_bytes::@2
(label) test_bytes::@3
(label) test_bytes::@return
(byte) test_bytes::bb
(byte) test_bytes::bb#0
(byte) test_bytes::bb#1
(byte) test_bytes::bc
(byte) test_bytes::bc#0
(byte) test_bytes::bc#1
(byte) test_bytes::bd
(byte) test_bytes::bd#0
(const string) test_bytes::msg = (string) "0=0@"
(const string) test_bytes::msg1 = (string) "0+2=2@"
(const string) test_bytes::msg2 = (string) "0+2-4=254@"
(void()) test_sbytes()
(byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1
(signed byte~) test_sbytes::$10
(byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3
(signed byte/signed word/signed dword~) test_sbytes::$4
(signed byte~) test_sbytes::$6
(signed byte/signed word/signed dword~) test_sbytes::$8
(byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$9
(label) test_sbytes::@1
(label) test_sbytes::@2
(label) test_sbytes::@3
(label) test_sbytes::@4
(label) test_sbytes::@5
(label) test_sbytes::@return
(signed byte) test_sbytes::bb
(signed byte) test_sbytes::bb#0
(signed byte) test_sbytes::bb#1
(signed byte) test_sbytes::bc
(signed byte) test_sbytes::bc#0
(signed byte) test_sbytes::bc#1
(signed byte) test_sbytes::bd
(signed byte) test_sbytes::bd#0
(signed byte) test_sbytes::bd#1
(signed byte) test_sbytes::be
(signed byte) test_sbytes::be#0
(signed byte) test_sbytes::bf
(signed byte) test_sbytes::bf#0
(const string) test_sbytes::msg = (string) "0=0@"
(const string) test_sbytes::msg1 = (string) "0+2=2@"
(const string) test_sbytes::msg2 = (string) "0+2-4=-2@"
(const string) test_sbytes::msg3 = (string) "-(0+2-4)=2@"
(const string) test_sbytes::msg4 = (string) "-127-127=2@"

OPTIMIZING CONTROL FLOW GRAPH
Inversing boolean not (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 from (boolean~) assert_byte::$2 ← (byte) assert_byte::b#3 != (byte) assert_byte::c#3
Inversing boolean not (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 from (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b#5 != (signed byte) assert_sbyte::c#5
Succesful SSA optimization Pass2UnaryNotSimplification
Not aliassing across scopes: print_str::str#11 print_str::str#1
Not aliassing across scopes: char_cursor#75 char_cursor#65
Not aliassing across scopes: line_cursor#42 line_cursor#45
Not aliassing across scopes: char_cursor#62 char_cursor#68
Not aliassing across scopes: char_cursor#76 char_cursor#74
Not aliassing across scopes: line_cursor#49 line_cursor#48
Not aliassing across scopes: char_cursor#35 char_cursor#11
Not aliassing across scopes: line_cursor#24 line_cursor#9
Not aliassing across scopes: char_cursor#36 char_cursor#23
Not aliassing across scopes: line_cursor#25 line_cursor#17
Not aliassing across scopes: char_cursor#64 char_cursor#63
Not aliassing across scopes: line_cursor#44 line_cursor#43
Not aliassing across scopes: assert_byte::b#0 test_bytes::bb#0
Not aliassing across scopes: char_cursor#38 char_cursor#17
Not aliassing across scopes: line_cursor#27 line_cursor#11
Not aliassing across scopes: assert_byte::b#1 test_bytes::bc#0
Not aliassing across scopes: char_cursor#39 char_cursor#17
Not aliassing across scopes: line_cursor#28 line_cursor#11
Not aliassing across scopes: assert_byte::b#2 test_bytes::bd#0
Not aliassing across scopes: char_cursor#40 char_cursor#17
Not aliassing across scopes: line_cursor#29 line_cursor#11
Not aliassing across scopes: assert_byte::msg#3 assert_byte::msg#0
Not aliassing across scopes: char_cursor#65 char_cursor#64
Not aliassing across scopes: assert_byte::b#5 assert_byte::b#0
Not aliassing across scopes: assert_byte::c#5 assert_byte::c#0
Not aliassing across scopes: line_cursor#63 line_cursor#44
Not aliassing across scopes: print_str::str#1 assert_byte::msg#3
Not aliassing across scopes: char_cursor#42 char_cursor#2
Not aliassing across scopes: char_cursor#43 char_cursor#2
Not aliassing across scopes: char_cursor#44 char_cursor#2
Not aliassing across scopes: char_cursor#45 char_cursor#2
Not aliassing across scopes: line_cursor#31 line_cursor#2
Not aliassing across scopes: char_cursor#46 char_cursor#4
Not aliassing across scopes: char_cursor#69 char_cursor#5
Not aliassing across scopes: line_cursor#46 line_cursor#3
Not aliassing across scopes: assert_sbyte::b#0 test_sbytes::bb#0
Not aliassing across scopes: char_cursor#48 char_cursor#29
Not aliassing across scopes: line_cursor#33 line_cursor#19
Not aliassing across scopes: assert_sbyte::b#1 test_sbytes::bc#0
Not aliassing across scopes: char_cursor#49 char_cursor#29
Not aliassing across scopes: line_cursor#34 line_cursor#19
Not aliassing across scopes: assert_sbyte::b#2 test_sbytes::bd#0
Not aliassing across scopes: char_cursor#50 char_cursor#29
Not aliassing across scopes: line_cursor#35 line_cursor#19
Not aliassing across scopes: assert_sbyte::b#3 test_sbytes::be#0
Not aliassing across scopes: char_cursor#51 char_cursor#29
Not aliassing across scopes: line_cursor#36 line_cursor#19
Not aliassing across scopes: assert_sbyte::b#4 test_sbytes::bf#0
Not aliassing across scopes: char_cursor#52 char_cursor#29
Not aliassing across scopes: line_cursor#37 line_cursor#19
Not aliassing across scopes: assert_sbyte::msg#5 assert_sbyte::msg#0
Not aliassing across scopes: char_cursor#70 char_cursor#69
Not aliassing across scopes: assert_sbyte::b#7 assert_sbyte::b#0
Not aliassing across scopes: assert_sbyte::c#7 assert_sbyte::c#0
Not aliassing across scopes: line_cursor#64 line_cursor#46
Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5
Not aliassing across scopes: char_cursor#54 char_cursor#2
Not aliassing across scopes: char_cursor#55 char_cursor#2
Not aliassing across scopes: char_cursor#56 char_cursor#2
Not aliassing across scopes: char_cursor#57 char_cursor#2
Not aliassing across scopes: line_cursor#39 line_cursor#2
Not aliassing across scopes: char_cursor#58 char_cursor#4
Not aliassing across scopes: char_cursor#60 char_cursor#7
Not aliassing across scopes: line_cursor#41 line_cursor#5
Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#77 (byte*) line_cursor#54 (byte*) char_cursor#74 (byte*) line_cursor#48 
Alias (byte*) print_str::str#10 = (byte*) print_str::str#9 
Alias (byte*) char_cursor#2 = (byte*) char_cursor#31 (byte*) char_cursor#61 (byte*) char_cursor#32 
Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#22 (byte*) char_cursor#3 (byte*) line_cursor#23 (byte*) char_cursor#34 (byte*) line_cursor#2 (byte*) char_cursor#4 
Alias (byte*) char_cursor#63 = (byte*) char_cursor#76 
Alias (byte*) line_cursor#43 = (byte*) line_cursor#49 
Alias (byte*) char_cursor#35 = (byte*) char_cursor#5 
Alias (byte*) line_cursor#24 = (byte*) line_cursor#3 
Alias (byte*) char_cursor#36 = (byte*) char_cursor#6 (byte*) char_cursor#37 (byte*) char_cursor#7 
Alias (byte*) line_cursor#25 = (byte*) line_cursor#4 (byte*) line_cursor#26 (byte*) line_cursor#5 
Alias (byte) test_bytes::bb#0 = (byte) test_bytes::bb#1 
Alias (byte*) char_cursor#38 = (byte*) char_cursor#8 
Alias (byte*) line_cursor#27 = (byte*) line_cursor#6 
Alias (byte) test_bytes::bc#0 = (byte/word~) test_bytes::$1 (byte) test_bytes::bc#1 
Alias (byte*) char_cursor#39 = (byte*) char_cursor#9 
Alias (byte*) line_cursor#28 = (byte*) line_cursor#7 
Alias (byte) test_bytes::bd#0 = (byte~) test_bytes::$4 
Alias (byte*) char_cursor#10 = (byte*) char_cursor#40 (byte*) char_cursor#41 (byte*) char_cursor#11 
Alias (byte*) line_cursor#29 = (byte*) line_cursor#8 (byte*) line_cursor#30 (byte*) line_cursor#9 
Alias (byte) assert_byte::b#3 = (byte) assert_byte::b#4 (byte) assert_byte::b#5 
Alias (byte) assert_byte::c#3 = (byte) assert_byte::c#4 (byte) assert_byte::c#5 
Alias (byte*) line_cursor#50 = (byte*) line_cursor#61 (byte*) line_cursor#63 (byte*) line_cursor#59 (byte*) line_cursor#55 (byte*) line_cursor#56 (byte*) line_cursor#51 
Alias (byte*) char_cursor#12 = (byte*) char_cursor#42 
Alias (byte*) char_cursor#13 = (byte*) char_cursor#43 (byte*) char_cursor#66 (byte*) char_cursor#67 
Alias (byte*) char_cursor#14 = (byte*) char_cursor#44 
Alias (byte*) char_cursor#15 = (byte*) char_cursor#45 
Alias (byte*) line_cursor#10 = (byte*) line_cursor#31 (byte*) line_cursor#32 (byte*) line_cursor#11 
Alias (byte*) char_cursor#16 = (byte*) char_cursor#46 (byte*) char_cursor#47 (byte*) char_cursor#17 
Alias (signed byte) test_sbytes::bb#0 = (signed byte) test_sbytes::bb#1 
Alias (byte*) char_cursor#18 = (byte*) char_cursor#48 
Alias (byte*) line_cursor#12 = (byte*) line_cursor#33 
Alias (signed byte) test_sbytes::bc#0 = (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$1 (signed byte) test_sbytes::bc#1 
Alias (byte*) char_cursor#19 = (byte*) char_cursor#49 
Alias (byte*) line_cursor#13 = (byte*) line_cursor#34 
Alias (signed byte) test_sbytes::bd#0 = (byte/signed byte/word/signed word/dword/signed dword~) test_sbytes::$3 (signed byte) test_sbytes::bd#1 
Alias (signed byte) assert_sbyte::c#2 = (signed byte/signed word/signed dword~) test_sbytes::$4 
Alias (byte*) char_cursor#20 = (byte*) char_cursor#50 
Alias (byte*) line_cursor#14 = (byte*) line_cursor#35 
Alias (signed byte) test_sbytes::be#0 = (signed byte~) test_sbytes::$6 
Alias (byte*) char_cursor#21 = (byte*) char_cursor#51 
Alias (byte*) line_cursor#15 = (byte*) line_cursor#36 
Alias (signed byte) test_sbytes::bf#0 = (signed byte~) test_sbytes::$10 
Alias (byte*) char_cursor#22 = (byte*) char_cursor#52 (byte*) char_cursor#53 (byte*) char_cursor#23 
Alias (byte*) line_cursor#16 = (byte*) line_cursor#37 (byte*) line_cursor#38 (byte*) line_cursor#17 
Alias (signed byte) assert_sbyte::b#5 = (signed byte) assert_sbyte::b#6 (signed byte) assert_sbyte::b#7 
Alias (signed byte) assert_sbyte::c#5 = (signed byte) assert_sbyte::c#6 (signed byte) assert_sbyte::c#7 
Alias (byte*) line_cursor#52 = (byte*) line_cursor#62 (byte*) line_cursor#64 (byte*) line_cursor#60 (byte*) line_cursor#57 (byte*) line_cursor#58 (byte*) line_cursor#53 
Alias (byte*) char_cursor#24 = (byte*) char_cursor#54 
Alias (byte*) char_cursor#25 = (byte*) char_cursor#55 (byte*) char_cursor#71 (byte*) char_cursor#72 
Alias (byte*) char_cursor#26 = (byte*) char_cursor#56 
Alias (byte*) char_cursor#27 = (byte*) char_cursor#57 
Alias (byte*) line_cursor#18 = (byte*) line_cursor#39 (byte*) line_cursor#40 (byte*) line_cursor#19 
Alias (byte*) char_cursor#28 = (byte*) char_cursor#58 (byte*) char_cursor#59 (byte*) char_cursor#29 
Alias (byte*) char_cursor#30 = (byte*) char_cursor#60 
Alias (byte*) line_cursor#20 = (byte*) line_cursor#41 
Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: print_str::str#11 print_str::str#1
Not aliassing across scopes: char_cursor#75 char_cursor#65
Not aliassing across scopes: line_cursor#42 line_cursor#45
Not aliassing across scopes: char_cursor#62 char_cursor#68
Not aliassing across scopes: char_cursor#63 char_cursor#0
Not aliassing across scopes: line_cursor#43 char_cursor#0
Not aliassing across scopes: char_cursor#35 char_cursor#10
Not aliassing across scopes: line_cursor#24 line_cursor#29
Not aliassing across scopes: char_cursor#36 char_cursor#22
Not aliassing across scopes: line_cursor#25 line_cursor#16
Not aliassing across scopes: char_cursor#64 char_cursor#63
Not aliassing across scopes: line_cursor#44 line_cursor#43
Not aliassing across scopes: assert_byte::b#0 test_bytes::bb#0
Not aliassing across scopes: char_cursor#38 char_cursor#16
Not aliassing across scopes: line_cursor#27 line_cursor#10
Not aliassing across scopes: assert_byte::b#1 test_bytes::bc#0
Not aliassing across scopes: char_cursor#39 char_cursor#16
Not aliassing across scopes: line_cursor#28 line_cursor#10
Not aliassing across scopes: assert_byte::b#2 test_bytes::bd#0
Not aliassing across scopes: char_cursor#10 char_cursor#16
Not aliassing across scopes: line_cursor#29 line_cursor#10
Not aliassing across scopes: assert_byte::msg#3 assert_byte::msg#0
Not aliassing across scopes: char_cursor#65 char_cursor#64
Not aliassing across scopes: assert_byte::b#3 assert_byte::b#0
Not aliassing across scopes: assert_byte::c#3 assert_byte::c#0
Not aliassing across scopes: line_cursor#50 line_cursor#44
Not aliassing across scopes: print_str::str#1 assert_byte::msg#3
Not aliassing across scopes: char_cursor#12 char_cursor#2
Not aliassing across scopes: char_cursor#13 char_cursor#2
Not aliassing across scopes: char_cursor#14 char_cursor#2
Not aliassing across scopes: char_cursor#15 char_cursor#2
Not aliassing across scopes: line_cursor#10 line_cursor#1
Not aliassing across scopes: char_cursor#16 line_cursor#1
Not aliassing across scopes: char_cursor#69 char_cursor#35
Not aliassing across scopes: line_cursor#46 line_cursor#24
Not aliassing across scopes: assert_sbyte::b#0 test_sbytes::bb#0
Not aliassing across scopes: char_cursor#18 char_cursor#28
Not aliassing across scopes: line_cursor#12 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#1 test_sbytes::bc#0
Not aliassing across scopes: char_cursor#19 char_cursor#28
Not aliassing across scopes: line_cursor#13 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#2 test_sbytes::bd#0
Not aliassing across scopes: char_cursor#20 char_cursor#28
Not aliassing across scopes: line_cursor#14 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#3 test_sbytes::be#0
Not aliassing across scopes: char_cursor#21 char_cursor#28
Not aliassing across scopes: line_cursor#15 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#4 test_sbytes::bf#0
Not aliassing across scopes: char_cursor#22 char_cursor#28
Not aliassing across scopes: line_cursor#16 line_cursor#18
Not aliassing across scopes: assert_sbyte::msg#5 assert_sbyte::msg#0
Not aliassing across scopes: char_cursor#70 char_cursor#69
Not aliassing across scopes: assert_sbyte::b#5 assert_sbyte::b#0
Not aliassing across scopes: assert_sbyte::c#5 assert_sbyte::c#0
Not aliassing across scopes: line_cursor#52 line_cursor#46
Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5
Not aliassing across scopes: char_cursor#24 char_cursor#2
Not aliassing across scopes: char_cursor#25 char_cursor#2
Not aliassing across scopes: char_cursor#26 char_cursor#2
Not aliassing across scopes: char_cursor#27 char_cursor#2
Not aliassing across scopes: line_cursor#18 line_cursor#1
Not aliassing across scopes: char_cursor#28 line_cursor#1
Not aliassing across scopes: char_cursor#30 char_cursor#36
Not aliassing across scopes: line_cursor#20 line_cursor#25
Alias (byte*) line_cursor#45 = (byte*) line_cursor#50 
Alias (byte*) line_cursor#47 = (byte*) line_cursor#52 
Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: print_str::str#11 print_str::str#1
Not aliassing across scopes: char_cursor#75 char_cursor#65
Not aliassing across scopes: line_cursor#42 line_cursor#45
Not aliassing across scopes: char_cursor#62 char_cursor#68
Not aliassing across scopes: char_cursor#63 char_cursor#0
Not aliassing across scopes: line_cursor#43 char_cursor#0
Not aliassing across scopes: char_cursor#35 char_cursor#10
Not aliassing across scopes: line_cursor#24 line_cursor#29
Not aliassing across scopes: char_cursor#36 char_cursor#22
Not aliassing across scopes: line_cursor#25 line_cursor#16
Not aliassing across scopes: char_cursor#64 char_cursor#63
Not aliassing across scopes: line_cursor#44 line_cursor#43
Not aliassing across scopes: assert_byte::b#0 test_bytes::bb#0
Not aliassing across scopes: char_cursor#38 char_cursor#16
Not aliassing across scopes: line_cursor#27 line_cursor#10
Not aliassing across scopes: assert_byte::b#1 test_bytes::bc#0
Not aliassing across scopes: char_cursor#39 char_cursor#16
Not aliassing across scopes: line_cursor#28 line_cursor#10
Not aliassing across scopes: assert_byte::b#2 test_bytes::bd#0
Not aliassing across scopes: char_cursor#10 char_cursor#16
Not aliassing across scopes: line_cursor#29 line_cursor#10
Not aliassing across scopes: assert_byte::msg#3 assert_byte::msg#0
Not aliassing across scopes: char_cursor#65 char_cursor#64
Not aliassing across scopes: assert_byte::b#3 assert_byte::b#0
Not aliassing across scopes: assert_byte::c#3 assert_byte::c#0
Not aliassing across scopes: line_cursor#45 line_cursor#44
Not aliassing across scopes: print_str::str#1 assert_byte::msg#3
Not aliassing across scopes: char_cursor#12 char_cursor#2
Not aliassing across scopes: char_cursor#13 char_cursor#2
Not aliassing across scopes: char_cursor#14 char_cursor#2
Not aliassing across scopes: char_cursor#15 char_cursor#2
Not aliassing across scopes: line_cursor#10 line_cursor#1
Not aliassing across scopes: char_cursor#16 line_cursor#1
Not aliassing across scopes: char_cursor#69 char_cursor#35
Not aliassing across scopes: line_cursor#46 line_cursor#24
Not aliassing across scopes: assert_sbyte::b#0 test_sbytes::bb#0
Not aliassing across scopes: char_cursor#18 char_cursor#28
Not aliassing across scopes: line_cursor#12 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#1 test_sbytes::bc#0
Not aliassing across scopes: char_cursor#19 char_cursor#28
Not aliassing across scopes: line_cursor#13 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#2 test_sbytes::bd#0
Not aliassing across scopes: char_cursor#20 char_cursor#28
Not aliassing across scopes: line_cursor#14 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#3 test_sbytes::be#0
Not aliassing across scopes: char_cursor#21 char_cursor#28
Not aliassing across scopes: line_cursor#15 line_cursor#18
Not aliassing across scopes: assert_sbyte::b#4 test_sbytes::bf#0
Not aliassing across scopes: char_cursor#22 char_cursor#28
Not aliassing across scopes: line_cursor#16 line_cursor#18
Not aliassing across scopes: assert_sbyte::msg#5 assert_sbyte::msg#0
Not aliassing across scopes: char_cursor#70 char_cursor#69
Not aliassing across scopes: assert_sbyte::b#5 assert_sbyte::b#0
Not aliassing across scopes: assert_sbyte::c#5 assert_sbyte::c#0
Not aliassing across scopes: line_cursor#47 line_cursor#46
Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5
Not aliassing across scopes: char_cursor#24 char_cursor#2
Not aliassing across scopes: char_cursor#25 char_cursor#2
Not aliassing across scopes: char_cursor#26 char_cursor#2
Not aliassing across scopes: char_cursor#27 char_cursor#2
Not aliassing across scopes: line_cursor#18 line_cursor#1
Not aliassing across scopes: char_cursor#28 line_cursor#1
Not aliassing across scopes: char_cursor#30 char_cursor#36
Not aliassing across scopes: line_cursor#20 line_cursor#25
Self Phi Eliminated (byte*) char_cursor#33
Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) char_cursor#33 (byte*) char_cursor#62
Redundant Phi (byte*) char_cursor#63 (byte*) char_cursor#0
Redundant Phi (byte*) line_cursor#43 (byte*) char_cursor#0
Redundant Phi (byte*) char_cursor#35 (byte*) char_cursor#10
Redundant Phi (byte*) line_cursor#24 (byte*) line_cursor#29
Redundant Phi (byte*) char_cursor#36 (byte*) char_cursor#22
Redundant Phi (byte*) line_cursor#25 (byte*) line_cursor#16
Redundant Phi (byte*) char_cursor#64 (byte*) char_cursor#63
Redundant Phi (byte*) line_cursor#44 (byte*) line_cursor#43
Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#16
Redundant Phi (byte*) line_cursor#27 (byte*) line_cursor#10
Redundant Phi (byte*) char_cursor#39 (byte*) char_cursor#16
Redundant Phi (byte*) line_cursor#28 (byte*) line_cursor#10
Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#16
Redundant Phi (byte*) line_cursor#29 (byte*) line_cursor#10
Redundant Phi (byte*) char_cursor#12 (byte*) char_cursor#2
Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#2
Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#2
Redundant Phi (byte*) char_cursor#15 (byte*) char_cursor#2
Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#16 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#69 (byte*) char_cursor#35
Redundant Phi (byte*) line_cursor#46 (byte*) line_cursor#24
Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#28
Redundant Phi (byte*) line_cursor#12 (byte*) line_cursor#18
Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#28
Redundant Phi (byte*) line_cursor#13 (byte*) line_cursor#18
Redundant Phi (byte*) char_cursor#20 (byte*) char_cursor#28
Redundant Phi (byte*) line_cursor#14 (byte*) line_cursor#18
Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#28
Redundant Phi (byte*) line_cursor#15 (byte*) line_cursor#18
Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#28
Redundant Phi (byte*) line_cursor#16 (byte*) line_cursor#18
Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#2
Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#2
Redundant Phi (byte*) char_cursor#26 (byte*) char_cursor#2
Redundant Phi (byte*) char_cursor#27 (byte*) char_cursor#2
Redundant Phi (byte*) line_cursor#18 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#28 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#36
Redundant Phi (byte*) line_cursor#20 (byte*) line_cursor#25
Succesful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) char_cursor#68 (byte*) char_cursor#2
Redundant Phi (byte*) char_cursor#70 (byte*) line_cursor#1
Redundant Phi (byte*) line_cursor#47 (byte*) line_cursor#1
Redundant Phi (byte*) char_cursor#73 (byte*) char_cursor#2
Succesful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) char_cursor#62 (byte*) char_cursor#2
Succesful SSA optimization Pass2RedundantPhiElimination
Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2
Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1
Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword~) print_cls::$0) goto print_cls::@1
Simple Condition (boolean~) assert_byte::$3 if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1
Simple Condition (boolean~) assert_sbyte::$3 if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) char_cursor#0 = ((byte*))1024
Constant (const byte*) print_cls::sc#0 = ((byte*))1024
Constant (const word/signed word/dword/signed dword) print_cls::$0 = 1024+1000
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte) GREEN#0 = 5
Constant (const byte) RED#0 = 2
Constant (const byte) test_bytes::bb#0 = 0
Constant (const string) assert_byte::msg#0 = test_bytes::msg
Constant (const byte) assert_byte::c#0 = 0
Constant (const string) assert_byte::msg#1 = test_bytes::msg1
Constant (const byte) assert_byte::c#1 = 2
Constant (const string) assert_byte::msg#2 = test_bytes::msg2
Constant (const byte) assert_byte::c#2 = 254
Constant (const string) print_str::str#2 = assert_byte::str
Constant (const string) print_str::str#3 = assert_byte::str1
Constant (const string) print_str::str#4 = assert_byte::str2
Constant (const signed byte) test_sbytes::bb#0 = 0
Constant (const string) assert_sbyte::msg#0 = test_sbytes::msg
Constant (const signed byte) assert_sbyte::c#0 = 0
Constant (const string) assert_sbyte::msg#1 = test_sbytes::msg1
Constant (const signed byte) assert_sbyte::c#1 = 2
Constant (const signed byte) assert_sbyte::c#2 = -2
Constant (const string) assert_sbyte::msg#2 = test_sbytes::msg2
Constant (const string) assert_sbyte::msg#3 = test_sbytes::msg3
Constant (const signed byte) assert_sbyte::c#3 = 2
Constant (const signed byte/signed word/signed dword) test_sbytes::$8 = -127
Constant (const string) assert_sbyte::msg#4 = test_sbytes::msg4
Constant (const signed byte) assert_sbyte::c#4 = 2
Constant (const string) print_str::str#6 = assert_sbyte::str
Constant (const string) print_str::str#7 = assert_sbyte::str1
Constant (const string) print_str::str#8 = assert_sbyte::str2
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) assert_byte::b#0 = test_bytes::bb#0
Constant (const byte) test_bytes::bc#0 = test_bytes::bb#0+2
Constant (const signed byte) assert_sbyte::b#0 = test_sbytes::bb#0
Constant (const signed byte) test_sbytes::bc#0 = test_sbytes::bb#0+2
Constant (const signed word/signed dword) test_sbytes::$9 = test_sbytes::$8-127
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) assert_byte::b#1 = test_bytes::bc#0
Constant (const signed byte/signed word/signed dword) test_bytes::$3 = test_bytes::bc#0-4
Constant (const signed byte) assert_sbyte::b#1 = test_sbytes::bc#0
Constant (const signed byte) test_sbytes::bd#0 = test_sbytes::bc#0-4
Constant (const signed byte) test_sbytes::bf#0 = ((signed byte))test_sbytes::$9
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) test_bytes::bd#0 = ((byte))test_bytes::$3
Constant (const signed byte) assert_sbyte::b#2 = test_sbytes::bd#0
Constant (const signed byte) test_sbytes::be#0 = -test_sbytes::bd#0
Constant (const signed byte) assert_sbyte::b#4 = test_sbytes::bf#0
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) assert_byte::b#2 = test_bytes::bd#0
Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0
Succesful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) @8
Culled Empty Block (label) main::@3
Culled Empty Block (label) test_bytes::@3
Culled Empty Block (label) assert_byte::@7
Culled Empty Block (label) assert_byte::@8
Culled Empty Block (label) assert_byte::@9
Culled Empty Block (label) test_sbytes::@5
Culled Empty Block (label) assert_sbyte::@7
Culled Empty Block (label) assert_sbyte::@8
Culled Empty Block (label) assert_sbyte::@9
Culled Empty Block (label) @14
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: print_str::str#11 print_str::str#1
Not aliassing across scopes: char_cursor#75 char_cursor#65
Not aliassing across scopes: line_cursor#42 line_cursor#45
Not aliassing across scopes: print_str::str#1 assert_byte::msg#3
Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5
Not aliassing across scopes: print_str::str#11 print_str::str#1
Not aliassing across scopes: char_cursor#75 char_cursor#65
Not aliassing across scopes: line_cursor#42 line_cursor#45
Not aliassing across scopes: print_str::str#1 assert_byte::msg#3
Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const string) print_str::str#2
Inlining constant with var siblings (const string) print_str::str#2
Inlining constant with var siblings (const string) print_str::str#2
Inlining constant with var siblings (const string) print_str::str#2
Inlining constant with var siblings (const string) print_str::str#2
Inlining constant with var siblings (const string) print_str::str#3
Inlining constant with var siblings (const string) print_str::str#3
Inlining constant with var siblings (const string) print_str::str#3
Inlining constant with var siblings (const string) print_str::str#3
Inlining constant with var siblings (const string) print_str::str#3
Inlining constant with var siblings (const string) print_str::str#4
Inlining constant with var siblings (const string) print_str::str#4
Inlining constant with var siblings (const string) print_str::str#4
Inlining constant with var siblings (const string) print_str::str#4
Inlining constant with var siblings (const string) print_str::str#4
Inlining constant with var siblings (const string) print_str::str#6
Inlining constant with var siblings (const string) print_str::str#6
Inlining constant with var siblings (const string) print_str::str#6
Inlining constant with var siblings (const string) print_str::str#6
Inlining constant with var siblings (const string) print_str::str#6
Inlining constant with var siblings (const string) print_str::str#7
Inlining constant with var siblings (const string) print_str::str#7
Inlining constant with var siblings (const string) print_str::str#7
Inlining constant with var siblings (const string) print_str::str#7
Inlining constant with var siblings (const string) print_str::str#7
Inlining constant with var siblings (const string) print_str::str#8
Inlining constant with var siblings (const string) print_str::str#8
Inlining constant with var siblings (const string) print_str::str#8
Inlining constant with var siblings (const string) print_str::str#8
Inlining constant with var siblings (const string) print_str::str#8
Inlining constant with var siblings (const byte*) print_cls::sc#0
Inlining constant with var siblings (const byte*) print_cls::sc#0
Inlining constant with var siblings (const string) assert_byte::msg#0
Inlining constant with var siblings (const byte) assert_byte::c#0
Inlining constant with different constant siblings (const byte) assert_byte::c#0
Inlining constant with different constant siblings (const byte) assert_byte::c#0
Inlining constant with var siblings (const string) assert_byte::msg#1
Inlining constant with var siblings (const byte) assert_byte::c#1
Inlining constant with different constant siblings (const byte) assert_byte::c#1
Inlining constant with different constant siblings (const byte) assert_byte::c#1
Inlining constant with var siblings (const string) assert_byte::msg#2
Inlining constant with var siblings (const byte) assert_byte::c#2
Inlining constant with different constant siblings (const byte) assert_byte::c#2
Inlining constant with different constant siblings (const byte) assert_byte::c#2
Inlining constant with var siblings (const byte) assert_byte::b#0
Inlining constant with var siblings (const byte) assert_byte::b#1
Inlining constant with var siblings (const byte) assert_byte::b#2
Inlining constant with var siblings (const string) assert_sbyte::msg#0
Inlining constant with var siblings (const signed byte) assert_sbyte::c#0
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0
Inlining constant with var siblings (const string) assert_sbyte::msg#1
Inlining constant with var siblings (const signed byte) assert_sbyte::c#1
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#1
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#1
Inlining constant with var siblings (const signed byte) assert_sbyte::c#2
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2
Inlining constant with var siblings (const string) assert_sbyte::msg#2
Inlining constant with var siblings (const string) assert_sbyte::msg#3
Inlining constant with var siblings (const signed byte) assert_sbyte::c#3
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#3
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#3
Inlining constant with var siblings (const string) assert_sbyte::msg#4
Inlining constant with var siblings (const signed byte) assert_sbyte::c#4
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#4
Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#4
Inlining constant with var siblings (const signed byte) assert_sbyte::b#0
Inlining constant with var siblings (const signed byte) assert_sbyte::b#1
Inlining constant with var siblings (const signed byte) assert_sbyte::b#2
Inlining constant with var siblings (const signed byte) assert_sbyte::b#4
Inlining constant with var siblings (const signed byte) assert_sbyte::b#3
Inlining constant with var siblings (const byte*) char_cursor#0
Inlining constant with var siblings (const byte*) char_cursor#0
Inlining constant with var siblings (const byte*) char_cursor#0
Inlining constant with var siblings (const byte*) char_cursor#0
Constant inlined print_cls::$0 = (word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined assert_sbyte::b#2 = (const signed byte) test_sbytes::bd#0
Constant inlined assert_sbyte::c#1 = (byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined assert_sbyte::b#1 = (const signed byte) test_sbytes::bc#0
Constant inlined assert_sbyte::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined assert_byte::b#0 = (const byte) test_bytes::bb#0
Constant inlined assert_sbyte::b#0 = (const signed byte) test_sbytes::bb#0
Constant inlined assert_byte::b#1 = (const byte) test_bytes::bc#0
Constant inlined assert_byte::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined assert_byte::b#2 = (const byte) test_bytes::bd#0
Constant inlined assert_byte::c#1 = (byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined test_bytes::$3 = (const byte) test_bytes::bc#0-(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined assert_byte::c#2 = (byte/word/signed word/dword/signed dword) 254
Constant inlined assert_sbyte::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined assert_sbyte::b#4 = (const signed byte) test_sbytes::bf#0
Constant inlined assert_sbyte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined assert_sbyte::b#3 = (const signed byte) test_sbytes::be#0
Constant inlined assert_sbyte::c#2 = -(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined test_sbytes::$8 = -(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined test_sbytes::$9 = -(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined assert_byte::msg#0 = (const string) test_bytes::msg
Constant inlined assert_byte::msg#1 = (const string) test_bytes::msg1
Constant inlined assert_byte::msg#2 = (const string) test_bytes::msg2
Constant inlined assert_sbyte::msg#0 = (const string) test_sbytes::msg
Constant inlined assert_sbyte::msg#1 = (const string) test_sbytes::msg1
Constant inlined assert_sbyte::msg#2 = (const string) test_sbytes::msg2
Constant inlined assert_sbyte::msg#3 = (const string) test_sbytes::msg3
Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined print_str::str#4 = (const string) assert_byte::str2
Constant inlined assert_sbyte::msg#4 = (const string) test_sbytes::msg4
Constant inlined print_str::str#3 = (const string) assert_byte::str1
Constant inlined print_str::str#2 = (const string) assert_byte::str
Constant inlined char_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined print_str::str#8 = (const string) assert_sbyte::str2
Constant inlined print_str::str#7 = (const string) assert_sbyte::str1
Constant inlined print_str::str#6 = (const string) assert_sbyte::str
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return 
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return print_ln::@3 test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return print_cls::@3 
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of test_sbytes
Adding NOP phi() at start of test_sbytes::@1
Adding NOP phi() at start of test_sbytes::@2
Adding NOP phi() at start of test_sbytes::@3
Adding NOP phi() at start of test_sbytes::@4
Adding NOP phi() at start of test_bytes
Adding NOP phi() at start of print_cls
CALL GRAPH
Calls in [] to main:2 
Calls in [main] to print_cls:5 test_bytes:7 test_sbytes:9 
Calls in [test_sbytes] to assert_sbyte:12 assert_sbyte:14 assert_sbyte:16 assert_sbyte:18 assert_sbyte:20 
Calls in [assert_sbyte] to print_str:26 print_str:28 print_str:32 print_ln:34 print_str:37 
Calls in [test_bytes] to assert_byte:57 assert_byte:60 assert_byte:63 
Calls in [assert_byte] to print_str:69 print_str:71 print_str:75 print_ln:77 print_str:80 

Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Created 15 initial phi equivalence classes
Coalesced [24] print_str::str#13 ← print_str::str#5
Not coalescing [25] char_cursor#82 ← line_cursor#1
Coalesced [27] char_cursor#85 ← char_cursor#2
Coalesced (already) [31] char_cursor#84 ← char_cursor#2
Coalesced [33] line_cursor#66 ← line_cursor#1
Coalesced (already) [36] char_cursor#83 ← char_cursor#2
Coalesced [39] print_str::str#14 ← print_str::str#11
Coalesced (already) [40] char_cursor#86 ← char_cursor#75
Coalesced [47] print_str::str#15 ← print_str::str#0
Coalesced [48] char_cursor#87 ← char_cursor#1
Coalesced [50] line_cursor#67 ← line_cursor#42
Coalesced (already) [55] line_cursor#68 ← line_cursor#1
Not coalescing [58] char_cursor#88 ← line_cursor#1
Coalesced [59] line_cursor#69 ← line_cursor#1
Not coalescing [61] char_cursor#89 ← line_cursor#1
Coalesced (already) [62] line_cursor#70 ← line_cursor#1
Coalesced [67] print_str::str#12 ← print_str::str#1
Coalesced [68] char_cursor#78 ← char_cursor#65
Coalesced (already) [70] char_cursor#81 ← char_cursor#2
Coalesced (already) [74] char_cursor#80 ← char_cursor#2
Coalesced (already) [76] line_cursor#65 ← line_cursor#45
Coalesced (already) [79] char_cursor#79 ← char_cursor#2
Coalesced [87] print_cls::sc#3 ← print_cls::sc#1
Coalesced down to 10 phi equivalence classes
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_cls::@3
Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return 
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @13
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of test_sbytes
Adding NOP phi() at start of test_sbytes::@1
Adding NOP phi() at start of test_sbytes::@2
Adding NOP phi() at start of test_sbytes::@3
Adding NOP phi() at start of test_sbytes::@4
Adding NOP phi() at start of assert_sbyte::@5
Adding NOP phi() at start of assert_sbyte::@2
Adding NOP phi() at start of assert_sbyte::@1
Adding NOP phi() at start of test_bytes
Adding NOP phi() at start of assert_byte::@5
Adding NOP phi() at start of assert_byte::@2
Adding NOP phi() at start of assert_byte::@1
Adding NOP phi() at start of print_cls
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi() [ ] ( )
  to:@13
@13: scope:[]  from @begin
  [1] phi() [ ] ( )
  [2] call main param-assignment [ ] ( )
  to:@end
@end: scope:[]  from @13
  [3] phi() [ ] ( )
main: scope:[main]  from @13
  [4] phi() [ ] ( main:2 [ ] )
  [5] call print_cls param-assignment [ ] ( main:2 [ ] )
  to:main::@1
main::@1: scope:[main]  from main
  [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] )
  [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
  [9] call test_sbytes param-assignment [ ] ( main:2 [ ] )
  to:main::@return
main::@return: scope:[main]  from main::@2
  [10] return  [ ] ( main:2 [ ] )
  to:@return
test_sbytes: scope:[test_sbytes]  from main::@2
  [11] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  to:test_sbytes::@1
test_sbytes::@1: scope:[test_sbytes]  from test_sbytes
  [13] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  to:test_sbytes::@2
test_sbytes::@2: scope:[test_sbytes]  from test_sbytes::@1
  [15] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  to:test_sbytes::@3
test_sbytes::@3: scope:[test_sbytes]  from test_sbytes::@2
  [17] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  to:test_sbytes::@4
test_sbytes::@4: scope:[test_sbytes]  from test_sbytes::@3
  [19] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] )
  to:test_sbytes::@return
test_sbytes::@return: scope:[test_sbytes]  from test_sbytes::@4
  [21] return  [ ] ( main:2::test_sbytes:9 [ ] )
  to:@return
assert_sbyte: scope:[assert_sbyte]  from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
  [22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_sbytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@2/-(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@3/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@4/(byte/signed byte/word/signed word/dword/signed dword) 2 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] )
  [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] )
  [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) test_sbytes::msg test_sbytes::@1/(const string) test_sbytes::msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] )
  [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] )
  [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] )
  [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  to:assert_sbyte::@5
assert_sbyte::@5: scope:[assert_sbyte]  from assert_sbyte
  [26] phi() [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  to:assert_sbyte::@6
assert_sbyte::@6: scope:[assert_sbyte]  from assert_sbyte::@5
  [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  to:assert_sbyte::@3
assert_sbyte::@3: scope:[assert_sbyte]  from assert_sbyte::@6
  [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  to:assert_sbyte::@2
assert_sbyte::@2: scope:[assert_sbyte]  from assert_sbyte::@1 assert_sbyte::@3
  [31] phi() [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
  to:assert_sbyte::@return
assert_sbyte::@return: scope:[assert_sbyte]  from assert_sbyte::@2
  [33] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
  to:@return
assert_sbyte::@1: scope:[assert_sbyte]  from assert_sbyte::@6
  [34] phi() [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  to:assert_sbyte::@2
print_str: scope:[print_str]  from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
  [36] (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*~) char_cursor#82 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) [ print_str::str#11 char_cursor#75 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] )
  [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) assert_byte::str1 assert_byte::@3/(const string) assert_byte::str2 assert_byte::@5/(const string) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) assert_sbyte::str1 assert_sbyte::@3/(const string) assert_sbyte::str2 assert_sbyte::@5/(const string) assert_sbyte::str ) [ print_str::str#11 char_cursor#75 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [37] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] )
  [37] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] )
  [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] )
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [39] return  [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] )
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] )
  [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] )
  [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] )
  to:print_str::@1
print_ln: scope:[print_ln]  from assert_byte::@2 assert_sbyte::@2
  [43] (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#42 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ char_cursor#2 line_cursor#42 ] )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [44] (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#21 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ char_cursor#2 line_cursor#21 ] )
  [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] )
  [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] )
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [47] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] )
  to:@return
test_bytes: scope:[test_bytes]  from main::@1
  [48] phi() [ ] ( main:2::test_bytes:7 [ ] )
  [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  to:test_bytes::@1
test_bytes::@1: scope:[test_bytes]  from test_bytes
  [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] )
  [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  to:test_bytes::@2
test_bytes::@2: scope:[test_bytes]  from test_bytes::@1
  [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] )
  [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  to:test_bytes::@return
test_bytes::@return: scope:[test_bytes]  from test_bytes::@2
  [54] return  [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  to:@return
assert_byte: scope:[assert_byte]  from test_bytes test_bytes::@1 test_bytes::@2
  [55] (byte*) line_cursor#45 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] )
  [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] )
  [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] )
  [55] (byte*) char_cursor#65 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) char_cursor#88 test_bytes::@2/(byte*~) char_cursor#89 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] )
  [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) test_bytes::msg test_bytes::@1/(const string) test_bytes::msg1 test_bytes::@2/(const string) test_bytes::msg2 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] )
  [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  to:assert_byte::@5
assert_byte::@5: scope:[assert_byte]  from assert_byte
  [58] phi() [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  to:assert_byte::@6
assert_byte::@6: scope:[assert_byte]  from assert_byte::@5
  [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  to:assert_byte::@3
assert_byte::@3: scope:[assert_byte]  from assert_byte::@6
  [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  to:assert_byte::@2
assert_byte::@2: scope:[assert_byte]  from assert_byte::@1 assert_byte::@3
  [63] phi() [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
  to:assert_byte::@return
assert_byte::@return: scope:[assert_byte]  from assert_byte::@2
  [65] return  [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
  to:@return
assert_byte::@1: scope:[assert_byte]  from assert_byte::@6
  [66] phi() [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  to:assert_byte::@2
print_cls: scope:[print_cls]  from main
  [68] phi() [ ] ( main:2::print_cls:5 [ ] )
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  [69] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
  [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
  [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
  [72] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  [73] return  [ ] ( main:2::print_cls:5 [ ] )
  to:@return

DOMINATORS
@begin dominated by  @begin 
@13 dominated by  @13 @begin 
@end dominated by  @end @13 @begin 
main dominated by  main @13 @begin 
main::@1 dominated by  main main::@1 @13 @begin 
main::@2 dominated by  main main::@1 main::@2 @13 @begin 
main::@return dominated by  main::@return main main::@1 main::@2 @13 @begin 
test_sbytes dominated by  main test_sbytes main::@1 main::@2 @13 @begin 
test_sbytes::@1 dominated by  main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 
test_sbytes::@2 dominated by  main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 
test_sbytes::@3 dominated by  main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 
test_sbytes::@4 dominated by  main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 
test_sbytes::@return dominated by  test_sbytes::@return main test_sbytes main::@1 main::@2 @13 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 
assert_sbyte dominated by  assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin 
assert_sbyte::@5 dominated by  assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 
assert_sbyte::@6 dominated by  assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@6 
assert_sbyte::@3 dominated by  assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@3 assert_sbyte::@6 
assert_sbyte::@2 dominated by  assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 
assert_sbyte::@return dominated by  assert_sbyte assert_sbyte::@return main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 
assert_sbyte::@1 dominated by  assert_sbyte main test_sbytes main::@1 main::@2 @13 @begin assert_sbyte::@5 assert_sbyte::@1 assert_sbyte::@6 
print_str dominated by  main main::@1 @13 @begin print_str 
print_str::@1 dominated by  main print_str::@1 main::@1 @13 @begin print_str 
print_str::@return dominated by  print_str::@return main print_str::@1 main::@1 @13 @begin print_str 
print_str::@2 dominated by  main print_str::@1 print_str::@2 main::@1 @13 @begin print_str 
print_ln dominated by  main main::@1 @13 @begin print_ln 
print_ln::@1 dominated by  print_ln::@1 main main::@1 @13 @begin print_ln 
print_ln::@return dominated by  print_ln::@1 main print_ln::@return main::@1 @13 @begin print_ln 
test_bytes dominated by  test_bytes main main::@1 @13 @begin 
test_bytes::@1 dominated by  test_bytes main main::@1 @13 @begin test_bytes::@1 
test_bytes::@2 dominated by  test_bytes main main::@1 @13 @begin test_bytes::@2 test_bytes::@1 
test_bytes::@return dominated by  test_bytes main main::@1 @13 @begin test_bytes::@2 test_bytes::@1 test_bytes::@return 
assert_byte dominated by  test_bytes main main::@1 @13 @begin assert_byte 
assert_byte::@5 dominated by  test_bytes main assert_byte::@5 main::@1 @13 @begin assert_byte 
assert_byte::@6 dominated by  test_bytes main assert_byte::@5 assert_byte::@6 main::@1 @13 @begin assert_byte 
assert_byte::@3 dominated by  test_bytes assert_byte::@3 main assert_byte::@5 assert_byte::@6 main::@1 @13 @begin assert_byte 
assert_byte::@2 dominated by  test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 @13 @begin assert_byte 
assert_byte::@return dominated by  test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 assert_byte::@return @13 @begin assert_byte 
assert_byte::@1 dominated by  test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@1 main::@1 @13 @begin assert_byte 
print_cls dominated by  main @13 @begin print_cls 
print_cls::@1 dominated by  main @13 @begin print_cls::@1 print_cls 
print_cls::@return dominated by  main print_cls::@return @13 @begin print_cls::@1 print_cls 

NATURAL LOOPS
Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null
Found back edge: Loop head: print_ln::@1 tails: print_ln::@1 blocks: null
Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null
Populated: Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 
Populated: Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 
Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 
Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 
Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 
Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 

NATURAL LOOPS WITH DEPTH
Found 0 loops in scope []
Found 0 loops in scope [main]
Found 1 loops in scope [print_cls]
  Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 
Found 0 loops in scope [test_bytes]
Found 0 loops in scope [test_sbytes]
Found 0 loops in scope [assert_byte]
Found 0 loops in scope [assert_sbyte]
Found 1 loops in scope [print_str]
  Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 
Found 1 loops in scope [print_ln]
  Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 
Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1  depth: 1
Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1  depth: 1
Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1  depth: 1


VARIABLE REGISTER WEIGHTS
(byte*) BGCOL
(byte) GREEN
(byte) RED
(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c)
(byte) assert_byte::b
(byte) assert_byte::b#3 0.4
(byte) assert_byte::c
(byte) assert_byte::c#3 0.4
(byte*) assert_byte::msg
(byte*) assert_byte::msg#3 2.0
(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
(signed byte) assert_sbyte::b
(signed byte) assert_sbyte::b#5 0.3333333333333333
(signed byte) assert_sbyte::c
(signed byte) assert_sbyte::c#5 0.3333333333333333
(byte*) assert_sbyte::msg
(byte*) assert_sbyte::msg#5 2.0
(byte*) char_cursor
(byte*) char_cursor#1 11.0
(byte*) char_cursor#2 2.230769230769231
(byte*) char_cursor#65 3.0
(byte*) char_cursor#75 18.0
(byte*~) char_cursor#82 4.0
(byte*~) char_cursor#88 4.0
(byte*~) char_cursor#89 4.0
(byte*) line_cursor
(byte*) line_cursor#1 1.2500000000000002
(byte*) line_cursor#21 24.0
(byte*) line_cursor#42 6.0
(byte*) line_cursor#45 0.5454545454545454
(void()) main()
(void()) print_cls()
(byte*) print_cls::sc
(byte*) print_cls::sc#1 16.5
(byte*) print_cls::sc#2 16.5
(void()) print_ln()
(void()) print_str((byte*) print_str::str)
(byte*) print_str::str
(byte*) print_str::str#0 22.0
(byte*) print_str::str#1 4.0
(byte*) print_str::str#10 11.5
(byte*) print_str::str#11 6.0
(byte*) print_str::str#5 2.0
(void()) test_bytes()
(byte) test_bytes::bb
(byte) test_bytes::bc
(byte) test_bytes::bd
(void()) test_sbytes()
(signed byte) test_sbytes::bb
(signed byte) test_sbytes::bc
(signed byte) test_sbytes::bd
(signed byte) test_sbytes::be
(signed byte) test_sbytes::bf

Initial phi equivalence classes
[ assert_sbyte::msg#5 ]
[ assert_sbyte::b#5 ]
[ assert_sbyte::c#5 ]
[ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ]
[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
[ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ]
[ assert_byte::msg#3 ]
[ assert_byte::b#3 ]
[ assert_byte::c#3 ]
[ print_cls::sc#2 print_cls::sc#1 ]
Complete equivalence classes
[ assert_sbyte::msg#5 ]
[ assert_sbyte::b#5 ]
[ assert_sbyte::c#5 ]
[ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ]
[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
[ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ]
[ assert_byte::msg#3 ]
[ assert_byte::b#3 ]
[ assert_byte::c#3 ]
[ print_cls::sc#2 print_cls::sc#1 ]
Allocated zp ZP_WORD:2 [ assert_sbyte::msg#5 ]
Allocated zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
Allocated zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
Allocated zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ]
Allocated zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
Allocated zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ]
Allocated zp ZP_WORD:12 [ assert_byte::msg#3 ]
Allocated zp ZP_BYTE:14 [ assert_byte::b#3 ]
Allocated zp ZP_BYTE:15 [ assert_byte::c#3 ]
Allocated zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ]

INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
  .label BGCOL = $d021
  .const GREEN = 5
  .const RED = 2
  .label char_cursor = 6
  .label line_cursor = $a
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @13 [phi:@begin->@13]
b13_from_bbegin:
  jmp b13
//SEG4 @13
b13:
//SEG5 [2] call main param-assignment [ ] ( )
//SEG6 [4] phi from @13 to main [phi:@13->main]
main_from_b13:
  jsr main
//SEG7 [3] phi from @13 to @end [phi:@13->@end]
bend_from_b13:
  jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
  //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] )
  //SEG11 [68] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
    jmp b1
  //SEG12 main::@1
  b1:
  //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #GREEN
    sta BGCOL
  //SEG14 [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
  //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes]
  test_bytes_from_b1:
    jsr test_bytes
  //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG17 main::@2
  b2:
  //SEG18 [9] call test_sbytes param-assignment [ ] ( main:2 [ ] )
  //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes]
  test_sbytes_from_b2:
    jsr test_sbytes
    jmp breturn
  //SEG20 main::@return
  breturn:
  //SEG21 [10] return  [ ] ( main:2 [ ] )
    rts
}
//SEG22 test_sbytes
test_sbytes: {
    .const bb = 0
    .const bc = bb+2
    .const bd = bc-4
    .const bf = $ff & -$7f-$7f
    .const be = -bd
  //SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte]
  assert_sbyte_from_test_sbytes:
  //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #0
    sta assert_sbyte.c
  //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsz1=vbsc1 
    lda #bb
    sta assert_sbyte.b
  //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg
    sta assert_sbyte.msg
    lda #>msg
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1]
  b1_from_test_sbytes:
    jmp b1
  //SEG29 test_sbytes::@1
  b1:
  //SEG30 [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte]
  assert_sbyte_from_b1:
  //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsz1=vbsc1 
    lda #bc
    sta assert_sbyte.b
  //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg1
    sta assert_sbyte.msg
    lda #>msg1
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2]
  b2_from_b1:
    jmp b2
  //SEG36 test_sbytes::@2
  b2:
  //SEG37 [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte]
  assert_sbyte_from_b2:
  //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 
    lda #-2
    sta assert_sbyte.c
  //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsz1=vbsc1 
    lda #bd
    sta assert_sbyte.b
  //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg2
    sta assert_sbyte.msg
    lda #>msg2
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3]
  b3_from_b2:
    jmp b3
  //SEG43 test_sbytes::@3
  b3:
  //SEG44 [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte]
  assert_sbyte_from_b3:
  //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsz1=vbsc1 
    lda #be
    sta assert_sbyte.b
  //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg3
    sta assert_sbyte.msg
    lda #>msg3
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4]
  b4_from_b3:
    jmp b4
  //SEG50 test_sbytes::@4
  b4:
  //SEG51 [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] )
  //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte]
  assert_sbyte_from_b4:
  //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsz1=vbsc1 
    lda #bf
    sta assert_sbyte.b
  //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg4
    sta assert_sbyte.msg
    lda #>msg4
    sta assert_sbyte.msg+1
    jsr assert_sbyte
    jmp breturn
  //SEG56 test_sbytes::@return
  breturn:
  //SEG57 [21] return  [ ] ( main:2::test_sbytes:9 [ ] )
    rts
    msg: .text "0=0@"
    msg1: .text "0+2=2@"
    msg2: .text "0+2-4=-2@"
    msg3: .text "-(0+2-4)=2@"
    msg4: .text "-127-127=2@"
}
//SEG58 assert_sbyte
assert_sbyte: {
    .label msg = 2
    .label b = 4
    .label c = 5
  //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) -- pbuz1=pbuz2 
    lda msg
    sta print_str.str
    lda msg+1
    sta print_str.str+1
  //SEG60 [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG61 [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
  print_str_from_assert_sbyte:
  //SEG63 [36] phi (byte*) char_cursor#75 = (byte*~) char_cursor#82 [phi:assert_sbyte->print_str#0] -- register_copy 
  //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy 
    jsr print_str
  //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5]
  b5_from_assert_sbyte:
    jmp b5
  //SEG66 assert_sbyte::@5
  b5:
  //SEG67 [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str]
  print_str_from_b5:
  //SEG69 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy 
  //SEG70 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b6
  //SEG71 assert_sbyte::@6
  b6:
  //SEG72 [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- vbsz1_eq_vbsz2_then_la1 
    lda b
    cmp c
    beq b1_from_b6
    jmp b3
  //SEG73 assert_sbyte::@3
  b3:
  //SEG74 [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- _deref_pbuc1=vbuc2 
    lda #RED
    sta BGCOL
  //SEG75 [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str]
  print_str_from_b3:
  //SEG77 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy 
  //SEG78 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2]
  b2_from_b1:
  b2_from_b3:
    jmp b2
  //SEG80 assert_sbyte::@2
  b2:
  //SEG81 [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
  //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln]
  print_ln_from_b2:
  //SEG83 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG84 assert_sbyte::@return
  breturn:
  //SEG85 [33] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
    rts
  //SEG86 [34] phi from assert_sbyte::@6 to assert_sbyte::@1 [phi:assert_sbyte::@6->assert_sbyte::@1]
  b1_from_b6:
    jmp b1
  //SEG87 assert_sbyte::@1
  b1:
  //SEG88 [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str]
  print_str_from_b1:
  //SEG90 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy 
  //SEG91 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b2_from_b1
    str: .text " @"
    str1: .text "ok@"
    str2: .text "fail!@"
}
//SEG92 print_str
print_str: {
    .label str = 8
  //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
  b1_from_print_str:
  b1_from_b2:
  //SEG94 [37] phi (byte*) char_cursor#2 = (byte*) char_cursor#75 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp b1
  //SEG96 print_str::@1
  b1:
  //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG98 print_str::@return
  breturn:
  //SEG99 [39] return  [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] )
    rts
  //SEG100 print_str::@2
  b2:
  //SEG101 [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (char_cursor),y
  //SEG102 [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 
    inc char_cursor
    bne !+
    inc char_cursor+1
  !:
  //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG104 print_ln
print_ln: {
  //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
  b1_from_print_ln:
  b1_from_b1:
  //SEG106 [44] phi (byte*) line_cursor#21 = (byte*) line_cursor#42 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp b1
  //SEG107 print_ln::@1
  b1:
  //SEG108 [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 
    lda line_cursor
    clc
    adc #$28
    sta line_cursor
    bcc !+
    inc line_cursor+1
  !:
  //SEG109 [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 
    lda line_cursor+1
    cmp char_cursor+1
    bcc b1_from_b1
    bne !+
    lda line_cursor
    cmp char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
  //SEG110 print_ln::@return
  breturn:
  //SEG111 [47] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] )
    rts
}
//SEG112 test_bytes
test_bytes: {
    .const bb = 0
    .const bc = bb+2
    .const bd = bc-4
  //SEG113 [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte]
  assert_byte_from_test_bytes:
  //SEG115 [55] phi (byte*) line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 
    lda #<$400
    sta line_cursor
    lda #>$400
    sta line_cursor+1
  //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 
    lda #0
    sta assert_byte.c
  //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuz1=vbuc1 
    lda #bb
    sta assert_byte.b
  //SEG118 [55] phi (byte*) char_cursor#65 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 
    lda #<$400
    sta char_cursor
    lda #>$400
    sta char_cursor+1
  //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg
    sta assert_byte.msg
    lda #>msg
    sta assert_byte.msg+1
    jsr assert_byte
    jmp b1
  //SEG120 test_bytes::@1
  b1:
  //SEG121 [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG122 [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte]
  assert_byte_from_b1:
  //SEG124 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy 
  //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 
    lda #2
    sta assert_byte.c
  //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuz1=vbuc1 
    lda #bc
    sta assert_byte.b
  //SEG127 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#88 [phi:test_bytes::@1->assert_byte#3] -- register_copy 
  //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg1
    sta assert_byte.msg
    lda #>msg1
    sta assert_byte.msg+1
    jsr assert_byte
    jmp b2
  //SEG129 test_bytes::@2
  b2:
  //SEG130 [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG131 [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte]
  assert_byte_from_b2:
  //SEG133 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy 
  //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 
    lda #$fe
    sta assert_byte.c
  //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuz1=vbuc1 
    lda #bd
    sta assert_byte.b
  //SEG136 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#89 [phi:test_bytes::@2->assert_byte#3] -- register_copy 
  //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg2
    sta assert_byte.msg
    lda #>msg2
    sta assert_byte.msg+1
    jsr assert_byte
    jmp breturn
  //SEG138 test_bytes::@return
  breturn:
  //SEG139 [54] return  [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
    rts
    msg: .text "0=0@"
    msg1: .text "0+2=2@"
    msg2: .text "0+2-4=254@"
}
//SEG140 assert_byte
assert_byte: {
    .label msg = $c
    .label b = $e
    .label c = $f
  //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) -- pbuz1=pbuz2 
    lda msg
    sta print_str.str
    lda msg+1
    sta print_str.str+1
  //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str]
  print_str_from_assert_byte:
  //SEG144 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#65 [phi:assert_byte->print_str#0] -- register_copy 
  //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy 
    jsr print_str
  //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5]
  b5_from_assert_byte:
    jmp b5
  //SEG147 assert_byte::@5
  b5:
  //SEG148 [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str]
  print_str_from_b5:
  //SEG150 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy 
  //SEG151 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b6
  //SEG152 assert_byte::@6
  b6:
  //SEG153 [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- vbuz1_eq_vbuz2_then_la1 
    lda b
    cmp c
    beq b1_from_b6
    jmp b3
  //SEG154 assert_byte::@3
  b3:
  //SEG155 [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- _deref_pbuc1=vbuc2 
    lda #RED
    sta BGCOL
  //SEG156 [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str]
  print_str_from_b3:
  //SEG158 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy 
  //SEG159 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2]
  b2_from_b1:
  b2_from_b3:
    jmp b2
  //SEG161 assert_byte::@2
  b2:
  //SEG162 [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
  //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln]
  print_ln_from_b2:
  //SEG164 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#45 [phi:assert_byte::@2->print_ln#0] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG165 assert_byte::@return
  breturn:
  //SEG166 [65] return  [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
    rts
  //SEG167 [66] phi from assert_byte::@6 to assert_byte::@1 [phi:assert_byte::@6->assert_byte::@1]
  b1_from_b6:
    jmp b1
  //SEG168 assert_byte::@1
  b1:
  //SEG169 [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str]
  print_str_from_b1:
  //SEG171 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy 
  //SEG172 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b2_from_b1
    str: .text " @"
    str1: .text "ok@"
    str2: .text "fail!@"
}
//SEG173 print_cls
print_cls: {
    .label sc = $10
  //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
    jmp b1
  //SEG176 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG178 print_cls::@1
  b1:
  //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG181 [72] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1_from_b1
    lda sc
    cmp #<$400+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG182 print_cls::@return
  breturn:
  //SEG183 [73] return  [ ] ( main:2::print_cls:5 [ ] )
    rts
}

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
Statement [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) always clobbers reg byte a 
Statement [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a 
Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ assert_byte::b#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ assert_byte::b#3 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ assert_byte::c#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ assert_byte::c#3 ]
Statement [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y 
Statement [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a 
Statement [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a 
Statement [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) always clobbers reg byte a 
Statement [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) always clobbers reg byte a 
Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a 
Statement [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) always clobbers reg byte a 
Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [72] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) always clobbers reg byte a 
Statement [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) always clobbers reg byte a 
Statement [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a 
Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y 
Statement [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y 
Statement [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a 
Statement [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a 
Statement [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) always clobbers reg byte a 
Statement [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) always clobbers reg byte a 
Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a 
Statement [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) always clobbers reg byte a 
Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [72] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_WORD:2 [ assert_sbyte::msg#5 ] : zp ZP_WORD:2 , 
Potential registers zp ZP_BYTE:4 [ assert_sbyte::b#5 ] : zp ZP_BYTE:4 , reg byte x , 
Potential registers zp ZP_BYTE:5 [ assert_sbyte::c#5 ] : zp ZP_BYTE:5 , reg byte x , 
Potential registers zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] : zp ZP_WORD:6 , 
Potential registers zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:8 , 
Potential registers zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] : zp ZP_WORD:10 , 
Potential registers zp ZP_WORD:12 [ assert_byte::msg#3 ] : zp ZP_WORD:12 , 
Potential registers zp ZP_BYTE:14 [ assert_byte::b#3 ] : zp ZP_BYTE:14 , reg byte x , 
Potential registers zp ZP_BYTE:15 [ assert_byte::c#3 ] : zp ZP_BYTE:15 , reg byte x , 
Potential registers zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:16 , 

REGISTER UPLIFT SCOPES
Uplift Scope [] 46.23: zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] 31.8: zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] 
Uplift Scope [print_str] 45.5: zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] 
Uplift Scope [print_cls] 33: zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] 
Uplift Scope [assert_byte] 2: zp ZP_WORD:12 [ assert_byte::msg#3 ] 0.4: zp ZP_BYTE:14 [ assert_byte::b#3 ] 0.4: zp ZP_BYTE:15 [ assert_byte::c#3 ] 
Uplift Scope [assert_sbyte] 2: zp ZP_WORD:2 [ assert_sbyte::msg#5 ] 0.33: zp ZP_BYTE:4 [ assert_sbyte::b#5 ] 0.33: zp ZP_BYTE:5 [ assert_sbyte::c#5 ] 
Uplift Scope [print_ln] 
Uplift Scope [main] 
Uplift Scope [test_bytes] 
Uplift Scope [test_sbytes] 

Uplifting [] best 2205 combination zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] 
Uplifting [print_str] best 2205 combination zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] 
Uplifting [print_cls] best 2205 combination zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] 
Uplifting [assert_byte] best 2193 combination zp ZP_WORD:12 [ assert_byte::msg#3 ] reg byte x [ assert_byte::b#3 ] zp ZP_BYTE:15 [ assert_byte::c#3 ] 
Uplifting [assert_sbyte] best 2175 combination zp ZP_WORD:2 [ assert_sbyte::msg#5 ] reg byte x [ assert_sbyte::b#5 ] zp ZP_BYTE:5 [ assert_sbyte::c#5 ] 
Uplifting [print_ln] best 2175 combination 
Uplifting [main] best 2175 combination 
Uplifting [test_bytes] best 2175 combination 
Uplifting [test_sbytes] best 2175 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ assert_byte::c#3 ]
Uplifting [assert_byte] best 2175 combination zp ZP_BYTE:15 [ assert_byte::c#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ assert_sbyte::c#5 ]
Uplifting [assert_sbyte] best 2175 combination zp ZP_BYTE:5 [ assert_sbyte::c#5 ] 
Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 ] ] with [ zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] ]
Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] ] with [ zp ZP_WORD:12 [ assert_byte::msg#3 ] ]
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ assert_sbyte::c#5 ]
Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ]
Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ]
Allocated (was zp ZP_BYTE:15) zp ZP_BYTE:9 [ assert_byte::c#3 ]
Allocated (was zp ZP_WORD:16) zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ]

ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
  .label BGCOL = $d021
  .const GREEN = 5
  .const RED = 2
  .label char_cursor = 5
  .label line_cursor = 7
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @13 [phi:@begin->@13]
b13_from_bbegin:
  jmp b13
//SEG4 @13
b13:
//SEG5 [2] call main param-assignment [ ] ( )
//SEG6 [4] phi from @13 to main [phi:@13->main]
main_from_b13:
  jsr main
//SEG7 [3] phi from @13 to @end [phi:@13->@end]
bend_from_b13:
  jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
  //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] )
  //SEG11 [68] phi from main to print_cls [phi:main->print_cls]
  print_cls_from_main:
    jsr print_cls
    jmp b1
  //SEG12 main::@1
  b1:
  //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #GREEN
    sta BGCOL
  //SEG14 [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
  //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes]
  test_bytes_from_b1:
    jsr test_bytes
  //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG17 main::@2
  b2:
  //SEG18 [9] call test_sbytes param-assignment [ ] ( main:2 [ ] )
  //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes]
  test_sbytes_from_b2:
    jsr test_sbytes
    jmp breturn
  //SEG20 main::@return
  breturn:
  //SEG21 [10] return  [ ] ( main:2 [ ] )
    rts
}
//SEG22 test_sbytes
test_sbytes: {
    .const bb = 0
    .const bc = bb+2
    .const bd = bc-4
    .const bf = $ff & -$7f-$7f
    .const be = -bd
  //SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte]
  assert_sbyte_from_test_sbytes:
  //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #0
    sta assert_sbyte.c
  //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bb
  //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg
    sta assert_sbyte.msg
    lda #>msg
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1]
  b1_from_test_sbytes:
    jmp b1
  //SEG29 test_sbytes::@1
  b1:
  //SEG30 [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte]
  assert_sbyte_from_b1:
  //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bc
  //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg1
    sta assert_sbyte.msg
    lda #>msg1
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2]
  b2_from_b1:
    jmp b2
  //SEG36 test_sbytes::@2
  b2:
  //SEG37 [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte]
  assert_sbyte_from_b2:
  //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 
    lda #-2
    sta assert_sbyte.c
  //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bd
  //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg2
    sta assert_sbyte.msg
    lda #>msg2
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3]
  b3_from_b2:
    jmp b3
  //SEG43 test_sbytes::@3
  b3:
  //SEG44 [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte]
  assert_sbyte_from_b3:
  //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #be
  //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg3
    sta assert_sbyte.msg
    lda #>msg3
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4]
  b4_from_b3:
    jmp b4
  //SEG50 test_sbytes::@4
  b4:
  //SEG51 [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] )
  //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte]
  assert_sbyte_from_b4:
  //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bf
  //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg4
    sta assert_sbyte.msg
    lda #>msg4
    sta assert_sbyte.msg+1
    jsr assert_sbyte
    jmp breturn
  //SEG56 test_sbytes::@return
  breturn:
  //SEG57 [21] return  [ ] ( main:2::test_sbytes:9 [ ] )
    rts
    msg: .text "0=0@"
    msg1: .text "0+2=2@"
    msg2: .text "0+2-4=-2@"
    msg3: .text "-(0+2-4)=2@"
    msg4: .text "-127-127=2@"
}
//SEG58 assert_sbyte
assert_sbyte: {
    .label msg = 2
    .label c = 4
  //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] )
    // (byte*) print_str::str#5 = (byte*) assert_sbyte::msg#5  // register copy zp ZP_WORD:2
  //SEG60 [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG61 [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
  print_str_from_assert_sbyte:
  //SEG63 [36] phi (byte*) char_cursor#75 = (byte*~) char_cursor#82 [phi:assert_sbyte->print_str#0] -- register_copy 
  //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy 
    jsr print_str
  //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5]
  b5_from_assert_sbyte:
    jmp b5
  //SEG66 assert_sbyte::@5
  b5:
  //SEG67 [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str]
  print_str_from_b5:
  //SEG69 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy 
  //SEG70 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b6
  //SEG71 assert_sbyte::@6
  b6:
  //SEG72 [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- vbsxx_eq_vbsz1_then_la1 
    cpx c
    beq b1_from_b6
    jmp b3
  //SEG73 assert_sbyte::@3
  b3:
  //SEG74 [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- _deref_pbuc1=vbuc2 
    lda #RED
    sta BGCOL
  //SEG75 [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str]
  print_str_from_b3:
  //SEG77 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy 
  //SEG78 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2]
  b2_from_b1:
  b2_from_b3:
    jmp b2
  //SEG80 assert_sbyte::@2
  b2:
  //SEG81 [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
  //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln]
  print_ln_from_b2:
  //SEG83 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG84 assert_sbyte::@return
  breturn:
  //SEG85 [33] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
    rts
  //SEG86 [34] phi from assert_sbyte::@6 to assert_sbyte::@1 [phi:assert_sbyte::@6->assert_sbyte::@1]
  b1_from_b6:
    jmp b1
  //SEG87 assert_sbyte::@1
  b1:
  //SEG88 [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str]
  print_str_from_b1:
  //SEG90 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy 
  //SEG91 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b2_from_b1
    str: .text " @"
    str1: .text "ok@"
    str2: .text "fail!@"
}
//SEG92 print_str
print_str: {
    .label str = 2
  //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
  b1_from_print_str:
  b1_from_b2:
  //SEG94 [37] phi (byte*) char_cursor#2 = (byte*) char_cursor#75 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
    jmp b1
  //SEG96 print_str::@1
  b1:
  //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG98 print_str::@return
  breturn:
  //SEG99 [39] return  [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] )
    rts
  //SEG100 print_str::@2
  b2:
  //SEG101 [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (char_cursor),y
  //SEG102 [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 
    inc char_cursor
    bne !+
    inc char_cursor+1
  !:
  //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG104 print_ln
print_ln: {
  //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
  b1_from_print_ln:
  b1_from_b1:
  //SEG106 [44] phi (byte*) line_cursor#21 = (byte*) line_cursor#42 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
    jmp b1
  //SEG107 print_ln::@1
  b1:
  //SEG108 [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 
    lda line_cursor
    clc
    adc #$28
    sta line_cursor
    bcc !+
    inc line_cursor+1
  !:
  //SEG109 [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 
    lda line_cursor+1
    cmp char_cursor+1
    bcc b1_from_b1
    bne !+
    lda line_cursor
    cmp char_cursor
    bcc b1_from_b1
  !:
    jmp breturn
  //SEG110 print_ln::@return
  breturn:
  //SEG111 [47] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] )
    rts
}
//SEG112 test_bytes
test_bytes: {
    .const bb = 0
    .const bc = bb+2
    .const bd = bc-4
  //SEG113 [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte]
  assert_byte_from_test_bytes:
  //SEG115 [55] phi (byte*) line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 
    lda #<$400
    sta line_cursor
    lda #>$400
    sta line_cursor+1
  //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 
    lda #0
    sta assert_byte.c
  //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 
    ldx #bb
  //SEG118 [55] phi (byte*) char_cursor#65 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 
    lda #<$400
    sta char_cursor
    lda #>$400
    sta char_cursor+1
  //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg
    sta assert_byte.msg
    lda #>msg
    sta assert_byte.msg+1
    jsr assert_byte
    jmp b1
  //SEG120 test_bytes::@1
  b1:
  //SEG121 [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG122 [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte]
  assert_byte_from_b1:
  //SEG124 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy 
  //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 
    lda #2
    sta assert_byte.c
  //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 
    ldx #bc
  //SEG127 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#88 [phi:test_bytes::@1->assert_byte#3] -- register_copy 
  //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg1
    sta assert_byte.msg
    lda #>msg1
    sta assert_byte.msg+1
    jsr assert_byte
    jmp b2
  //SEG129 test_bytes::@2
  b2:
  //SEG130 [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG131 [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte]
  assert_byte_from_b2:
  //SEG133 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy 
  //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 
    lda #$fe
    sta assert_byte.c
  //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 
    ldx #bd
  //SEG136 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#89 [phi:test_bytes::@2->assert_byte#3] -- register_copy 
  //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg2
    sta assert_byte.msg
    lda #>msg2
    sta assert_byte.msg+1
    jsr assert_byte
    jmp breturn
  //SEG138 test_bytes::@return
  breturn:
  //SEG139 [54] return  [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
    rts
    msg: .text "0=0@"
    msg1: .text "0+2=2@"
    msg2: .text "0+2-4=254@"
}
//SEG140 assert_byte
assert_byte: {
    .label msg = 2
    .label c = 9
  //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
    // (byte*) print_str::str#1 = (byte*) assert_byte::msg#3  // register copy zp ZP_WORD:2
  //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str]
  print_str_from_assert_byte:
  //SEG144 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#65 [phi:assert_byte->print_str#0] -- register_copy 
  //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy 
    jsr print_str
  //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5]
  b5_from_assert_byte:
    jmp b5
  //SEG147 assert_byte::@5
  b5:
  //SEG148 [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str]
  print_str_from_b5:
  //SEG150 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy 
  //SEG151 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
    jmp b6
  //SEG152 assert_byte::@6
  b6:
  //SEG153 [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- vbuxx_eq_vbuz1_then_la1 
    cpx c
    beq b1_from_b6
    jmp b3
  //SEG154 assert_byte::@3
  b3:
  //SEG155 [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- _deref_pbuc1=vbuc2 
    lda #RED
    sta BGCOL
  //SEG156 [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str]
  print_str_from_b3:
  //SEG158 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy 
  //SEG159 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2]
  b2_from_b1:
  b2_from_b3:
    jmp b2
  //SEG161 assert_byte::@2
  b2:
  //SEG162 [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
  //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln]
  print_ln_from_b2:
  //SEG164 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#45 [phi:assert_byte::@2->print_ln#0] -- register_copy 
    jsr print_ln
    jmp breturn
  //SEG165 assert_byte::@return
  breturn:
  //SEG166 [65] return  [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
    rts
  //SEG167 [66] phi from assert_byte::@6 to assert_byte::@1 [phi:assert_byte::@6->assert_byte::@1]
  b1_from_b6:
    jmp b1
  //SEG168 assert_byte::@1
  b1:
  //SEG169 [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str]
  print_str_from_b1:
  //SEG171 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy 
  //SEG172 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b2_from_b1
    str: .text " @"
    str1: .text "ok@"
    str2: .text "fail!@"
}
//SEG173 print_cls
print_cls: {
    .label sc = $a
  //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
    jmp b1
  //SEG176 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG178 print_cls::@1
  b1:
  //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG181 [72] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1_from_b1
    lda sc
    cmp #<$400+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG182 print_cls::@return
  breturn:
  //SEG183 [73] return  [ ] ( main:2::print_cls:5 [ ] )
    rts
}

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b13
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b5
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
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 b5
Removing instruction jmp b6
Removing instruction jmp b3
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b6 with b1
Replacing label b2_from_b1 with b2
Replacing label b1_from_b2 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b6 with b1
Replacing label b2_from_b1 with b2
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction bbegin:
Removing instruction b13_from_bbegin:
Removing instruction main_from_b13:
Removing instruction bend_from_b13:
Removing instruction b2_from_b1:
Removing instruction test_sbytes_from_b2:
Removing instruction b1_from_test_sbytes:
Removing instruction assert_sbyte_from_b1:
Removing instruction b2_from_b1:
Removing instruction assert_sbyte_from_b2:
Removing instruction b3_from_b2:
Removing instruction assert_sbyte_from_b3:
Removing instruction b4_from_b3:
Removing instruction assert_sbyte_from_b4:
Removing instruction b5_from_assert_sbyte:
Removing instruction print_str_from_b5:
Removing instruction b2_from_b1:
Removing instruction b2_from_b3:
Removing instruction print_ln_from_b2:
Removing instruction b1_from_b6:
Removing instruction print_str_from_b1:
Removing instruction b1_from_print_str:
Removing instruction b1_from_b2:
Removing instruction b1_from_print_ln:
Removing instruction b1_from_b1:
Removing instruction b5_from_assert_byte:
Removing instruction print_str_from_b5:
Removing instruction b2_from_b1:
Removing instruction b2_from_b3:
Removing instruction print_ln_from_b2:
Removing instruction b1_from_b6:
Removing instruction print_str_from_b1:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b13:
Removing instruction bend:
Removing instruction print_cls_from_main:
Removing instruction b1:
Removing instruction test_bytes_from_b1:
Removing instruction b2:
Removing instruction breturn:
Removing instruction assert_sbyte_from_test_sbytes:
Removing instruction b1:
Removing instruction b2:
Removing instruction b3:
Removing instruction b4:
Removing instruction breturn:
Removing instruction print_str_from_assert_sbyte:
Removing instruction b5:
Removing instruction b6:
Removing instruction b3:
Removing instruction print_str_from_b3:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction assert_byte_from_test_bytes:
Removing instruction b1:
Removing instruction assert_byte_from_b1:
Removing instruction b2:
Removing instruction assert_byte_from_b2:
Removing instruction breturn:
Removing instruction print_str_from_assert_byte:
Removing instruction b5:
Removing instruction b6:
Removing instruction b3:
Removing instruction print_str_from_b3:
Removing instruction breturn:
Removing instruction b1_from_print_cls:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination

FINAL SYMBOL TABLE
(label) @13
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
(byte) GREEN
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) RED
(const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2
(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c)
(label) assert_byte::@1
(label) assert_byte::@2
(label) assert_byte::@3
(label) assert_byte::@5
(label) assert_byte::@6
(label) assert_byte::@return
(byte) assert_byte::b
(byte) assert_byte::b#3 reg byte x 0.4
(byte) assert_byte::c
(byte) assert_byte::c#3 c zp ZP_BYTE:9 0.4
(byte*) assert_byte::msg
(byte*) assert_byte::msg#3 msg zp ZP_WORD:2 2.0
(const string) assert_byte::str str = (string) " @"
(const string) assert_byte::str1 str1 = (string) "ok@"
(const string) assert_byte::str2 str2 = (string) "fail!@"
(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
(label) assert_sbyte::@1
(label) assert_sbyte::@2
(label) assert_sbyte::@3
(label) assert_sbyte::@5
(label) assert_sbyte::@6
(label) assert_sbyte::@return
(signed byte) assert_sbyte::b
(signed byte) assert_sbyte::b#5 reg byte x 0.3333333333333333
(signed byte) assert_sbyte::c
(signed byte) assert_sbyte::c#5 c zp ZP_BYTE:4 0.3333333333333333
(byte*) assert_sbyte::msg
(byte*) assert_sbyte::msg#5 msg zp ZP_WORD:2 2.0
(const string) assert_sbyte::str str = (string) " @"
(const string) assert_sbyte::str1 str1 = (string) "ok@"
(const string) assert_sbyte::str2 str2 = (string) "fail!@"
(byte*) char_cursor
(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 11.0
(byte*) char_cursor#2 char_cursor zp ZP_WORD:5 2.230769230769231
(byte*) char_cursor#65 char_cursor zp ZP_WORD:5 3.0
(byte*) char_cursor#75 char_cursor zp ZP_WORD:5 18.0
(byte*~) char_cursor#82 char_cursor zp ZP_WORD:5 4.0
(byte*~) char_cursor#88 char_cursor zp ZP_WORD:5 4.0
(byte*~) char_cursor#89 char_cursor zp ZP_WORD:5 4.0
(byte*) line_cursor
(byte*) line_cursor#1 line_cursor zp ZP_WORD:7 1.2500000000000002
(byte*) line_cursor#21 line_cursor zp ZP_WORD:7 24.0
(byte*) line_cursor#42 line_cursor zp ZP_WORD:7 6.0
(byte*) line_cursor#45 line_cursor zp ZP_WORD:7 0.5454545454545454
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:10 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:10 16.5
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:2 22.0
(byte*) print_str::str#1 str zp ZP_WORD:2 4.0
(byte*) print_str::str#10 str zp ZP_WORD:2 11.5
(byte*) print_str::str#11 str zp ZP_WORD:2 6.0
(byte*) print_str::str#5 str zp ZP_WORD:2 2.0
(void()) test_bytes()
(label) test_bytes::@1
(label) test_bytes::@2
(label) test_bytes::@return
(byte) test_bytes::bb
(const byte) test_bytes::bb#0 bb = (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) test_bytes::bc
(const byte) test_bytes::bc#0 bc = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test_bytes::bd
(const byte) test_bytes::bd#0 bd = ((byte))(const byte) test_bytes::bc#0-(byte/signed byte/word/signed word/dword/signed dword) 4
(const string) test_bytes::msg msg = (string) "0=0@"
(const string) test_bytes::msg1 msg1 = (string) "0+2=2@"
(const string) test_bytes::msg2 msg2 = (string) "0+2-4=254@"
(void()) test_sbytes()
(label) test_sbytes::@1
(label) test_sbytes::@2
(label) test_sbytes::@3
(label) test_sbytes::@4
(label) test_sbytes::@return
(signed byte) test_sbytes::bb
(const signed byte) test_sbytes::bb#0 bb = (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte) test_sbytes::bc
(const signed byte) test_sbytes::bc#0 bc = (const signed byte) test_sbytes::bb#0+(byte/signed byte/word/signed word/dword/signed dword) 2
(signed byte) test_sbytes::bd
(const signed byte) test_sbytes::bd#0 bd = (const signed byte) test_sbytes::bc#0-(byte/signed byte/word/signed word/dword/signed dword) 4
(signed byte) test_sbytes::be
(const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0
(signed byte) test_sbytes::bf
(const signed byte) test_sbytes::bf#0 bf = ((signed byte))-(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127
(const string) test_sbytes::msg msg = (string) "0=0@"
(const string) test_sbytes::msg1 msg1 = (string) "0+2=2@"
(const string) test_sbytes::msg2 msg2 = (string) "0+2-4=-2@"
(const string) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@"
(const string) test_sbytes::msg4 msg4 = (string) "-127-127=2@"

zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ]
reg byte x [ assert_sbyte::b#5 ]
zp ZP_BYTE:4 [ assert_sbyte::c#5 ]
zp ZP_WORD:5 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ]
zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ]
reg byte x [ assert_byte::b#3 ]
zp ZP_BYTE:9 [ assert_byte::c#3 ]
zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ]


FINAL ASSEMBLER
Score: 1846

//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
  .label BGCOL = $d021
  .const GREEN = 5
  .const RED = 2
  .label char_cursor = 5
  .label line_cursor = 7
//SEG2 @begin
//SEG3 [1] phi from @begin to @13 [phi:@begin->@13]
//SEG4 @13
//SEG5 [2] call main param-assignment [ ] ( )
//SEG6 [4] phi from @13 to main [phi:@13->main]
  jsr main
//SEG7 [3] phi from @13 to @end [phi:@13->@end]
//SEG8 @end
//SEG9 main
main: {
  //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] )
  //SEG11 [68] phi from main to print_cls [phi:main->print_cls]
    jsr print_cls
  //SEG12 main::@1
  //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #GREEN
    sta BGCOL
  //SEG14 [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] )
  //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes]
    jsr test_bytes
  //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  //SEG17 main::@2
  //SEG18 [9] call test_sbytes param-assignment [ ] ( main:2 [ ] )
  //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes]
    jsr test_sbytes
  //SEG20 main::@return
  //SEG21 [10] return  [ ] ( main:2 [ ] )
    rts
}
//SEG22 test_sbytes
test_sbytes: {
    .const bb = 0
    .const bc = bb+2
    .const bd = bc-4
    .const bf = $ff & -$7f-$7f
    .const be = -bd
  //SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte]
  //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #0
    sta assert_sbyte.c
  //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bb
  //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg
    sta assert_sbyte.msg
    lda #>msg
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1]
  //SEG29 test_sbytes::@1
  //SEG30 [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte]
  //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bc
  //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg1
    sta assert_sbyte.msg
    lda #>msg1
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2]
  //SEG36 test_sbytes::@2
  //SEG37 [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte]
  //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 
    lda #-2
    sta assert_sbyte.c
  //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bd
  //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg2
    sta assert_sbyte.msg
    lda #>msg2
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3]
  //SEG43 test_sbytes::@3
  //SEG44 [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
  //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte]
  //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #be
  //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg3
    sta assert_sbyte.msg
    lda #>msg3
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4]
  //SEG50 test_sbytes::@4
  //SEG51 [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] )
  //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte]
  //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 
    lda #2
    sta assert_sbyte.c
  //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 
    ldx #bf
  //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 
    lda #<msg4
    sta assert_sbyte.msg
    lda #>msg4
    sta assert_sbyte.msg+1
    jsr assert_sbyte
  //SEG56 test_sbytes::@return
  //SEG57 [21] return  [ ] ( main:2::test_sbytes:9 [ ] )
    rts
    msg: .text "0=0@"
    msg1: .text "0+2=2@"
    msg2: .text "0+2-4=-2@"
    msg3: .text "-(0+2-4)=2@"
    msg4: .text "-127-127=2@"
}
//SEG58 assert_sbyte
assert_sbyte: {
    .label msg = 2
    .label c = 4
  //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] )
    // (byte*) print_str::str#5 = (byte*) assert_sbyte::msg#5  // register copy zp ZP_WORD:2
  //SEG60 [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG61 [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
  //SEG63 [36] phi (byte*) char_cursor#75 = (byte*~) char_cursor#82 [phi:assert_sbyte->print_str#0] -- register_copy 
  //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy 
    jsr print_str
  //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5]
  //SEG66 assert_sbyte::@5
  //SEG67 [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] )
  //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str]
  //SEG69 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy 
  //SEG70 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG71 assert_sbyte::@6
  //SEG72 [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- vbsxx_eq_vbsz1_then_la1 
    cpx c
    beq b1
  //SEG73 assert_sbyte::@3
  //SEG74 [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- _deref_pbuc1=vbuc2 
    lda #RED
    sta BGCOL
  //SEG75 [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str]
  //SEG77 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy 
  //SEG78 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2]
  //SEG80 assert_sbyte::@2
  b2:
  //SEG81 [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
  //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln]
  //SEG83 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy 
    jsr print_ln
  //SEG84 assert_sbyte::@return
  //SEG85 [33] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] )
    rts
  //SEG86 [34] phi from assert_sbyte::@6 to assert_sbyte::@1 [phi:assert_sbyte::@6->assert_sbyte::@1]
  //SEG87 assert_sbyte::@1
  b1:
  //SEG88 [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] )
  //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str]
  //SEG90 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy 
  //SEG91 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b2
    str: .text " @"
    str1: .text "ok@"
    str2: .text "fail!@"
}
//SEG92 print_str
print_str: {
    .label str = 2
  //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1]
  //SEG94 [37] phi (byte*) char_cursor#2 = (byte*) char_cursor#75 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy 
  //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy 
  //SEG96 print_str::@1
  b1:
  //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
  //SEG98 print_str::@return
  //SEG99 [39] return  [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] )
    rts
  //SEG100 print_str::@2
  b2:
  //SEG101 [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (char_cursor),y
  //SEG102 [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 
    inc char_cursor
    bne !+
    inc char_cursor+1
  !:
  //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1
}
//SEG104 print_ln
print_ln: {
  //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
  //SEG106 [44] phi (byte*) line_cursor#21 = (byte*) line_cursor#42 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy 
  //SEG107 print_ln::@1
  b1:
  //SEG108 [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 
    lda line_cursor
    clc
    adc #$28
    sta line_cursor
    bcc !+
    inc line_cursor+1
  !:
  //SEG109 [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 
    lda line_cursor+1
    cmp char_cursor+1
    bcc b1
    bne !+
    lda line_cursor
    cmp char_cursor
    bcc b1
  !:
  //SEG110 print_ln::@return
  //SEG111 [47] return  [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] )
    rts
}
//SEG112 test_bytes
test_bytes: {
    .const bb = 0
    .const bc = bb+2
    .const bd = bc-4
  //SEG113 [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte]
  //SEG115 [55] phi (byte*) line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 
    lda #<$400
    sta line_cursor
    lda #>$400
    sta line_cursor+1
  //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 
    lda #0
    sta assert_byte.c
  //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 
    ldx #bb
  //SEG118 [55] phi (byte*) char_cursor#65 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 
    lda #<$400
    sta char_cursor
    lda #>$400
    sta char_cursor+1
  //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg
    sta assert_byte.msg
    lda #>msg
    sta assert_byte.msg+1
    jsr assert_byte
  //SEG120 test_bytes::@1
  //SEG121 [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG122 [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte]
  //SEG124 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy 
  //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 
    lda #2
    sta assert_byte.c
  //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 
    ldx #bc
  //SEG127 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#88 [phi:test_bytes::@1->assert_byte#3] -- register_copy 
  //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg1
    sta assert_byte.msg
    lda #>msg1
    sta assert_byte.msg+1
    jsr assert_byte
  //SEG129 test_bytes::@2
  //SEG130 [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) -- pbuz1=pbuz2 
    lda line_cursor
    sta char_cursor
    lda line_cursor+1
    sta char_cursor+1
  //SEG131 [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
  //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte]
  //SEG133 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy 
  //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word/dword/signed dword) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 
    lda #$fe
    sta assert_byte.c
  //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 
    ldx #bd
  //SEG136 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#89 [phi:test_bytes::@2->assert_byte#3] -- register_copy 
  //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 
    lda #<msg2
    sta assert_byte.msg
    lda #>msg2
    sta assert_byte.msg+1
    jsr assert_byte
  //SEG138 test_bytes::@return
  //SEG139 [54] return  [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] )
    rts
    msg: .text "0=0@"
    msg1: .text "0+2=2@"
    msg2: .text "0+2-4=254@"
}
//SEG140 assert_byte
assert_byte: {
    .label msg = 2
    .label c = 9
  //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
    // (byte*) print_str::str#1 = (byte*) assert_byte::msg#3  // register copy zp ZP_WORD:2
  //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str]
  //SEG144 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#65 [phi:assert_byte->print_str#0] -- register_copy 
  //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy 
    jsr print_str
  //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5]
  //SEG147 assert_byte::@5
  //SEG148 [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] )
  //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str]
  //SEG150 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy 
  //SEG151 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str.str
    lda #>str
    sta print_str.str+1
    jsr print_str
  //SEG152 assert_byte::@6
  //SEG153 [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- vbuxx_eq_vbuz1_then_la1 
    cpx c
    beq b1
  //SEG154 assert_byte::@3
  //SEG155 [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- _deref_pbuc1=vbuc2 
    lda #RED
    sta BGCOL
  //SEG156 [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str]
  //SEG158 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy 
  //SEG159 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str.str
    lda #>str2
    sta print_str.str+1
    jsr print_str
  //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2]
  //SEG161 assert_byte::@2
  b2:
  //SEG162 [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
  //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln]
  //SEG164 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#45 [phi:assert_byte::@2->print_ln#0] -- register_copy 
    jsr print_ln
  //SEG165 assert_byte::@return
  //SEG166 [65] return  [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] )
    rts
  //SEG167 [66] phi from assert_byte::@6 to assert_byte::@1 [phi:assert_byte::@6->assert_byte::@1]
  //SEG168 assert_byte::@1
  b1:
  //SEG169 [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] )
  //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str]
  //SEG171 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy 
  //SEG172 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str.str
    lda #>str1
    sta print_str.str+1
    jsr print_str
    jmp b2
    str: .text " @"
    str1: .text "ok@"
    str2: .text "fail!@"
}
//SEG173 print_cls
print_cls: {
    .label sc = $a
  //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<$400
    sta sc
    lda #>$400
    sta sc+1
  //SEG176 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
  //SEG178 print_cls::@1
  b1:
  //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG181 [72] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 
    lda sc+1
    cmp #>$400+$3e8
    bne b1
    lda sc
    cmp #<$400+$3e8
    bne b1
  //SEG182 print_cls::@return
  //SEG183 [73] return  [ ] ( main:2::print_cls:5 [ ] )
    rts
}

