Resolving typeid() (byte~) testUnaryOperator::$0 ← typeid  (byte) -$c
Resolving typeid() (byte~) testUnaryOperator::$2 ← typeid  (signed byte) -$c
Resolving typeid() (byte~) testUnaryOperator::$4 ← typeid  (word) -$c
Resolving typeid() (byte~) testUnaryOperator::$6 ← typeid  (signed word) -$c
Resolving typeid() (byte~) testUnaryOperator::$8 ← typeid  (dword) -$c
Resolving typeid() (byte~) testUnaryOperator::$10 ← typeid  (signed dword) -$c
Resolving typeid() (byte~) testBinaryOperator::$0 ← typeid  (byte) $c+(byte) $c
Resolving typeid() (byte~) testBinaryOperator::$2 ← typeid  (byte) $c+(signed byte) $c
Resolving typeid() (byte~) testBinaryOperator::$4 ← typeid  (byte) $c+(word) $c
Resolving typeid() (byte~) testBinaryOperator::$6 ← typeid  (byte) $c+(signed word) $c
Resolving typeid() (byte~) testBinaryOperator::$8 ← typeid  (byte) $c+(dword) $c
Resolving typeid() (byte~) testBinaryOperator::$10 ← typeid  (byte) $c+(signed dword) $c
Resolving typeid() (byte~) testBinaryOperator::$12 ← typeid  (signed byte) $c+(byte) $c
Resolving typeid() (byte~) testBinaryOperator::$14 ← typeid  (signed byte) $c+(signed byte) $c
Resolving typeid() (byte~) testBinaryOperator::$16 ← typeid  (signed byte) $c+(word) $c
Resolving typeid() (byte~) testBinaryOperator::$18 ← typeid  (signed byte) $c+(signed word) $c
Resolving typeid() (byte~) testBinaryOperator::$20 ← typeid  (signed byte) $c+(dword) $c
Resolving typeid() (byte~) testBinaryOperator::$22 ← typeid  (signed byte) $c+(signed dword) $c
Resolving typeid() (byte~) testBinaryOperator::$24 ← typeid  (word) $c+(byte) $c
Resolving typeid() (byte~) testBinaryOperator::$26 ← typeid  (word) $c+(signed byte) $c
Resolving typeid() (byte~) testBinaryOperator::$28 ← typeid  (word) $c+(word) $c
Resolving typeid() (byte~) testBinaryOperator::$30 ← typeid  (word) $c+(signed word) $c
Resolving typeid() (byte~) testBinaryOperator::$32 ← typeid  (word) $c+(dword) $c
Resolving typeid() (byte~) testBinaryOperator::$34 ← typeid  (word) $c+(signed dword) $c
Resolving typeid() (byte~) testBinaryOperator::$36 ← typeid  (signed word) $c+(byte) $c
Resolving typeid() (byte~) testBinaryOperator::$38 ← typeid  (signed word) $c+(signed byte) $c
Resolving typeid() (byte~) testBinaryOperator::$40 ← typeid  (signed word) $c+(word) $c
Resolving typeid() (byte~) testBinaryOperator::$42 ← typeid  (signed word) $c+(signed word) $c
Resolving typeid() (byte~) testBinaryOperator::$44 ← typeid  (signed word) $c+(dword) $c
Resolving typeid() (byte~) testBinaryOperator::$46 ← typeid  (signed word) $c+(signed dword) $c
Resolving typeid() (byte~) testBinaryOperator::$48 ← typeid  (dword) $c+(byte) $c
Resolving typeid() (byte~) testBinaryOperator::$50 ← typeid  (dword) $c+(signed byte) $c
Resolving typeid() (byte~) testBinaryOperator::$52 ← typeid  (dword) $c+(word) $c
Resolving typeid() (byte~) testBinaryOperator::$54 ← typeid  (dword) $c+(signed word) $c
Resolving typeid() (byte~) testBinaryOperator::$56 ← typeid  (dword) $c+(dword) $c
Resolving typeid() (byte~) testBinaryOperator::$58 ← typeid  (dword) $c+(signed dword) $c
Resolving typeid() (byte~) testBinaryOperator::$60 ← typeid  (signed dword) $c+(byte) $c
Resolving typeid() (byte~) testBinaryOperator::$62 ← typeid  (signed dword) $c+(signed byte) $c
Resolving typeid() (byte~) testBinaryOperator::$64 ← typeid  (signed dword) $c+(word) $c
Resolving typeid() (byte~) testBinaryOperator::$66 ← typeid  (signed dword) $c+(signed word) $c
Resolving typeid() (byte~) testBinaryOperator::$68 ← typeid  (signed dword) $c+(dword) $c
Resolving typeid() (byte~) testBinaryOperator::$70 ← typeid  (signed dword) $c+(signed dword) $c
Culled Empty Block (label) main::@4
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) @3
Culled Empty Block (label) assertType::@4

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  (byte) idx#0 ← (byte) 0
  to:@4

(void()) main()
main: scope:[main]  from @4
  (byte) idx#114 ← phi( @4/(byte) idx#112 )
  (byte*) main::s#0 ← (const byte*) SCREEN
  to:main::@1
main::@1: scope:[main]  from main main::@2
  (byte) idx#113 ← phi( main/(byte) idx#114 main::@2/(byte) idx#115 )
  (byte*) main::s#2 ← phi( main/(byte*) main::s#0 main::@2/(byte*) main::s#1 )
  (bool~) main::$2 ← (byte*) main::s#2 < (const byte*) SCREEN+(number) $3e8
  if((bool~) main::$2) goto main::@2
  to:main::@3
main::@2: scope:[main]  from main::@1
  (byte) idx#115 ← phi( main::@1/(byte) idx#113 )
  (byte*) main::s#3 ← phi( main::@1/(byte*) main::s#2 )
  *((byte*) main::s#3) ← (byte) ' '
  (byte*) main::s#1 ← ++ (byte*) main::s#3
  to:main::@1
main::@3: scope:[main]  from main::@1
  (byte) idx#110 ← phi( main::@1/(byte) idx#113 )
  call testUnaryOperator 
  to:main::@7
main::@7: scope:[main]  from main::@3
  (byte) idx#58 ← phi( main::@3/(byte) idx#11 )
  (byte) idx#1 ← (byte) idx#58
  call testBinaryOperator 
  to:main::@8
main::@8: scope:[main]  from main::@7
  (byte) idx#59 ← phi( main::@7/(byte) idx#54 )
  (byte) idx#2 ← (byte) idx#59
  to:main::@return
main::@return: scope:[main]  from main::@8
  (byte) idx#60 ← phi( main::@8/(byte) idx#2 )
  (byte) idx#3 ← (byte) idx#60
  return 
  to:@return

(void()) testUnaryOperator()
testUnaryOperator: scope:[testUnaryOperator]  from main::@3
  (byte) idx#4 ← (number) 0
  (byte~) testUnaryOperator::$0 ← (const byte) TYPEID_BYTE
  (byte) assertType::t1#0 ← (byte~) testUnaryOperator::$0
  (byte) assertType::t2#0 ← (const byte) TYPEID_BYTE
  call assertType 
  to:testUnaryOperator::@1
testUnaryOperator::@1: scope:[testUnaryOperator]  from testUnaryOperator
  (byte) idx#61 ← phi( testUnaryOperator/(byte) idx#56 )
  (byte) idx#5 ← (byte) idx#61
  (byte~) testUnaryOperator::$2 ← (const byte) TYPEID_SIGNED_BYTE
  (byte) assertType::t1#1 ← (byte~) testUnaryOperator::$2
  (byte) assertType::t2#1 ← (const byte) TYPEID_SIGNED_BYTE
  call assertType 
  to:testUnaryOperator::@2
testUnaryOperator::@2: scope:[testUnaryOperator]  from testUnaryOperator::@1
  (byte) idx#62 ← phi( testUnaryOperator::@1/(byte) idx#56 )
  (byte) idx#6 ← (byte) idx#62
  (byte~) testUnaryOperator::$4 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#2 ← (byte~) testUnaryOperator::$4
  (byte) assertType::t2#2 ← (const byte) TYPEID_WORD
  call assertType 
  to:testUnaryOperator::@3
testUnaryOperator::@3: scope:[testUnaryOperator]  from testUnaryOperator::@2
  (byte) idx#63 ← phi( testUnaryOperator::@2/(byte) idx#56 )
  (byte) idx#7 ← (byte) idx#63
  (byte~) testUnaryOperator::$6 ← (const byte) TYPEID_SIGNED_WORD
  (byte) assertType::t1#3 ← (byte~) testUnaryOperator::$6
  (byte) assertType::t2#3 ← (const byte) TYPEID_SIGNED_WORD
  call assertType 
  to:testUnaryOperator::@4
testUnaryOperator::@4: scope:[testUnaryOperator]  from testUnaryOperator::@3
  (byte) idx#64 ← phi( testUnaryOperator::@3/(byte) idx#56 )
  (byte) idx#8 ← (byte) idx#64
  (byte~) testUnaryOperator::$8 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#4 ← (byte~) testUnaryOperator::$8
  (byte) assertType::t2#4 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testUnaryOperator::@5
testUnaryOperator::@5: scope:[testUnaryOperator]  from testUnaryOperator::@4
  (byte) idx#65 ← phi( testUnaryOperator::@4/(byte) idx#56 )
  (byte) idx#9 ← (byte) idx#65
  (byte~) testUnaryOperator::$10 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#5 ← (byte~) testUnaryOperator::$10
  (byte) assertType::t2#5 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testUnaryOperator::@6
testUnaryOperator::@6: scope:[testUnaryOperator]  from testUnaryOperator::@5
  (byte) idx#66 ← phi( testUnaryOperator::@5/(byte) idx#56 )
  (byte) idx#10 ← (byte) idx#66
  to:testUnaryOperator::@return
testUnaryOperator::@return: scope:[testUnaryOperator]  from testUnaryOperator::@6
  (byte) idx#67 ← phi( testUnaryOperator::@6/(byte) idx#10 )
  (byte) idx#11 ← (byte) idx#67
  return 
  to:@return

(void()) testBinaryOperator()
testBinaryOperator: scope:[testBinaryOperator]  from main::@7
  (byte) idx#12 ← (number) $28
  (byte~) testBinaryOperator::$0 ← (const byte) TYPEID_BYTE
  (byte) assertType::t1#6 ← (byte~) testBinaryOperator::$0
  (byte) assertType::t2#6 ← (const byte) TYPEID_BYTE
  call assertType 
  to:testBinaryOperator::@1
testBinaryOperator::@1: scope:[testBinaryOperator]  from testBinaryOperator
  (byte) idx#68 ← phi( testBinaryOperator/(byte) idx#56 )
  (byte) idx#13 ← (byte) idx#68
  (byte~) testBinaryOperator::$2 ← (const byte) TYPEID_BYTE
  (byte) assertType::t1#7 ← (byte~) testBinaryOperator::$2
  (byte) assertType::t2#7 ← (const byte) TYPEID_BYTE
  call assertType 
  to:testBinaryOperator::@2
testBinaryOperator::@2: scope:[testBinaryOperator]  from testBinaryOperator::@1
  (byte) idx#69 ← phi( testBinaryOperator::@1/(byte) idx#56 )
  (byte) idx#14 ← (byte) idx#69
  (byte~) testBinaryOperator::$4 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#8 ← (byte~) testBinaryOperator::$4
  (byte) assertType::t2#8 ← (const byte) TYPEID_WORD
  call assertType 
  to:testBinaryOperator::@3
testBinaryOperator::@3: scope:[testBinaryOperator]  from testBinaryOperator::@2
  (byte) idx#70 ← phi( testBinaryOperator::@2/(byte) idx#56 )
  (byte) idx#15 ← (byte) idx#70
  (byte~) testBinaryOperator::$6 ← (const byte) TYPEID_SIGNED_WORD
  (byte) assertType::t1#9 ← (byte~) testBinaryOperator::$6
  (byte) assertType::t2#9 ← (const byte) TYPEID_SIGNED_WORD
  call assertType 
  to:testBinaryOperator::@4
testBinaryOperator::@4: scope:[testBinaryOperator]  from testBinaryOperator::@3
  (byte) idx#71 ← phi( testBinaryOperator::@3/(byte) idx#56 )
  (byte) idx#16 ← (byte) idx#71
  (byte~) testBinaryOperator::$8 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#10 ← (byte~) testBinaryOperator::$8
  (byte) assertType::t2#10 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@5
testBinaryOperator::@5: scope:[testBinaryOperator]  from testBinaryOperator::@4
  (byte) idx#72 ← phi( testBinaryOperator::@4/(byte) idx#56 )
  (byte) idx#17 ← (byte) idx#72
  (byte~) testBinaryOperator::$10 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#11 ← (byte~) testBinaryOperator::$10
  (byte) assertType::t2#11 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@6
testBinaryOperator::@6: scope:[testBinaryOperator]  from testBinaryOperator::@5
  (byte) idx#73 ← phi( testBinaryOperator::@5/(byte) idx#56 )
  (byte) idx#18 ← (byte) idx#73
  (byte) idx#19 ← ++ (byte) idx#18
  (byte~) testBinaryOperator::$12 ← (const byte) TYPEID_BYTE
  (byte) assertType::t1#12 ← (byte~) testBinaryOperator::$12
  (byte) assertType::t2#12 ← (const byte) TYPEID_BYTE
  call assertType 
  to:testBinaryOperator::@7
testBinaryOperator::@7: scope:[testBinaryOperator]  from testBinaryOperator::@6
  (byte) idx#74 ← phi( testBinaryOperator::@6/(byte) idx#56 )
  (byte) idx#20 ← (byte) idx#74
  (byte~) testBinaryOperator::$14 ← (const byte) TYPEID_SIGNED_BYTE
  (byte) assertType::t1#13 ← (byte~) testBinaryOperator::$14
  (byte) assertType::t2#13 ← (const byte) TYPEID_SIGNED_BYTE
  call assertType 
  to:testBinaryOperator::@8
testBinaryOperator::@8: scope:[testBinaryOperator]  from testBinaryOperator::@7
  (byte) idx#75 ← phi( testBinaryOperator::@7/(byte) idx#56 )
  (byte) idx#21 ← (byte) idx#75
  (byte~) testBinaryOperator::$16 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#14 ← (byte~) testBinaryOperator::$16
  (byte) assertType::t2#14 ← (const byte) TYPEID_WORD
  call assertType 
  to:testBinaryOperator::@9
testBinaryOperator::@9: scope:[testBinaryOperator]  from testBinaryOperator::@8
  (byte) idx#76 ← phi( testBinaryOperator::@8/(byte) idx#56 )
  (byte) idx#22 ← (byte) idx#76
  (byte~) testBinaryOperator::$18 ← (const byte) TYPEID_SIGNED_WORD
  (byte) assertType::t1#15 ← (byte~) testBinaryOperator::$18
  (byte) assertType::t2#15 ← (const byte) TYPEID_SIGNED_WORD
  call assertType 
  to:testBinaryOperator::@10
testBinaryOperator::@10: scope:[testBinaryOperator]  from testBinaryOperator::@9
  (byte) idx#77 ← phi( testBinaryOperator::@9/(byte) idx#56 )
  (byte) idx#23 ← (byte) idx#77
  (byte~) testBinaryOperator::$20 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#16 ← (byte~) testBinaryOperator::$20
  (byte) assertType::t2#16 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@11
testBinaryOperator::@11: scope:[testBinaryOperator]  from testBinaryOperator::@10
  (byte) idx#78 ← phi( testBinaryOperator::@10/(byte) idx#56 )
  (byte) idx#24 ← (byte) idx#78
  (byte~) testBinaryOperator::$22 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#17 ← (byte~) testBinaryOperator::$22
  (byte) assertType::t2#17 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@12
testBinaryOperator::@12: scope:[testBinaryOperator]  from testBinaryOperator::@11
  (byte) idx#79 ← phi( testBinaryOperator::@11/(byte) idx#56 )
  (byte) idx#25 ← (byte) idx#79
  (byte) idx#26 ← ++ (byte) idx#25
  (byte~) testBinaryOperator::$24 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#18 ← (byte~) testBinaryOperator::$24
  (byte) assertType::t2#18 ← (const byte) TYPEID_WORD
  call assertType 
  to:testBinaryOperator::@13
testBinaryOperator::@13: scope:[testBinaryOperator]  from testBinaryOperator::@12
  (byte) idx#80 ← phi( testBinaryOperator::@12/(byte) idx#56 )
  (byte) idx#27 ← (byte) idx#80
  (byte~) testBinaryOperator::$26 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#19 ← (byte~) testBinaryOperator::$26
  (byte) assertType::t2#19 ← (const byte) TYPEID_WORD
  call assertType 
  to:testBinaryOperator::@14
testBinaryOperator::@14: scope:[testBinaryOperator]  from testBinaryOperator::@13
  (byte) idx#81 ← phi( testBinaryOperator::@13/(byte) idx#56 )
  (byte) idx#28 ← (byte) idx#81
  (byte~) testBinaryOperator::$28 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#20 ← (byte~) testBinaryOperator::$28
  (byte) assertType::t2#20 ← (const byte) TYPEID_WORD
  call assertType 
  to:testBinaryOperator::@15
testBinaryOperator::@15: scope:[testBinaryOperator]  from testBinaryOperator::@14
  (byte) idx#82 ← phi( testBinaryOperator::@14/(byte) idx#56 )
  (byte) idx#29 ← (byte) idx#82
  (byte~) testBinaryOperator::$30 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#21 ← (byte~) testBinaryOperator::$30
  (byte) assertType::t2#21 ← (const byte) TYPEID_WORD
  call assertType 
  to:testBinaryOperator::@16
testBinaryOperator::@16: scope:[testBinaryOperator]  from testBinaryOperator::@15
  (byte) idx#83 ← phi( testBinaryOperator::@15/(byte) idx#56 )
  (byte) idx#30 ← (byte) idx#83
  (byte~) testBinaryOperator::$32 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#22 ← (byte~) testBinaryOperator::$32
  (byte) assertType::t2#22 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@17
testBinaryOperator::@17: scope:[testBinaryOperator]  from testBinaryOperator::@16
  (byte) idx#84 ← phi( testBinaryOperator::@16/(byte) idx#56 )
  (byte) idx#31 ← (byte) idx#84
  (byte~) testBinaryOperator::$34 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#23 ← (byte~) testBinaryOperator::$34
  (byte) assertType::t2#23 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@18
testBinaryOperator::@18: scope:[testBinaryOperator]  from testBinaryOperator::@17
  (byte) idx#85 ← phi( testBinaryOperator::@17/(byte) idx#56 )
  (byte) idx#32 ← (byte) idx#85
  (byte) idx#33 ← (byte) $50
  (byte~) testBinaryOperator::$36 ← (const byte) TYPEID_SIGNED_WORD
  (byte) assertType::t1#24 ← (byte~) testBinaryOperator::$36
  (byte) assertType::t2#24 ← (const byte) TYPEID_SIGNED_WORD
  call assertType 
  to:testBinaryOperator::@19
testBinaryOperator::@19: scope:[testBinaryOperator]  from testBinaryOperator::@18
  (byte) idx#86 ← phi( testBinaryOperator::@18/(byte) idx#56 )
  (byte) idx#34 ← (byte) idx#86
  (byte~) testBinaryOperator::$38 ← (const byte) TYPEID_SIGNED_WORD
  (byte) assertType::t1#25 ← (byte~) testBinaryOperator::$38
  (byte) assertType::t2#25 ← (const byte) TYPEID_SIGNED_WORD
  call assertType 
  to:testBinaryOperator::@20
testBinaryOperator::@20: scope:[testBinaryOperator]  from testBinaryOperator::@19
  (byte) idx#87 ← phi( testBinaryOperator::@19/(byte) idx#56 )
  (byte) idx#35 ← (byte) idx#87
  (byte~) testBinaryOperator::$40 ← (const byte) TYPEID_WORD
  (byte) assertType::t1#26 ← (byte~) testBinaryOperator::$40
  (byte) assertType::t2#26 ← (const byte) TYPEID_WORD
  call assertType 
  to:testBinaryOperator::@21
testBinaryOperator::@21: scope:[testBinaryOperator]  from testBinaryOperator::@20
  (byte) idx#88 ← phi( testBinaryOperator::@20/(byte) idx#56 )
  (byte) idx#36 ← (byte) idx#88
  (byte~) testBinaryOperator::$42 ← (const byte) TYPEID_SIGNED_WORD
  (byte) assertType::t1#27 ← (byte~) testBinaryOperator::$42
  (byte) assertType::t2#27 ← (const byte) TYPEID_SIGNED_WORD
  call assertType 
  to:testBinaryOperator::@22
testBinaryOperator::@22: scope:[testBinaryOperator]  from testBinaryOperator::@21
  (byte) idx#89 ← phi( testBinaryOperator::@21/(byte) idx#56 )
  (byte) idx#37 ← (byte) idx#89
  (byte~) testBinaryOperator::$44 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#28 ← (byte~) testBinaryOperator::$44
  (byte) assertType::t2#28 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@23
testBinaryOperator::@23: scope:[testBinaryOperator]  from testBinaryOperator::@22
  (byte) idx#90 ← phi( testBinaryOperator::@22/(byte) idx#56 )
  (byte) idx#38 ← (byte) idx#90
  (byte~) testBinaryOperator::$46 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#29 ← (byte~) testBinaryOperator::$46
  (byte) assertType::t2#29 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@24
testBinaryOperator::@24: scope:[testBinaryOperator]  from testBinaryOperator::@23
  (byte) idx#91 ← phi( testBinaryOperator::@23/(byte) idx#56 )
  (byte) idx#39 ← (byte) idx#91
  (byte) idx#40 ← ++ (byte) idx#39
  (byte~) testBinaryOperator::$48 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#30 ← (byte~) testBinaryOperator::$48
  (byte) assertType::t2#30 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@25
testBinaryOperator::@25: scope:[testBinaryOperator]  from testBinaryOperator::@24
  (byte) idx#92 ← phi( testBinaryOperator::@24/(byte) idx#56 )
  (byte) idx#41 ← (byte) idx#92
  (byte~) testBinaryOperator::$50 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#31 ← (byte~) testBinaryOperator::$50
  (byte) assertType::t2#31 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@26
testBinaryOperator::@26: scope:[testBinaryOperator]  from testBinaryOperator::@25
  (byte) idx#93 ← phi( testBinaryOperator::@25/(byte) idx#56 )
  (byte) idx#42 ← (byte) idx#93
  (byte~) testBinaryOperator::$52 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#32 ← (byte~) testBinaryOperator::$52
  (byte) assertType::t2#32 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@27
testBinaryOperator::@27: scope:[testBinaryOperator]  from testBinaryOperator::@26
  (byte) idx#94 ← phi( testBinaryOperator::@26/(byte) idx#56 )
  (byte) idx#43 ← (byte) idx#94
  (byte~) testBinaryOperator::$54 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#33 ← (byte~) testBinaryOperator::$54
  (byte) assertType::t2#33 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@28
testBinaryOperator::@28: scope:[testBinaryOperator]  from testBinaryOperator::@27
  (byte) idx#95 ← phi( testBinaryOperator::@27/(byte) idx#56 )
  (byte) idx#44 ← (byte) idx#95
  (byte~) testBinaryOperator::$56 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#34 ← (byte~) testBinaryOperator::$56
  (byte) assertType::t2#34 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@29
testBinaryOperator::@29: scope:[testBinaryOperator]  from testBinaryOperator::@28
  (byte) idx#96 ← phi( testBinaryOperator::@28/(byte) idx#56 )
  (byte) idx#45 ← (byte) idx#96
  (byte~) testBinaryOperator::$58 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#35 ← (byte~) testBinaryOperator::$58
  (byte) assertType::t2#35 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@30
testBinaryOperator::@30: scope:[testBinaryOperator]  from testBinaryOperator::@29
  (byte) idx#97 ← phi( testBinaryOperator::@29/(byte) idx#56 )
  (byte) idx#46 ← (byte) idx#97
  (byte) idx#47 ← ++ (byte) idx#46
  (byte~) testBinaryOperator::$60 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#36 ← (byte~) testBinaryOperator::$60
  (byte) assertType::t2#36 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@31
testBinaryOperator::@31: scope:[testBinaryOperator]  from testBinaryOperator::@30
  (byte) idx#98 ← phi( testBinaryOperator::@30/(byte) idx#56 )
  (byte) idx#48 ← (byte) idx#98
  (byte~) testBinaryOperator::$62 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#37 ← (byte~) testBinaryOperator::$62
  (byte) assertType::t2#37 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@32
testBinaryOperator::@32: scope:[testBinaryOperator]  from testBinaryOperator::@31
  (byte) idx#99 ← phi( testBinaryOperator::@31/(byte) idx#56 )
  (byte) idx#49 ← (byte) idx#99
  (byte~) testBinaryOperator::$64 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#38 ← (byte~) testBinaryOperator::$64
  (byte) assertType::t2#38 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@33
testBinaryOperator::@33: scope:[testBinaryOperator]  from testBinaryOperator::@32
  (byte) idx#100 ← phi( testBinaryOperator::@32/(byte) idx#56 )
  (byte) idx#50 ← (byte) idx#100
  (byte~) testBinaryOperator::$66 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#39 ← (byte~) testBinaryOperator::$66
  (byte) assertType::t2#39 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@34
testBinaryOperator::@34: scope:[testBinaryOperator]  from testBinaryOperator::@33
  (byte) idx#101 ← phi( testBinaryOperator::@33/(byte) idx#56 )
  (byte) idx#51 ← (byte) idx#101
  (byte~) testBinaryOperator::$68 ← (const byte) TYPEID_DWORD
  (byte) assertType::t1#40 ← (byte~) testBinaryOperator::$68
  (byte) assertType::t2#40 ← (const byte) TYPEID_DWORD
  call assertType 
  to:testBinaryOperator::@35
testBinaryOperator::@35: scope:[testBinaryOperator]  from testBinaryOperator::@34
  (byte) idx#102 ← phi( testBinaryOperator::@34/(byte) idx#56 )
  (byte) idx#52 ← (byte) idx#102
  (byte~) testBinaryOperator::$70 ← (const byte) TYPEID_SIGNED_DWORD
  (byte) assertType::t1#41 ← (byte~) testBinaryOperator::$70
  (byte) assertType::t2#41 ← (const byte) TYPEID_SIGNED_DWORD
  call assertType 
  to:testBinaryOperator::@36
testBinaryOperator::@36: scope:[testBinaryOperator]  from testBinaryOperator::@35
  (byte) idx#103 ← phi( testBinaryOperator::@35/(byte) idx#56 )
  (byte) idx#53 ← (byte) idx#103
  to:testBinaryOperator::@return
testBinaryOperator::@return: scope:[testBinaryOperator]  from testBinaryOperator::@36
  (byte) idx#104 ← phi( testBinaryOperator::@36/(byte) idx#53 )
  (byte) idx#54 ← (byte) idx#104
  return 
  to:@return

(void()) assertType((byte) assertType::t1 , (byte) assertType::t2)
assertType: scope:[assertType]  from testBinaryOperator testBinaryOperator::@1 testBinaryOperator::@10 testBinaryOperator::@11 testBinaryOperator::@12 testBinaryOperator::@13 testBinaryOperator::@14 testBinaryOperator::@15 testBinaryOperator::@16 testBinaryOperator::@17 testBinaryOperator::@18 testBinaryOperator::@19 testBinaryOperator::@2 testBinaryOperator::@20 testBinaryOperator::@21 testBinaryOperator::@22 testBinaryOperator::@23 testBinaryOperator::@24 testBinaryOperator::@25 testBinaryOperator::@26 testBinaryOperator::@27 testBinaryOperator::@28 testBinaryOperator::@29 testBinaryOperator::@3 testBinaryOperator::@30 testBinaryOperator::@31 testBinaryOperator::@32 testBinaryOperator::@33 testBinaryOperator::@34 testBinaryOperator::@35 testBinaryOperator::@4 testBinaryOperator::@5 testBinaryOperator::@6 testBinaryOperator::@7 testBinaryOperator::@8 testBinaryOperator::@9 testUnaryOperator testUnaryOperator::@1 testUnaryOperator::@2 testUnaryOperator::@3 testUnaryOperator::@4 testUnaryOperator::@5
  (byte) idx#111 ← phi( testBinaryOperator/(byte) idx#12 testBinaryOperator::@1/(byte) idx#13 testBinaryOperator::@10/(byte) idx#23 testBinaryOperator::@11/(byte) idx#24 testBinaryOperator::@12/(byte) idx#26 testBinaryOperator::@13/(byte) idx#27 testBinaryOperator::@14/(byte) idx#28 testBinaryOperator::@15/(byte) idx#29 testBinaryOperator::@16/(byte) idx#30 testBinaryOperator::@17/(byte) idx#31 testBinaryOperator::@18/(byte) idx#33 testBinaryOperator::@19/(byte) idx#34 testBinaryOperator::@2/(byte) idx#14 testBinaryOperator::@20/(byte) idx#35 testBinaryOperator::@21/(byte) idx#36 testBinaryOperator::@22/(byte) idx#37 testBinaryOperator::@23/(byte) idx#38 testBinaryOperator::@24/(byte) idx#40 testBinaryOperator::@25/(byte) idx#41 testBinaryOperator::@26/(byte) idx#42 testBinaryOperator::@27/(byte) idx#43 testBinaryOperator::@28/(byte) idx#44 testBinaryOperator::@29/(byte) idx#45 testBinaryOperator::@3/(byte) idx#15 testBinaryOperator::@30/(byte) idx#47 testBinaryOperator::@31/(byte) idx#48 testBinaryOperator::@32/(byte) idx#49 testBinaryOperator::@33/(byte) idx#50 testBinaryOperator::@34/(byte) idx#51 testBinaryOperator::@35/(byte) idx#52 testBinaryOperator::@4/(byte) idx#16 testBinaryOperator::@5/(byte) idx#17 testBinaryOperator::@6/(byte) idx#19 testBinaryOperator::@7/(byte) idx#20 testBinaryOperator::@8/(byte) idx#21 testBinaryOperator::@9/(byte) idx#22 testUnaryOperator/(byte) idx#4 testUnaryOperator::@1/(byte) idx#5 testUnaryOperator::@2/(byte) idx#6 testUnaryOperator::@3/(byte) idx#7 testUnaryOperator::@4/(byte) idx#8 testUnaryOperator::@5/(byte) idx#9 )
  (byte) assertType::t2#42 ← phi( testBinaryOperator/(byte) assertType::t2#6 testBinaryOperator::@1/(byte) assertType::t2#7 testBinaryOperator::@10/(byte) assertType::t2#16 testBinaryOperator::@11/(byte) assertType::t2#17 testBinaryOperator::@12/(byte) assertType::t2#18 testBinaryOperator::@13/(byte) assertType::t2#19 testBinaryOperator::@14/(byte) assertType::t2#20 testBinaryOperator::@15/(byte) assertType::t2#21 testBinaryOperator::@16/(byte) assertType::t2#22 testBinaryOperator::@17/(byte) assertType::t2#23 testBinaryOperator::@18/(byte) assertType::t2#24 testBinaryOperator::@19/(byte) assertType::t2#25 testBinaryOperator::@2/(byte) assertType::t2#8 testBinaryOperator::@20/(byte) assertType::t2#26 testBinaryOperator::@21/(byte) assertType::t2#27 testBinaryOperator::@22/(byte) assertType::t2#28 testBinaryOperator::@23/(byte) assertType::t2#29 testBinaryOperator::@24/(byte) assertType::t2#30 testBinaryOperator::@25/(byte) assertType::t2#31 testBinaryOperator::@26/(byte) assertType::t2#32 testBinaryOperator::@27/(byte) assertType::t2#33 testBinaryOperator::@28/(byte) assertType::t2#34 testBinaryOperator::@29/(byte) assertType::t2#35 testBinaryOperator::@3/(byte) assertType::t2#9 testBinaryOperator::@30/(byte) assertType::t2#36 testBinaryOperator::@31/(byte) assertType::t2#37 testBinaryOperator::@32/(byte) assertType::t2#38 testBinaryOperator::@33/(byte) assertType::t2#39 testBinaryOperator::@34/(byte) assertType::t2#40 testBinaryOperator::@35/(byte) assertType::t2#41 testBinaryOperator::@4/(byte) assertType::t2#10 testBinaryOperator::@5/(byte) assertType::t2#11 testBinaryOperator::@6/(byte) assertType::t2#12 testBinaryOperator::@7/(byte) assertType::t2#13 testBinaryOperator::@8/(byte) assertType::t2#14 testBinaryOperator::@9/(byte) assertType::t2#15 testUnaryOperator/(byte) assertType::t2#0 testUnaryOperator::@1/(byte) assertType::t2#1 testUnaryOperator::@2/(byte) assertType::t2#2 testUnaryOperator::@3/(byte) assertType::t2#3 testUnaryOperator::@4/(byte) assertType::t2#4 testUnaryOperator::@5/(byte) assertType::t2#5 )
  (byte) assertType::t1#42 ← phi( testBinaryOperator/(byte) assertType::t1#6 testBinaryOperator::@1/(byte) assertType::t1#7 testBinaryOperator::@10/(byte) assertType::t1#16 testBinaryOperator::@11/(byte) assertType::t1#17 testBinaryOperator::@12/(byte) assertType::t1#18 testBinaryOperator::@13/(byte) assertType::t1#19 testBinaryOperator::@14/(byte) assertType::t1#20 testBinaryOperator::@15/(byte) assertType::t1#21 testBinaryOperator::@16/(byte) assertType::t1#22 testBinaryOperator::@17/(byte) assertType::t1#23 testBinaryOperator::@18/(byte) assertType::t1#24 testBinaryOperator::@19/(byte) assertType::t1#25 testBinaryOperator::@2/(byte) assertType::t1#8 testBinaryOperator::@20/(byte) assertType::t1#26 testBinaryOperator::@21/(byte) assertType::t1#27 testBinaryOperator::@22/(byte) assertType::t1#28 testBinaryOperator::@23/(byte) assertType::t1#29 testBinaryOperator::@24/(byte) assertType::t1#30 testBinaryOperator::@25/(byte) assertType::t1#31 testBinaryOperator::@26/(byte) assertType::t1#32 testBinaryOperator::@27/(byte) assertType::t1#33 testBinaryOperator::@28/(byte) assertType::t1#34 testBinaryOperator::@29/(byte) assertType::t1#35 testBinaryOperator::@3/(byte) assertType::t1#9 testBinaryOperator::@30/(byte) assertType::t1#36 testBinaryOperator::@31/(byte) assertType::t1#37 testBinaryOperator::@32/(byte) assertType::t1#38 testBinaryOperator::@33/(byte) assertType::t1#39 testBinaryOperator::@34/(byte) assertType::t1#40 testBinaryOperator::@35/(byte) assertType::t1#41 testBinaryOperator::@4/(byte) assertType::t1#10 testBinaryOperator::@5/(byte) assertType::t1#11 testBinaryOperator::@6/(byte) assertType::t1#12 testBinaryOperator::@7/(byte) assertType::t1#13 testBinaryOperator::@8/(byte) assertType::t1#14 testBinaryOperator::@9/(byte) assertType::t1#15 testUnaryOperator/(byte) assertType::t1#0 testUnaryOperator::@1/(byte) assertType::t1#1 testUnaryOperator::@2/(byte) assertType::t1#2 testUnaryOperator::@3/(byte) assertType::t1#3 testUnaryOperator::@4/(byte) assertType::t1#4 testUnaryOperator::@5/(byte) assertType::t1#5 )
  (bool~) assertType::$0 ← (byte) assertType::t1#42 == (byte) assertType::t2#42
  if((bool~) assertType::$0) goto assertType::@1
  to:assertType::@3
assertType::@1: scope:[assertType]  from assertType
  (byte) assertType::t1#44 ← phi( assertType/(byte) assertType::t1#42 )
  (byte) idx#105 ← phi( assertType/(byte) idx#111 )
  *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN
  to:assertType::@2
assertType::@3: scope:[assertType]  from assertType
  (byte) assertType::t1#45 ← phi( assertType/(byte) assertType::t1#42 )
  (byte) idx#106 ← phi( assertType/(byte) idx#111 )
  *((const byte*) COLS + (byte) idx#106) ← (const byte) RED
  to:assertType::@2
assertType::@2: scope:[assertType]  from assertType::@1 assertType::@3
  (byte) idx#107 ← phi( assertType::@1/(byte) idx#105 assertType::@3/(byte) idx#106 )
  (byte) assertType::t1#43 ← phi( assertType::@1/(byte) assertType::t1#44 assertType::@3/(byte) assertType::t1#45 )
  *((const byte*) SCREEN + (byte) idx#107) ← (byte) assertType::t1#43
  (byte) idx#55 ← ++ (byte) idx#107
  to:assertType::@return
assertType::@return: scope:[assertType]  from assertType::@2
  (byte) idx#108 ← phi( assertType::@2/(byte) idx#55 )
  (byte) idx#56 ← (byte) idx#108
  return 
  to:@return
@4: scope:[]  from @begin
  (byte) idx#112 ← phi( @begin/(byte) idx#0 )
  call main 
  to:@5
@5: scope:[]  from @4
  (byte) idx#109 ← phi( @4/(byte) idx#3 )
  (byte) idx#57 ← (byte) idx#109
  to:@end
@end: scope:[]  from @5

SYMBOL TABLE SSA
(label) @4
(label) @5
(label) @begin
(label) @end
(const byte*) COLS = (byte*)(number) $d800
(const byte) GREEN = (byte) 5
(const byte) RED = (byte) 2
(const byte*) SCREEN = (byte*)(number) $400
(const byte) TYPEID_BYTE = (number) 1
(const byte) TYPEID_DWORD = (number) 5
(const byte) TYPEID_SIGNED_BYTE = (number) 2
(const byte) TYPEID_SIGNED_DWORD = (number) 6
(const byte) TYPEID_SIGNED_WORD = (number) 4
(const byte) TYPEID_WORD = (number) 3
(void()) assertType((byte) assertType::t1 , (byte) assertType::t2)
(bool~) assertType::$0
(label) assertType::@1
(label) assertType::@2
(label) assertType::@3
(label) assertType::@return
(byte) assertType::t1
(byte) assertType::t1#0
(byte) assertType::t1#1
(byte) assertType::t1#10
(byte) assertType::t1#11
(byte) assertType::t1#12
(byte) assertType::t1#13
(byte) assertType::t1#14
(byte) assertType::t1#15
(byte) assertType::t1#16
(byte) assertType::t1#17
(byte) assertType::t1#18
(byte) assertType::t1#19
(byte) assertType::t1#2
(byte) assertType::t1#20
(byte) assertType::t1#21
(byte) assertType::t1#22
(byte) assertType::t1#23
(byte) assertType::t1#24
(byte) assertType::t1#25
(byte) assertType::t1#26
(byte) assertType::t1#27
(byte) assertType::t1#28
(byte) assertType::t1#29
(byte) assertType::t1#3
(byte) assertType::t1#30
(byte) assertType::t1#31
(byte) assertType::t1#32
(byte) assertType::t1#33
(byte) assertType::t1#34
(byte) assertType::t1#35
(byte) assertType::t1#36
(byte) assertType::t1#37
(byte) assertType::t1#38
(byte) assertType::t1#39
(byte) assertType::t1#4
(byte) assertType::t1#40
(byte) assertType::t1#41
(byte) assertType::t1#42
(byte) assertType::t1#43
(byte) assertType::t1#44
(byte) assertType::t1#45
(byte) assertType::t1#5
(byte) assertType::t1#6
(byte) assertType::t1#7
(byte) assertType::t1#8
(byte) assertType::t1#9
(byte) assertType::t2
(byte) assertType::t2#0
(byte) assertType::t2#1
(byte) assertType::t2#10
(byte) assertType::t2#11
(byte) assertType::t2#12
(byte) assertType::t2#13
(byte) assertType::t2#14
(byte) assertType::t2#15
(byte) assertType::t2#16
(byte) assertType::t2#17
(byte) assertType::t2#18
(byte) assertType::t2#19
(byte) assertType::t2#2
(byte) assertType::t2#20
(byte) assertType::t2#21
(byte) assertType::t2#22
(byte) assertType::t2#23
(byte) assertType::t2#24
(byte) assertType::t2#25
(byte) assertType::t2#26
(byte) assertType::t2#27
(byte) assertType::t2#28
(byte) assertType::t2#29
(byte) assertType::t2#3
(byte) assertType::t2#30
(byte) assertType::t2#31
(byte) assertType::t2#32
(byte) assertType::t2#33
(byte) assertType::t2#34
(byte) assertType::t2#35
(byte) assertType::t2#36
(byte) assertType::t2#37
(byte) assertType::t2#38
(byte) assertType::t2#39
(byte) assertType::t2#4
(byte) assertType::t2#40
(byte) assertType::t2#41
(byte) assertType::t2#42
(byte) assertType::t2#5
(byte) assertType::t2#6
(byte) assertType::t2#7
(byte) assertType::t2#8
(byte) assertType::t2#9
(byte) idx
(byte) idx#0
(byte) idx#1
(byte) idx#10
(byte) idx#100
(byte) idx#101
(byte) idx#102
(byte) idx#103
(byte) idx#104
(byte) idx#105
(byte) idx#106
(byte) idx#107
(byte) idx#108
(byte) idx#109
(byte) idx#11
(byte) idx#110
(byte) idx#111
(byte) idx#112
(byte) idx#113
(byte) idx#114
(byte) idx#115
(byte) idx#12
(byte) idx#13
(byte) idx#14
(byte) idx#15
(byte) idx#16
(byte) idx#17
(byte) idx#18
(byte) idx#19
(byte) idx#2
(byte) idx#20
(byte) idx#21
(byte) idx#22
(byte) idx#23
(byte) idx#24
(byte) idx#25
(byte) idx#26
(byte) idx#27
(byte) idx#28
(byte) idx#29
(byte) idx#3
(byte) idx#30
(byte) idx#31
(byte) idx#32
(byte) idx#33
(byte) idx#34
(byte) idx#35
(byte) idx#36
(byte) idx#37
(byte) idx#38
(byte) idx#39
(byte) idx#4
(byte) idx#40
(byte) idx#41
(byte) idx#42
(byte) idx#43
(byte) idx#44
(byte) idx#45
(byte) idx#46
(byte) idx#47
(byte) idx#48
(byte) idx#49
(byte) idx#5
(byte) idx#50
(byte) idx#51
(byte) idx#52
(byte) idx#53
(byte) idx#54
(byte) idx#55
(byte) idx#56
(byte) idx#57
(byte) idx#58
(byte) idx#59
(byte) idx#6
(byte) idx#60
(byte) idx#61
(byte) idx#62
(byte) idx#63
(byte) idx#64
(byte) idx#65
(byte) idx#66
(byte) idx#67
(byte) idx#68
(byte) idx#69
(byte) idx#7
(byte) idx#70
(byte) idx#71
(byte) idx#72
(byte) idx#73
(byte) idx#74
(byte) idx#75
(byte) idx#76
(byte) idx#77
(byte) idx#78
(byte) idx#79
(byte) idx#8
(byte) idx#80
(byte) idx#81
(byte) idx#82
(byte) idx#83
(byte) idx#84
(byte) idx#85
(byte) idx#86
(byte) idx#87
(byte) idx#88
(byte) idx#89
(byte) idx#9
(byte) idx#90
(byte) idx#91
(byte) idx#92
(byte) idx#93
(byte) idx#94
(byte) idx#95
(byte) idx#96
(byte) idx#97
(byte) idx#98
(byte) idx#99
(void()) main()
(bool~) main::$2
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@7
(label) main::@8
(label) main::@return
(byte*) main::s
(byte*) main::s#0
(byte*) main::s#1
(byte*) main::s#2
(byte*) main::s#3
(void()) testBinaryOperator()
(byte~) testBinaryOperator::$0
(byte~) testBinaryOperator::$10
(byte~) testBinaryOperator::$12
(byte~) testBinaryOperator::$14
(byte~) testBinaryOperator::$16
(byte~) testBinaryOperator::$18
(byte~) testBinaryOperator::$2
(byte~) testBinaryOperator::$20
(byte~) testBinaryOperator::$22
(byte~) testBinaryOperator::$24
(byte~) testBinaryOperator::$26
(byte~) testBinaryOperator::$28
(byte~) testBinaryOperator::$30
(byte~) testBinaryOperator::$32
(byte~) testBinaryOperator::$34
(byte~) testBinaryOperator::$36
(byte~) testBinaryOperator::$38
(byte~) testBinaryOperator::$4
(byte~) testBinaryOperator::$40
(byte~) testBinaryOperator::$42
(byte~) testBinaryOperator::$44
(byte~) testBinaryOperator::$46
(byte~) testBinaryOperator::$48
(byte~) testBinaryOperator::$50
(byte~) testBinaryOperator::$52
(byte~) testBinaryOperator::$54
(byte~) testBinaryOperator::$56
(byte~) testBinaryOperator::$58
(byte~) testBinaryOperator::$6
(byte~) testBinaryOperator::$60
(byte~) testBinaryOperator::$62
(byte~) testBinaryOperator::$64
(byte~) testBinaryOperator::$66
(byte~) testBinaryOperator::$68
(byte~) testBinaryOperator::$70
(byte~) testBinaryOperator::$8
(label) testBinaryOperator::@1
(label) testBinaryOperator::@10
(label) testBinaryOperator::@11
(label) testBinaryOperator::@12
(label) testBinaryOperator::@13
(label) testBinaryOperator::@14
(label) testBinaryOperator::@15
(label) testBinaryOperator::@16
(label) testBinaryOperator::@17
(label) testBinaryOperator::@18
(label) testBinaryOperator::@19
(label) testBinaryOperator::@2
(label) testBinaryOperator::@20
(label) testBinaryOperator::@21
(label) testBinaryOperator::@22
(label) testBinaryOperator::@23
(label) testBinaryOperator::@24
(label) testBinaryOperator::@25
(label) testBinaryOperator::@26
(label) testBinaryOperator::@27
(label) testBinaryOperator::@28
(label) testBinaryOperator::@29
(label) testBinaryOperator::@3
(label) testBinaryOperator::@30
(label) testBinaryOperator::@31
(label) testBinaryOperator::@32
(label) testBinaryOperator::@33
(label) testBinaryOperator::@34
(label) testBinaryOperator::@35
(label) testBinaryOperator::@36
(label) testBinaryOperator::@4
(label) testBinaryOperator::@5
(label) testBinaryOperator::@6
(label) testBinaryOperator::@7
(label) testBinaryOperator::@8
(label) testBinaryOperator::@9
(label) testBinaryOperator::@return
(void()) testUnaryOperator()
(byte~) testUnaryOperator::$0
(byte~) testUnaryOperator::$10
(byte~) testUnaryOperator::$2
(byte~) testUnaryOperator::$4
(byte~) testUnaryOperator::$6
(byte~) testUnaryOperator::$8
(label) testUnaryOperator::@1
(label) testUnaryOperator::@2
(label) testUnaryOperator::@3
(label) testUnaryOperator::@4
(label) testUnaryOperator::@5
(label) testUnaryOperator::@6
(label) testUnaryOperator::@return

Adding number conversion cast (unumber) $3e8 in (bool~) main::$2 ← (byte*) main::s#2 < (const byte*) SCREEN+(number) $3e8
Adding number conversion cast (unumber) 0 in (byte) idx#4 ← (number) 0
Adding number conversion cast (unumber) $28 in (byte) idx#12 ← (number) $28
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte) idx#4 ← (unumber)(number) 0
Inlining cast (byte) idx#12 ← (unumber)(number) $28
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 55296
Simplifying constant integer cast $3e8
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $28
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte*) main::s#2 = (byte*) main::s#3 
Alias (byte) idx#110 = (byte) idx#115 (byte) idx#113 
Alias (byte) idx#1 = (byte) idx#58 
Alias (byte) idx#2 = (byte) idx#59 (byte) idx#60 (byte) idx#3 
Alias (byte) assertType::t1#0 = (byte~) testUnaryOperator::$0 
Alias (byte) idx#5 = (byte) idx#61 
Alias (byte) assertType::t1#1 = (byte~) testUnaryOperator::$2 
Alias (byte) idx#6 = (byte) idx#62 
Alias (byte) assertType::t1#2 = (byte~) testUnaryOperator::$4 
Alias (byte) idx#63 = (byte) idx#7 
Alias (byte) assertType::t1#3 = (byte~) testUnaryOperator::$6 
Alias (byte) idx#64 = (byte) idx#8 
Alias (byte) assertType::t1#4 = (byte~) testUnaryOperator::$8 
Alias (byte) idx#65 = (byte) idx#9 
Alias (byte) assertType::t1#5 = (byte~) testUnaryOperator::$10 
Alias (byte) idx#10 = (byte) idx#66 (byte) idx#67 (byte) idx#11 
Alias (byte) assertType::t1#6 = (byte~) testBinaryOperator::$0 
Alias (byte) idx#13 = (byte) idx#68 
Alias (byte) assertType::t1#7 = (byte~) testBinaryOperator::$2 
Alias (byte) idx#14 = (byte) idx#69 
Alias (byte) assertType::t1#8 = (byte~) testBinaryOperator::$4 
Alias (byte) idx#15 = (byte) idx#70 
Alias (byte) assertType::t1#9 = (byte~) testBinaryOperator::$6 
Alias (byte) idx#16 = (byte) idx#71 
Alias (byte) assertType::t1#10 = (byte~) testBinaryOperator::$8 
Alias (byte) idx#17 = (byte) idx#72 
Alias (byte) assertType::t1#11 = (byte~) testBinaryOperator::$10 
Alias (byte) idx#18 = (byte) idx#73 
Alias (byte) assertType::t1#12 = (byte~) testBinaryOperator::$12 
Alias (byte) idx#20 = (byte) idx#74 
Alias (byte) assertType::t1#13 = (byte~) testBinaryOperator::$14 
Alias (byte) idx#21 = (byte) idx#75 
Alias (byte) assertType::t1#14 = (byte~) testBinaryOperator::$16 
Alias (byte) idx#22 = (byte) idx#76 
Alias (byte) assertType::t1#15 = (byte~) testBinaryOperator::$18 
Alias (byte) idx#23 = (byte) idx#77 
Alias (byte) assertType::t1#16 = (byte~) testBinaryOperator::$20 
Alias (byte) idx#24 = (byte) idx#78 
Alias (byte) assertType::t1#17 = (byte~) testBinaryOperator::$22 
Alias (byte) idx#25 = (byte) idx#79 
Alias (byte) assertType::t1#18 = (byte~) testBinaryOperator::$24 
Alias (byte) idx#27 = (byte) idx#80 
Alias (byte) assertType::t1#19 = (byte~) testBinaryOperator::$26 
Alias (byte) idx#28 = (byte) idx#81 
Alias (byte) assertType::t1#20 = (byte~) testBinaryOperator::$28 
Alias (byte) idx#29 = (byte) idx#82 
Alias (byte) assertType::t1#21 = (byte~) testBinaryOperator::$30 
Alias (byte) idx#30 = (byte) idx#83 
Alias (byte) assertType::t1#22 = (byte~) testBinaryOperator::$32 
Alias (byte) idx#31 = (byte) idx#84 
Alias (byte) assertType::t1#23 = (byte~) testBinaryOperator::$34 
Alias (byte) idx#32 = (byte) idx#85 
Alias (byte) assertType::t1#24 = (byte~) testBinaryOperator::$36 
Alias (byte) idx#34 = (byte) idx#86 
Alias (byte) assertType::t1#25 = (byte~) testBinaryOperator::$38 
Alias (byte) idx#35 = (byte) idx#87 
Alias (byte) assertType::t1#26 = (byte~) testBinaryOperator::$40 
Alias (byte) idx#36 = (byte) idx#88 
Alias (byte) assertType::t1#27 = (byte~) testBinaryOperator::$42 
Alias (byte) idx#37 = (byte) idx#89 
Alias (byte) assertType::t1#28 = (byte~) testBinaryOperator::$44 
Alias (byte) idx#38 = (byte) idx#90 
Alias (byte) assertType::t1#29 = (byte~) testBinaryOperator::$46 
Alias (byte) idx#39 = (byte) idx#91 
Alias (byte) assertType::t1#30 = (byte~) testBinaryOperator::$48 
Alias (byte) idx#41 = (byte) idx#92 
Alias (byte) assertType::t1#31 = (byte~) testBinaryOperator::$50 
Alias (byte) idx#42 = (byte) idx#93 
Alias (byte) assertType::t1#32 = (byte~) testBinaryOperator::$52 
Alias (byte) idx#43 = (byte) idx#94 
Alias (byte) assertType::t1#33 = (byte~) testBinaryOperator::$54 
Alias (byte) idx#44 = (byte) idx#95 
Alias (byte) assertType::t1#34 = (byte~) testBinaryOperator::$56 
Alias (byte) idx#45 = (byte) idx#96 
Alias (byte) assertType::t1#35 = (byte~) testBinaryOperator::$58 
Alias (byte) idx#46 = (byte) idx#97 
Alias (byte) assertType::t1#36 = (byte~) testBinaryOperator::$60 
Alias (byte) idx#48 = (byte) idx#98 
Alias (byte) assertType::t1#37 = (byte~) testBinaryOperator::$62 
Alias (byte) idx#49 = (byte) idx#99 
Alias (byte) assertType::t1#38 = (byte~) testBinaryOperator::$64 
Alias (byte) idx#100 = (byte) idx#50 
Alias (byte) assertType::t1#39 = (byte~) testBinaryOperator::$66 
Alias (byte) idx#101 = (byte) idx#51 
Alias (byte) assertType::t1#40 = (byte~) testBinaryOperator::$68 
Alias (byte) idx#102 = (byte) idx#52 
Alias (byte) assertType::t1#41 = (byte~) testBinaryOperator::$70 
Alias (byte) idx#103 = (byte) idx#53 (byte) idx#104 (byte) idx#54 
Alias (byte) idx#105 = (byte) idx#111 (byte) idx#106 
Alias (byte) assertType::t1#42 = (byte) assertType::t1#44 (byte) assertType::t1#45 
Alias (byte) idx#108 = (byte) idx#55 (byte) idx#56 
Alias (byte) idx#0 = (byte) idx#112 
Alias (byte) idx#109 = (byte) idx#57 
Successful SSA optimization Pass2AliasElimination
Alias (byte) assertType::t1#42 = (byte) assertType::t1#43 
Alias (byte) idx#105 = (byte) idx#107 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) idx#114 (byte) idx#0
Identical Phi Values (byte) idx#110 (byte) idx#114
Identical Phi Values (byte) idx#1 (byte) idx#10
Identical Phi Values (byte) idx#2 (byte) idx#103
Identical Phi Values (byte) idx#5 (byte) idx#108
Identical Phi Values (byte) idx#6 (byte) idx#108
Identical Phi Values (byte) idx#63 (byte) idx#108
Identical Phi Values (byte) idx#64 (byte) idx#108
Identical Phi Values (byte) idx#65 (byte) idx#108
Identical Phi Values (byte) idx#10 (byte) idx#108
Identical Phi Values (byte) idx#13 (byte) idx#108
Identical Phi Values (byte) idx#14 (byte) idx#108
Identical Phi Values (byte) idx#15 (byte) idx#108
Identical Phi Values (byte) idx#16 (byte) idx#108
Identical Phi Values (byte) idx#17 (byte) idx#108
Identical Phi Values (byte) idx#18 (byte) idx#108
Identical Phi Values (byte) idx#20 (byte) idx#108
Identical Phi Values (byte) idx#21 (byte) idx#108
Identical Phi Values (byte) idx#22 (byte) idx#108
Identical Phi Values (byte) idx#23 (byte) idx#108
Identical Phi Values (byte) idx#24 (byte) idx#108
Identical Phi Values (byte) idx#25 (byte) idx#108
Identical Phi Values (byte) idx#27 (byte) idx#108
Identical Phi Values (byte) idx#28 (byte) idx#108
Identical Phi Values (byte) idx#29 (byte) idx#108
Identical Phi Values (byte) idx#30 (byte) idx#108
Identical Phi Values (byte) idx#31 (byte) idx#108
Identical Phi Values (byte) idx#32 (byte) idx#108
Identical Phi Values (byte) idx#34 (byte) idx#108
Identical Phi Values (byte) idx#35 (byte) idx#108
Identical Phi Values (byte) idx#36 (byte) idx#108
Identical Phi Values (byte) idx#37 (byte) idx#108
Identical Phi Values (byte) idx#38 (byte) idx#108
Identical Phi Values (byte) idx#39 (byte) idx#108
Identical Phi Values (byte) idx#41 (byte) idx#108
Identical Phi Values (byte) idx#42 (byte) idx#108
Identical Phi Values (byte) idx#43 (byte) idx#108
Identical Phi Values (byte) idx#44 (byte) idx#108
Identical Phi Values (byte) idx#45 (byte) idx#108
Identical Phi Values (byte) idx#46 (byte) idx#108
Identical Phi Values (byte) idx#48 (byte) idx#108
Identical Phi Values (byte) idx#49 (byte) idx#108
Identical Phi Values (byte) idx#100 (byte) idx#108
Identical Phi Values (byte) idx#101 (byte) idx#108
Identical Phi Values (byte) idx#102 (byte) idx#108
Identical Phi Values (byte) idx#103 (byte) idx#108
Identical Phi Values (byte) idx#109 (byte) idx#2
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) main::$2 [5] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2
Simple Condition (bool~) assertType::$0 [286] if((byte) assertType::t1#42==(byte) assertType::t2#42) goto assertType::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) idx#0 = 0
Constant (const byte*) main::s#0 = SCREEN
Constant (const byte) idx#4 = 0
Constant (const byte) assertType::t1#0 = TYPEID_BYTE
Constant (const byte) assertType::t2#0 = TYPEID_BYTE
Constant (const byte) assertType::t1#1 = TYPEID_SIGNED_BYTE
Constant (const byte) assertType::t2#1 = TYPEID_SIGNED_BYTE
Constant (const byte) assertType::t1#2 = TYPEID_WORD
Constant (const byte) assertType::t2#2 = TYPEID_WORD
Constant (const byte) assertType::t1#3 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t2#3 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t1#4 = TYPEID_DWORD
Constant (const byte) assertType::t2#4 = TYPEID_DWORD
Constant (const byte) assertType::t1#5 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#5 = TYPEID_SIGNED_DWORD
Constant (const byte) idx#12 = $28
Constant (const byte) assertType::t1#6 = TYPEID_BYTE
Constant (const byte) assertType::t2#6 = TYPEID_BYTE
Constant (const byte) assertType::t1#7 = TYPEID_BYTE
Constant (const byte) assertType::t2#7 = TYPEID_BYTE
Constant (const byte) assertType::t1#8 = TYPEID_WORD
Constant (const byte) assertType::t2#8 = TYPEID_WORD
Constant (const byte) assertType::t1#9 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t2#9 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t1#10 = TYPEID_DWORD
Constant (const byte) assertType::t2#10 = TYPEID_DWORD
Constant (const byte) assertType::t1#11 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#11 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t1#12 = TYPEID_BYTE
Constant (const byte) assertType::t2#12 = TYPEID_BYTE
Constant (const byte) assertType::t1#13 = TYPEID_SIGNED_BYTE
Constant (const byte) assertType::t2#13 = TYPEID_SIGNED_BYTE
Constant (const byte) assertType::t1#14 = TYPEID_WORD
Constant (const byte) assertType::t2#14 = TYPEID_WORD
Constant (const byte) assertType::t1#15 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t2#15 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t1#16 = TYPEID_DWORD
Constant (const byte) assertType::t2#16 = TYPEID_DWORD
Constant (const byte) assertType::t1#17 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#17 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t1#18 = TYPEID_WORD
Constant (const byte) assertType::t2#18 = TYPEID_WORD
Constant (const byte) assertType::t1#19 = TYPEID_WORD
Constant (const byte) assertType::t2#19 = TYPEID_WORD
Constant (const byte) assertType::t1#20 = TYPEID_WORD
Constant (const byte) assertType::t2#20 = TYPEID_WORD
Constant (const byte) assertType::t1#21 = TYPEID_WORD
Constant (const byte) assertType::t2#21 = TYPEID_WORD
Constant (const byte) assertType::t1#22 = TYPEID_DWORD
Constant (const byte) assertType::t2#22 = TYPEID_DWORD
Constant (const byte) assertType::t1#23 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#23 = TYPEID_SIGNED_DWORD
Constant (const byte) idx#33 = $50
Constant (const byte) assertType::t1#24 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t2#24 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t1#25 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t2#25 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t1#26 = TYPEID_WORD
Constant (const byte) assertType::t2#26 = TYPEID_WORD
Constant (const byte) assertType::t1#27 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t2#27 = TYPEID_SIGNED_WORD
Constant (const byte) assertType::t1#28 = TYPEID_DWORD
Constant (const byte) assertType::t2#28 = TYPEID_DWORD
Constant (const byte) assertType::t1#29 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#29 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t1#30 = TYPEID_DWORD
Constant (const byte) assertType::t2#30 = TYPEID_DWORD
Constant (const byte) assertType::t1#31 = TYPEID_DWORD
Constant (const byte) assertType::t2#31 = TYPEID_DWORD
Constant (const byte) assertType::t1#32 = TYPEID_DWORD
Constant (const byte) assertType::t2#32 = TYPEID_DWORD
Constant (const byte) assertType::t1#33 = TYPEID_DWORD
Constant (const byte) assertType::t2#33 = TYPEID_DWORD
Constant (const byte) assertType::t1#34 = TYPEID_DWORD
Constant (const byte) assertType::t2#34 = TYPEID_DWORD
Constant (const byte) assertType::t1#35 = TYPEID_DWORD
Constant (const byte) assertType::t2#35 = TYPEID_DWORD
Constant (const byte) assertType::t1#36 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#36 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t1#37 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#37 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t1#38 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#38 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t1#39 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#39 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t1#40 = TYPEID_DWORD
Constant (const byte) assertType::t2#40 = TYPEID_DWORD
Constant (const byte) assertType::t1#41 = TYPEID_SIGNED_DWORD
Constant (const byte) assertType::t2#41 = TYPEID_SIGNED_DWORD
Successful SSA optimization Pass2ConstantIdentification
Eliminating unused constant (const byte) idx#0
Successful SSA optimization PassNEliminateUnusedVars
Inlining constant with var siblings (const byte*) main::s#0
Inlining constant with var siblings (const byte) assertType::t1#0
Inlining constant with var siblings (const byte) assertType::t2#0
Inlining constant with var siblings (const byte) assertType::t1#1
Inlining constant with var siblings (const byte) assertType::t2#1
Inlining constant with var siblings (const byte) assertType::t1#2
Inlining constant with var siblings (const byte) assertType::t2#2
Inlining constant with var siblings (const byte) assertType::t1#3
Inlining constant with var siblings (const byte) assertType::t2#3
Inlining constant with var siblings (const byte) assertType::t1#4
Inlining constant with var siblings (const byte) assertType::t2#4
Inlining constant with var siblings (const byte) assertType::t1#5
Inlining constant with var siblings (const byte) assertType::t2#5
Inlining constant with var siblings (const byte) assertType::t1#6
Inlining constant with var siblings (const byte) assertType::t2#6
Inlining constant with var siblings (const byte) assertType::t1#7
Inlining constant with var siblings (const byte) assertType::t2#7
Inlining constant with var siblings (const byte) assertType::t1#8
Inlining constant with var siblings (const byte) assertType::t2#8
Inlining constant with var siblings (const byte) assertType::t1#9
Inlining constant with var siblings (const byte) assertType::t2#9
Inlining constant with var siblings (const byte) assertType::t1#10
Inlining constant with var siblings (const byte) assertType::t2#10
Inlining constant with var siblings (const byte) assertType::t1#11
Inlining constant with var siblings (const byte) assertType::t2#11
Inlining constant with var siblings (const byte) assertType::t1#12
Inlining constant with var siblings (const byte) assertType::t2#12
Inlining constant with var siblings (const byte) assertType::t1#13
Inlining constant with var siblings (const byte) assertType::t2#13
Inlining constant with var siblings (const byte) assertType::t1#14
Inlining constant with var siblings (const byte) assertType::t2#14
Inlining constant with var siblings (const byte) assertType::t1#15
Inlining constant with var siblings (const byte) assertType::t2#15
Inlining constant with var siblings (const byte) assertType::t1#16
Inlining constant with var siblings (const byte) assertType::t2#16
Inlining constant with var siblings (const byte) assertType::t1#17
Inlining constant with var siblings (const byte) assertType::t2#17
Inlining constant with var siblings (const byte) assertType::t1#18
Inlining constant with var siblings (const byte) assertType::t2#18
Inlining constant with var siblings (const byte) assertType::t1#19
Inlining constant with var siblings (const byte) assertType::t2#19
Inlining constant with var siblings (const byte) assertType::t1#20
Inlining constant with var siblings (const byte) assertType::t2#20
Inlining constant with var siblings (const byte) assertType::t1#21
Inlining constant with var siblings (const byte) assertType::t2#21
Inlining constant with var siblings (const byte) assertType::t1#22
Inlining constant with var siblings (const byte) assertType::t2#22
Inlining constant with var siblings (const byte) assertType::t1#23
Inlining constant with var siblings (const byte) assertType::t2#23
Inlining constant with var siblings (const byte) assertType::t1#24
Inlining constant with var siblings (const byte) assertType::t2#24
Inlining constant with var siblings (const byte) assertType::t1#25
Inlining constant with var siblings (const byte) assertType::t2#25
Inlining constant with var siblings (const byte) assertType::t1#26
Inlining constant with var siblings (const byte) assertType::t2#26
Inlining constant with var siblings (const byte) assertType::t1#27
Inlining constant with var siblings (const byte) assertType::t2#27
Inlining constant with var siblings (const byte) assertType::t1#28
Inlining constant with var siblings (const byte) assertType::t2#28
Inlining constant with var siblings (const byte) assertType::t1#29
Inlining constant with var siblings (const byte) assertType::t2#29
Inlining constant with var siblings (const byte) assertType::t1#30
Inlining constant with var siblings (const byte) assertType::t2#30
Inlining constant with var siblings (const byte) assertType::t1#31
Inlining constant with var siblings (const byte) assertType::t2#31
Inlining constant with var siblings (const byte) assertType::t1#32
Inlining constant with var siblings (const byte) assertType::t2#32
Inlining constant with var siblings (const byte) assertType::t1#33
Inlining constant with var siblings (const byte) assertType::t2#33
Inlining constant with var siblings (const byte) assertType::t1#34
Inlining constant with var siblings (const byte) assertType::t2#34
Inlining constant with var siblings (const byte) assertType::t1#35
Inlining constant with var siblings (const byte) assertType::t2#35
Inlining constant with var siblings (const byte) assertType::t1#36
Inlining constant with var siblings (const byte) assertType::t2#36
Inlining constant with var siblings (const byte) assertType::t1#37
Inlining constant with var siblings (const byte) assertType::t2#37
Inlining constant with var siblings (const byte) assertType::t1#38
Inlining constant with var siblings (const byte) assertType::t2#38
Inlining constant with var siblings (const byte) assertType::t1#39
Inlining constant with var siblings (const byte) assertType::t2#39
Inlining constant with var siblings (const byte) assertType::t1#40
Inlining constant with var siblings (const byte) assertType::t2#40
Inlining constant with var siblings (const byte) assertType::t1#41
Inlining constant with var siblings (const byte) assertType::t2#41
Inlining constant with var siblings (const byte) idx#4
Inlining constant with var siblings (const byte) idx#12
Inlining constant with var siblings (const byte) idx#33
Constant inlined assertType::t2#5 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#6 = (const byte) TYPEID_BYTE
Constant inlined assertType::t2#7 = (const byte) TYPEID_BYTE
Constant inlined assertType::t2#8 = (const byte) TYPEID_WORD
Constant inlined idx#33 = (byte) $50
Constant inlined assertType::t2#9 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#31 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#30 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#21 = (const byte) TYPEID_WORD
Constant inlined assertType::t2#33 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#20 = (const byte) TYPEID_WORD
Constant inlined assertType::t2#32 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#23 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#35 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#22 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#34 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#25 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#37 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined idx#4 = (byte) 0
Constant inlined assertType::t1#24 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#36 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#27 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#39 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#0 = (const byte) TYPEID_BYTE
Constant inlined assertType::t1#26 = (const byte) TYPEID_WORD
Constant inlined assertType::t2#38 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#1 = (const byte) TYPEID_SIGNED_BYTE
Constant inlined assertType::t1#29 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#2 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#28 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#3 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#4 = (const byte) TYPEID_DWORD
Constant inlined main::s#0 = (const byte*) SCREEN
Constant inlined assertType::t2#20 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#10 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#22 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#21 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#12 = (const byte) TYPEID_BYTE
Constant inlined assertType::t2#24 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t1#11 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#23 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#14 = (const byte) TYPEID_WORD
Constant inlined assertType::t2#26 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#13 = (const byte) TYPEID_SIGNED_BYTE
Constant inlined assertType::t2#25 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t1#16 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#28 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#15 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#27 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t1#18 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#17 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#29 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#19 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#6 = (const byte) TYPEID_BYTE
Constant inlined assertType::t1#7 = (const byte) TYPEID_BYTE
Constant inlined assertType::t1#8 = (const byte) TYPEID_WORD
Constant inlined idx#12 = (byte) $28
Constant inlined assertType::t1#9 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t1#41 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#40 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#11 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#10 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#13 = (const byte) TYPEID_SIGNED_BYTE
Constant inlined assertType::t2#12 = (const byte) TYPEID_BYTE
Constant inlined assertType::t2#15 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#14 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#0 = (const byte) TYPEID_BYTE
Constant inlined assertType::t2#17 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#1 = (const byte) TYPEID_SIGNED_BYTE
Constant inlined assertType::t2#16 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#2 = (const byte) TYPEID_WORD
Constant inlined assertType::t2#19 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#3 = (const byte) TYPEID_SIGNED_WORD
Constant inlined assertType::t2#18 = (const byte) TYPEID_WORD
Constant inlined assertType::t1#4 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#5 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t2#40 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#30 = (const byte) TYPEID_DWORD
Constant inlined assertType::t2#41 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#32 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#31 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#34 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#33 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#36 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#35 = (const byte) TYPEID_DWORD
Constant inlined assertType::t1#38 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#37 = (const byte) TYPEID_SIGNED_DWORD
Constant inlined assertType::t1#39 = (const byte) TYPEID_SIGNED_DWORD
Successful SSA optimization Pass2ConstantInlining
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @4
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::@8
Adding NOP phi() at start of testBinaryOperator
Adding NOP phi() at start of testBinaryOperator::@18
Adding NOP phi() at start of testBinaryOperator::@36
Adding NOP phi() at start of testUnaryOperator
Adding NOP phi() at start of testUnaryOperator::@6
CALL GRAPH
Calls in [] to main:2 
Calls in [main] to testUnaryOperator:9 testBinaryOperator:11 
Calls in [testBinaryOperator] to assertType:18 assertType:20 assertType:22 assertType:24 assertType:26 assertType:28 assertType:31 assertType:33 assertType:35 assertType:37 assertType:39 assertType:41 assertType:44 assertType:46 assertType:48 assertType:50 assertType:52 assertType:54 assertType:56 assertType:58 assertType:60 assertType:62 assertType:64 assertType:66 assertType:69 assertType:71 assertType:73 assertType:75 assertType:77 assertType:79 assertType:82 assertType:84 assertType:86 assertType:88 assertType:90 assertType:92 
Calls in [testUnaryOperator] to assertType:103 assertType:105 assertType:107 assertType:109 assertType:111 assertType:113 

Created 4 initial phi equivalence classes
Coalesced [16] main::s#4 ← main::s#1
Coalesced [19] idx#116 ← idx#108
Coalesced (already) [21] idx#126 ← idx#108
Coalesced (already) [23] idx#137 ← idx#108
Coalesced (already) [25] idx#144 ← idx#108
Coalesced (already) [27] idx#145 ← idx#108
Coalesced [30] idx#146 ← idx#19
Coalesced (already) [32] idx#147 ← idx#108
Coalesced (already) [34] idx#148 ← idx#108
Coalesced (already) [36] idx#149 ← idx#108
Coalesced (already) [38] idx#117 ← idx#108
Coalesced (already) [40] idx#118 ← idx#108
Coalesced [43] idx#119 ← idx#26
Coalesced (already) [45] idx#120 ← idx#108
Coalesced (already) [47] idx#121 ← idx#108
Coalesced (already) [49] idx#122 ← idx#108
Coalesced (already) [51] idx#123 ← idx#108
Coalesced (already) [53] idx#124 ← idx#108
Coalesced (already) [57] idx#125 ← idx#108
Coalesced (already) [59] idx#127 ← idx#108
Coalesced (already) [61] idx#128 ← idx#108
Coalesced (already) [63] idx#129 ← idx#108
Coalesced (already) [65] idx#130 ← idx#108
Coalesced [68] idx#131 ← idx#40
Coalesced (already) [70] idx#132 ← idx#108
Coalesced (already) [72] idx#133 ← idx#108
Coalesced (already) [74] idx#134 ← idx#108
Coalesced (already) [76] idx#135 ← idx#108
Coalesced (already) [78] idx#136 ← idx#108
Coalesced [81] idx#138 ← idx#47
Coalesced (already) [83] idx#139 ← idx#108
Coalesced (already) [85] idx#140 ← idx#108
Coalesced (already) [87] idx#141 ← idx#108
Coalesced (already) [89] idx#142 ← idx#108
Coalesced (already) [91] idx#143 ← idx#108
Coalesced (already) [104] idx#150 ← idx#108
Coalesced (already) [106] idx#151 ← idx#108
Coalesced (already) [108] idx#152 ← idx#108
Coalesced (already) [110] idx#153 ← idx#108
Coalesced (already) [112] idx#154 ← idx#108
Coalesced down to 4 phi equivalence classes
Culled Empty Block (label) @5
Culled Empty Block (label) main::@8
Culled Empty Block (label) testBinaryOperator::@36
Culled Empty Block (label) testUnaryOperator::@6
Renumbering block @4 to @1
Renumbering block main::@7 to main::@4
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of testBinaryOperator
Adding NOP phi() at start of testBinaryOperator::@1
Adding NOP phi() at start of testBinaryOperator::@2
Adding NOP phi() at start of testBinaryOperator::@3
Adding NOP phi() at start of testBinaryOperator::@4
Adding NOP phi() at start of testBinaryOperator::@5
Adding NOP phi() at start of testBinaryOperator::@7
Adding NOP phi() at start of testBinaryOperator::@8
Adding NOP phi() at start of testBinaryOperator::@9
Adding NOP phi() at start of testBinaryOperator::@10
Adding NOP phi() at start of testBinaryOperator::@11
Adding NOP phi() at start of testBinaryOperator::@13
Adding NOP phi() at start of testBinaryOperator::@14
Adding NOP phi() at start of testBinaryOperator::@15
Adding NOP phi() at start of testBinaryOperator::@16
Adding NOP phi() at start of testBinaryOperator::@17
Adding NOP phi() at start of testBinaryOperator::@18
Adding NOP phi() at start of testBinaryOperator::@19
Adding NOP phi() at start of testBinaryOperator::@20
Adding NOP phi() at start of testBinaryOperator::@21
Adding NOP phi() at start of testBinaryOperator::@22
Adding NOP phi() at start of testBinaryOperator::@23
Adding NOP phi() at start of testBinaryOperator::@25
Adding NOP phi() at start of testBinaryOperator::@26
Adding NOP phi() at start of testBinaryOperator::@27
Adding NOP phi() at start of testBinaryOperator::@28
Adding NOP phi() at start of testBinaryOperator::@29
Adding NOP phi() at start of testBinaryOperator::@31
Adding NOP phi() at start of testBinaryOperator::@32
Adding NOP phi() at start of testBinaryOperator::@33
Adding NOP phi() at start of testBinaryOperator::@34
Adding NOP phi() at start of testBinaryOperator::@35
Adding NOP phi() at start of testUnaryOperator
Adding NOP phi() at start of testUnaryOperator::@1
Adding NOP phi() at start of testUnaryOperator::@2
Adding NOP phi() at start of testUnaryOperator::@3
Adding NOP phi() at start of testUnaryOperator::@4
Adding NOP phi() at start of testUnaryOperator::@5

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  [4] phi()
  to:main::@1
main::@1: scope:[main]  from main main::@2
  [5] (byte*) main::s#2 ← phi( main/(const byte*) SCREEN main::@2/(byte*) main::s#1 )
  [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1
  [7] phi()
  [8] call testUnaryOperator 
  to:main::@4
main::@4: scope:[main]  from main::@3
  [9] phi()
  [10] call testBinaryOperator 
  to:main::@return
main::@return: scope:[main]  from main::@4
  [11] return 
  to:@return
main::@2: scope:[main]  from main::@1
  [12] *((byte*) main::s#2) ← (byte) ' '
  [13] (byte*) main::s#1 ← ++ (byte*) main::s#2
  to:main::@1

(void()) testBinaryOperator()
testBinaryOperator: scope:[testBinaryOperator]  from main::@4
  [14] phi()
  [15] call assertType 
  to:testBinaryOperator::@1
testBinaryOperator::@1: scope:[testBinaryOperator]  from testBinaryOperator
  [16] phi()
  [17] call assertType 
  to:testBinaryOperator::@2
testBinaryOperator::@2: scope:[testBinaryOperator]  from testBinaryOperator::@1
  [18] phi()
  [19] call assertType 
  to:testBinaryOperator::@3
testBinaryOperator::@3: scope:[testBinaryOperator]  from testBinaryOperator::@2
  [20] phi()
  [21] call assertType 
  to:testBinaryOperator::@4
testBinaryOperator::@4: scope:[testBinaryOperator]  from testBinaryOperator::@3
  [22] phi()
  [23] call assertType 
  to:testBinaryOperator::@5
testBinaryOperator::@5: scope:[testBinaryOperator]  from testBinaryOperator::@4
  [24] phi()
  [25] call assertType 
  to:testBinaryOperator::@6
testBinaryOperator::@6: scope:[testBinaryOperator]  from testBinaryOperator::@5
  [26] (byte) idx#19 ← ++ (byte) idx#108
  [27] call assertType 
  to:testBinaryOperator::@7
testBinaryOperator::@7: scope:[testBinaryOperator]  from testBinaryOperator::@6
  [28] phi()
  [29] call assertType 
  to:testBinaryOperator::@8
testBinaryOperator::@8: scope:[testBinaryOperator]  from testBinaryOperator::@7
  [30] phi()
  [31] call assertType 
  to:testBinaryOperator::@9
testBinaryOperator::@9: scope:[testBinaryOperator]  from testBinaryOperator::@8
  [32] phi()
  [33] call assertType 
  to:testBinaryOperator::@10
testBinaryOperator::@10: scope:[testBinaryOperator]  from testBinaryOperator::@9
  [34] phi()
  [35] call assertType 
  to:testBinaryOperator::@11
testBinaryOperator::@11: scope:[testBinaryOperator]  from testBinaryOperator::@10
  [36] phi()
  [37] call assertType 
  to:testBinaryOperator::@12
testBinaryOperator::@12: scope:[testBinaryOperator]  from testBinaryOperator::@11
  [38] (byte) idx#26 ← ++ (byte) idx#108
  [39] call assertType 
  to:testBinaryOperator::@13
testBinaryOperator::@13: scope:[testBinaryOperator]  from testBinaryOperator::@12
  [40] phi()
  [41] call assertType 
  to:testBinaryOperator::@14
testBinaryOperator::@14: scope:[testBinaryOperator]  from testBinaryOperator::@13
  [42] phi()
  [43] call assertType 
  to:testBinaryOperator::@15
testBinaryOperator::@15: scope:[testBinaryOperator]  from testBinaryOperator::@14
  [44] phi()
  [45] call assertType 
  to:testBinaryOperator::@16
testBinaryOperator::@16: scope:[testBinaryOperator]  from testBinaryOperator::@15
  [46] phi()
  [47] call assertType 
  to:testBinaryOperator::@17
testBinaryOperator::@17: scope:[testBinaryOperator]  from testBinaryOperator::@16
  [48] phi()
  [49] call assertType 
  to:testBinaryOperator::@18
testBinaryOperator::@18: scope:[testBinaryOperator]  from testBinaryOperator::@17
  [50] phi()
  [51] call assertType 
  to:testBinaryOperator::@19
testBinaryOperator::@19: scope:[testBinaryOperator]  from testBinaryOperator::@18
  [52] phi()
  [53] call assertType 
  to:testBinaryOperator::@20
testBinaryOperator::@20: scope:[testBinaryOperator]  from testBinaryOperator::@19
  [54] phi()
  [55] call assertType 
  to:testBinaryOperator::@21
testBinaryOperator::@21: scope:[testBinaryOperator]  from testBinaryOperator::@20
  [56] phi()
  [57] call assertType 
  to:testBinaryOperator::@22
testBinaryOperator::@22: scope:[testBinaryOperator]  from testBinaryOperator::@21
  [58] phi()
  [59] call assertType 
  to:testBinaryOperator::@23
testBinaryOperator::@23: scope:[testBinaryOperator]  from testBinaryOperator::@22
  [60] phi()
  [61] call assertType 
  to:testBinaryOperator::@24
testBinaryOperator::@24: scope:[testBinaryOperator]  from testBinaryOperator::@23
  [62] (byte) idx#40 ← ++ (byte) idx#108
  [63] call assertType 
  to:testBinaryOperator::@25
testBinaryOperator::@25: scope:[testBinaryOperator]  from testBinaryOperator::@24
  [64] phi()
  [65] call assertType 
  to:testBinaryOperator::@26
testBinaryOperator::@26: scope:[testBinaryOperator]  from testBinaryOperator::@25
  [66] phi()
  [67] call assertType 
  to:testBinaryOperator::@27
testBinaryOperator::@27: scope:[testBinaryOperator]  from testBinaryOperator::@26
  [68] phi()
  [69] call assertType 
  to:testBinaryOperator::@28
testBinaryOperator::@28: scope:[testBinaryOperator]  from testBinaryOperator::@27
  [70] phi()
  [71] call assertType 
  to:testBinaryOperator::@29
testBinaryOperator::@29: scope:[testBinaryOperator]  from testBinaryOperator::@28
  [72] phi()
  [73] call assertType 
  to:testBinaryOperator::@30
testBinaryOperator::@30: scope:[testBinaryOperator]  from testBinaryOperator::@29
  [74] (byte) idx#47 ← ++ (byte) idx#108
  [75] call assertType 
  to:testBinaryOperator::@31
testBinaryOperator::@31: scope:[testBinaryOperator]  from testBinaryOperator::@30
  [76] phi()
  [77] call assertType 
  to:testBinaryOperator::@32
testBinaryOperator::@32: scope:[testBinaryOperator]  from testBinaryOperator::@31
  [78] phi()
  [79] call assertType 
  to:testBinaryOperator::@33
testBinaryOperator::@33: scope:[testBinaryOperator]  from testBinaryOperator::@32
  [80] phi()
  [81] call assertType 
  to:testBinaryOperator::@34
testBinaryOperator::@34: scope:[testBinaryOperator]  from testBinaryOperator::@33
  [82] phi()
  [83] call assertType 
  to:testBinaryOperator::@35
testBinaryOperator::@35: scope:[testBinaryOperator]  from testBinaryOperator::@34
  [84] phi()
  [85] call assertType 
  to:testBinaryOperator::@return
testBinaryOperator::@return: scope:[testBinaryOperator]  from testBinaryOperator::@35
  [86] return 
  to:@return

(void()) assertType((byte) assertType::t1 , (byte) assertType::t2)
assertType: scope:[assertType]  from testBinaryOperator testBinaryOperator::@1 testBinaryOperator::@10 testBinaryOperator::@11 testBinaryOperator::@12 testBinaryOperator::@13 testBinaryOperator::@14 testBinaryOperator::@15 testBinaryOperator::@16 testBinaryOperator::@17 testBinaryOperator::@18 testBinaryOperator::@19 testBinaryOperator::@2 testBinaryOperator::@20 testBinaryOperator::@21 testBinaryOperator::@22 testBinaryOperator::@23 testBinaryOperator::@24 testBinaryOperator::@25 testBinaryOperator::@26 testBinaryOperator::@27 testBinaryOperator::@28 testBinaryOperator::@29 testBinaryOperator::@3 testBinaryOperator::@30 testBinaryOperator::@31 testBinaryOperator::@32 testBinaryOperator::@33 testBinaryOperator::@34 testBinaryOperator::@35 testBinaryOperator::@4 testBinaryOperator::@5 testBinaryOperator::@6 testBinaryOperator::@7 testBinaryOperator::@8 testBinaryOperator::@9 testUnaryOperator testUnaryOperator::@1 testUnaryOperator::@2 testUnaryOperator::@3 testUnaryOperator::@4 testUnaryOperator::@5
  [87] (byte) idx#105 ← phi( testBinaryOperator/(byte) $28 testBinaryOperator::@1/(byte) idx#108 testBinaryOperator::@10/(byte) idx#108 testBinaryOperator::@11/(byte) idx#108 testBinaryOperator::@12/(byte) idx#26 testBinaryOperator::@13/(byte) idx#108 testBinaryOperator::@14/(byte) idx#108 testBinaryOperator::@15/(byte) idx#108 testBinaryOperator::@16/(byte) idx#108 testBinaryOperator::@17/(byte) idx#108 testBinaryOperator::@18/(byte) $50 testBinaryOperator::@19/(byte) idx#108 testBinaryOperator::@2/(byte) idx#108 testBinaryOperator::@20/(byte) idx#108 testBinaryOperator::@21/(byte) idx#108 testBinaryOperator::@22/(byte) idx#108 testBinaryOperator::@23/(byte) idx#108 testBinaryOperator::@24/(byte) idx#40 testBinaryOperator::@25/(byte) idx#108 testBinaryOperator::@26/(byte) idx#108 testBinaryOperator::@27/(byte) idx#108 testBinaryOperator::@28/(byte) idx#108 testBinaryOperator::@29/(byte) idx#108 testBinaryOperator::@3/(byte) idx#108 testBinaryOperator::@30/(byte) idx#47 testBinaryOperator::@31/(byte) idx#108 testBinaryOperator::@32/(byte) idx#108 testBinaryOperator::@33/(byte) idx#108 testBinaryOperator::@34/(byte) idx#108 testBinaryOperator::@35/(byte) idx#108 testBinaryOperator::@4/(byte) idx#108 testBinaryOperator::@5/(byte) idx#108 testBinaryOperator::@6/(byte) idx#19 testBinaryOperator::@7/(byte) idx#108 testBinaryOperator::@8/(byte) idx#108 testBinaryOperator::@9/(byte) idx#108 testUnaryOperator/(byte) 0 testUnaryOperator::@1/(byte) idx#108 testUnaryOperator::@2/(byte) idx#108 testUnaryOperator::@3/(byte) idx#108 testUnaryOperator::@4/(byte) idx#108 testUnaryOperator::@5/(byte) idx#108 )
  [87] (byte) assertType::t2#42 ← phi( testBinaryOperator/(const byte) TYPEID_BYTE testBinaryOperator::@1/(const byte) TYPEID_BYTE testBinaryOperator::@10/(const byte) TYPEID_DWORD testBinaryOperator::@11/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@12/(const byte) TYPEID_WORD testBinaryOperator::@13/(const byte) TYPEID_WORD testBinaryOperator::@14/(const byte) TYPEID_WORD testBinaryOperator::@15/(const byte) TYPEID_WORD testBinaryOperator::@16/(const byte) TYPEID_DWORD testBinaryOperator::@17/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@18/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@19/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@2/(const byte) TYPEID_WORD testBinaryOperator::@20/(const byte) TYPEID_WORD testBinaryOperator::@21/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@22/(const byte) TYPEID_DWORD testBinaryOperator::@23/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@24/(const byte) TYPEID_DWORD testBinaryOperator::@25/(const byte) TYPEID_DWORD testBinaryOperator::@26/(const byte) TYPEID_DWORD testBinaryOperator::@27/(const byte) TYPEID_DWORD testBinaryOperator::@28/(const byte) TYPEID_DWORD testBinaryOperator::@29/(const byte) TYPEID_DWORD testBinaryOperator::@3/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@30/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@31/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@32/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@33/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@34/(const byte) TYPEID_DWORD testBinaryOperator::@35/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@4/(const byte) TYPEID_DWORD testBinaryOperator::@5/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@6/(const byte) TYPEID_BYTE testBinaryOperator::@7/(const byte) TYPEID_SIGNED_BYTE testBinaryOperator::@8/(const byte) TYPEID_WORD testBinaryOperator::@9/(const byte) TYPEID_SIGNED_WORD testUnaryOperator/(const byte) TYPEID_BYTE testUnaryOperator::@1/(const byte) TYPEID_SIGNED_BYTE testUnaryOperator::@2/(const byte) TYPEID_WORD testUnaryOperator::@3/(const byte) TYPEID_SIGNED_WORD testUnaryOperator::@4/(const byte) TYPEID_DWORD testUnaryOperator::@5/(const byte) TYPEID_SIGNED_DWORD )
  [87] (byte) assertType::t1#42 ← phi( testBinaryOperator/(const byte) TYPEID_BYTE testBinaryOperator::@1/(const byte) TYPEID_BYTE testBinaryOperator::@10/(const byte) TYPEID_DWORD testBinaryOperator::@11/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@12/(const byte) TYPEID_WORD testBinaryOperator::@13/(const byte) TYPEID_WORD testBinaryOperator::@14/(const byte) TYPEID_WORD testBinaryOperator::@15/(const byte) TYPEID_WORD testBinaryOperator::@16/(const byte) TYPEID_DWORD testBinaryOperator::@17/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@18/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@19/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@2/(const byte) TYPEID_WORD testBinaryOperator::@20/(const byte) TYPEID_WORD testBinaryOperator::@21/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@22/(const byte) TYPEID_DWORD testBinaryOperator::@23/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@24/(const byte) TYPEID_DWORD testBinaryOperator::@25/(const byte) TYPEID_DWORD testBinaryOperator::@26/(const byte) TYPEID_DWORD testBinaryOperator::@27/(const byte) TYPEID_DWORD testBinaryOperator::@28/(const byte) TYPEID_DWORD testBinaryOperator::@29/(const byte) TYPEID_DWORD testBinaryOperator::@3/(const byte) TYPEID_SIGNED_WORD testBinaryOperator::@30/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@31/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@32/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@33/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@34/(const byte) TYPEID_DWORD testBinaryOperator::@35/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@4/(const byte) TYPEID_DWORD testBinaryOperator::@5/(const byte) TYPEID_SIGNED_DWORD testBinaryOperator::@6/(const byte) TYPEID_BYTE testBinaryOperator::@7/(const byte) TYPEID_SIGNED_BYTE testBinaryOperator::@8/(const byte) TYPEID_WORD testBinaryOperator::@9/(const byte) TYPEID_SIGNED_WORD testUnaryOperator/(const byte) TYPEID_BYTE testUnaryOperator::@1/(const byte) TYPEID_SIGNED_BYTE testUnaryOperator::@2/(const byte) TYPEID_WORD testUnaryOperator::@3/(const byte) TYPEID_SIGNED_WORD testUnaryOperator::@4/(const byte) TYPEID_DWORD testUnaryOperator::@5/(const byte) TYPEID_SIGNED_DWORD )
  [88] if((byte) assertType::t1#42==(byte) assertType::t2#42) goto assertType::@1
  to:assertType::@3
assertType::@3: scope:[assertType]  from assertType
  [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED
  to:assertType::@2
assertType::@2: scope:[assertType]  from assertType::@1 assertType::@3
  [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42
  [91] (byte) idx#108 ← ++ (byte) idx#105
  to:assertType::@return
assertType::@return: scope:[assertType]  from assertType::@2
  [92] return 
  to:@return
assertType::@1: scope:[assertType]  from assertType
  [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN
  to:assertType::@2

(void()) testUnaryOperator()
testUnaryOperator: scope:[testUnaryOperator]  from main::@3
  [94] phi()
  [95] call assertType 
  to:testUnaryOperator::@1
testUnaryOperator::@1: scope:[testUnaryOperator]  from testUnaryOperator
  [96] phi()
  [97] call assertType 
  to:testUnaryOperator::@2
testUnaryOperator::@2: scope:[testUnaryOperator]  from testUnaryOperator::@1
  [98] phi()
  [99] call assertType 
  to:testUnaryOperator::@3
testUnaryOperator::@3: scope:[testUnaryOperator]  from testUnaryOperator::@2
  [100] phi()
  [101] call assertType 
  to:testUnaryOperator::@4
testUnaryOperator::@4: scope:[testUnaryOperator]  from testUnaryOperator::@3
  [102] phi()
  [103] call assertType 
  to:testUnaryOperator::@5
testUnaryOperator::@5: scope:[testUnaryOperator]  from testUnaryOperator::@4
  [104] phi()
  [105] call assertType 
  to:testUnaryOperator::@return
testUnaryOperator::@return: scope:[testUnaryOperator]  from testUnaryOperator::@5
  [106] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(void()) assertType((byte) assertType::t1 , (byte) assertType::t2)
(byte) assertType::t1
(byte) assertType::t1#42 1.0
(byte) assertType::t2
(byte) assertType::t2#42 2.0
(byte) idx
(byte) idx#105 17.200000000000003
(byte) idx#108 1.0526315789473677
(byte) idx#19 4.0
(byte) idx#26 4.0
(byte) idx#40 4.0
(byte) idx#47 4.0
(void()) main()
(byte*) main::s
(byte*) main::s#1 22.0
(byte*) main::s#2 14.666666666666666
(void()) testBinaryOperator()
(void()) testUnaryOperator()

Initial phi equivalence classes
[ main::s#2 main::s#1 ]
[ assertType::t1#42 ]
[ assertType::t2#42 ]
[ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ]
Complete equivalence classes
[ main::s#2 main::s#1 ]
[ assertType::t1#42 ]
[ assertType::t2#42 ]
[ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ]
Allocated zp[2]:2 [ main::s#2 main::s#1 ]
Allocated zp[1]:4 [ assertType::t1#42 ]
Allocated zp[1]:5 [ assertType::t2#42 ]
Allocated zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ]

INITIAL ASM
Target platform is c64basic / MOS6502X
  // File Comments
// Tests different integer literal types
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .const RED = 2
  .const GREEN = 5
  .label SCREEN = $400
  .label COLS = $d800
  .const TYPEID_BYTE = 1
  .const TYPEID_SIGNED_BYTE = 2
  .const TYPEID_WORD = 3
  .const TYPEID_SIGNED_WORD = 4
  .const TYPEID_DWORD = 5
  .const TYPEID_SIGNED_DWORD = 6
  .label idx = 6
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .label s = 2
    // [5] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [5] phi (byte*) main::s#2 = (const byte*) SCREEN [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z s
    lda #>SCREEN
    sta.z s+1
    jmp __b1
    // main::@1
  __b1:
    // [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z s+1
    cmp #>SCREEN+$3e8
    bcc __b2
    bne !+
    lda.z s
    cmp #<SCREEN+$3e8
    bcc __b2
  !:
    // [7] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
  __b3_from___b1:
    jmp __b3
    // main::@3
  __b3:
    // [8] call testUnaryOperator 
    // [94] phi from main::@3 to testUnaryOperator [phi:main::@3->testUnaryOperator]
  testUnaryOperator_from___b3:
    jsr testUnaryOperator
    // [9] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [10] call testBinaryOperator 
    // [14] phi from main::@4 to testBinaryOperator [phi:main::@4->testBinaryOperator]
  testBinaryOperator_from___b4:
    jsr testBinaryOperator
    jmp __breturn
    // main::@return
  __breturn:
    // [11] return 
    rts
    // main::@2
  __b2:
    // [12] *((byte*) main::s#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (s),y
    // [13] (byte*) main::s#1 ← ++ (byte*) main::s#2 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
  __b1_from___b2:
    // [5] phi (byte*) main::s#2 = (byte*) main::s#1 [phi:main::@2->main::@1#0] -- register_copy 
    jmp __b1
}
  // testBinaryOperator
testBinaryOperator: {
    // [15] call assertType 
    // [87] phi from testBinaryOperator to assertType [phi:testBinaryOperator->assertType]
  assertType_from_testBinaryOperator:
    // [87] phi (byte) idx#105 = (byte) $28 [phi:testBinaryOperator->assertType#0] -- vbuz1=vbuc1 
    lda #$28
    sta.z idx
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t1
    jsr assertType
    // [16] phi from testBinaryOperator to testBinaryOperator::@1 [phi:testBinaryOperator->testBinaryOperator::@1]
  __b1_from_testBinaryOperator:
    jmp __b1
    // testBinaryOperator::@1
  __b1:
    // [17] call assertType 
    // [87] phi from testBinaryOperator::@1 to assertType [phi:testBinaryOperator::@1->assertType]
  assertType_from___b1:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@1->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@1->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t1
    jsr assertType
    // [18] phi from testBinaryOperator::@1 to testBinaryOperator::@2 [phi:testBinaryOperator::@1->testBinaryOperator::@2]
  __b2_from___b1:
    jmp __b2
    // testBinaryOperator::@2
  __b2:
    // [19] call assertType 
    // [87] phi from testBinaryOperator::@2 to assertType [phi:testBinaryOperator::@2->assertType]
  assertType_from___b2:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@2->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@2->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [20] phi from testBinaryOperator::@2 to testBinaryOperator::@3 [phi:testBinaryOperator::@2->testBinaryOperator::@3]
  __b3_from___b2:
    jmp __b3
    // testBinaryOperator::@3
  __b3:
    // [21] call assertType 
    // [87] phi from testBinaryOperator::@3 to assertType [phi:testBinaryOperator::@3->assertType]
  assertType_from___b3:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@3->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@3->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t1
    jsr assertType
    // [22] phi from testBinaryOperator::@3 to testBinaryOperator::@4 [phi:testBinaryOperator::@3->testBinaryOperator::@4]
  __b4_from___b3:
    jmp __b4
    // testBinaryOperator::@4
  __b4:
    // [23] call assertType 
    // [87] phi from testBinaryOperator::@4 to assertType [phi:testBinaryOperator::@4->assertType]
  assertType_from___b4:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@4->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@4->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [24] phi from testBinaryOperator::@4 to testBinaryOperator::@5 [phi:testBinaryOperator::@4->testBinaryOperator::@5]
  __b5_from___b4:
    jmp __b5
    // testBinaryOperator::@5
  __b5:
    // [25] call assertType 
    // [87] phi from testBinaryOperator::@5 to assertType [phi:testBinaryOperator::@5->assertType]
  assertType_from___b5:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@5->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@5->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    jmp __b6
    // testBinaryOperator::@6
  __b6:
    // [26] (byte) idx#19 ← ++ (byte) idx#108 -- vbuz1=_inc_vbuz1 
    inc.z idx
    // [27] call assertType 
    // [87] phi from testBinaryOperator::@6 to assertType [phi:testBinaryOperator::@6->assertType]
  assertType_from___b6:
    // [87] phi (byte) idx#105 = (byte) idx#19 [phi:testBinaryOperator::@6->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@6->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@6->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t1
    jsr assertType
    // [28] phi from testBinaryOperator::@6 to testBinaryOperator::@7 [phi:testBinaryOperator::@6->testBinaryOperator::@7]
  __b7_from___b6:
    jmp __b7
    // testBinaryOperator::@7
  __b7:
    // [29] call assertType 
    // [87] phi from testBinaryOperator::@7 to assertType [phi:testBinaryOperator::@7->assertType]
  assertType_from___b7:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@7->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testBinaryOperator::@7->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testBinaryOperator::@7->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t1
    jsr assertType
    // [30] phi from testBinaryOperator::@7 to testBinaryOperator::@8 [phi:testBinaryOperator::@7->testBinaryOperator::@8]
  __b8_from___b7:
    jmp __b8
    // testBinaryOperator::@8
  __b8:
    // [31] call assertType 
    // [87] phi from testBinaryOperator::@8 to assertType [phi:testBinaryOperator::@8->assertType]
  assertType_from___b8:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@8->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@8->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@8->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [32] phi from testBinaryOperator::@8 to testBinaryOperator::@9 [phi:testBinaryOperator::@8->testBinaryOperator::@9]
  __b9_from___b8:
    jmp __b9
    // testBinaryOperator::@9
  __b9:
    // [33] call assertType 
    // [87] phi from testBinaryOperator::@9 to assertType [phi:testBinaryOperator::@9->assertType]
  assertType_from___b9:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@9->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@9->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@9->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t1
    jsr assertType
    // [34] phi from testBinaryOperator::@9 to testBinaryOperator::@10 [phi:testBinaryOperator::@9->testBinaryOperator::@10]
  __b10_from___b9:
    jmp __b10
    // testBinaryOperator::@10
  __b10:
    // [35] call assertType 
    // [87] phi from testBinaryOperator::@10 to assertType [phi:testBinaryOperator::@10->assertType]
  assertType_from___b10:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@10->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@10->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@10->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [36] phi from testBinaryOperator::@10 to testBinaryOperator::@11 [phi:testBinaryOperator::@10->testBinaryOperator::@11]
  __b11_from___b10:
    jmp __b11
    // testBinaryOperator::@11
  __b11:
    // [37] call assertType 
    // [87] phi from testBinaryOperator::@11 to assertType [phi:testBinaryOperator::@11->assertType]
  assertType_from___b11:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@11->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@11->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@11->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    jmp __b12
    // testBinaryOperator::@12
  __b12:
    // [38] (byte) idx#26 ← ++ (byte) idx#108 -- vbuz1=_inc_vbuz1 
    inc.z idx
    // [39] call assertType 
    // [87] phi from testBinaryOperator::@12 to assertType [phi:testBinaryOperator::@12->assertType]
  assertType_from___b12:
    // [87] phi (byte) idx#105 = (byte) idx#26 [phi:testBinaryOperator::@12->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@12->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@12->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [40] phi from testBinaryOperator::@12 to testBinaryOperator::@13 [phi:testBinaryOperator::@12->testBinaryOperator::@13]
  __b13_from___b12:
    jmp __b13
    // testBinaryOperator::@13
  __b13:
    // [41] call assertType 
    // [87] phi from testBinaryOperator::@13 to assertType [phi:testBinaryOperator::@13->assertType]
  assertType_from___b13:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@13->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@13->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@13->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [42] phi from testBinaryOperator::@13 to testBinaryOperator::@14 [phi:testBinaryOperator::@13->testBinaryOperator::@14]
  __b14_from___b13:
    jmp __b14
    // testBinaryOperator::@14
  __b14:
    // [43] call assertType 
    // [87] phi from testBinaryOperator::@14 to assertType [phi:testBinaryOperator::@14->assertType]
  assertType_from___b14:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@14->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@14->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@14->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [44] phi from testBinaryOperator::@14 to testBinaryOperator::@15 [phi:testBinaryOperator::@14->testBinaryOperator::@15]
  __b15_from___b14:
    jmp __b15
    // testBinaryOperator::@15
  __b15:
    // [45] call assertType 
    // [87] phi from testBinaryOperator::@15 to assertType [phi:testBinaryOperator::@15->assertType]
  assertType_from___b15:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@15->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@15->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@15->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [46] phi from testBinaryOperator::@15 to testBinaryOperator::@16 [phi:testBinaryOperator::@15->testBinaryOperator::@16]
  __b16_from___b15:
    jmp __b16
    // testBinaryOperator::@16
  __b16:
    // [47] call assertType 
    // [87] phi from testBinaryOperator::@16 to assertType [phi:testBinaryOperator::@16->assertType]
  assertType_from___b16:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@16->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@16->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@16->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [48] phi from testBinaryOperator::@16 to testBinaryOperator::@17 [phi:testBinaryOperator::@16->testBinaryOperator::@17]
  __b17_from___b16:
    jmp __b17
    // testBinaryOperator::@17
  __b17:
    // [49] call assertType 
    // [87] phi from testBinaryOperator::@17 to assertType [phi:testBinaryOperator::@17->assertType]
  assertType_from___b17:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@17->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@17->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@17->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    // [50] phi from testBinaryOperator::@17 to testBinaryOperator::@18 [phi:testBinaryOperator::@17->testBinaryOperator::@18]
  __b18_from___b17:
    jmp __b18
    // testBinaryOperator::@18
  __b18:
    // [51] call assertType 
    // [87] phi from testBinaryOperator::@18 to assertType [phi:testBinaryOperator::@18->assertType]
  assertType_from___b18:
    // [87] phi (byte) idx#105 = (byte) $50 [phi:testBinaryOperator::@18->assertType#0] -- vbuz1=vbuc1 
    lda #$50
    sta.z idx
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@18->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@18->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t1
    jsr assertType
    // [52] phi from testBinaryOperator::@18 to testBinaryOperator::@19 [phi:testBinaryOperator::@18->testBinaryOperator::@19]
  __b19_from___b18:
    jmp __b19
    // testBinaryOperator::@19
  __b19:
    // [53] call assertType 
    // [87] phi from testBinaryOperator::@19 to assertType [phi:testBinaryOperator::@19->assertType]
  assertType_from___b19:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@19->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@19->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@19->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t1
    jsr assertType
    // [54] phi from testBinaryOperator::@19 to testBinaryOperator::@20 [phi:testBinaryOperator::@19->testBinaryOperator::@20]
  __b20_from___b19:
    jmp __b20
    // testBinaryOperator::@20
  __b20:
    // [55] call assertType 
    // [87] phi from testBinaryOperator::@20 to assertType [phi:testBinaryOperator::@20->assertType]
  assertType_from___b20:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@20->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@20->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@20->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [56] phi from testBinaryOperator::@20 to testBinaryOperator::@21 [phi:testBinaryOperator::@20->testBinaryOperator::@21]
  __b21_from___b20:
    jmp __b21
    // testBinaryOperator::@21
  __b21:
    // [57] call assertType 
    // [87] phi from testBinaryOperator::@21 to assertType [phi:testBinaryOperator::@21->assertType]
  assertType_from___b21:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@21->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@21->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@21->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t1
    jsr assertType
    // [58] phi from testBinaryOperator::@21 to testBinaryOperator::@22 [phi:testBinaryOperator::@21->testBinaryOperator::@22]
  __b22_from___b21:
    jmp __b22
    // testBinaryOperator::@22
  __b22:
    // [59] call assertType 
    // [87] phi from testBinaryOperator::@22 to assertType [phi:testBinaryOperator::@22->assertType]
  assertType_from___b22:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@22->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@22->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@22->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [60] phi from testBinaryOperator::@22 to testBinaryOperator::@23 [phi:testBinaryOperator::@22->testBinaryOperator::@23]
  __b23_from___b22:
    jmp __b23
    // testBinaryOperator::@23
  __b23:
    // [61] call assertType 
    // [87] phi from testBinaryOperator::@23 to assertType [phi:testBinaryOperator::@23->assertType]
  assertType_from___b23:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@23->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@23->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@23->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    jmp __b24
    // testBinaryOperator::@24
  __b24:
    // [62] (byte) idx#40 ← ++ (byte) idx#108 -- vbuz1=_inc_vbuz1 
    inc.z idx
    // [63] call assertType 
    // [87] phi from testBinaryOperator::@24 to assertType [phi:testBinaryOperator::@24->assertType]
  assertType_from___b24:
    // [87] phi (byte) idx#105 = (byte) idx#40 [phi:testBinaryOperator::@24->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@24->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@24->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [64] phi from testBinaryOperator::@24 to testBinaryOperator::@25 [phi:testBinaryOperator::@24->testBinaryOperator::@25]
  __b25_from___b24:
    jmp __b25
    // testBinaryOperator::@25
  __b25:
    // [65] call assertType 
    // [87] phi from testBinaryOperator::@25 to assertType [phi:testBinaryOperator::@25->assertType]
  assertType_from___b25:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@25->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@25->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@25->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [66] phi from testBinaryOperator::@25 to testBinaryOperator::@26 [phi:testBinaryOperator::@25->testBinaryOperator::@26]
  __b26_from___b25:
    jmp __b26
    // testBinaryOperator::@26
  __b26:
    // [67] call assertType 
    // [87] phi from testBinaryOperator::@26 to assertType [phi:testBinaryOperator::@26->assertType]
  assertType_from___b26:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@26->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@26->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@26->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [68] phi from testBinaryOperator::@26 to testBinaryOperator::@27 [phi:testBinaryOperator::@26->testBinaryOperator::@27]
  __b27_from___b26:
    jmp __b27
    // testBinaryOperator::@27
  __b27:
    // [69] call assertType 
    // [87] phi from testBinaryOperator::@27 to assertType [phi:testBinaryOperator::@27->assertType]
  assertType_from___b27:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@27->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@27->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@27->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [70] phi from testBinaryOperator::@27 to testBinaryOperator::@28 [phi:testBinaryOperator::@27->testBinaryOperator::@28]
  __b28_from___b27:
    jmp __b28
    // testBinaryOperator::@28
  __b28:
    // [71] call assertType 
    // [87] phi from testBinaryOperator::@28 to assertType [phi:testBinaryOperator::@28->assertType]
  assertType_from___b28:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@28->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@28->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@28->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [72] phi from testBinaryOperator::@28 to testBinaryOperator::@29 [phi:testBinaryOperator::@28->testBinaryOperator::@29]
  __b29_from___b28:
    jmp __b29
    // testBinaryOperator::@29
  __b29:
    // [73] call assertType 
    // [87] phi from testBinaryOperator::@29 to assertType [phi:testBinaryOperator::@29->assertType]
  assertType_from___b29:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@29->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@29->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@29->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    jmp __b30
    // testBinaryOperator::@30
  __b30:
    // [74] (byte) idx#47 ← ++ (byte) idx#108 -- vbuz1=_inc_vbuz1 
    inc.z idx
    // [75] call assertType 
    // [87] phi from testBinaryOperator::@30 to assertType [phi:testBinaryOperator::@30->assertType]
  assertType_from___b30:
    // [87] phi (byte) idx#105 = (byte) idx#47 [phi:testBinaryOperator::@30->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@30->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@30->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    // [76] phi from testBinaryOperator::@30 to testBinaryOperator::@31 [phi:testBinaryOperator::@30->testBinaryOperator::@31]
  __b31_from___b30:
    jmp __b31
    // testBinaryOperator::@31
  __b31:
    // [77] call assertType 
    // [87] phi from testBinaryOperator::@31 to assertType [phi:testBinaryOperator::@31->assertType]
  assertType_from___b31:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@31->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@31->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@31->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    // [78] phi from testBinaryOperator::@31 to testBinaryOperator::@32 [phi:testBinaryOperator::@31->testBinaryOperator::@32]
  __b32_from___b31:
    jmp __b32
    // testBinaryOperator::@32
  __b32:
    // [79] call assertType 
    // [87] phi from testBinaryOperator::@32 to assertType [phi:testBinaryOperator::@32->assertType]
  assertType_from___b32:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@32->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@32->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@32->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    // [80] phi from testBinaryOperator::@32 to testBinaryOperator::@33 [phi:testBinaryOperator::@32->testBinaryOperator::@33]
  __b33_from___b32:
    jmp __b33
    // testBinaryOperator::@33
  __b33:
    // [81] call assertType 
    // [87] phi from testBinaryOperator::@33 to assertType [phi:testBinaryOperator::@33->assertType]
  assertType_from___b33:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@33->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@33->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@33->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    // [82] phi from testBinaryOperator::@33 to testBinaryOperator::@34 [phi:testBinaryOperator::@33->testBinaryOperator::@34]
  __b34_from___b33:
    jmp __b34
    // testBinaryOperator::@34
  __b34:
    // [83] call assertType 
    // [87] phi from testBinaryOperator::@34 to assertType [phi:testBinaryOperator::@34->assertType]
  assertType_from___b34:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@34->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@34->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@34->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [84] phi from testBinaryOperator::@34 to testBinaryOperator::@35 [phi:testBinaryOperator::@34->testBinaryOperator::@35]
  __b35_from___b34:
    jmp __b35
    // testBinaryOperator::@35
  __b35:
    // [85] call assertType 
    // [87] phi from testBinaryOperator::@35 to assertType [phi:testBinaryOperator::@35->assertType]
  assertType_from___b35:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@35->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@35->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@35->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    jmp __breturn
    // testBinaryOperator::@return
  __breturn:
    // [86] return 
    rts
}
  // assertType
// Check that the two passed type IDs are equal.
// Shows a letter symbolizing t1
// If they are equal the letter is green - if not it is red.
// assertType(byte zp(4) t1, byte zp(5) t2)
assertType: {
    .label t1 = 4
    .label t2 = 5
    // [88] if((byte) assertType::t1#42==(byte) assertType::t2#42) goto assertType::@1 -- vbuz1_eq_vbuz2_then_la1 
    lda.z t1
    cmp.z t2
    beq __b1
    jmp __b3
    // assertType::@3
  __b3:
    // [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #RED
    ldy.z idx
    sta COLS,y
    jmp __b2
    // assertType::@2
  __b2:
    // [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z t1
    ldy.z idx
    sta SCREEN,y
    // [91] (byte) idx#108 ← ++ (byte) idx#105 -- vbuz1=_inc_vbuz1 
    inc.z idx
    jmp __breturn
    // assertType::@return
  __breturn:
    // [92] return 
    rts
    // assertType::@1
  __b1:
    // [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #GREEN
    ldy.z idx
    sta COLS,y
    jmp __b2
}
  // testUnaryOperator
testUnaryOperator: {
    // [95] call assertType 
    // [87] phi from testUnaryOperator to assertType [phi:testUnaryOperator->assertType]
  assertType_from_testUnaryOperator:
    // [87] phi (byte) idx#105 = (byte) 0 [phi:testUnaryOperator->assertType#0] -- vbuz1=vbuc1 
    lda #0
    sta.z idx
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testUnaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testUnaryOperator->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t1
    jsr assertType
    // [96] phi from testUnaryOperator to testUnaryOperator::@1 [phi:testUnaryOperator->testUnaryOperator::@1]
  __b1_from_testUnaryOperator:
    jmp __b1
    // testUnaryOperator::@1
  __b1:
    // [97] call assertType 
    // [87] phi from testUnaryOperator::@1 to assertType [phi:testUnaryOperator::@1->assertType]
  assertType_from___b1:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@1->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testUnaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testUnaryOperator::@1->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t1
    jsr assertType
    // [98] phi from testUnaryOperator::@1 to testUnaryOperator::@2 [phi:testUnaryOperator::@1->testUnaryOperator::@2]
  __b2_from___b1:
    jmp __b2
    // testUnaryOperator::@2
  __b2:
    // [99] call assertType 
    // [87] phi from testUnaryOperator::@2 to assertType [phi:testUnaryOperator::@2->assertType]
  assertType_from___b2:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@2->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testUnaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testUnaryOperator::@2->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t1
    jsr assertType
    // [100] phi from testUnaryOperator::@2 to testUnaryOperator::@3 [phi:testUnaryOperator::@2->testUnaryOperator::@3]
  __b3_from___b2:
    jmp __b3
    // testUnaryOperator::@3
  __b3:
    // [101] call assertType 
    // [87] phi from testUnaryOperator::@3 to assertType [phi:testUnaryOperator::@3->assertType]
  assertType_from___b3:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@3->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testUnaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testUnaryOperator::@3->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t1
    jsr assertType
    // [102] phi from testUnaryOperator::@3 to testUnaryOperator::@4 [phi:testUnaryOperator::@3->testUnaryOperator::@4]
  __b4_from___b3:
    jmp __b4
    // testUnaryOperator::@4
  __b4:
    // [103] call assertType 
    // [87] phi from testUnaryOperator::@4 to assertType [phi:testUnaryOperator::@4->assertType]
  assertType_from___b4:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@4->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testUnaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testUnaryOperator::@4->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t1
    jsr assertType
    // [104] phi from testUnaryOperator::@4 to testUnaryOperator::@5 [phi:testUnaryOperator::@4->testUnaryOperator::@5]
  __b5_from___b4:
    jmp __b5
    // testUnaryOperator::@5
  __b5:
    // [105] call assertType 
    // [87] phi from testUnaryOperator::@5 to assertType [phi:testUnaryOperator::@5->assertType]
  assertType_from___b5:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@5->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testUnaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testUnaryOperator::@5->assertType#2] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t1
    jsr assertType
    jmp __breturn
    // testUnaryOperator::@return
  __breturn:
    // [106] return 
    rts
}
  // File Data

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a 
Statement [12] *((byte*) main::s#2) ← (byte) ' ' [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a reg byte y 
Statement [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ assertType::t1#42 ]
Removing always clobbered register reg byte a as potential for zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ]
Statement [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 [ idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ idx#105 ] ) always clobbers reg byte a 
Statement [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a 
Statement [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a 
Statement [12] *((byte*) main::s#2) ← (byte) ' ' [ main::s#2 ] ( main:2 [ main::s#2 ] ) always clobbers reg byte a reg byte y 
Statement [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a 
Statement [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 [ idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ idx#105 ] ) always clobbers reg byte a 
Statement [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN [ assertType::t1#42 idx#105 ] ( main:2::testBinaryOperator:10::assertType:15 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:17 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:19 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:21 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:23 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:25 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:27 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:29 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:31 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:33 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:35 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:37 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:39 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:41 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:43 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:45 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:47 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:49 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:51 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:53 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:55 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:57 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:59 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:61 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:63 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:65 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:67 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:69 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:71 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:73 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:75 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:77 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:79 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:81 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:83 [ assertType::t1#42 idx#105 ] main:2::testBinaryOperator:10::assertType:85 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:95 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:97 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:99 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:101 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:103 [ assertType::t1#42 idx#105 ] main:2::testUnaryOperator:8::assertType:105 [ assertType::t1#42 idx#105 ] ) always clobbers reg byte a 
Potential registers zp[2]:2 [ main::s#2 main::s#1 ] : zp[2]:2 , 
Potential registers zp[1]:4 [ assertType::t1#42 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[1]:5 [ assertType::t2#42 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] : zp[1]:6 , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [main] 36.67: zp[2]:2 [ main::s#2 main::s#1 ] 
Uplift Scope [] 34.25: zp[1]:6 [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] 
Uplift Scope [assertType] 2: zp[1]:5 [ assertType::t2#42 ] 1: zp[1]:4 [ assertType::t1#42 ] 
Uplift Scope [testUnaryOperator] 
Uplift Scope [testBinaryOperator] 

Uplifting [main] best 1506 combination zp[2]:2 [ main::s#2 main::s#1 ] 
Uplifting [] best 1473 combination reg byte x [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ] 
Uplifting [assertType] best 1345 combination zp[1]:5 [ assertType::t2#42 ] reg byte y [ assertType::t1#42 ] 
Uplifting [testUnaryOperator] best 1345 combination 
Uplifting [testBinaryOperator] best 1345 combination 
Attempting to uplift remaining variables inzp[1]:5 [ assertType::t2#42 ]
Uplifting [assertType] best 1345 combination zp[1]:5 [ assertType::t2#42 ] 
Allocated (was zp[1]:5) zp[1]:4 [ assertType::t2#42 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Tests different integer literal types
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .const RED = 2
  .const GREEN = 5
  .label SCREEN = $400
  .label COLS = $d800
  .const TYPEID_BYTE = 1
  .const TYPEID_SIGNED_BYTE = 2
  .const TYPEID_WORD = 3
  .const TYPEID_SIGNED_WORD = 4
  .const TYPEID_DWORD = 5
  .const TYPEID_SIGNED_DWORD = 6
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .label s = 2
    // [5] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [5] phi (byte*) main::s#2 = (const byte*) SCREEN [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z s
    lda #>SCREEN
    sta.z s+1
    jmp __b1
    // main::@1
  __b1:
    // [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z s+1
    cmp #>SCREEN+$3e8
    bcc __b2
    bne !+
    lda.z s
    cmp #<SCREEN+$3e8
    bcc __b2
  !:
    // [7] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
  __b3_from___b1:
    jmp __b3
    // main::@3
  __b3:
    // [8] call testUnaryOperator 
    // [94] phi from main::@3 to testUnaryOperator [phi:main::@3->testUnaryOperator]
  testUnaryOperator_from___b3:
    jsr testUnaryOperator
    // [9] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [10] call testBinaryOperator 
    // [14] phi from main::@4 to testBinaryOperator [phi:main::@4->testBinaryOperator]
  testBinaryOperator_from___b4:
    jsr testBinaryOperator
    jmp __breturn
    // main::@return
  __breturn:
    // [11] return 
    rts
    // main::@2
  __b2:
    // [12] *((byte*) main::s#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (s),y
    // [13] (byte*) main::s#1 ← ++ (byte*) main::s#2 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
  __b1_from___b2:
    // [5] phi (byte*) main::s#2 = (byte*) main::s#1 [phi:main::@2->main::@1#0] -- register_copy 
    jmp __b1
}
  // testBinaryOperator
testBinaryOperator: {
    // [15] call assertType 
    // [87] phi from testBinaryOperator to assertType [phi:testBinaryOperator->assertType]
  assertType_from_testBinaryOperator:
    // [87] phi (byte) idx#105 = (byte) $28 [phi:testBinaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #$28
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_BYTE
    jsr assertType
    // [16] phi from testBinaryOperator to testBinaryOperator::@1 [phi:testBinaryOperator->testBinaryOperator::@1]
  __b1_from_testBinaryOperator:
    jmp __b1
    // testBinaryOperator::@1
  __b1:
    // [17] call assertType 
    // [87] phi from testBinaryOperator::@1 to assertType [phi:testBinaryOperator::@1->assertType]
  assertType_from___b1:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@1->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_BYTE
    jsr assertType
    // [18] phi from testBinaryOperator::@1 to testBinaryOperator::@2 [phi:testBinaryOperator::@1->testBinaryOperator::@2]
  __b2_from___b1:
    jmp __b2
    // testBinaryOperator::@2
  __b2:
    // [19] call assertType 
    // [87] phi from testBinaryOperator::@2 to assertType [phi:testBinaryOperator::@2->assertType]
  assertType_from___b2:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@2->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [20] phi from testBinaryOperator::@2 to testBinaryOperator::@3 [phi:testBinaryOperator::@2->testBinaryOperator::@3]
  __b3_from___b2:
    jmp __b3
    // testBinaryOperator::@3
  __b3:
    // [21] call assertType 
    // [87] phi from testBinaryOperator::@3 to assertType [phi:testBinaryOperator::@3->assertType]
  assertType_from___b3:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@3->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_WORD
    jsr assertType
    // [22] phi from testBinaryOperator::@3 to testBinaryOperator::@4 [phi:testBinaryOperator::@3->testBinaryOperator::@4]
  __b4_from___b3:
    jmp __b4
    // testBinaryOperator::@4
  __b4:
    // [23] call assertType 
    // [87] phi from testBinaryOperator::@4 to assertType [phi:testBinaryOperator::@4->assertType]
  assertType_from___b4:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@4->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [24] phi from testBinaryOperator::@4 to testBinaryOperator::@5 [phi:testBinaryOperator::@4->testBinaryOperator::@5]
  __b5_from___b4:
    jmp __b5
    // testBinaryOperator::@5
  __b5:
    // [25] call assertType 
    // [87] phi from testBinaryOperator::@5 to assertType [phi:testBinaryOperator::@5->assertType]
  assertType_from___b5:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@5->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    jmp __b6
    // testBinaryOperator::@6
  __b6:
    // [26] (byte) idx#19 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // [27] call assertType 
    // [87] phi from testBinaryOperator::@6 to assertType [phi:testBinaryOperator::@6->assertType]
  assertType_from___b6:
    // [87] phi (byte) idx#105 = (byte) idx#19 [phi:testBinaryOperator::@6->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@6->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@6->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_BYTE
    jsr assertType
    // [28] phi from testBinaryOperator::@6 to testBinaryOperator::@7 [phi:testBinaryOperator::@6->testBinaryOperator::@7]
  __b7_from___b6:
    jmp __b7
    // testBinaryOperator::@7
  __b7:
    // [29] call assertType 
    // [87] phi from testBinaryOperator::@7 to assertType [phi:testBinaryOperator::@7->assertType]
  assertType_from___b7:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@7->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testBinaryOperator::@7->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testBinaryOperator::@7->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_BYTE
    jsr assertType
    // [30] phi from testBinaryOperator::@7 to testBinaryOperator::@8 [phi:testBinaryOperator::@7->testBinaryOperator::@8]
  __b8_from___b7:
    jmp __b8
    // testBinaryOperator::@8
  __b8:
    // [31] call assertType 
    // [87] phi from testBinaryOperator::@8 to assertType [phi:testBinaryOperator::@8->assertType]
  assertType_from___b8:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@8->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@8->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@8->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [32] phi from testBinaryOperator::@8 to testBinaryOperator::@9 [phi:testBinaryOperator::@8->testBinaryOperator::@9]
  __b9_from___b8:
    jmp __b9
    // testBinaryOperator::@9
  __b9:
    // [33] call assertType 
    // [87] phi from testBinaryOperator::@9 to assertType [phi:testBinaryOperator::@9->assertType]
  assertType_from___b9:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@9->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@9->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@9->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_WORD
    jsr assertType
    // [34] phi from testBinaryOperator::@9 to testBinaryOperator::@10 [phi:testBinaryOperator::@9->testBinaryOperator::@10]
  __b10_from___b9:
    jmp __b10
    // testBinaryOperator::@10
  __b10:
    // [35] call assertType 
    // [87] phi from testBinaryOperator::@10 to assertType [phi:testBinaryOperator::@10->assertType]
  assertType_from___b10:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@10->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@10->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@10->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [36] phi from testBinaryOperator::@10 to testBinaryOperator::@11 [phi:testBinaryOperator::@10->testBinaryOperator::@11]
  __b11_from___b10:
    jmp __b11
    // testBinaryOperator::@11
  __b11:
    // [37] call assertType 
    // [87] phi from testBinaryOperator::@11 to assertType [phi:testBinaryOperator::@11->assertType]
  assertType_from___b11:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@11->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@11->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@11->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    jmp __b12
    // testBinaryOperator::@12
  __b12:
    // [38] (byte) idx#26 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // [39] call assertType 
    // [87] phi from testBinaryOperator::@12 to assertType [phi:testBinaryOperator::@12->assertType]
  assertType_from___b12:
    // [87] phi (byte) idx#105 = (byte) idx#26 [phi:testBinaryOperator::@12->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@12->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@12->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [40] phi from testBinaryOperator::@12 to testBinaryOperator::@13 [phi:testBinaryOperator::@12->testBinaryOperator::@13]
  __b13_from___b12:
    jmp __b13
    // testBinaryOperator::@13
  __b13:
    // [41] call assertType 
    // [87] phi from testBinaryOperator::@13 to assertType [phi:testBinaryOperator::@13->assertType]
  assertType_from___b13:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@13->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@13->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@13->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [42] phi from testBinaryOperator::@13 to testBinaryOperator::@14 [phi:testBinaryOperator::@13->testBinaryOperator::@14]
  __b14_from___b13:
    jmp __b14
    // testBinaryOperator::@14
  __b14:
    // [43] call assertType 
    // [87] phi from testBinaryOperator::@14 to assertType [phi:testBinaryOperator::@14->assertType]
  assertType_from___b14:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@14->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@14->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@14->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [44] phi from testBinaryOperator::@14 to testBinaryOperator::@15 [phi:testBinaryOperator::@14->testBinaryOperator::@15]
  __b15_from___b14:
    jmp __b15
    // testBinaryOperator::@15
  __b15:
    // [45] call assertType 
    // [87] phi from testBinaryOperator::@15 to assertType [phi:testBinaryOperator::@15->assertType]
  assertType_from___b15:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@15->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@15->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@15->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [46] phi from testBinaryOperator::@15 to testBinaryOperator::@16 [phi:testBinaryOperator::@15->testBinaryOperator::@16]
  __b16_from___b15:
    jmp __b16
    // testBinaryOperator::@16
  __b16:
    // [47] call assertType 
    // [87] phi from testBinaryOperator::@16 to assertType [phi:testBinaryOperator::@16->assertType]
  assertType_from___b16:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@16->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@16->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@16->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [48] phi from testBinaryOperator::@16 to testBinaryOperator::@17 [phi:testBinaryOperator::@16->testBinaryOperator::@17]
  __b17_from___b16:
    jmp __b17
    // testBinaryOperator::@17
  __b17:
    // [49] call assertType 
    // [87] phi from testBinaryOperator::@17 to assertType [phi:testBinaryOperator::@17->assertType]
  assertType_from___b17:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@17->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@17->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@17->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    // [50] phi from testBinaryOperator::@17 to testBinaryOperator::@18 [phi:testBinaryOperator::@17->testBinaryOperator::@18]
  __b18_from___b17:
    jmp __b18
    // testBinaryOperator::@18
  __b18:
    // [51] call assertType 
    // [87] phi from testBinaryOperator::@18 to assertType [phi:testBinaryOperator::@18->assertType]
  assertType_from___b18:
    // [87] phi (byte) idx#105 = (byte) $50 [phi:testBinaryOperator::@18->assertType#0] -- vbuxx=vbuc1 
    ldx #$50
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@18->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@18->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_WORD
    jsr assertType
    // [52] phi from testBinaryOperator::@18 to testBinaryOperator::@19 [phi:testBinaryOperator::@18->testBinaryOperator::@19]
  __b19_from___b18:
    jmp __b19
    // testBinaryOperator::@19
  __b19:
    // [53] call assertType 
    // [87] phi from testBinaryOperator::@19 to assertType [phi:testBinaryOperator::@19->assertType]
  assertType_from___b19:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@19->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@19->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@19->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_WORD
    jsr assertType
    // [54] phi from testBinaryOperator::@19 to testBinaryOperator::@20 [phi:testBinaryOperator::@19->testBinaryOperator::@20]
  __b20_from___b19:
    jmp __b20
    // testBinaryOperator::@20
  __b20:
    // [55] call assertType 
    // [87] phi from testBinaryOperator::@20 to assertType [phi:testBinaryOperator::@20->assertType]
  assertType_from___b20:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@20->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@20->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@20->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [56] phi from testBinaryOperator::@20 to testBinaryOperator::@21 [phi:testBinaryOperator::@20->testBinaryOperator::@21]
  __b21_from___b20:
    jmp __b21
    // testBinaryOperator::@21
  __b21:
    // [57] call assertType 
    // [87] phi from testBinaryOperator::@21 to assertType [phi:testBinaryOperator::@21->assertType]
  assertType_from___b21:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@21->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@21->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@21->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_WORD
    jsr assertType
    // [58] phi from testBinaryOperator::@21 to testBinaryOperator::@22 [phi:testBinaryOperator::@21->testBinaryOperator::@22]
  __b22_from___b21:
    jmp __b22
    // testBinaryOperator::@22
  __b22:
    // [59] call assertType 
    // [87] phi from testBinaryOperator::@22 to assertType [phi:testBinaryOperator::@22->assertType]
  assertType_from___b22:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@22->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@22->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@22->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [60] phi from testBinaryOperator::@22 to testBinaryOperator::@23 [phi:testBinaryOperator::@22->testBinaryOperator::@23]
  __b23_from___b22:
    jmp __b23
    // testBinaryOperator::@23
  __b23:
    // [61] call assertType 
    // [87] phi from testBinaryOperator::@23 to assertType [phi:testBinaryOperator::@23->assertType]
  assertType_from___b23:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@23->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@23->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@23->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    jmp __b24
    // testBinaryOperator::@24
  __b24:
    // [62] (byte) idx#40 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // [63] call assertType 
    // [87] phi from testBinaryOperator::@24 to assertType [phi:testBinaryOperator::@24->assertType]
  assertType_from___b24:
    // [87] phi (byte) idx#105 = (byte) idx#40 [phi:testBinaryOperator::@24->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@24->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@24->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [64] phi from testBinaryOperator::@24 to testBinaryOperator::@25 [phi:testBinaryOperator::@24->testBinaryOperator::@25]
  __b25_from___b24:
    jmp __b25
    // testBinaryOperator::@25
  __b25:
    // [65] call assertType 
    // [87] phi from testBinaryOperator::@25 to assertType [phi:testBinaryOperator::@25->assertType]
  assertType_from___b25:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@25->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@25->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@25->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [66] phi from testBinaryOperator::@25 to testBinaryOperator::@26 [phi:testBinaryOperator::@25->testBinaryOperator::@26]
  __b26_from___b25:
    jmp __b26
    // testBinaryOperator::@26
  __b26:
    // [67] call assertType 
    // [87] phi from testBinaryOperator::@26 to assertType [phi:testBinaryOperator::@26->assertType]
  assertType_from___b26:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@26->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@26->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@26->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [68] phi from testBinaryOperator::@26 to testBinaryOperator::@27 [phi:testBinaryOperator::@26->testBinaryOperator::@27]
  __b27_from___b26:
    jmp __b27
    // testBinaryOperator::@27
  __b27:
    // [69] call assertType 
    // [87] phi from testBinaryOperator::@27 to assertType [phi:testBinaryOperator::@27->assertType]
  assertType_from___b27:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@27->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@27->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@27->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [70] phi from testBinaryOperator::@27 to testBinaryOperator::@28 [phi:testBinaryOperator::@27->testBinaryOperator::@28]
  __b28_from___b27:
    jmp __b28
    // testBinaryOperator::@28
  __b28:
    // [71] call assertType 
    // [87] phi from testBinaryOperator::@28 to assertType [phi:testBinaryOperator::@28->assertType]
  assertType_from___b28:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@28->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@28->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@28->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [72] phi from testBinaryOperator::@28 to testBinaryOperator::@29 [phi:testBinaryOperator::@28->testBinaryOperator::@29]
  __b29_from___b28:
    jmp __b29
    // testBinaryOperator::@29
  __b29:
    // [73] call assertType 
    // [87] phi from testBinaryOperator::@29 to assertType [phi:testBinaryOperator::@29->assertType]
  assertType_from___b29:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@29->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@29->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@29->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    jmp __b30
    // testBinaryOperator::@30
  __b30:
    // [74] (byte) idx#47 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // [75] call assertType 
    // [87] phi from testBinaryOperator::@30 to assertType [phi:testBinaryOperator::@30->assertType]
  assertType_from___b30:
    // [87] phi (byte) idx#105 = (byte) idx#47 [phi:testBinaryOperator::@30->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@30->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@30->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    // [76] phi from testBinaryOperator::@30 to testBinaryOperator::@31 [phi:testBinaryOperator::@30->testBinaryOperator::@31]
  __b31_from___b30:
    jmp __b31
    // testBinaryOperator::@31
  __b31:
    // [77] call assertType 
    // [87] phi from testBinaryOperator::@31 to assertType [phi:testBinaryOperator::@31->assertType]
  assertType_from___b31:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@31->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@31->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@31->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    // [78] phi from testBinaryOperator::@31 to testBinaryOperator::@32 [phi:testBinaryOperator::@31->testBinaryOperator::@32]
  __b32_from___b31:
    jmp __b32
    // testBinaryOperator::@32
  __b32:
    // [79] call assertType 
    // [87] phi from testBinaryOperator::@32 to assertType [phi:testBinaryOperator::@32->assertType]
  assertType_from___b32:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@32->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@32->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@32->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    // [80] phi from testBinaryOperator::@32 to testBinaryOperator::@33 [phi:testBinaryOperator::@32->testBinaryOperator::@33]
  __b33_from___b32:
    jmp __b33
    // testBinaryOperator::@33
  __b33:
    // [81] call assertType 
    // [87] phi from testBinaryOperator::@33 to assertType [phi:testBinaryOperator::@33->assertType]
  assertType_from___b33:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@33->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@33->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@33->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    // [82] phi from testBinaryOperator::@33 to testBinaryOperator::@34 [phi:testBinaryOperator::@33->testBinaryOperator::@34]
  __b34_from___b33:
    jmp __b34
    // testBinaryOperator::@34
  __b34:
    // [83] call assertType 
    // [87] phi from testBinaryOperator::@34 to assertType [phi:testBinaryOperator::@34->assertType]
  assertType_from___b34:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@34->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@34->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@34->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [84] phi from testBinaryOperator::@34 to testBinaryOperator::@35 [phi:testBinaryOperator::@34->testBinaryOperator::@35]
  __b35_from___b34:
    jmp __b35
    // testBinaryOperator::@35
  __b35:
    // [85] call assertType 
    // [87] phi from testBinaryOperator::@35 to assertType [phi:testBinaryOperator::@35->assertType]
  assertType_from___b35:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@35->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@35->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@35->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    jmp __breturn
    // testBinaryOperator::@return
  __breturn:
    // [86] return 
    rts
}
  // assertType
// Check that the two passed type IDs are equal.
// Shows a letter symbolizing t1
// If they are equal the letter is green - if not it is red.
// assertType(byte register(Y) t1, byte zp(4) t2)
assertType: {
    .label t2 = 4
    // [88] if((byte) assertType::t1#42==(byte) assertType::t2#42) goto assertType::@1 -- vbuyy_eq_vbuz1_then_la1 
    tya
    cmp.z t2
    beq __b1
    jmp __b3
    // assertType::@3
  __b3:
    // [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #RED
    sta COLS,x
    jmp __b2
    // assertType::@2
  __b2:
    // [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 -- pbuc1_derefidx_vbuxx=vbuyy 
    tya
    sta SCREEN,x
    // [91] (byte) idx#108 ← ++ (byte) idx#105 -- vbuxx=_inc_vbuxx 
    inx
    jmp __breturn
    // assertType::@return
  __breturn:
    // [92] return 
    rts
    // assertType::@1
  __b1:
    // [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta COLS,x
    jmp __b2
}
  // testUnaryOperator
testUnaryOperator: {
    // [95] call assertType 
    // [87] phi from testUnaryOperator to assertType [phi:testUnaryOperator->assertType]
  assertType_from_testUnaryOperator:
    // [87] phi (byte) idx#105 = (byte) 0 [phi:testUnaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #0
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testUnaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testUnaryOperator->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_BYTE
    jsr assertType
    // [96] phi from testUnaryOperator to testUnaryOperator::@1 [phi:testUnaryOperator->testUnaryOperator::@1]
  __b1_from_testUnaryOperator:
    jmp __b1
    // testUnaryOperator::@1
  __b1:
    // [97] call assertType 
    // [87] phi from testUnaryOperator::@1 to assertType [phi:testUnaryOperator::@1->assertType]
  assertType_from___b1:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@1->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testUnaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testUnaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_BYTE
    jsr assertType
    // [98] phi from testUnaryOperator::@1 to testUnaryOperator::@2 [phi:testUnaryOperator::@1->testUnaryOperator::@2]
  __b2_from___b1:
    jmp __b2
    // testUnaryOperator::@2
  __b2:
    // [99] call assertType 
    // [87] phi from testUnaryOperator::@2 to assertType [phi:testUnaryOperator::@2->assertType]
  assertType_from___b2:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@2->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testUnaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testUnaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_WORD
    jsr assertType
    // [100] phi from testUnaryOperator::@2 to testUnaryOperator::@3 [phi:testUnaryOperator::@2->testUnaryOperator::@3]
  __b3_from___b2:
    jmp __b3
    // testUnaryOperator::@3
  __b3:
    // [101] call assertType 
    // [87] phi from testUnaryOperator::@3 to assertType [phi:testUnaryOperator::@3->assertType]
  assertType_from___b3:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@3->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testUnaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testUnaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_WORD
    jsr assertType
    // [102] phi from testUnaryOperator::@3 to testUnaryOperator::@4 [phi:testUnaryOperator::@3->testUnaryOperator::@4]
  __b4_from___b3:
    jmp __b4
    // testUnaryOperator::@4
  __b4:
    // [103] call assertType 
    // [87] phi from testUnaryOperator::@4 to assertType [phi:testUnaryOperator::@4->assertType]
  assertType_from___b4:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@4->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testUnaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testUnaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_DWORD
    jsr assertType
    // [104] phi from testUnaryOperator::@4 to testUnaryOperator::@5 [phi:testUnaryOperator::@4->testUnaryOperator::@5]
  __b5_from___b4:
    jmp __b5
    // testUnaryOperator::@5
  __b5:
    // [105] call assertType 
    // [87] phi from testUnaryOperator::@5 to assertType [phi:testUnaryOperator::@5->assertType]
  assertType_from___b5:
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@5->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testUnaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testUnaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_DWORD
    jsr assertType
    jmp __breturn
    // testUnaryOperator::@return
  __breturn:
    // [106] return 
    rts
}
  // File Data

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __bend
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp __b15
Removing instruction jmp __b16
Removing instruction jmp __b17
Removing instruction jmp __b18
Removing instruction jmp __b19
Removing instruction jmp __b20
Removing instruction jmp __b21
Removing instruction jmp __b22
Removing instruction jmp __b23
Removing instruction jmp __b24
Removing instruction jmp __b25
Removing instruction jmp __b26
Removing instruction jmp __b27
Removing instruction jmp __b28
Removing instruction jmp __b29
Removing instruction jmp __b30
Removing instruction jmp __b31
Removing instruction jmp __b32
Removing instruction jmp __b33
Removing instruction jmp __b34
Removing instruction jmp __b35
Removing instruction jmp __breturn
Removing instruction jmp __b3
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 __b5
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction ldy #TYPEID_BYTE with TAY
Replacing instruction ldy #TYPEID_BYTE with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_BYTE with TAY
Replacing instruction ldy #TYPEID_SIGNED_BYTE with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing instruction ldy #TYPEID_BYTE with TAY
Replacing instruction ldy #TYPEID_SIGNED_BYTE with TAY
Replacing instruction ldy #TYPEID_WORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_WORD with TAY
Replacing instruction ldy #TYPEID_DWORD with TAY
Replacing instruction ldy #TYPEID_SIGNED_DWORD with TAY
Replacing label __bbegin with __b1
Removing instruction __bbegin:
Removing instruction __b1_from___bbegin:
Removing instruction main_from___b1:
Removing instruction __bend_from___b1:
Removing instruction __b3_from___b1:
Removing instruction testUnaryOperator_from___b3:
Removing instruction __b4_from___b3:
Removing instruction testBinaryOperator_from___b4:
Removing instruction __b1_from_testBinaryOperator:
Removing instruction assertType_from___b1:
Removing instruction __b2_from___b1:
Removing instruction assertType_from___b2:
Removing instruction __b3_from___b2:
Removing instruction assertType_from___b3:
Removing instruction __b4_from___b3:
Removing instruction assertType_from___b4:
Removing instruction __b5_from___b4:
Removing instruction assertType_from___b5:
Removing instruction __b7_from___b6:
Removing instruction assertType_from___b7:
Removing instruction __b8_from___b7:
Removing instruction assertType_from___b8:
Removing instruction __b9_from___b8:
Removing instruction assertType_from___b9:
Removing instruction __b10_from___b9:
Removing instruction assertType_from___b10:
Removing instruction __b11_from___b10:
Removing instruction assertType_from___b11:
Removing instruction __b13_from___b12:
Removing instruction assertType_from___b13:
Removing instruction __b14_from___b13:
Removing instruction assertType_from___b14:
Removing instruction __b15_from___b14:
Removing instruction assertType_from___b15:
Removing instruction __b16_from___b15:
Removing instruction assertType_from___b16:
Removing instruction __b17_from___b16:
Removing instruction assertType_from___b17:
Removing instruction __b18_from___b17:
Removing instruction assertType_from___b18:
Removing instruction __b19_from___b18:
Removing instruction assertType_from___b19:
Removing instruction __b20_from___b19:
Removing instruction assertType_from___b20:
Removing instruction __b21_from___b20:
Removing instruction assertType_from___b21:
Removing instruction __b22_from___b21:
Removing instruction assertType_from___b22:
Removing instruction __b23_from___b22:
Removing instruction assertType_from___b23:
Removing instruction __b25_from___b24:
Removing instruction assertType_from___b25:
Removing instruction __b26_from___b25:
Removing instruction assertType_from___b26:
Removing instruction __b27_from___b26:
Removing instruction assertType_from___b27:
Removing instruction __b28_from___b27:
Removing instruction assertType_from___b28:
Removing instruction __b29_from___b28:
Removing instruction assertType_from___b29:
Removing instruction __b31_from___b30:
Removing instruction assertType_from___b31:
Removing instruction __b32_from___b31:
Removing instruction assertType_from___b32:
Removing instruction __b33_from___b32:
Removing instruction assertType_from___b33:
Removing instruction __b34_from___b33:
Removing instruction assertType_from___b34:
Removing instruction __b35_from___b34:
Removing instruction assertType_from___b35:
Removing instruction __b1_from_testUnaryOperator:
Removing instruction assertType_from___b1:
Removing instruction __b2_from___b1:
Removing instruction assertType_from___b2:
Removing instruction __b3_from___b2:
Removing instruction assertType_from___b3:
Removing instruction __b4_from___b3:
Removing instruction assertType_from___b4:
Removing instruction __b5_from___b4:
Removing instruction assertType_from___b5:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __bend:
Removing instruction __b1_from_main:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction assertType_from_testBinaryOperator:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction assertType_from___b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction assertType_from___b12:
Removing instruction __b13:
Removing instruction __b14:
Removing instruction __b15:
Removing instruction __b16:
Removing instruction __b17:
Removing instruction __b18:
Removing instruction __b19:
Removing instruction __b20:
Removing instruction __b21:
Removing instruction __b22:
Removing instruction __b23:
Removing instruction __b24:
Removing instruction assertType_from___b24:
Removing instruction __b25:
Removing instruction __b26:
Removing instruction __b27:
Removing instruction __b28:
Removing instruction __b29:
Removing instruction __b30:
Removing instruction assertType_from___b30:
Removing instruction __b31:
Removing instruction __b32:
Removing instruction __b33:
Removing instruction __b34:
Removing instruction __b35:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction assertType_from_testUnaryOperator:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte*) COLS = (byte*) 55296
(const byte) GREEN = (byte) 5
(const byte) RED = (byte) 2
(const byte*) SCREEN = (byte*) 1024
(const byte) TYPEID_BYTE = (number) 1
(const byte) TYPEID_DWORD = (number) 5
(const byte) TYPEID_SIGNED_BYTE = (number) 2
(const byte) TYPEID_SIGNED_DWORD = (number) 6
(const byte) TYPEID_SIGNED_WORD = (number) 4
(const byte) TYPEID_WORD = (number) 3
(void()) assertType((byte) assertType::t1 , (byte) assertType::t2)
(label) assertType::@1
(label) assertType::@2
(label) assertType::@3
(label) assertType::@return
(byte) assertType::t1
(byte) assertType::t1#42 reg byte y 1.0
(byte) assertType::t2
(byte) assertType::t2#42 t2 zp[1]:4 2.0
(byte) idx
(byte) idx#105 reg byte x 17.200000000000003
(byte) idx#108 reg byte x 1.0526315789473677
(byte) idx#19 reg byte x 4.0
(byte) idx#26 reg byte x 4.0
(byte) idx#40 reg byte x 4.0
(byte) idx#47 reg byte x 4.0
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@return
(byte*) main::s
(byte*) main::s#1 s zp[2]:2 22.0
(byte*) main::s#2 s zp[2]:2 14.666666666666666
(void()) testBinaryOperator()
(label) testBinaryOperator::@1
(label) testBinaryOperator::@10
(label) testBinaryOperator::@11
(label) testBinaryOperator::@12
(label) testBinaryOperator::@13
(label) testBinaryOperator::@14
(label) testBinaryOperator::@15
(label) testBinaryOperator::@16
(label) testBinaryOperator::@17
(label) testBinaryOperator::@18
(label) testBinaryOperator::@19
(label) testBinaryOperator::@2
(label) testBinaryOperator::@20
(label) testBinaryOperator::@21
(label) testBinaryOperator::@22
(label) testBinaryOperator::@23
(label) testBinaryOperator::@24
(label) testBinaryOperator::@25
(label) testBinaryOperator::@26
(label) testBinaryOperator::@27
(label) testBinaryOperator::@28
(label) testBinaryOperator::@29
(label) testBinaryOperator::@3
(label) testBinaryOperator::@30
(label) testBinaryOperator::@31
(label) testBinaryOperator::@32
(label) testBinaryOperator::@33
(label) testBinaryOperator::@34
(label) testBinaryOperator::@35
(label) testBinaryOperator::@4
(label) testBinaryOperator::@5
(label) testBinaryOperator::@6
(label) testBinaryOperator::@7
(label) testBinaryOperator::@8
(label) testBinaryOperator::@9
(label) testBinaryOperator::@return
(void()) testUnaryOperator()
(label) testUnaryOperator::@1
(label) testUnaryOperator::@2
(label) testUnaryOperator::@3
(label) testUnaryOperator::@4
(label) testUnaryOperator::@5
(label) testUnaryOperator::@return

zp[2]:2 [ main::s#2 main::s#1 ]
reg byte y [ assertType::t1#42 ]
zp[1]:4 [ assertType::t2#42 ]
reg byte x [ idx#105 idx#108 idx#26 idx#40 idx#47 idx#19 ]


FINAL ASSEMBLER
Score: 1159

  // File Comments
// Tests different integer literal types
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  .const RED = 2
  .const GREEN = 5
  .label SCREEN = $400
  .label COLS = $d800
  .const TYPEID_BYTE = 1
  .const TYPEID_SIGNED_BYTE = 2
  .const TYPEID_WORD = 3
  .const TYPEID_SIGNED_WORD = 4
  .const TYPEID_DWORD = 5
  .const TYPEID_SIGNED_DWORD = 6
  // @begin
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    .label s = 2
    // [5] phi from main to main::@1 [phi:main->main::@1]
    // [5] phi (byte*) main::s#2 = (const byte*) SCREEN [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z s
    lda #>SCREEN
    sta.z s+1
    // main::@1
  __b1:
    // for(byte* s=SCREEN;s<SCREEN+1000;s++)
    // [6] if((byte*) main::s#2<(const byte*) SCREEN+(word) $3e8) goto main::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z s+1
    cmp #>SCREEN+$3e8
    bcc __b2
    bne !+
    lda.z s
    cmp #<SCREEN+$3e8
    bcc __b2
  !:
    // [7] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
    // main::@3
    // testUnaryOperator()
    // [8] call testUnaryOperator 
    // [94] phi from main::@3 to testUnaryOperator [phi:main::@3->testUnaryOperator]
    jsr testUnaryOperator
    // [9] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
    // main::@4
    // testBinaryOperator()
    // [10] call testBinaryOperator 
    // [14] phi from main::@4 to testBinaryOperator [phi:main::@4->testBinaryOperator]
    jsr testBinaryOperator
    // main::@return
    // }
    // [11] return 
    rts
    // main::@2
  __b2:
    // *s = ' '
    // [12] *((byte*) main::s#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (s),y
    // for(byte* s=SCREEN;s<SCREEN+1000;s++)
    // [13] (byte*) main::s#1 ← ++ (byte*) main::s#2 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
    // [5] phi (byte*) main::s#2 = (byte*) main::s#1 [phi:main::@2->main::@1#0] -- register_copy 
    jmp __b1
}
  // testBinaryOperator
testBinaryOperator: {
    // assertType(typeid(12ub+12ub), typeid(unsigned byte))
    // [15] call assertType 
    // [87] phi from testBinaryOperator to assertType [phi:testBinaryOperator->assertType]
    // [87] phi (byte) idx#105 = (byte) $28 [phi:testBinaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #$28
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [16] phi from testBinaryOperator to testBinaryOperator::@1 [phi:testBinaryOperator->testBinaryOperator::@1]
    // testBinaryOperator::@1
    // assertType(typeid(12ub+12sb), typeid(unsigned byte))
    // [17] call assertType 
    // [87] phi from testBinaryOperator::@1 to assertType [phi:testBinaryOperator::@1->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@1->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [18] phi from testBinaryOperator::@1 to testBinaryOperator::@2 [phi:testBinaryOperator::@1->testBinaryOperator::@2]
    // testBinaryOperator::@2
    // assertType(typeid(12ub+12uw), typeid(unsigned word))
    // [19] call assertType 
    // [87] phi from testBinaryOperator::@2 to assertType [phi:testBinaryOperator::@2->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@2->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [20] phi from testBinaryOperator::@2 to testBinaryOperator::@3 [phi:testBinaryOperator::@2->testBinaryOperator::@3]
    // testBinaryOperator::@3
    // assertType(typeid(12ub+12sw), typeid(signed word))
    // [21] call assertType 
    // [87] phi from testBinaryOperator::@3 to assertType [phi:testBinaryOperator::@3->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@3->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [22] phi from testBinaryOperator::@3 to testBinaryOperator::@4 [phi:testBinaryOperator::@3->testBinaryOperator::@4]
    // testBinaryOperator::@4
    // assertType(typeid(12ub+12ud), typeid(unsigned dword))
    // [23] call assertType 
    // [87] phi from testBinaryOperator::@4 to assertType [phi:testBinaryOperator::@4->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@4->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [24] phi from testBinaryOperator::@4 to testBinaryOperator::@5 [phi:testBinaryOperator::@4->testBinaryOperator::@5]
    // testBinaryOperator::@5
    // assertType(typeid(12ub+12sd), typeid(signed dword))
    // [25] call assertType 
    // [87] phi from testBinaryOperator::@5 to assertType [phi:testBinaryOperator::@5->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@5->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@6
    // idx++;
    // [26] (byte) idx#19 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12sb+12ub), typeid(unsigned byte))
    // [27] call assertType 
    // [87] phi from testBinaryOperator::@6 to assertType [phi:testBinaryOperator::@6->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#19 [phi:testBinaryOperator::@6->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@6->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testBinaryOperator::@6->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [28] phi from testBinaryOperator::@6 to testBinaryOperator::@7 [phi:testBinaryOperator::@6->testBinaryOperator::@7]
    // testBinaryOperator::@7
    // assertType(typeid(12sb+12sb), typeid(signed byte))
    // [29] call assertType 
    // [87] phi from testBinaryOperator::@7 to assertType [phi:testBinaryOperator::@7->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@7->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testBinaryOperator::@7->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testBinaryOperator::@7->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [30] phi from testBinaryOperator::@7 to testBinaryOperator::@8 [phi:testBinaryOperator::@7->testBinaryOperator::@8]
    // testBinaryOperator::@8
    // assertType(typeid(12sb+12uw), typeid(unsigned word))
    // [31] call assertType 
    // [87] phi from testBinaryOperator::@8 to assertType [phi:testBinaryOperator::@8->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@8->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@8->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@8->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [32] phi from testBinaryOperator::@8 to testBinaryOperator::@9 [phi:testBinaryOperator::@8->testBinaryOperator::@9]
    // testBinaryOperator::@9
    // assertType(typeid(12sb+12sw), typeid(signed word))
    // [33] call assertType 
    // [87] phi from testBinaryOperator::@9 to assertType [phi:testBinaryOperator::@9->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@9->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@9->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@9->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [34] phi from testBinaryOperator::@9 to testBinaryOperator::@10 [phi:testBinaryOperator::@9->testBinaryOperator::@10]
    // testBinaryOperator::@10
    // assertType(typeid(12sb+12ud), typeid(unsigned dword))
    // [35] call assertType 
    // [87] phi from testBinaryOperator::@10 to assertType [phi:testBinaryOperator::@10->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@10->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@10->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@10->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [36] phi from testBinaryOperator::@10 to testBinaryOperator::@11 [phi:testBinaryOperator::@10->testBinaryOperator::@11]
    // testBinaryOperator::@11
    // assertType(typeid(12sb+12sd), typeid(signed dword))
    // [37] call assertType 
    // [87] phi from testBinaryOperator::@11 to assertType [phi:testBinaryOperator::@11->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@11->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@11->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@11->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@12
    // idx++;
    // [38] (byte) idx#26 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12uw+12ub), typeid(unsigned word))
    // [39] call assertType 
    // [87] phi from testBinaryOperator::@12 to assertType [phi:testBinaryOperator::@12->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#26 [phi:testBinaryOperator::@12->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@12->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@12->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [40] phi from testBinaryOperator::@12 to testBinaryOperator::@13 [phi:testBinaryOperator::@12->testBinaryOperator::@13]
    // testBinaryOperator::@13
    // assertType(typeid(12uw+12sb), typeid(unsigned word))
    // [41] call assertType 
    // [87] phi from testBinaryOperator::@13 to assertType [phi:testBinaryOperator::@13->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@13->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@13->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@13->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [42] phi from testBinaryOperator::@13 to testBinaryOperator::@14 [phi:testBinaryOperator::@13->testBinaryOperator::@14]
    // testBinaryOperator::@14
    // assertType(typeid(12uw+12uw), typeid(unsigned word))
    // [43] call assertType 
    // [87] phi from testBinaryOperator::@14 to assertType [phi:testBinaryOperator::@14->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@14->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@14->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@14->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [44] phi from testBinaryOperator::@14 to testBinaryOperator::@15 [phi:testBinaryOperator::@14->testBinaryOperator::@15]
    // testBinaryOperator::@15
    // assertType(typeid(12uw+12sw), typeid(unsigned word))
    // [45] call assertType 
    // [87] phi from testBinaryOperator::@15 to assertType [phi:testBinaryOperator::@15->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@15->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@15->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@15->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [46] phi from testBinaryOperator::@15 to testBinaryOperator::@16 [phi:testBinaryOperator::@15->testBinaryOperator::@16]
    // testBinaryOperator::@16
    // assertType(typeid(12uw+12ud), typeid(unsigned dword))
    // [47] call assertType 
    // [87] phi from testBinaryOperator::@16 to assertType [phi:testBinaryOperator::@16->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@16->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@16->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@16->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [48] phi from testBinaryOperator::@16 to testBinaryOperator::@17 [phi:testBinaryOperator::@16->testBinaryOperator::@17]
    // testBinaryOperator::@17
    // assertType(typeid(12uw+12sd), typeid(signed dword))
    // [49] call assertType 
    // [87] phi from testBinaryOperator::@17 to assertType [phi:testBinaryOperator::@17->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@17->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@17->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@17->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [50] phi from testBinaryOperator::@17 to testBinaryOperator::@18 [phi:testBinaryOperator::@17->testBinaryOperator::@18]
    // testBinaryOperator::@18
    // assertType(typeid(12sw+12ub), typeid(signed word))
    // [51] call assertType 
    // [87] phi from testBinaryOperator::@18 to assertType [phi:testBinaryOperator::@18->assertType]
    // [87] phi (byte) idx#105 = (byte) $50 [phi:testBinaryOperator::@18->assertType#0] -- vbuxx=vbuc1 
    ldx #$50
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@18->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@18->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [52] phi from testBinaryOperator::@18 to testBinaryOperator::@19 [phi:testBinaryOperator::@18->testBinaryOperator::@19]
    // testBinaryOperator::@19
    // assertType(typeid(12sw+12sb), typeid(signed word))
    // [53] call assertType 
    // [87] phi from testBinaryOperator::@19 to assertType [phi:testBinaryOperator::@19->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@19->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@19->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@19->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [54] phi from testBinaryOperator::@19 to testBinaryOperator::@20 [phi:testBinaryOperator::@19->testBinaryOperator::@20]
    // testBinaryOperator::@20
    // assertType(typeid(12sw+12uw), typeid(unsigned word))
    // [55] call assertType 
    // [87] phi from testBinaryOperator::@20 to assertType [phi:testBinaryOperator::@20->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@20->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@20->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testBinaryOperator::@20->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [56] phi from testBinaryOperator::@20 to testBinaryOperator::@21 [phi:testBinaryOperator::@20->testBinaryOperator::@21]
    // testBinaryOperator::@21
    // assertType(typeid(12sw+12sw), typeid(signed word))
    // [57] call assertType 
    // [87] phi from testBinaryOperator::@21 to assertType [phi:testBinaryOperator::@21->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@21->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@21->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testBinaryOperator::@21->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [58] phi from testBinaryOperator::@21 to testBinaryOperator::@22 [phi:testBinaryOperator::@21->testBinaryOperator::@22]
    // testBinaryOperator::@22
    // assertType(typeid(12sw+12ud), typeid(unsigned dword))
    // [59] call assertType 
    // [87] phi from testBinaryOperator::@22 to assertType [phi:testBinaryOperator::@22->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@22->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@22->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@22->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [60] phi from testBinaryOperator::@22 to testBinaryOperator::@23 [phi:testBinaryOperator::@22->testBinaryOperator::@23]
    // testBinaryOperator::@23
    // assertType(typeid(12sw+12sd), typeid(signed dword))
    // [61] call assertType 
    // [87] phi from testBinaryOperator::@23 to assertType [phi:testBinaryOperator::@23->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@23->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@23->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@23->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@24
    // idx++;
    // [62] (byte) idx#40 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12ud+12ub), typeid(unsigned dword))
    // [63] call assertType 
    // [87] phi from testBinaryOperator::@24 to assertType [phi:testBinaryOperator::@24->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#40 [phi:testBinaryOperator::@24->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@24->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@24->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [64] phi from testBinaryOperator::@24 to testBinaryOperator::@25 [phi:testBinaryOperator::@24->testBinaryOperator::@25]
    // testBinaryOperator::@25
    // assertType(typeid(12ud+12sb), typeid(unsigned dword))
    // [65] call assertType 
    // [87] phi from testBinaryOperator::@25 to assertType [phi:testBinaryOperator::@25->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@25->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@25->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@25->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [66] phi from testBinaryOperator::@25 to testBinaryOperator::@26 [phi:testBinaryOperator::@25->testBinaryOperator::@26]
    // testBinaryOperator::@26
    // assertType(typeid(12ud+12uw), typeid(unsigned dword))
    // [67] call assertType 
    // [87] phi from testBinaryOperator::@26 to assertType [phi:testBinaryOperator::@26->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@26->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@26->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@26->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [68] phi from testBinaryOperator::@26 to testBinaryOperator::@27 [phi:testBinaryOperator::@26->testBinaryOperator::@27]
    // testBinaryOperator::@27
    // assertType(typeid(12ud+12sw), typeid(unsigned dword))
    // [69] call assertType 
    // [87] phi from testBinaryOperator::@27 to assertType [phi:testBinaryOperator::@27->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@27->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@27->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@27->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [70] phi from testBinaryOperator::@27 to testBinaryOperator::@28 [phi:testBinaryOperator::@27->testBinaryOperator::@28]
    // testBinaryOperator::@28
    // assertType(typeid(12ud+12ud), typeid(unsigned dword))
    // [71] call assertType 
    // [87] phi from testBinaryOperator::@28 to assertType [phi:testBinaryOperator::@28->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@28->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@28->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@28->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [72] phi from testBinaryOperator::@28 to testBinaryOperator::@29 [phi:testBinaryOperator::@28->testBinaryOperator::@29]
    // testBinaryOperator::@29
    // assertType(typeid(12ud+12sd), typeid(unsigned dword))
    // [73] call assertType 
    // [87] phi from testBinaryOperator::@29 to assertType [phi:testBinaryOperator::@29->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@29->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@29->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@29->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@30
    // idx++;
    // [74] (byte) idx#47 ← ++ (byte) idx#108 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12sd+12ub), typeid(signed dword))
    // [75] call assertType 
    // [87] phi from testBinaryOperator::@30 to assertType [phi:testBinaryOperator::@30->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#47 [phi:testBinaryOperator::@30->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@30->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@30->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [76] phi from testBinaryOperator::@30 to testBinaryOperator::@31 [phi:testBinaryOperator::@30->testBinaryOperator::@31]
    // testBinaryOperator::@31
    // assertType(typeid(12sd+12sb), typeid(signed dword))
    // [77] call assertType 
    // [87] phi from testBinaryOperator::@31 to assertType [phi:testBinaryOperator::@31->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@31->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@31->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@31->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [78] phi from testBinaryOperator::@31 to testBinaryOperator::@32 [phi:testBinaryOperator::@31->testBinaryOperator::@32]
    // testBinaryOperator::@32
    // assertType(typeid(12sd+12uw), typeid(signed dword))
    // [79] call assertType 
    // [87] phi from testBinaryOperator::@32 to assertType [phi:testBinaryOperator::@32->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@32->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@32->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@32->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [80] phi from testBinaryOperator::@32 to testBinaryOperator::@33 [phi:testBinaryOperator::@32->testBinaryOperator::@33]
    // testBinaryOperator::@33
    // assertType(typeid(12sd+12sw), typeid(signed dword))
    // [81] call assertType 
    // [87] phi from testBinaryOperator::@33 to assertType [phi:testBinaryOperator::@33->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@33->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@33->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@33->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [82] phi from testBinaryOperator::@33 to testBinaryOperator::@34 [phi:testBinaryOperator::@33->testBinaryOperator::@34]
    // testBinaryOperator::@34
    // assertType(typeid(12sd+12ud), typeid(unsigned dword))
    // [83] call assertType 
    // [87] phi from testBinaryOperator::@34 to assertType [phi:testBinaryOperator::@34->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@34->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@34->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testBinaryOperator::@34->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [84] phi from testBinaryOperator::@34 to testBinaryOperator::@35 [phi:testBinaryOperator::@34->testBinaryOperator::@35]
    // testBinaryOperator::@35
    // assertType(typeid(12sd+12sd), typeid(signed dword))
    // [85] call assertType 
    // [87] phi from testBinaryOperator::@35 to assertType [phi:testBinaryOperator::@35->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testBinaryOperator::@35->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@35->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testBinaryOperator::@35->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@return
    // }
    // [86] return 
    rts
}
  // assertType
// Check that the two passed type IDs are equal.
// Shows a letter symbolizing t1
// If they are equal the letter is green - if not it is red.
// assertType(byte register(Y) t1, byte zp(4) t2)
assertType: {
    .label t2 = 4
    // if(t1==t2)
    // [88] if((byte) assertType::t1#42==(byte) assertType::t2#42) goto assertType::@1 -- vbuyy_eq_vbuz1_then_la1 
    tya
    cmp.z t2
    beq __b1
    // assertType::@3
    // COLS[idx] = RED
    // [89] *((const byte*) COLS + (byte) idx#105) ← (const byte) RED -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #RED
    sta COLS,x
    // assertType::@2
  __b2:
    // SCREEN[idx++] = t1
    // [90] *((const byte*) SCREEN + (byte) idx#105) ← (byte) assertType::t1#42 -- pbuc1_derefidx_vbuxx=vbuyy 
    tya
    sta SCREEN,x
    // SCREEN[idx++] = t1;
    // [91] (byte) idx#108 ← ++ (byte) idx#105 -- vbuxx=_inc_vbuxx 
    inx
    // assertType::@return
    // }
    // [92] return 
    rts
    // assertType::@1
  __b1:
    // COLS[idx] = GREEN
    // [93] *((const byte*) COLS + (byte) idx#105) ← (const byte) GREEN -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta COLS,x
    jmp __b2
}
  // testUnaryOperator
testUnaryOperator: {
    // assertType(typeid(-12ub), typeid(unsigned byte))
    // [95] call assertType 
    // [87] phi from testUnaryOperator to assertType [phi:testUnaryOperator->assertType]
    // [87] phi (byte) idx#105 = (byte) 0 [phi:testUnaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #0
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_BYTE [phi:testUnaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_BYTE [phi:testUnaryOperator->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [96] phi from testUnaryOperator to testUnaryOperator::@1 [phi:testUnaryOperator->testUnaryOperator::@1]
    // testUnaryOperator::@1
    // assertType(typeid(-12sb), typeid(signed byte))
    // [97] call assertType 
    // [87] phi from testUnaryOperator::@1 to assertType [phi:testUnaryOperator::@1->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@1->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testUnaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_BYTE
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_BYTE [phi:testUnaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [98] phi from testUnaryOperator::@1 to testUnaryOperator::@2 [phi:testUnaryOperator::@1->testUnaryOperator::@2]
    // testUnaryOperator::@2
    // assertType(typeid(-12uw), typeid(unsigned word))
    // [99] call assertType 
    // [87] phi from testUnaryOperator::@2 to assertType [phi:testUnaryOperator::@2->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@2->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_WORD [phi:testUnaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_WORD [phi:testUnaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [100] phi from testUnaryOperator::@2 to testUnaryOperator::@3 [phi:testUnaryOperator::@2->testUnaryOperator::@3]
    // testUnaryOperator::@3
    // assertType(typeid(-12sw), typeid(signed word))
    // [101] call assertType 
    // [87] phi from testUnaryOperator::@3 to assertType [phi:testUnaryOperator::@3->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@3->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_WORD [phi:testUnaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_WORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_WORD [phi:testUnaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [102] phi from testUnaryOperator::@3 to testUnaryOperator::@4 [phi:testUnaryOperator::@3->testUnaryOperator::@4]
    // testUnaryOperator::@4
    // assertType(typeid(-12ud), typeid(unsigned dword))
    // [103] call assertType 
    // [87] phi from testUnaryOperator::@4 to assertType [phi:testUnaryOperator::@4->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@4->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_DWORD [phi:testUnaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_DWORD [phi:testUnaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [104] phi from testUnaryOperator::@4 to testUnaryOperator::@5 [phi:testUnaryOperator::@4->testUnaryOperator::@5]
    // testUnaryOperator::@5
    // assertType(typeid(-12sd), typeid(signed dword))
    // [105] call assertType 
    // [87] phi from testUnaryOperator::@5 to assertType [phi:testUnaryOperator::@5->assertType]
    // [87] phi (byte) idx#105 = (byte) idx#108 [phi:testUnaryOperator::@5->assertType#0] -- register_copy 
    // [87] phi (byte) assertType::t2#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testUnaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_DWORD
    sta.z assertType.t2
    // [87] phi (byte) assertType::t1#42 = (const byte) TYPEID_SIGNED_DWORD [phi:testUnaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testUnaryOperator::@return
    // }
    // [106] return 
    rts
}
  // File Data

