Resolving typeid() testUnaryOperator::$0 = typeid  -$c
Resolving typeid() testUnaryOperator::$2 = typeid  -$c
Resolving typeid() testUnaryOperator::$4 = typeid  -$c
Resolving typeid() testUnaryOperator::$6 = typeid  -$c
Resolving typeid() testUnaryOperator::$8 = typeid  -$c
Resolving typeid() testUnaryOperator::$10 = typeid  -$c
Resolving typeid() testBinaryOperator::$0 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$2 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$4 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$6 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$8 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$10 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$12 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$14 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$16 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$18 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$20 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$22 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$24 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$26 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$28 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$30 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$32 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$34 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$36 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$38 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$40 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$42 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$44 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$46 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$48 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$50 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$52 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$54 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$56 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$58 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$60 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$62 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$64 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$66 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$68 = typeid  $c+$c
Resolving typeid() testBinaryOperator::$70 = typeid  $c+$c
Inlined call call __init

CONTROL FLOW GRAPH SSA

void main()
main: scope:[main]  from __start::@1
  idx#116 = phi( __start::@1/idx#114 )
  main::s#0 = SCREEN
  to:main::@1
main::@1: scope:[main]  from main main::@2
  idx#115 = phi( main/idx#116, main::@2/idx#117 )
  main::s#2 = phi( main/main::s#0, main::@2/main::s#1 )
  main::$2 = main::s#2 < SCREEN+$3e8
  if(main::$2) goto main::@2
  to:main::@3
main::@2: scope:[main]  from main::@1
  idx#117 = phi( main::@1/idx#115 )
  main::s#3 = phi( main::@1/main::s#2 )
  *main::s#3 = ' '
  main::s#1 = ++ main::s#3
  to:main::@1
main::@3: scope:[main]  from main::@1
  idx#112 = phi( main::@1/idx#115 )
  call testUnaryOperator
  to:main::@4
main::@4: scope:[main]  from main::@3
  idx#59 = phi( main::@3/idx#10 )
  idx#0 = idx#59
  call testBinaryOperator
  to:main::@5
main::@5: scope:[main]  from main::@4
  idx#60 = phi( main::@4/idx#53 )
  idx#1 = idx#60
  to:main::@return
main::@return: scope:[main]  from main::@5
  idx#61 = phi( main::@5/idx#1 )
  idx#2 = idx#61
  return 
  to:@return

void testUnaryOperator()
testUnaryOperator: scope:[testUnaryOperator]  from main::@3
  idx#3 = 0
  testUnaryOperator::$0 = TYPEID_CHAR
  assertType::t1#0 = testUnaryOperator::$0
  assertType::t2#0 = TYPEID_CHAR
  call assertType
  to:testUnaryOperator::@1
testUnaryOperator::@1: scope:[testUnaryOperator]  from testUnaryOperator
  idx#62 = phi( testUnaryOperator/idx#55 )
  idx#4 = idx#62
  testUnaryOperator::$2 = TYPEID_SIGNED_CHAR
  assertType::t1#1 = testUnaryOperator::$2
  assertType::t2#1 = TYPEID_SIGNED_CHAR
  call assertType
  to:testUnaryOperator::@2
testUnaryOperator::@2: scope:[testUnaryOperator]  from testUnaryOperator::@1
  idx#63 = phi( testUnaryOperator::@1/idx#55 )
  idx#5 = idx#63
  testUnaryOperator::$4 = TYPEID_UNSIGNED_INT
  assertType::t1#2 = testUnaryOperator::$4
  assertType::t2#2 = TYPEID_UNSIGNED_INT
  call assertType
  to:testUnaryOperator::@3
testUnaryOperator::@3: scope:[testUnaryOperator]  from testUnaryOperator::@2
  idx#64 = phi( testUnaryOperator::@2/idx#55 )
  idx#6 = idx#64
  testUnaryOperator::$6 = TYPEID_INT
  assertType::t1#3 = testUnaryOperator::$6
  assertType::t2#3 = TYPEID_INT
  call assertType
  to:testUnaryOperator::@4
testUnaryOperator::@4: scope:[testUnaryOperator]  from testUnaryOperator::@3
  idx#65 = phi( testUnaryOperator::@3/idx#55 )
  idx#7 = idx#65
  testUnaryOperator::$8 = TYPEID_UNSIGNED_LONG
  assertType::t1#4 = testUnaryOperator::$8
  assertType::t2#4 = TYPEID_UNSIGNED_LONG
  call assertType
  to:testUnaryOperator::@5
testUnaryOperator::@5: scope:[testUnaryOperator]  from testUnaryOperator::@4
  idx#66 = phi( testUnaryOperator::@4/idx#55 )
  idx#8 = idx#66
  testUnaryOperator::$10 = TYPEID_LONG
  assertType::t1#5 = testUnaryOperator::$10
  assertType::t2#5 = TYPEID_LONG
  call assertType
  to:testUnaryOperator::@6
testUnaryOperator::@6: scope:[testUnaryOperator]  from testUnaryOperator::@5
  idx#67 = phi( testUnaryOperator::@5/idx#55 )
  idx#9 = idx#67
  to:testUnaryOperator::@return
testUnaryOperator::@return: scope:[testUnaryOperator]  from testUnaryOperator::@6
  idx#68 = phi( testUnaryOperator::@6/idx#9 )
  idx#10 = idx#68
  return 
  to:@return

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

void assertType(char t1 , char 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
  idx#113 = phi( testBinaryOperator/idx#11, testBinaryOperator::@1/idx#12, testBinaryOperator::@10/idx#22, testBinaryOperator::@11/idx#23, testBinaryOperator::@12/idx#25, testBinaryOperator::@13/idx#26, testBinaryOperator::@14/idx#27, testBinaryOperator::@15/idx#28, testBinaryOperator::@16/idx#29, testBinaryOperator::@17/idx#30, testBinaryOperator::@18/idx#32, testBinaryOperator::@19/idx#33, testBinaryOperator::@2/idx#13, testBinaryOperator::@20/idx#34, testBinaryOperator::@21/idx#35, testBinaryOperator::@22/idx#36, testBinaryOperator::@23/idx#37, testBinaryOperator::@24/idx#39, testBinaryOperator::@25/idx#40, testBinaryOperator::@26/idx#41, testBinaryOperator::@27/idx#42, testBinaryOperator::@28/idx#43, testBinaryOperator::@29/idx#44, testBinaryOperator::@3/idx#14, testBinaryOperator::@30/idx#46, testBinaryOperator::@31/idx#47, testBinaryOperator::@32/idx#48, testBinaryOperator::@33/idx#49, testBinaryOperator::@34/idx#50, testBinaryOperator::@35/idx#51, testBinaryOperator::@4/idx#15, testBinaryOperator::@5/idx#16, testBinaryOperator::@6/idx#18, testBinaryOperator::@7/idx#19, testBinaryOperator::@8/idx#20, testBinaryOperator::@9/idx#21, testUnaryOperator/idx#3, testUnaryOperator::@1/idx#4, testUnaryOperator::@2/idx#5, testUnaryOperator::@3/idx#6, testUnaryOperator::@4/idx#7, testUnaryOperator::@5/idx#8 )
  assertType::t2#42 = phi( testBinaryOperator/assertType::t2#6, testBinaryOperator::@1/assertType::t2#7, testBinaryOperator::@10/assertType::t2#16, testBinaryOperator::@11/assertType::t2#17, testBinaryOperator::@12/assertType::t2#18, testBinaryOperator::@13/assertType::t2#19, testBinaryOperator::@14/assertType::t2#20, testBinaryOperator::@15/assertType::t2#21, testBinaryOperator::@16/assertType::t2#22, testBinaryOperator::@17/assertType::t2#23, testBinaryOperator::@18/assertType::t2#24, testBinaryOperator::@19/assertType::t2#25, testBinaryOperator::@2/assertType::t2#8, testBinaryOperator::@20/assertType::t2#26, testBinaryOperator::@21/assertType::t2#27, testBinaryOperator::@22/assertType::t2#28, testBinaryOperator::@23/assertType::t2#29, testBinaryOperator::@24/assertType::t2#30, testBinaryOperator::@25/assertType::t2#31, testBinaryOperator::@26/assertType::t2#32, testBinaryOperator::@27/assertType::t2#33, testBinaryOperator::@28/assertType::t2#34, testBinaryOperator::@29/assertType::t2#35, testBinaryOperator::@3/assertType::t2#9, testBinaryOperator::@30/assertType::t2#36, testBinaryOperator::@31/assertType::t2#37, testBinaryOperator::@32/assertType::t2#38, testBinaryOperator::@33/assertType::t2#39, testBinaryOperator::@34/assertType::t2#40, testBinaryOperator::@35/assertType::t2#41, testBinaryOperator::@4/assertType::t2#10, testBinaryOperator::@5/assertType::t2#11, testBinaryOperator::@6/assertType::t2#12, testBinaryOperator::@7/assertType::t2#13, testBinaryOperator::@8/assertType::t2#14, testBinaryOperator::@9/assertType::t2#15, testUnaryOperator/assertType::t2#0, testUnaryOperator::@1/assertType::t2#1, testUnaryOperator::@2/assertType::t2#2, testUnaryOperator::@3/assertType::t2#3, testUnaryOperator::@4/assertType::t2#4, testUnaryOperator::@5/assertType::t2#5 )
  assertType::t1#42 = phi( testBinaryOperator/assertType::t1#6, testBinaryOperator::@1/assertType::t1#7, testBinaryOperator::@10/assertType::t1#16, testBinaryOperator::@11/assertType::t1#17, testBinaryOperator::@12/assertType::t1#18, testBinaryOperator::@13/assertType::t1#19, testBinaryOperator::@14/assertType::t1#20, testBinaryOperator::@15/assertType::t1#21, testBinaryOperator::@16/assertType::t1#22, testBinaryOperator::@17/assertType::t1#23, testBinaryOperator::@18/assertType::t1#24, testBinaryOperator::@19/assertType::t1#25, testBinaryOperator::@2/assertType::t1#8, testBinaryOperator::@20/assertType::t1#26, testBinaryOperator::@21/assertType::t1#27, testBinaryOperator::@22/assertType::t1#28, testBinaryOperator::@23/assertType::t1#29, testBinaryOperator::@24/assertType::t1#30, testBinaryOperator::@25/assertType::t1#31, testBinaryOperator::@26/assertType::t1#32, testBinaryOperator::@27/assertType::t1#33, testBinaryOperator::@28/assertType::t1#34, testBinaryOperator::@29/assertType::t1#35, testBinaryOperator::@3/assertType::t1#9, testBinaryOperator::@30/assertType::t1#36, testBinaryOperator::@31/assertType::t1#37, testBinaryOperator::@32/assertType::t1#38, testBinaryOperator::@33/assertType::t1#39, testBinaryOperator::@34/assertType::t1#40, testBinaryOperator::@35/assertType::t1#41, testBinaryOperator::@4/assertType::t1#10, testBinaryOperator::@5/assertType::t1#11, testBinaryOperator::@6/assertType::t1#12, testBinaryOperator::@7/assertType::t1#13, testBinaryOperator::@8/assertType::t1#14, testBinaryOperator::@9/assertType::t1#15, testUnaryOperator/assertType::t1#0, testUnaryOperator::@1/assertType::t1#1, testUnaryOperator::@2/assertType::t1#2, testUnaryOperator::@3/assertType::t1#3, testUnaryOperator::@4/assertType::t1#4, testUnaryOperator::@5/assertType::t1#5 )
  assertType::$0 = assertType::t1#42 == assertType::t2#42
  if(assertType::$0) goto assertType::@1
  to:assertType::@3
assertType::@1: scope:[assertType]  from assertType
  assertType::t1#44 = phi( assertType/assertType::t1#42 )
  idx#106 = phi( assertType/idx#113 )
  COLS[idx#106] = GREEN
  to:assertType::@2
assertType::@3: scope:[assertType]  from assertType
  assertType::t1#45 = phi( assertType/assertType::t1#42 )
  idx#107 = phi( assertType/idx#113 )
  COLS[idx#107] = RED
  to:assertType::@2
assertType::@2: scope:[assertType]  from assertType::@1 assertType::@3
  idx#108 = phi( assertType::@1/idx#106, assertType::@3/idx#107 )
  assertType::t1#43 = phi( assertType::@1/assertType::t1#44, assertType::@3/assertType::t1#45 )
  SCREEN[idx#108] = assertType::t1#43
  idx#54 = ++ idx#108
  to:assertType::@return
assertType::@return: scope:[assertType]  from assertType::@2
  idx#109 = phi( assertType::@2/idx#54 )
  idx#55 = idx#109
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  idx#56 = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  idx#114 = phi( __start::__init1/idx#56 )
  call main
  to:__start::@2
__start::@2: scope:[__start]  from __start::@1
  idx#110 = phi( __start::@1/idx#2 )
  idx#57 = idx#110
  to:__start::@return
__start::@return: scope:[__start]  from __start::@2
  idx#111 = phi( __start::@2/idx#57 )
  idx#58 = idx#111
  return 
  to:@return

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

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

Created 4 initial phi equivalence classes
Coalesced [11] main::s#4 = main::s#1
Coalesced [14] idx#152 = idx#109
Coalesced (already) [16] idx#153 = idx#109
Coalesced (already) [18] idx#154 = idx#109
Coalesced (already) [20] idx#155 = idx#109
Coalesced (already) [22] idx#156 = idx#109
Coalesced (already) [28] idx#118 = idx#109
Coalesced (already) [30] idx#128 = idx#109
Coalesced (already) [32] idx#139 = idx#109
Coalesced (already) [34] idx#146 = idx#109
Coalesced (already) [36] idx#147 = idx#109
Coalesced [39] idx#148 = idx#18
Coalesced (already) [41] idx#149 = idx#109
Coalesced (already) [43] idx#150 = idx#109
Coalesced (already) [45] idx#151 = idx#109
Coalesced (already) [47] idx#119 = idx#109
Coalesced (already) [49] idx#120 = idx#109
Coalesced [52] idx#121 = idx#25
Coalesced (already) [54] idx#122 = idx#109
Coalesced (already) [56] idx#123 = idx#109
Coalesced (already) [58] idx#124 = idx#109
Coalesced (already) [60] idx#125 = idx#109
Coalesced (already) [62] idx#126 = idx#109
Coalesced (already) [66] idx#127 = idx#109
Coalesced (already) [68] idx#129 = idx#109
Coalesced (already) [70] idx#130 = idx#109
Coalesced (already) [72] idx#131 = idx#109
Coalesced (already) [74] idx#132 = idx#109
Coalesced [77] idx#133 = idx#39
Coalesced (already) [79] idx#134 = idx#109
Coalesced (already) [81] idx#135 = idx#109
Coalesced (already) [83] idx#136 = idx#109
Coalesced (already) [85] idx#137 = idx#109
Coalesced (already) [87] idx#138 = idx#109
Coalesced [90] idx#140 = idx#46
Coalesced (already) [92] idx#141 = idx#109
Coalesced (already) [94] idx#142 = idx#109
Coalesced (already) [96] idx#143 = idx#109
Coalesced (already) [98] idx#144 = idx#109
Coalesced (already) [100] idx#145 = idx#109
Coalesced down to 4 phi equivalence classes
Culled Empty Block label main::@5
Culled Empty Block label testUnaryOperator::@6
Culled Empty Block label testBinaryOperator::@36
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 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
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

FINAL CONTROL FLOW GRAPH

void main()
main: scope:[main]  from
  [0] phi()
  to:main::@1
main::@1: scope:[main]  from main main::@2
  [1] main::s#2 = phi( main/SCREEN, main::@2/main::s#1 )
  [2] if(main::s#2<SCREEN+$3e8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1
  [3] phi()
  [4] call testUnaryOperator
  to:main::@4
main::@4: scope:[main]  from main::@3
  [5] phi()
  [6] call testBinaryOperator
  to:main::@return
main::@return: scope:[main]  from main::@4
  [7] return 
  to:@return
main::@2: scope:[main]  from main::@1
  [8] *main::s#2 = ' '
  [9] main::s#1 = ++ main::s#2
  to:main::@1

void testUnaryOperator()
testUnaryOperator: scope:[testUnaryOperator]  from main::@3
  [10] phi()
  [11] call assertType
  to:testUnaryOperator::@1
testUnaryOperator::@1: scope:[testUnaryOperator]  from testUnaryOperator
  [12] phi()
  [13] call assertType
  to:testUnaryOperator::@2
testUnaryOperator::@2: scope:[testUnaryOperator]  from testUnaryOperator::@1
  [14] phi()
  [15] call assertType
  to:testUnaryOperator::@3
testUnaryOperator::@3: scope:[testUnaryOperator]  from testUnaryOperator::@2
  [16] phi()
  [17] call assertType
  to:testUnaryOperator::@4
testUnaryOperator::@4: scope:[testUnaryOperator]  from testUnaryOperator::@3
  [18] phi()
  [19] call assertType
  to:testUnaryOperator::@5
testUnaryOperator::@5: scope:[testUnaryOperator]  from testUnaryOperator::@4
  [20] phi()
  [21] call assertType
  to:testUnaryOperator::@return
testUnaryOperator::@return: scope:[testUnaryOperator]  from testUnaryOperator::@5
  [22] return 
  to:@return

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

void assertType(char t1 , char 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
  [96] idx#106 = phi( testBinaryOperator/$28, testBinaryOperator::@1/idx#109, testBinaryOperator::@10/idx#109, testBinaryOperator::@11/idx#109, testBinaryOperator::@12/idx#25, testBinaryOperator::@13/idx#109, testBinaryOperator::@14/idx#109, testBinaryOperator::@15/idx#109, testBinaryOperator::@16/idx#109, testBinaryOperator::@17/idx#109, testBinaryOperator::@18/$50, testBinaryOperator::@19/idx#109, testBinaryOperator::@2/idx#109, testBinaryOperator::@20/idx#109, testBinaryOperator::@21/idx#109, testBinaryOperator::@22/idx#109, testBinaryOperator::@23/idx#109, testBinaryOperator::@24/idx#39, testBinaryOperator::@25/idx#109, testBinaryOperator::@26/idx#109, testBinaryOperator::@27/idx#109, testBinaryOperator::@28/idx#109, testBinaryOperator::@29/idx#109, testBinaryOperator::@3/idx#109, testBinaryOperator::@30/idx#46, testBinaryOperator::@31/idx#109, testBinaryOperator::@32/idx#109, testBinaryOperator::@33/idx#109, testBinaryOperator::@34/idx#109, testBinaryOperator::@35/idx#109, testBinaryOperator::@4/idx#109, testBinaryOperator::@5/idx#109, testBinaryOperator::@6/idx#18, testBinaryOperator::@7/idx#109, testBinaryOperator::@8/idx#109, testBinaryOperator::@9/idx#109, testUnaryOperator/0, testUnaryOperator::@1/idx#109, testUnaryOperator::@2/idx#109, testUnaryOperator::@3/idx#109, testUnaryOperator::@4/idx#109, testUnaryOperator::@5/idx#109 )
  [96] assertType::t2#42 = phi( testBinaryOperator/TYPEID_CHAR, testBinaryOperator::@1/TYPEID_CHAR, testBinaryOperator::@10/TYPEID_UNSIGNED_LONG, testBinaryOperator::@11/TYPEID_LONG, testBinaryOperator::@12/TYPEID_UNSIGNED_INT, testBinaryOperator::@13/TYPEID_UNSIGNED_INT, testBinaryOperator::@14/TYPEID_UNSIGNED_INT, testBinaryOperator::@15/TYPEID_UNSIGNED_INT, testBinaryOperator::@16/TYPEID_UNSIGNED_LONG, testBinaryOperator::@17/TYPEID_LONG, testBinaryOperator::@18/TYPEID_INT, testBinaryOperator::@19/TYPEID_INT, testBinaryOperator::@2/TYPEID_UNSIGNED_INT, testBinaryOperator::@20/TYPEID_UNSIGNED_INT, testBinaryOperator::@21/TYPEID_INT, testBinaryOperator::@22/TYPEID_UNSIGNED_LONG, testBinaryOperator::@23/TYPEID_LONG, testBinaryOperator::@24/TYPEID_UNSIGNED_LONG, testBinaryOperator::@25/TYPEID_UNSIGNED_LONG, testBinaryOperator::@26/TYPEID_UNSIGNED_LONG, testBinaryOperator::@27/TYPEID_UNSIGNED_LONG, testBinaryOperator::@28/TYPEID_UNSIGNED_LONG, testBinaryOperator::@29/TYPEID_UNSIGNED_LONG, testBinaryOperator::@3/TYPEID_INT, testBinaryOperator::@30/TYPEID_LONG, testBinaryOperator::@31/TYPEID_LONG, testBinaryOperator::@32/TYPEID_LONG, testBinaryOperator::@33/TYPEID_LONG, testBinaryOperator::@34/TYPEID_UNSIGNED_LONG, testBinaryOperator::@35/TYPEID_LONG, testBinaryOperator::@4/TYPEID_UNSIGNED_LONG, testBinaryOperator::@5/TYPEID_LONG, testBinaryOperator::@6/TYPEID_CHAR, testBinaryOperator::@7/TYPEID_SIGNED_CHAR, testBinaryOperator::@8/TYPEID_UNSIGNED_INT, testBinaryOperator::@9/TYPEID_INT, testUnaryOperator/TYPEID_CHAR, testUnaryOperator::@1/TYPEID_SIGNED_CHAR, testUnaryOperator::@2/TYPEID_UNSIGNED_INT, testUnaryOperator::@3/TYPEID_INT, testUnaryOperator::@4/TYPEID_UNSIGNED_LONG, testUnaryOperator::@5/TYPEID_LONG )
  [96] assertType::t1#42 = phi( testBinaryOperator/TYPEID_CHAR, testBinaryOperator::@1/TYPEID_CHAR, testBinaryOperator::@10/TYPEID_UNSIGNED_LONG, testBinaryOperator::@11/TYPEID_LONG, testBinaryOperator::@12/TYPEID_UNSIGNED_INT, testBinaryOperator::@13/TYPEID_UNSIGNED_INT, testBinaryOperator::@14/TYPEID_UNSIGNED_INT, testBinaryOperator::@15/TYPEID_UNSIGNED_INT, testBinaryOperator::@16/TYPEID_UNSIGNED_LONG, testBinaryOperator::@17/TYPEID_LONG, testBinaryOperator::@18/TYPEID_INT, testBinaryOperator::@19/TYPEID_INT, testBinaryOperator::@2/TYPEID_UNSIGNED_INT, testBinaryOperator::@20/TYPEID_UNSIGNED_INT, testBinaryOperator::@21/TYPEID_INT, testBinaryOperator::@22/TYPEID_UNSIGNED_LONG, testBinaryOperator::@23/TYPEID_LONG, testBinaryOperator::@24/TYPEID_UNSIGNED_LONG, testBinaryOperator::@25/TYPEID_UNSIGNED_LONG, testBinaryOperator::@26/TYPEID_UNSIGNED_LONG, testBinaryOperator::@27/TYPEID_UNSIGNED_LONG, testBinaryOperator::@28/TYPEID_UNSIGNED_LONG, testBinaryOperator::@29/TYPEID_UNSIGNED_LONG, testBinaryOperator::@3/TYPEID_INT, testBinaryOperator::@30/TYPEID_LONG, testBinaryOperator::@31/TYPEID_LONG, testBinaryOperator::@32/TYPEID_LONG, testBinaryOperator::@33/TYPEID_LONG, testBinaryOperator::@34/TYPEID_UNSIGNED_LONG, testBinaryOperator::@35/TYPEID_LONG, testBinaryOperator::@4/TYPEID_UNSIGNED_LONG, testBinaryOperator::@5/TYPEID_LONG, testBinaryOperator::@6/TYPEID_CHAR, testBinaryOperator::@7/TYPEID_SIGNED_CHAR, testBinaryOperator::@8/TYPEID_UNSIGNED_INT, testBinaryOperator::@9/TYPEID_INT, testUnaryOperator/TYPEID_CHAR, testUnaryOperator::@1/TYPEID_SIGNED_CHAR, testUnaryOperator::@2/TYPEID_UNSIGNED_INT, testUnaryOperator::@3/TYPEID_INT, testUnaryOperator::@4/TYPEID_UNSIGNED_LONG, testUnaryOperator::@5/TYPEID_LONG )
  [97] if(assertType::t1#42==assertType::t2#42) goto assertType::@1
  to:assertType::@3
assertType::@3: scope:[assertType]  from assertType
  [98] COLS[idx#106] = RED
  to:assertType::@2
assertType::@2: scope:[assertType]  from assertType::@1 assertType::@3
  [99] SCREEN[idx#106] = assertType::t1#42
  [100] idx#109 = ++ idx#106
  to:assertType::@return
assertType::@return: scope:[assertType]  from assertType::@2
  [101] return 
  to:@return
assertType::@1: scope:[assertType]  from assertType
  [102] COLS[idx#106] = GREEN
  to:assertType::@2


VARIABLE REGISTER WEIGHTS
void assertType(char t1 , char t2)
char assertType::t1
char assertType::t1#42 // 50.5
char assertType::t2
char assertType::t2#42 // 101.0
char idx
char idx#106 // 166.60000000000005
char idx#109 // 6.973684210526315
char idx#18 // 22.0
char idx#25 // 22.0
char idx#39 // 22.0
char idx#46 // 22.0
void main()
char *main::s
char *main::s#1 // 22.0
char *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#106 idx#109 idx#25 idx#39 idx#46 idx#18 ]
Complete equivalence classes
[ main::s#2 main::s#1 ]
[ assertType::t1#42 ]
[ assertType::t2#42 ]
[ idx#106 idx#109 idx#25 idx#39 idx#46 idx#18 ]
Allocated zp[1]:2 [ idx#106 idx#109 idx#25 idx#39 idx#46 idx#18 ]
Allocated zp[1]:3 [ assertType::t2#42 ]
Allocated zp[1]:4 [ assertType::t1#42 ]
Allocated zp[2]:5 [ main::s#2 main::s#1 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [2] if(main::s#2<SCREEN+$3e8) goto main::@2 [ main::s#2 ] (  [ main::s#2 ] { }  ) always clobbers reg byte a 
Statement [8] *main::s#2 = ' ' [ main::s#2 ] (  [ main::s#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [98] COLS[idx#106] = RED [ assertType::t1#42 idx#106 ] ( testUnaryOperator:4::assertType:11 [ assertType::t1#42 idx#106 ] { }  testUnaryOperator:4::assertType:13 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:15 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:17 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:19 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:21 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:24 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:26 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:28 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:30 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:32 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:34 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:36 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#18 } }  testBinaryOperator:6::assertType:38 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:40 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:42 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:44 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:46 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:48 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#25 } }  testBinaryOperator:6::assertType:50 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:52 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:54 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:56 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:58 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:60 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:62 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:64 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:66 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:68 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:70 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:72 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#39 } }  testBinaryOperator:6::assertType:74 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:76 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:78 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:80 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:82 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:84 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#46 } }  testBinaryOperator:6::assertType:86 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:88 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:90 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:92 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:94 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  ) 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]:2 [ idx#106 idx#109 idx#25 idx#39 idx#46 idx#18 ]
Statement [99] SCREEN[idx#106] = assertType::t1#42 [ idx#106 ] ( testUnaryOperator:4::assertType:11 [ idx#106 ] { }  testUnaryOperator:4::assertType:13 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:15 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:17 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:19 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:21 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:24 [ idx#106 ] { }  testBinaryOperator:6::assertType:26 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:28 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:30 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:32 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:34 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:36 [ idx#106 ] { { idx#106 = idx#18 } }  testBinaryOperator:6::assertType:38 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:40 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:42 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:44 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:46 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:48 [ idx#106 ] { { idx#106 = idx#25 } }  testBinaryOperator:6::assertType:50 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:52 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:54 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:56 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:58 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:60 [ idx#106 ] { }  testBinaryOperator:6::assertType:62 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:64 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:66 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:68 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:70 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:72 [ idx#106 ] { { idx#106 = idx#39 } }  testBinaryOperator:6::assertType:74 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:76 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:78 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:80 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:82 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:84 [ idx#106 ] { { idx#106 = idx#46 } }  testBinaryOperator:6::assertType:86 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:88 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:90 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:92 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:94 [ idx#106 ] { { idx#106 = idx#109 } }  ) always clobbers reg byte a 
Statement [102] COLS[idx#106] = GREEN [ assertType::t1#42 idx#106 ] ( testUnaryOperator:4::assertType:11 [ assertType::t1#42 idx#106 ] { }  testUnaryOperator:4::assertType:13 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:15 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:17 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:19 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:21 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:24 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:26 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:28 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:30 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:32 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:34 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:36 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#18 } }  testBinaryOperator:6::assertType:38 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:40 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:42 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:44 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:46 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:48 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#25 } }  testBinaryOperator:6::assertType:50 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:52 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:54 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:56 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:58 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:60 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:62 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:64 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:66 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:68 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:70 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:72 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#39 } }  testBinaryOperator:6::assertType:74 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:76 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:78 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:80 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:82 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:84 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#46 } }  testBinaryOperator:6::assertType:86 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:88 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:90 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:92 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:94 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  ) always clobbers reg byte a 
Statement [2] if(main::s#2<SCREEN+$3e8) goto main::@2 [ main::s#2 ] (  [ main::s#2 ] { }  ) always clobbers reg byte a 
Statement [8] *main::s#2 = ' ' [ main::s#2 ] (  [ main::s#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [98] COLS[idx#106] = RED [ assertType::t1#42 idx#106 ] ( testUnaryOperator:4::assertType:11 [ assertType::t1#42 idx#106 ] { }  testUnaryOperator:4::assertType:13 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:15 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:17 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:19 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:21 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:24 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:26 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:28 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:30 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:32 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:34 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:36 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#18 } }  testBinaryOperator:6::assertType:38 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:40 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:42 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:44 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:46 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:48 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#25 } }  testBinaryOperator:6::assertType:50 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:52 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:54 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:56 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:58 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:60 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:62 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:64 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:66 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:68 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:70 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:72 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#39 } }  testBinaryOperator:6::assertType:74 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:76 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:78 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:80 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:82 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:84 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#46 } }  testBinaryOperator:6::assertType:86 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:88 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:90 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:92 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:94 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  ) always clobbers reg byte a 
Statement [99] SCREEN[idx#106] = assertType::t1#42 [ idx#106 ] ( testUnaryOperator:4::assertType:11 [ idx#106 ] { }  testUnaryOperator:4::assertType:13 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:15 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:17 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:19 [ idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:21 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:24 [ idx#106 ] { }  testBinaryOperator:6::assertType:26 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:28 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:30 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:32 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:34 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:36 [ idx#106 ] { { idx#106 = idx#18 } }  testBinaryOperator:6::assertType:38 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:40 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:42 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:44 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:46 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:48 [ idx#106 ] { { idx#106 = idx#25 } }  testBinaryOperator:6::assertType:50 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:52 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:54 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:56 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:58 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:60 [ idx#106 ] { }  testBinaryOperator:6::assertType:62 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:64 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:66 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:68 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:70 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:72 [ idx#106 ] { { idx#106 = idx#39 } }  testBinaryOperator:6::assertType:74 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:76 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:78 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:80 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:82 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:84 [ idx#106 ] { { idx#106 = idx#46 } }  testBinaryOperator:6::assertType:86 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:88 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:90 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:92 [ idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:94 [ idx#106 ] { { idx#106 = idx#109 } }  ) always clobbers reg byte a 
Statement [102] COLS[idx#106] = GREEN [ assertType::t1#42 idx#106 ] ( testUnaryOperator:4::assertType:11 [ assertType::t1#42 idx#106 ] { }  testUnaryOperator:4::assertType:13 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:15 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:17 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:19 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testUnaryOperator:4::assertType:21 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:24 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:26 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:28 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:30 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:32 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:34 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:36 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#18 } }  testBinaryOperator:6::assertType:38 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:40 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:42 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:44 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:46 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:48 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#25 } }  testBinaryOperator:6::assertType:50 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:52 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:54 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:56 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:58 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:60 [ assertType::t1#42 idx#106 ] { }  testBinaryOperator:6::assertType:62 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:64 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:66 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:68 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:70 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:72 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#39 } }  testBinaryOperator:6::assertType:74 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:76 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:78 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:80 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:82 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:84 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#46 } }  testBinaryOperator:6::assertType:86 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:88 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:90 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:92 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  testBinaryOperator:6::assertType:94 [ assertType::t1#42 idx#106 ] { { idx#106 = idx#109 } }  ) always clobbers reg byte a 
Potential registers zp[2]:5 [ main::s#2 main::s#1 ] : zp[2]:5 , 
Potential registers zp[1]:4 [ assertType::t1#42 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[1]:3 [ assertType::t2#42 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:2 [ idx#106 idx#109 idx#25 idx#39 idx#46 idx#18 ] : zp[1]:2 , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [] 261.57: zp[1]:2 [ idx#106 idx#109 idx#25 idx#39 idx#46 idx#18 ] 
Uplift Scope [assertType] 101: zp[1]:3 [ assertType::t2#42 ] 50.5: zp[1]:4 [ assertType::t1#42 ] 
Uplift Scope [main] 36.67: zp[2]:5 [ main::s#2 main::s#1 ] 
Uplift Scope [testUnaryOperator] 
Uplift Scope [testBinaryOperator] 

Uplifting [] best 1461 combination reg byte x [ idx#106 idx#109 idx#25 idx#39 idx#46 idx#18 ] 
Uplifting [assertType] best 1333 combination zp[1]:3 [ assertType::t2#42 ] reg byte y [ assertType::t1#42 ] 
Uplifting [main] best 1333 combination zp[2]:5 [ main::s#2 main::s#1 ] 
Uplifting [testUnaryOperator] best 1333 combination 
Uplifting [testBinaryOperator] best 1333 combination 
Attempting to uplift remaining variables inzp[1]:3 [ assertType::t2#42 ]
Uplifting [assertType] best 1333 combination zp[1]:3 [ assertType::t2#42 ] 
Allocated (was zp[1]:3) zp[1]:2 [ assertType::t2#42 ]
Allocated (was zp[2]:5) zp[2]:3 [ main::s#2 main::s#1 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Tests different integer literal types
  // Upstart
  // Commodore 64 PRG executable file
.file [name="int-conversion.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .const RED = 2
  .const GREEN = 5
  .const TYPEID_CHAR = 1
  .const TYPEID_SIGNED_CHAR = 2
  .const TYPEID_UNSIGNED_INT = 3
  .const TYPEID_INT = 4
  .const TYPEID_UNSIGNED_LONG = 5
  .const TYPEID_LONG = 6
  .label SCREEN = $400
  .label COLS = $d800
.segment Code
  // main
main: {
    .label s = 3
    // [1] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [1] phi main::s#2 = SCREEN [phi:main->main::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z s
    lda #>SCREEN
    sta.z s+1
    jmp __b1
    // main::@1
  __b1:
    // [2] if(main::s#2<SCREEN+$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
  !:
    // [3] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
  __b3_from___b1:
    jmp __b3
    // main::@3
  __b3:
    // [4] call testUnaryOperator
    // [10] phi from main::@3 to testUnaryOperator [phi:main::@3->testUnaryOperator]
  testUnaryOperator_from___b3:
    jsr testUnaryOperator
    // [5] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [6] call testBinaryOperator
    // [23] phi from main::@4 to testBinaryOperator [phi:main::@4->testBinaryOperator]
  testBinaryOperator_from___b4:
    jsr testBinaryOperator
    jmp __breturn
    // main::@return
  __breturn:
    // [7] return 
    rts
    // main::@2
  __b2:
    // [8] *main::s#2 = ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (s),y
    // [9] main::s#1 = ++ main::s#2 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
  __b1_from___b2:
    // [1] phi main::s#2 = main::s#1 [phi:main::@2->main::@1#0] -- register_copy 
    jmp __b1
}
  // testUnaryOperator
testUnaryOperator: {
    // [11] call assertType
  // Unary Operations
    // [96] phi from testUnaryOperator to assertType [phi:testUnaryOperator->assertType]
  assertType_from_testUnaryOperator:
    // [96] phi idx#106 = 0 [phi:testUnaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #0
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testUnaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testUnaryOperator->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_CHAR
    jsr assertType
    // [12] phi from testUnaryOperator to testUnaryOperator::@1 [phi:testUnaryOperator->testUnaryOperator::@1]
  __b1_from_testUnaryOperator:
    jmp __b1
    // testUnaryOperator::@1
  __b1:
    // [13] call assertType
    // [96] phi from testUnaryOperator::@1 to assertType [phi:testUnaryOperator::@1->assertType]
  assertType_from___b1:
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@1->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_SIGNED_CHAR [phi:testUnaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_SIGNED_CHAR [phi:testUnaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_CHAR
    jsr assertType
    // [14] phi from testUnaryOperator::@1 to testUnaryOperator::@2 [phi:testUnaryOperator::@1->testUnaryOperator::@2]
  __b2_from___b1:
    jmp __b2
    // testUnaryOperator::@2
  __b2:
    // [15] call assertType
    // [96] phi from testUnaryOperator::@2 to assertType [phi:testUnaryOperator::@2->assertType]
  assertType_from___b2:
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@2->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testUnaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testUnaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [16] phi from testUnaryOperator::@2 to testUnaryOperator::@3 [phi:testUnaryOperator::@2->testUnaryOperator::@3]
  __b3_from___b2:
    jmp __b3
    // testUnaryOperator::@3
  __b3:
    // [17] call assertType
    // [96] phi from testUnaryOperator::@3 to assertType [phi:testUnaryOperator::@3->assertType]
  assertType_from___b3:
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@3->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testUnaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testUnaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_INT
    jsr assertType
    // [18] phi from testUnaryOperator::@3 to testUnaryOperator::@4 [phi:testUnaryOperator::@3->testUnaryOperator::@4]
  __b4_from___b3:
    jmp __b4
    // testUnaryOperator::@4
  __b4:
    // [19] call assertType
    // [96] phi from testUnaryOperator::@4 to assertType [phi:testUnaryOperator::@4->assertType]
  assertType_from___b4:
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@4->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testUnaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testUnaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [20] phi from testUnaryOperator::@4 to testUnaryOperator::@5 [phi:testUnaryOperator::@4->testUnaryOperator::@5]
  __b5_from___b4:
    jmp __b5
    // testUnaryOperator::@5
  __b5:
    // [21] call assertType
    // [96] phi from testUnaryOperator::@5 to assertType [phi:testUnaryOperator::@5->assertType]
  assertType_from___b5:
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@5->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testUnaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testUnaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    jmp __breturn
    // testUnaryOperator::@return
  __breturn:
    // [22] return 
    rts
}
  // testBinaryOperator
testBinaryOperator: {
    // [24] call assertType
  // Binary Operations between unsigned byte & other types
    // [96] phi from testBinaryOperator to assertType [phi:testBinaryOperator->assertType]
  assertType_from_testBinaryOperator:
    // [96] phi idx#106 = $28 [phi:testBinaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #$28
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testBinaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testBinaryOperator->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_CHAR
    jsr assertType
    // [25] phi from testBinaryOperator to testBinaryOperator::@1 [phi:testBinaryOperator->testBinaryOperator::@1]
  __b1_from_testBinaryOperator:
    jmp __b1
    // testBinaryOperator::@1
  __b1:
    // [26] call assertType
    // [96] phi from testBinaryOperator::@1 to assertType [phi:testBinaryOperator::@1->assertType]
  assertType_from___b1:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@1->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testBinaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testBinaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_CHAR
    jsr assertType
    // [27] phi from testBinaryOperator::@1 to testBinaryOperator::@2 [phi:testBinaryOperator::@1->testBinaryOperator::@2]
  __b2_from___b1:
    jmp __b2
    // testBinaryOperator::@2
  __b2:
    // [28] call assertType
    // [96] phi from testBinaryOperator::@2 to assertType [phi:testBinaryOperator::@2->assertType]
  assertType_from___b2:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@2->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [29] phi from testBinaryOperator::@2 to testBinaryOperator::@3 [phi:testBinaryOperator::@2->testBinaryOperator::@3]
  __b3_from___b2:
    jmp __b3
    // testBinaryOperator::@3
  __b3:
    // [30] call assertType
    // [96] phi from testBinaryOperator::@3 to assertType [phi:testBinaryOperator::@3->assertType]
  assertType_from___b3:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@3->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_INT
    jsr assertType
    // [31] phi from testBinaryOperator::@3 to testBinaryOperator::@4 [phi:testBinaryOperator::@3->testBinaryOperator::@4]
  __b4_from___b3:
    jmp __b4
    // testBinaryOperator::@4
  __b4:
    // [32] call assertType
    // [96] phi from testBinaryOperator::@4 to assertType [phi:testBinaryOperator::@4->assertType]
  assertType_from___b4:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@4->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [33] phi from testBinaryOperator::@4 to testBinaryOperator::@5 [phi:testBinaryOperator::@4->testBinaryOperator::@5]
  __b5_from___b4:
    jmp __b5
    // testBinaryOperator::@5
  __b5:
    // [34] call assertType
    // [96] phi from testBinaryOperator::@5 to assertType [phi:testBinaryOperator::@5->assertType]
  assertType_from___b5:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@5->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    jmp __b6
    // testBinaryOperator::@6
  __b6:
    // [35] idx#18 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // [36] call assertType
  // Binary Operations between signed byte & other types
    // [96] phi from testBinaryOperator::@6 to assertType [phi:testBinaryOperator::@6->assertType]
  assertType_from___b6:
    // [96] phi idx#106 = idx#18 [phi:testBinaryOperator::@6->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testBinaryOperator::@6->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testBinaryOperator::@6->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_CHAR
    jsr assertType
    // [37] phi from testBinaryOperator::@6 to testBinaryOperator::@7 [phi:testBinaryOperator::@6->testBinaryOperator::@7]
  __b7_from___b6:
    jmp __b7
    // testBinaryOperator::@7
  __b7:
    // [38] call assertType
    // [96] phi from testBinaryOperator::@7 to assertType [phi:testBinaryOperator::@7->assertType]
  assertType_from___b7:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@7->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_SIGNED_CHAR [phi:testBinaryOperator::@7->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_SIGNED_CHAR [phi:testBinaryOperator::@7->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_SIGNED_CHAR
    jsr assertType
    // [39] phi from testBinaryOperator::@7 to testBinaryOperator::@8 [phi:testBinaryOperator::@7->testBinaryOperator::@8]
  __b8_from___b7:
    jmp __b8
    // testBinaryOperator::@8
  __b8:
    // [40] call assertType
    // [96] phi from testBinaryOperator::@8 to assertType [phi:testBinaryOperator::@8->assertType]
  assertType_from___b8:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@8->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@8->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@8->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [41] phi from testBinaryOperator::@8 to testBinaryOperator::@9 [phi:testBinaryOperator::@8->testBinaryOperator::@9]
  __b9_from___b8:
    jmp __b9
    // testBinaryOperator::@9
  __b9:
    // [42] call assertType
    // [96] phi from testBinaryOperator::@9 to assertType [phi:testBinaryOperator::@9->assertType]
  assertType_from___b9:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@9->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@9->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@9->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_INT
    jsr assertType
    // [43] phi from testBinaryOperator::@9 to testBinaryOperator::@10 [phi:testBinaryOperator::@9->testBinaryOperator::@10]
  __b10_from___b9:
    jmp __b10
    // testBinaryOperator::@10
  __b10:
    // [44] call assertType
    // [96] phi from testBinaryOperator::@10 to assertType [phi:testBinaryOperator::@10->assertType]
  assertType_from___b10:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@10->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@10->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@10->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [45] phi from testBinaryOperator::@10 to testBinaryOperator::@11 [phi:testBinaryOperator::@10->testBinaryOperator::@11]
  __b11_from___b10:
    jmp __b11
    // testBinaryOperator::@11
  __b11:
    // [46] call assertType
    // [96] phi from testBinaryOperator::@11 to assertType [phi:testBinaryOperator::@11->assertType]
  assertType_from___b11:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@11->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@11->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@11->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    jmp __b12
    // testBinaryOperator::@12
  __b12:
    // [47] idx#25 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // [48] call assertType
  // Binary Operations between unsigned word & other types
    // [96] phi from testBinaryOperator::@12 to assertType [phi:testBinaryOperator::@12->assertType]
  assertType_from___b12:
    // [96] phi idx#106 = idx#25 [phi:testBinaryOperator::@12->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@12->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@12->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [49] phi from testBinaryOperator::@12 to testBinaryOperator::@13 [phi:testBinaryOperator::@12->testBinaryOperator::@13]
  __b13_from___b12:
    jmp __b13
    // testBinaryOperator::@13
  __b13:
    // [50] call assertType
    // [96] phi from testBinaryOperator::@13 to assertType [phi:testBinaryOperator::@13->assertType]
  assertType_from___b13:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@13->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@13->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@13->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [51] phi from testBinaryOperator::@13 to testBinaryOperator::@14 [phi:testBinaryOperator::@13->testBinaryOperator::@14]
  __b14_from___b13:
    jmp __b14
    // testBinaryOperator::@14
  __b14:
    // [52] call assertType
    // [96] phi from testBinaryOperator::@14 to assertType [phi:testBinaryOperator::@14->assertType]
  assertType_from___b14:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@14->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@14->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@14->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [53] phi from testBinaryOperator::@14 to testBinaryOperator::@15 [phi:testBinaryOperator::@14->testBinaryOperator::@15]
  __b15_from___b14:
    jmp __b15
    // testBinaryOperator::@15
  __b15:
    // [54] call assertType
    // [96] phi from testBinaryOperator::@15 to assertType [phi:testBinaryOperator::@15->assertType]
  assertType_from___b15:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@15->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@15->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@15->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [55] phi from testBinaryOperator::@15 to testBinaryOperator::@16 [phi:testBinaryOperator::@15->testBinaryOperator::@16]
  __b16_from___b15:
    jmp __b16
    // testBinaryOperator::@16
  __b16:
    // [56] call assertType
    // [96] phi from testBinaryOperator::@16 to assertType [phi:testBinaryOperator::@16->assertType]
  assertType_from___b16:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@16->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@16->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@16->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [57] phi from testBinaryOperator::@16 to testBinaryOperator::@17 [phi:testBinaryOperator::@16->testBinaryOperator::@17]
  __b17_from___b16:
    jmp __b17
    // testBinaryOperator::@17
  __b17:
    // [58] call assertType
    // [96] phi from testBinaryOperator::@17 to assertType [phi:testBinaryOperator::@17->assertType]
  assertType_from___b17:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@17->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@17->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@17->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    // [59] phi from testBinaryOperator::@17 to testBinaryOperator::@18 [phi:testBinaryOperator::@17->testBinaryOperator::@18]
  __b18_from___b17:
    jmp __b18
    // testBinaryOperator::@18
  __b18:
    // [60] call assertType
  // Binary Operations between signed word & other types
    // [96] phi from testBinaryOperator::@18 to assertType [phi:testBinaryOperator::@18->assertType]
  assertType_from___b18:
    // [96] phi idx#106 = $50 [phi:testBinaryOperator::@18->assertType#0] -- vbuxx=vbuc1 
    ldx #$50
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@18->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@18->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_INT
    jsr assertType
    // [61] phi from testBinaryOperator::@18 to testBinaryOperator::@19 [phi:testBinaryOperator::@18->testBinaryOperator::@19]
  __b19_from___b18:
    jmp __b19
    // testBinaryOperator::@19
  __b19:
    // [62] call assertType
    // [96] phi from testBinaryOperator::@19 to assertType [phi:testBinaryOperator::@19->assertType]
  assertType_from___b19:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@19->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@19->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@19->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_INT
    jsr assertType
    // [63] phi from testBinaryOperator::@19 to testBinaryOperator::@20 [phi:testBinaryOperator::@19->testBinaryOperator::@20]
  __b20_from___b19:
    jmp __b20
    // testBinaryOperator::@20
  __b20:
    // [64] call assertType
    // [96] phi from testBinaryOperator::@20 to assertType [phi:testBinaryOperator::@20->assertType]
  assertType_from___b20:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@20->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@20->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@20->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_INT
    jsr assertType
    // [65] phi from testBinaryOperator::@20 to testBinaryOperator::@21 [phi:testBinaryOperator::@20->testBinaryOperator::@21]
  __b21_from___b20:
    jmp __b21
    // testBinaryOperator::@21
  __b21:
    // [66] call assertType
    // [96] phi from testBinaryOperator::@21 to assertType [phi:testBinaryOperator::@21->assertType]
  assertType_from___b21:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@21->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@21->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@21->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_INT
    jsr assertType
    // [67] phi from testBinaryOperator::@21 to testBinaryOperator::@22 [phi:testBinaryOperator::@21->testBinaryOperator::@22]
  __b22_from___b21:
    jmp __b22
    // testBinaryOperator::@22
  __b22:
    // [68] call assertType
    // [96] phi from testBinaryOperator::@22 to assertType [phi:testBinaryOperator::@22->assertType]
  assertType_from___b22:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@22->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@22->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@22->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [69] phi from testBinaryOperator::@22 to testBinaryOperator::@23 [phi:testBinaryOperator::@22->testBinaryOperator::@23]
  __b23_from___b22:
    jmp __b23
    // testBinaryOperator::@23
  __b23:
    // [70] call assertType
    // [96] phi from testBinaryOperator::@23 to assertType [phi:testBinaryOperator::@23->assertType]
  assertType_from___b23:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@23->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@23->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@23->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    jmp __b24
    // testBinaryOperator::@24
  __b24:
    // [71] idx#39 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // [72] call assertType
  // Binary Operations between unsigned dword & other types
    // [96] phi from testBinaryOperator::@24 to assertType [phi:testBinaryOperator::@24->assertType]
  assertType_from___b24:
    // [96] phi idx#106 = idx#39 [phi:testBinaryOperator::@24->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@24->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@24->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [73] phi from testBinaryOperator::@24 to testBinaryOperator::@25 [phi:testBinaryOperator::@24->testBinaryOperator::@25]
  __b25_from___b24:
    jmp __b25
    // testBinaryOperator::@25
  __b25:
    // [74] call assertType
    // [96] phi from testBinaryOperator::@25 to assertType [phi:testBinaryOperator::@25->assertType]
  assertType_from___b25:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@25->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@25->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@25->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [75] phi from testBinaryOperator::@25 to testBinaryOperator::@26 [phi:testBinaryOperator::@25->testBinaryOperator::@26]
  __b26_from___b25:
    jmp __b26
    // testBinaryOperator::@26
  __b26:
    // [76] call assertType
    // [96] phi from testBinaryOperator::@26 to assertType [phi:testBinaryOperator::@26->assertType]
  assertType_from___b26:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@26->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@26->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@26->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [77] phi from testBinaryOperator::@26 to testBinaryOperator::@27 [phi:testBinaryOperator::@26->testBinaryOperator::@27]
  __b27_from___b26:
    jmp __b27
    // testBinaryOperator::@27
  __b27:
    // [78] call assertType
    // [96] phi from testBinaryOperator::@27 to assertType [phi:testBinaryOperator::@27->assertType]
  assertType_from___b27:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@27->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@27->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@27->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [79] phi from testBinaryOperator::@27 to testBinaryOperator::@28 [phi:testBinaryOperator::@27->testBinaryOperator::@28]
  __b28_from___b27:
    jmp __b28
    // testBinaryOperator::@28
  __b28:
    // [80] call assertType
    // [96] phi from testBinaryOperator::@28 to assertType [phi:testBinaryOperator::@28->assertType]
  assertType_from___b28:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@28->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@28->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@28->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [81] phi from testBinaryOperator::@28 to testBinaryOperator::@29 [phi:testBinaryOperator::@28->testBinaryOperator::@29]
  __b29_from___b28:
    jmp __b29
    // testBinaryOperator::@29
  __b29:
    // [82] call assertType
    // [96] phi from testBinaryOperator::@29 to assertType [phi:testBinaryOperator::@29->assertType]
  assertType_from___b29:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@29->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@29->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@29->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    jmp __b30
    // testBinaryOperator::@30
  __b30:
    // [83] idx#46 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // [84] call assertType
  // Binary Operations between signed dword & other types
    // [96] phi from testBinaryOperator::@30 to assertType [phi:testBinaryOperator::@30->assertType]
  assertType_from___b30:
    // [96] phi idx#106 = idx#46 [phi:testBinaryOperator::@30->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@30->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@30->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    // [85] phi from testBinaryOperator::@30 to testBinaryOperator::@31 [phi:testBinaryOperator::@30->testBinaryOperator::@31]
  __b31_from___b30:
    jmp __b31
    // testBinaryOperator::@31
  __b31:
    // [86] call assertType
    // [96] phi from testBinaryOperator::@31 to assertType [phi:testBinaryOperator::@31->assertType]
  assertType_from___b31:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@31->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@31->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@31->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    // [87] phi from testBinaryOperator::@31 to testBinaryOperator::@32 [phi:testBinaryOperator::@31->testBinaryOperator::@32]
  __b32_from___b31:
    jmp __b32
    // testBinaryOperator::@32
  __b32:
    // [88] call assertType
    // [96] phi from testBinaryOperator::@32 to assertType [phi:testBinaryOperator::@32->assertType]
  assertType_from___b32:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@32->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@32->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@32->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    // [89] phi from testBinaryOperator::@32 to testBinaryOperator::@33 [phi:testBinaryOperator::@32->testBinaryOperator::@33]
  __b33_from___b32:
    jmp __b33
    // testBinaryOperator::@33
  __b33:
    // [90] call assertType
    // [96] phi from testBinaryOperator::@33 to assertType [phi:testBinaryOperator::@33->assertType]
  assertType_from___b33:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@33->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@33->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@33->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    // [91] phi from testBinaryOperator::@33 to testBinaryOperator::@34 [phi:testBinaryOperator::@33->testBinaryOperator::@34]
  __b34_from___b33:
    jmp __b34
    // testBinaryOperator::@34
  __b34:
    // [92] call assertType
    // [96] phi from testBinaryOperator::@34 to assertType [phi:testBinaryOperator::@34->assertType]
  assertType_from___b34:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@34->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@34->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@34->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_UNSIGNED_LONG
    jsr assertType
    // [93] phi from testBinaryOperator::@34 to testBinaryOperator::@35 [phi:testBinaryOperator::@34->testBinaryOperator::@35]
  __b35_from___b34:
    jmp __b35
    // testBinaryOperator::@35
  __b35:
    // [94] call assertType
    // [96] phi from testBinaryOperator::@35 to assertType [phi:testBinaryOperator::@35->assertType]
  assertType_from___b35:
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@35->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@35->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@35->assertType#2] -- vbuyy=vbuc1 
    ldy #TYPEID_LONG
    jsr assertType
    jmp __breturn
    // testBinaryOperator::@return
  __breturn:
    // [95] 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.
// void assertType(__register(Y) char t1, __zp(2) char t2)
assertType: {
    .label t2 = 2
    // [97] if(assertType::t1#42==assertType::t2#42) goto assertType::@1 -- vbuyy_eq_vbuz1_then_la1 
    tya
    cmp.z t2
    beq __b1
    jmp __b3
    // assertType::@3
  __b3:
    // [98] COLS[idx#106] = RED -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #RED
    sta COLS,x
    jmp __b2
    // assertType::@2
  __b2:
    // [99] SCREEN[idx#106] = assertType::t1#42 -- pbuc1_derefidx_vbuxx=vbuyy 
    tya
    sta SCREEN,x
    // [100] idx#109 = ++ idx#106 -- vbuxx=_inc_vbuxx 
    inx
    jmp __breturn
    // assertType::@return
  __breturn:
    // [101] return 
    rts
    // assertType::@1
  __b1:
    // [102] COLS[idx#106] = GREEN -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta COLS,x
    jmp __b2
}
  // File Data

ASSEMBLER OPTIMIZATIONS
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 __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
Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction ldy #TYPEID_CHAR with TAY
Replacing instruction ldy #TYPEID_SIGNED_CHAR with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_CHAR with TAY
Replacing instruction ldy #TYPEID_CHAR with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_CHAR with TAY
Replacing instruction ldy #TYPEID_SIGNED_CHAR with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_INT with TAY
Replacing instruction ldy #TYPEID_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_INT with TAY
Replacing instruction ldy #TYPEID_INT with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Replacing instruction ldy #TYPEID_UNSIGNED_LONG with TAY
Replacing instruction ldy #TYPEID_LONG with TAY
Removing instruction __b3_from___b1:
Removing instruction testUnaryOperator_from___b3:
Removing instruction __b4_from___b3:
Removing instruction testBinaryOperator_from___b4:
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:
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 __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:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __b1_from_main:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction assertType_from_testUnaryOperator:
Removing instruction __b1:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __breturn:
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 assertType_from___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:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
__constant char * const COLS = (char *) 55296
__constant const char GREEN = 5
__constant const char RED = 2
__constant char * const SCREEN = (char *) 1024
__constant char TYPEID_CHAR = 1
__constant char TYPEID_INT = 4
__constant char TYPEID_LONG = 6
__constant char TYPEID_SIGNED_CHAR = 2
__constant char TYPEID_UNSIGNED_INT = 3
__constant char TYPEID_UNSIGNED_LONG = 5
void assertType(char t1 , char t2)
char assertType::t1
char assertType::t1#42 // reg byte y 50.5
char assertType::t2
char assertType::t2#42 // t2 zp[1]:2 101.0
char idx
char idx#106 // reg byte x 166.60000000000005
char idx#109 // reg byte x 6.973684210526315
char idx#18 // reg byte x 22.0
char idx#25 // reg byte x 22.0
char idx#39 // reg byte x 22.0
char idx#46 // reg byte x 22.0
void main()
char *main::s
char *main::s#1 // s zp[2]:3 22.0
char *main::s#2 // s zp[2]:3 14.666666666666666
void testBinaryOperator()
void testUnaryOperator()

zp[2]:3 [ main::s#2 main::s#1 ]
reg byte y [ assertType::t1#42 ]
zp[1]:2 [ assertType::t2#42 ]
reg byte x [ idx#106 idx#109 idx#25 idx#39 idx#46 idx#18 ]


FINAL ASSEMBLER
Score: 1159

  // File Comments
// Tests different integer literal types
  // Upstart
  // Commodore 64 PRG executable file
.file [name="int-conversion.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .const RED = 2
  .const GREEN = 5
  .const TYPEID_CHAR = 1
  .const TYPEID_SIGNED_CHAR = 2
  .const TYPEID_UNSIGNED_INT = 3
  .const TYPEID_INT = 4
  .const TYPEID_UNSIGNED_LONG = 5
  .const TYPEID_LONG = 6
  .label SCREEN = $400
  .label COLS = $d800
.segment Code
  // main
main: {
    .label s = 3
    // [1] phi from main to main::@1 [phi:main->main::@1]
    // [1] phi main::s#2 = 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++)
    // [2] if(main::s#2<SCREEN+$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
  !:
    // [3] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
    // main::@3
    // testUnaryOperator()
    // [4] call testUnaryOperator
    // [10] phi from main::@3 to testUnaryOperator [phi:main::@3->testUnaryOperator]
    jsr testUnaryOperator
    // [5] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
    // main::@4
    // testBinaryOperator()
    // [6] call testBinaryOperator
    // [23] phi from main::@4 to testBinaryOperator [phi:main::@4->testBinaryOperator]
    jsr testBinaryOperator
    // main::@return
    // }
    // [7] return 
    rts
    // main::@2
  __b2:
    // *s = ' '
    // [8] *main::s#2 = ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (s),y
    // for(byte* s=SCREEN;s<SCREEN+1000;s++)
    // [9] main::s#1 = ++ main::s#2 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
    // [1] phi main::s#2 = main::s#1 [phi:main::@2->main::@1#0] -- register_copy 
    jmp __b1
}
  // testUnaryOperator
testUnaryOperator: {
    // assertType(typeid(-12ub), typeid(unsigned byte))
    // [11] call assertType
  // Unary Operations
    // [96] phi from testUnaryOperator to assertType [phi:testUnaryOperator->assertType]
    // [96] phi idx#106 = 0 [phi:testUnaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #0
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testUnaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testUnaryOperator->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [12] phi from testUnaryOperator to testUnaryOperator::@1 [phi:testUnaryOperator->testUnaryOperator::@1]
    // testUnaryOperator::@1
    // assertType(typeid(-12sb), typeid(signed byte))
    // [13] call assertType
    // [96] phi from testUnaryOperator::@1 to assertType [phi:testUnaryOperator::@1->assertType]
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@1->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_SIGNED_CHAR [phi:testUnaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_SIGNED_CHAR [phi:testUnaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [14] phi from testUnaryOperator::@1 to testUnaryOperator::@2 [phi:testUnaryOperator::@1->testUnaryOperator::@2]
    // testUnaryOperator::@2
    // assertType(typeid(-12uw), typeid(unsigned word))
    // [15] call assertType
    // [96] phi from testUnaryOperator::@2 to assertType [phi:testUnaryOperator::@2->assertType]
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@2->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testUnaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testUnaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [16] phi from testUnaryOperator::@2 to testUnaryOperator::@3 [phi:testUnaryOperator::@2->testUnaryOperator::@3]
    // testUnaryOperator::@3
    // assertType(typeid(-12sw), typeid(signed word))
    // [17] call assertType
    // [96] phi from testUnaryOperator::@3 to assertType [phi:testUnaryOperator::@3->assertType]
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@3->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testUnaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testUnaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [18] phi from testUnaryOperator::@3 to testUnaryOperator::@4 [phi:testUnaryOperator::@3->testUnaryOperator::@4]
    // testUnaryOperator::@4
    // assertType(typeid(-12ud), typeid(unsigned dword))
    // [19] call assertType
    // [96] phi from testUnaryOperator::@4 to assertType [phi:testUnaryOperator::@4->assertType]
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@4->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testUnaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testUnaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [20] phi from testUnaryOperator::@4 to testUnaryOperator::@5 [phi:testUnaryOperator::@4->testUnaryOperator::@5]
    // testUnaryOperator::@5
    // assertType(typeid(-12sd), typeid(signed dword))
    // [21] call assertType
    // [96] phi from testUnaryOperator::@5 to assertType [phi:testUnaryOperator::@5->assertType]
    // [96] phi idx#106 = idx#109 [phi:testUnaryOperator::@5->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testUnaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testUnaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testUnaryOperator::@return
    // }
    // [22] return 
    rts
}
  // testBinaryOperator
testBinaryOperator: {
    // assertType(typeid(12ub+12ub), typeid(unsigned byte))
    // [24] call assertType
  // Binary Operations between unsigned byte & other types
    // [96] phi from testBinaryOperator to assertType [phi:testBinaryOperator->assertType]
    // [96] phi idx#106 = $28 [phi:testBinaryOperator->assertType#0] -- vbuxx=vbuc1 
    ldx #$28
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testBinaryOperator->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testBinaryOperator->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [25] phi from testBinaryOperator to testBinaryOperator::@1 [phi:testBinaryOperator->testBinaryOperator::@1]
    // testBinaryOperator::@1
    // assertType(typeid(12ub+12sb), typeid(unsigned byte))
    // [26] call assertType
    // [96] phi from testBinaryOperator::@1 to assertType [phi:testBinaryOperator::@1->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@1->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testBinaryOperator::@1->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testBinaryOperator::@1->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [27] phi from testBinaryOperator::@1 to testBinaryOperator::@2 [phi:testBinaryOperator::@1->testBinaryOperator::@2]
    // testBinaryOperator::@2
    // assertType(typeid(12ub+12uw), typeid(unsigned word))
    // [28] call assertType
    // [96] phi from testBinaryOperator::@2 to assertType [phi:testBinaryOperator::@2->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@2->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@2->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@2->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [29] phi from testBinaryOperator::@2 to testBinaryOperator::@3 [phi:testBinaryOperator::@2->testBinaryOperator::@3]
    // testBinaryOperator::@3
    // assertType(typeid(12ub+12sw), typeid(signed word))
    // [30] call assertType
    // [96] phi from testBinaryOperator::@3 to assertType [phi:testBinaryOperator::@3->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@3->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@3->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@3->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [31] phi from testBinaryOperator::@3 to testBinaryOperator::@4 [phi:testBinaryOperator::@3->testBinaryOperator::@4]
    // testBinaryOperator::@4
    // assertType(typeid(12ub+12ud), typeid(unsigned dword))
    // [32] call assertType
    // [96] phi from testBinaryOperator::@4 to assertType [phi:testBinaryOperator::@4->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@4->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@4->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@4->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [33] phi from testBinaryOperator::@4 to testBinaryOperator::@5 [phi:testBinaryOperator::@4->testBinaryOperator::@5]
    // testBinaryOperator::@5
    // assertType(typeid(12ub+12sd), typeid(signed dword))
    // [34] call assertType
    // [96] phi from testBinaryOperator::@5 to assertType [phi:testBinaryOperator::@5->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@5->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@5->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@5->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@6
    // idx++;
    // [35] idx#18 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12sb+12ub), typeid(unsigned byte))
    // [36] call assertType
  // Binary Operations between signed byte & other types
    // [96] phi from testBinaryOperator::@6 to assertType [phi:testBinaryOperator::@6->assertType]
    // [96] phi idx#106 = idx#18 [phi:testBinaryOperator::@6->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_CHAR [phi:testBinaryOperator::@6->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_CHAR [phi:testBinaryOperator::@6->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [37] phi from testBinaryOperator::@6 to testBinaryOperator::@7 [phi:testBinaryOperator::@6->testBinaryOperator::@7]
    // testBinaryOperator::@7
    // assertType(typeid(12sb+12sb), typeid(signed byte))
    // [38] call assertType
    // [96] phi from testBinaryOperator::@7 to assertType [phi:testBinaryOperator::@7->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@7->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_SIGNED_CHAR [phi:testBinaryOperator::@7->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_SIGNED_CHAR
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_SIGNED_CHAR [phi:testBinaryOperator::@7->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [39] phi from testBinaryOperator::@7 to testBinaryOperator::@8 [phi:testBinaryOperator::@7->testBinaryOperator::@8]
    // testBinaryOperator::@8
    // assertType(typeid(12sb+12uw), typeid(unsigned word))
    // [40] call assertType
    // [96] phi from testBinaryOperator::@8 to assertType [phi:testBinaryOperator::@8->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@8->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@8->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@8->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [41] phi from testBinaryOperator::@8 to testBinaryOperator::@9 [phi:testBinaryOperator::@8->testBinaryOperator::@9]
    // testBinaryOperator::@9
    // assertType(typeid(12sb+12sw), typeid(signed word))
    // [42] call assertType
    // [96] phi from testBinaryOperator::@9 to assertType [phi:testBinaryOperator::@9->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@9->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@9->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@9->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [43] phi from testBinaryOperator::@9 to testBinaryOperator::@10 [phi:testBinaryOperator::@9->testBinaryOperator::@10]
    // testBinaryOperator::@10
    // assertType(typeid(12sb+12ud), typeid(unsigned dword))
    // [44] call assertType
    // [96] phi from testBinaryOperator::@10 to assertType [phi:testBinaryOperator::@10->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@10->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@10->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@10->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [45] phi from testBinaryOperator::@10 to testBinaryOperator::@11 [phi:testBinaryOperator::@10->testBinaryOperator::@11]
    // testBinaryOperator::@11
    // assertType(typeid(12sb+12sd), typeid(signed dword))
    // [46] call assertType
    // [96] phi from testBinaryOperator::@11 to assertType [phi:testBinaryOperator::@11->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@11->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@11->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@11->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@12
    // idx++;
    // [47] idx#25 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12uw+12ub), typeid(unsigned word))
    // [48] call assertType
  // Binary Operations between unsigned word & other types
    // [96] phi from testBinaryOperator::@12 to assertType [phi:testBinaryOperator::@12->assertType]
    // [96] phi idx#106 = idx#25 [phi:testBinaryOperator::@12->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@12->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@12->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [49] phi from testBinaryOperator::@12 to testBinaryOperator::@13 [phi:testBinaryOperator::@12->testBinaryOperator::@13]
    // testBinaryOperator::@13
    // assertType(typeid(12uw+12sb), typeid(unsigned word))
    // [50] call assertType
    // [96] phi from testBinaryOperator::@13 to assertType [phi:testBinaryOperator::@13->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@13->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@13->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@13->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [51] phi from testBinaryOperator::@13 to testBinaryOperator::@14 [phi:testBinaryOperator::@13->testBinaryOperator::@14]
    // testBinaryOperator::@14
    // assertType(typeid(12uw+12uw), typeid(unsigned word))
    // [52] call assertType
    // [96] phi from testBinaryOperator::@14 to assertType [phi:testBinaryOperator::@14->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@14->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@14->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@14->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [53] phi from testBinaryOperator::@14 to testBinaryOperator::@15 [phi:testBinaryOperator::@14->testBinaryOperator::@15]
    // testBinaryOperator::@15
    // assertType(typeid(12uw+12sw), typeid(unsigned word))
    // [54] call assertType
    // [96] phi from testBinaryOperator::@15 to assertType [phi:testBinaryOperator::@15->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@15->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@15->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@15->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [55] phi from testBinaryOperator::@15 to testBinaryOperator::@16 [phi:testBinaryOperator::@15->testBinaryOperator::@16]
    // testBinaryOperator::@16
    // assertType(typeid(12uw+12ud), typeid(unsigned dword))
    // [56] call assertType
    // [96] phi from testBinaryOperator::@16 to assertType [phi:testBinaryOperator::@16->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@16->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@16->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@16->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [57] phi from testBinaryOperator::@16 to testBinaryOperator::@17 [phi:testBinaryOperator::@16->testBinaryOperator::@17]
    // testBinaryOperator::@17
    // assertType(typeid(12uw+12sd), typeid(signed dword))
    // [58] call assertType
    // [96] phi from testBinaryOperator::@17 to assertType [phi:testBinaryOperator::@17->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@17->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@17->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@17->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [59] phi from testBinaryOperator::@17 to testBinaryOperator::@18 [phi:testBinaryOperator::@17->testBinaryOperator::@18]
    // testBinaryOperator::@18
    // assertType(typeid(12sw+12ub), typeid(signed word))
    // [60] call assertType
  // Binary Operations between signed word & other types
    // [96] phi from testBinaryOperator::@18 to assertType [phi:testBinaryOperator::@18->assertType]
    // [96] phi idx#106 = $50 [phi:testBinaryOperator::@18->assertType#0] -- vbuxx=vbuc1 
    ldx #$50
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@18->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@18->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [61] phi from testBinaryOperator::@18 to testBinaryOperator::@19 [phi:testBinaryOperator::@18->testBinaryOperator::@19]
    // testBinaryOperator::@19
    // assertType(typeid(12sw+12sb), typeid(signed word))
    // [62] call assertType
    // [96] phi from testBinaryOperator::@19 to assertType [phi:testBinaryOperator::@19->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@19->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@19->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@19->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [63] phi from testBinaryOperator::@19 to testBinaryOperator::@20 [phi:testBinaryOperator::@19->testBinaryOperator::@20]
    // testBinaryOperator::@20
    // assertType(typeid(12sw+12uw), typeid(unsigned word))
    // [64] call assertType
    // [96] phi from testBinaryOperator::@20 to assertType [phi:testBinaryOperator::@20->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@20->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@20->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_INT [phi:testBinaryOperator::@20->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [65] phi from testBinaryOperator::@20 to testBinaryOperator::@21 [phi:testBinaryOperator::@20->testBinaryOperator::@21]
    // testBinaryOperator::@21
    // assertType(typeid(12sw+12sw), typeid(signed word))
    // [66] call assertType
    // [96] phi from testBinaryOperator::@21 to assertType [phi:testBinaryOperator::@21->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@21->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_INT [phi:testBinaryOperator::@21->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_INT
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_INT [phi:testBinaryOperator::@21->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [67] phi from testBinaryOperator::@21 to testBinaryOperator::@22 [phi:testBinaryOperator::@21->testBinaryOperator::@22]
    // testBinaryOperator::@22
    // assertType(typeid(12sw+12ud), typeid(unsigned dword))
    // [68] call assertType
    // [96] phi from testBinaryOperator::@22 to assertType [phi:testBinaryOperator::@22->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@22->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@22->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@22->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [69] phi from testBinaryOperator::@22 to testBinaryOperator::@23 [phi:testBinaryOperator::@22->testBinaryOperator::@23]
    // testBinaryOperator::@23
    // assertType(typeid(12sw+12sd), typeid(signed dword))
    // [70] call assertType
    // [96] phi from testBinaryOperator::@23 to assertType [phi:testBinaryOperator::@23->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@23->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@23->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@23->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@24
    // idx++;
    // [71] idx#39 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12ud+12ub), typeid(unsigned dword))
    // [72] call assertType
  // Binary Operations between unsigned dword & other types
    // [96] phi from testBinaryOperator::@24 to assertType [phi:testBinaryOperator::@24->assertType]
    // [96] phi idx#106 = idx#39 [phi:testBinaryOperator::@24->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@24->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@24->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [73] phi from testBinaryOperator::@24 to testBinaryOperator::@25 [phi:testBinaryOperator::@24->testBinaryOperator::@25]
    // testBinaryOperator::@25
    // assertType(typeid(12ud+12sb), typeid(unsigned dword))
    // [74] call assertType
    // [96] phi from testBinaryOperator::@25 to assertType [phi:testBinaryOperator::@25->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@25->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@25->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@25->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [75] phi from testBinaryOperator::@25 to testBinaryOperator::@26 [phi:testBinaryOperator::@25->testBinaryOperator::@26]
    // testBinaryOperator::@26
    // assertType(typeid(12ud+12uw), typeid(unsigned dword))
    // [76] call assertType
    // [96] phi from testBinaryOperator::@26 to assertType [phi:testBinaryOperator::@26->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@26->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@26->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@26->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [77] phi from testBinaryOperator::@26 to testBinaryOperator::@27 [phi:testBinaryOperator::@26->testBinaryOperator::@27]
    // testBinaryOperator::@27
    // assertType(typeid(12ud+12sw), typeid(unsigned dword))
    // [78] call assertType
    // [96] phi from testBinaryOperator::@27 to assertType [phi:testBinaryOperator::@27->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@27->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@27->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@27->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [79] phi from testBinaryOperator::@27 to testBinaryOperator::@28 [phi:testBinaryOperator::@27->testBinaryOperator::@28]
    // testBinaryOperator::@28
    // assertType(typeid(12ud+12ud), typeid(unsigned dword))
    // [80] call assertType
    // [96] phi from testBinaryOperator::@28 to assertType [phi:testBinaryOperator::@28->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@28->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@28->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@28->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [81] phi from testBinaryOperator::@28 to testBinaryOperator::@29 [phi:testBinaryOperator::@28->testBinaryOperator::@29]
    // testBinaryOperator::@29
    // assertType(typeid(12ud+12sd), typeid(unsigned dword))
    // [82] call assertType
    // [96] phi from testBinaryOperator::@29 to assertType [phi:testBinaryOperator::@29->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@29->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@29->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@29->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@30
    // idx++;
    // [83] idx#46 = ++ idx#109 -- vbuxx=_inc_vbuxx 
    inx
    // assertType(typeid(12sd+12ub), typeid(signed dword))
    // [84] call assertType
  // Binary Operations between signed dword & other types
    // [96] phi from testBinaryOperator::@30 to assertType [phi:testBinaryOperator::@30->assertType]
    // [96] phi idx#106 = idx#46 [phi:testBinaryOperator::@30->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@30->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@30->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [85] phi from testBinaryOperator::@30 to testBinaryOperator::@31 [phi:testBinaryOperator::@30->testBinaryOperator::@31]
    // testBinaryOperator::@31
    // assertType(typeid(12sd+12sb), typeid(signed dword))
    // [86] call assertType
    // [96] phi from testBinaryOperator::@31 to assertType [phi:testBinaryOperator::@31->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@31->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@31->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@31->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [87] phi from testBinaryOperator::@31 to testBinaryOperator::@32 [phi:testBinaryOperator::@31->testBinaryOperator::@32]
    // testBinaryOperator::@32
    // assertType(typeid(12sd+12uw), typeid(signed dword))
    // [88] call assertType
    // [96] phi from testBinaryOperator::@32 to assertType [phi:testBinaryOperator::@32->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@32->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@32->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@32->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [89] phi from testBinaryOperator::@32 to testBinaryOperator::@33 [phi:testBinaryOperator::@32->testBinaryOperator::@33]
    // testBinaryOperator::@33
    // assertType(typeid(12sd+12sw), typeid(signed dword))
    // [90] call assertType
    // [96] phi from testBinaryOperator::@33 to assertType [phi:testBinaryOperator::@33->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@33->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@33->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@33->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [91] phi from testBinaryOperator::@33 to testBinaryOperator::@34 [phi:testBinaryOperator::@33->testBinaryOperator::@34]
    // testBinaryOperator::@34
    // assertType(typeid(12sd+12ud), typeid(unsigned dword))
    // [92] call assertType
    // [96] phi from testBinaryOperator::@34 to assertType [phi:testBinaryOperator::@34->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@34->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@34->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_UNSIGNED_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_UNSIGNED_LONG [phi:testBinaryOperator::@34->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // [93] phi from testBinaryOperator::@34 to testBinaryOperator::@35 [phi:testBinaryOperator::@34->testBinaryOperator::@35]
    // testBinaryOperator::@35
    // assertType(typeid(12sd+12sd), typeid(signed dword))
    // [94] call assertType
    // [96] phi from testBinaryOperator::@35 to assertType [phi:testBinaryOperator::@35->assertType]
    // [96] phi idx#106 = idx#109 [phi:testBinaryOperator::@35->assertType#0] -- register_copy 
    // [96] phi assertType::t2#42 = TYPEID_LONG [phi:testBinaryOperator::@35->assertType#1] -- vbuz1=vbuc1 
    lda #TYPEID_LONG
    sta.z assertType.t2
    // [96] phi assertType::t1#42 = TYPEID_LONG [phi:testBinaryOperator::@35->assertType#2] -- vbuyy=vbuc1 
    tay
    jsr assertType
    // testBinaryOperator::@return
    // }
    // [95] 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.
// void assertType(__register(Y) char t1, __zp(2) char t2)
assertType: {
    .label t2 = 2
    // if(t1==t2)
    // [97] if(assertType::t1#42==assertType::t2#42) goto assertType::@1 -- vbuyy_eq_vbuz1_then_la1 
    tya
    cmp.z t2
    beq __b1
    // assertType::@3
    // COLS[idx] = RED
    // [98] COLS[idx#106] = RED -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #RED
    sta COLS,x
    // assertType::@2
  __b2:
    // SCREEN[idx++] = t1
    // [99] SCREEN[idx#106] = assertType::t1#42 -- pbuc1_derefidx_vbuxx=vbuyy 
    tya
    sta SCREEN,x
    // SCREEN[idx++] = t1;
    // [100] idx#109 = ++ idx#106 -- vbuxx=_inc_vbuxx 
    inx
    // assertType::@return
    // }
    // [101] return 
    rts
    // assertType::@1
  __b1:
    // COLS[idx] = GREEN
    // [102] COLS[idx#106] = GREEN -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta COLS,x
    jmp __b2
}
  // File Data

