@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  [4] phi()
  to:main::@1
main::@1: scope:[main]  from main main::@3
  [5] (byte) main::x#2 ← phi( main/(byte) 0 main::@3/(byte) main::x#1 )
  [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2
  [7] (byte) textbox::x2#0 ← (byte~) main::$3 + (byte) 1
  [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a
  [9] (byte) textbox::x1#0 ← (byte) main::x#2
  [10] (byte) textbox::y1#0 ← (byte) main::x#2
  [11] call textbox 
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [12] (word) main::wait#2 ← phi( main::@2/(word) main::wait#1 main::@1/(byte) 0 )
  [13] (word) main::wait#1 ← ++ (word) main::wait#2
  [14] if((word) main::wait#1<(word) $88b8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2
  [16] if((byte) main::x#1<(byte) $f) goto main::@1
  to:main::@4
main::@4: scope:[main]  from main::@3
  [17] phi()
  [18] call textbox 
  to:main::@6
main::@6: scope:[main]  from main::@4
  [19] phi()
  [20] call textbox 
  to:main::@7
main::@7: scope:[main]  from main::@6
  [21] phi()
  [22] call textbox 
  to:main::@5
main::@5: scope:[main]  from main::@5 main::@7
  [23] phi()
  to:main::@5
textbox: scope:[textbox]  from main::@1 main::@4 main::@6 main::@7
  [24] (byte*) textbox::text#12 ← phi( main::@1/(const byte[]) text2#0 main::@4/(const byte[]) text#0 main::@6/(const byte[]) text#0 main::@7/(const byte[]) text#0 )
  [24] (byte) textbox::y2#4 ← phi( main::@1/(byte) textbox::y2#0 main::@4/(byte) $18 main::@6/(byte) 9 main::@7/(byte) $18 )
  [24] (byte) textbox::x2#4 ← phi( main::@1/(byte) textbox::x2#0 main::@4/(byte) $14 main::@6/(byte) $25 main::@7/(byte) $27 )
  [24] (byte) textbox::y1#4 ← phi( main::@1/(byte) textbox::y1#0 main::@4/(byte) $c main::@6/(byte) 3 main::@7/(byte) 8 )
  [24] (byte) textbox::x1#4 ← phi( main::@1/(byte) textbox::x1#0 main::@4/(byte) 0 main::@6/(byte) 3 main::@7/(byte) $1e )
  [25] (byte) draw_window::x1#0 ← (byte) textbox::x1#4
  [26] (byte) draw_window::y1#0 ← (byte) textbox::y1#4
  [27] (byte) draw_window::x2#0 ← (byte) textbox::x2#4
  [28] (byte) draw_window::y2#0 ← (byte) textbox::y2#4
  [29] call draw_window 
  to:textbox::@12
textbox::@12: scope:[textbox]  from textbox
  [30] (byte) textbox::y#0 ← (byte) textbox::y1#4 + (byte) 1
  [31] (byte) textbox::x#0 ← (byte) textbox::x1#4 + (byte) 1
  [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2
  [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0
  [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3
  [35] if((byte) textbox::x#0==(byte) textbox::x2#4) goto textbox::@return
  to:textbox::@13
textbox::@13: scope:[textbox]  from textbox::@12
  [36] if((byte) textbox::y#0==(byte) textbox::y2#4) goto textbox::@return
  to:textbox::@1
textbox::@1: scope:[textbox]  from textbox::@13 textbox::@8
  [37] (byte) textbox::y#12 ← phi( textbox::@8/(byte) textbox::y#11 textbox::@13/(byte) textbox::y#0 )
  [37] (byte) textbox::i#2 ← phi( textbox::@8/(byte) textbox::i#1 textbox::@13/(byte) 0 )
  [37] (byte) textbox::x#10 ← phi( textbox::@8/(byte) textbox::x#7 textbox::@13/(byte) textbox::x#0 )
  [37] (word) textbox::z#3 ← phi( textbox::@8/(word) textbox::z#4 textbox::@13/(word) textbox::z#0 )
  [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10
  [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8
  [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2)
  [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2
  to:textbox::@10
textbox::@10: scope:[textbox]  from textbox::@1
  [42] (byte) textbox::ls#0 ← (byte) textbox::i#2 + (byte) 1
  to:textbox::@3
textbox::@3: scope:[textbox]  from textbox::@10 textbox::@4
  [43] (byte) textbox::c#2 ← phi( textbox::@10/(byte) 0 textbox::@4/(byte) textbox::c#1 )
  [43] (byte) textbox::ls#2 ← phi( textbox::@10/(byte) textbox::ls#0 textbox::@4/(byte) textbox::ls#1 )
  [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5
  to:textbox::@14
textbox::@14: scope:[textbox]  from textbox::@3
  [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4
  to:textbox::@5
textbox::@5: scope:[textbox]  from textbox::@14 textbox::@3
  [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10
  [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4
  [48] if((byte~) textbox::$15<(byte) textbox::x2#4) goto textbox::@2
  to:textbox::@15
textbox::@15: scope:[textbox]  from textbox::@5
  [49] if((byte) textbox::c#2<(byte~) textbox::$17) goto textbox::@6
  to:textbox::@2
textbox::@2: scope:[textbox]  from textbox::@1 textbox::@15 textbox::@5 textbox::@7
  [50] (word) textbox::z#5 ← phi( textbox::@7/(word) textbox::z#1 textbox::@1/(word) textbox::z#3 textbox::@5/(word) textbox::z#3 )
  [50] (byte) textbox::y#5 ← phi( textbox::@7/(byte) textbox::y#1 textbox::@1/(byte) textbox::y#12 textbox::@5/(byte) textbox::y#12 )
  [50] (byte) textbox::x#5 ← phi( textbox::@7/(byte~) textbox::x#15 textbox::@1/(byte) textbox::x#10 textbox::@5/(byte) textbox::x#10 )
  [51] (byte) textbox::i#1 ← ++ (byte) textbox::i#2
  [52] (byte) textbox::x#1 ← ++ (byte) textbox::x#5
  [53] if((byte) textbox::x#1!=(byte) textbox::x2#4) goto textbox::@8
  to:textbox::@11
textbox::@11: scope:[textbox]  from textbox::@2
  [54] (byte) textbox::x#12 ← (byte) textbox::x1#4 + (byte) 1
  [55] (byte) textbox::y#2 ← ++ (byte) textbox::y#5
  [56] if((byte) textbox::y#2!=(byte) textbox::y2#4) goto textbox::@9
  to:textbox::@return
textbox::@return: scope:[textbox]  from textbox::@11 textbox::@12 textbox::@13 textbox::@6 textbox::@8
  [57] return 
  to:@return
textbox::@9: scope:[textbox]  from textbox::@11
  [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2
  [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2
  [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3
  to:textbox::@8
textbox::@8: scope:[textbox]  from textbox::@2 textbox::@9
  [61] (byte) textbox::y#11 ← phi( textbox::@9/(byte) textbox::y#2 textbox::@2/(byte) textbox::y#5 )
  [61] (byte) textbox::x#7 ← phi( textbox::@9/(byte) textbox::x#12 textbox::@2/(byte) textbox::x#1 )
  [61] (word) textbox::z#4 ← phi( textbox::@9/(word) textbox::z#2 textbox::@2/(word) textbox::z#5 )
  [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1
  to:textbox::@return
textbox::@6: scope:[textbox]  from textbox::@15
  [63] (byte) textbox::y#1 ← ++ (byte) textbox::y#12
  [64] if((byte) textbox::y#1!=(byte) textbox::y2#4) goto textbox::@7
  to:textbox::@return
textbox::@7: scope:[textbox]  from textbox::@6
  [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2
  [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1
  [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3
  [68] (byte~) textbox::x#15 ← (byte) textbox::x1#4
  to:textbox::@2
textbox::@4: scope:[textbox]  from textbox::@14
  [69] (byte) textbox::ls#1 ← ++ (byte) textbox::ls#2
  [70] (byte) textbox::c#1 ← ++ (byte) textbox::c#2
  to:textbox::@3
draw_window: scope:[draw_window]  from textbox
  [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2
  [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0
  [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3
  [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2
  [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0
  [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3
  [77] (byte) draw_window::x#0 ← (byte) draw_window::x1#0 + (byte) 1
  to:draw_window::@1
draw_window::@1: scope:[draw_window]  from draw_window draw_window::@1
  [78] (byte) draw_window::x#2 ← phi( draw_window/(byte) draw_window::x#0 draw_window::@1/(byte) draw_window::x#1 )
  [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2
  [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13
  [81] *((byte*~) draw_window::$27) ← (byte) $43
  [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2
  [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14
  [84] *((byte*~) draw_window::$28) ← (byte) $43
  [85] (byte) draw_window::x#1 ← ++ (byte) draw_window::x#2
  [86] if((byte) draw_window::x#1<(byte) draw_window::x2#0) goto draw_window::@1
  to:draw_window::@2
draw_window::@2: scope:[draw_window]  from draw_window::@1
  [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0
  [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2
  [89] *((byte*~) draw_window::$29) ← (byte) $55
  [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0
  [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3
  [92] *((byte*~) draw_window::$30) ← (byte) $49
  [93] (byte) draw_window::y#0 ← (byte) draw_window::y1#0 + (byte) 1
  to:draw_window::@3
draw_window::@3: scope:[draw_window]  from draw_window::@2 draw_window::@3
  [94] (byte) draw_window::y#2 ← phi( draw_window::@2/(byte) draw_window::y#0 draw_window::@3/(byte) draw_window::y#1 )
  [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2
  [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2
  [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3
  [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0
  [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18
  [100] *((byte*~) draw_window::$31) ← (byte) $42
  [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0
  [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19
  [103] *((byte*~) draw_window::$32) ← (byte) $42
  [104] (byte) draw_window::y#1 ← ++ (byte) draw_window::y#2
  [105] if((byte) draw_window::y#1<(byte) draw_window::y2#0) goto draw_window::@3
  to:draw_window::@4
draw_window::@4: scope:[draw_window]  from draw_window::@3
  [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0
  [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4
  [108] *((byte*~) draw_window::$33) ← (byte) $4a
  [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0
  [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5
  [111] *((byte*~) draw_window::$34) ← (byte) $4b
  [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0
  [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0
  [114] if((byte~) draw_window::$6<(byte) 1+(byte) 1) goto draw_window::@return
  to:draw_window::@9
draw_window::@9: scope:[draw_window]  from draw_window::@4
  [115] if((byte~) draw_window::$8>=(byte) 1+(byte) 1) goto draw_window::@5
  to:draw_window::@return
draw_window::@return: scope:[draw_window]  from draw_window::@4 draw_window::@8 draw_window::@9
  [116] return 
  to:@return
draw_window::@5: scope:[draw_window]  from draw_window::@9
  [117] (byte) draw_window::y3#0 ← (byte) draw_window::y1#0 + (byte) 1
  to:draw_window::@6
draw_window::@6: scope:[draw_window]  from draw_window::@5 draw_window::@8
  [118] (byte) draw_window::y3#2 ← phi( draw_window::@5/(byte) draw_window::y3#0 draw_window::@8/(byte) draw_window::y3#1 )
  [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2
  [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2
  [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3
  [122] (byte) draw_window::x3#0 ← (byte) draw_window::x1#0 + (byte) 1
  to:draw_window::@7
draw_window::@7: scope:[draw_window]  from draw_window::@6 draw_window::@7
  [123] (byte) draw_window::x3#2 ← phi( draw_window::@6/(byte) draw_window::x3#0 draw_window::@7/(byte) draw_window::x3#1 )
  [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2
  [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24
  [126] *((byte*~) draw_window::$35) ← (byte) $20
  [127] (byte) draw_window::x3#1 ← ++ (byte) draw_window::x3#2
  [128] if((byte) draw_window::x3#1<(byte) draw_window::x2#0) goto draw_window::@7
  to:draw_window::@8
draw_window::@8: scope:[draw_window]  from draw_window::@7
  [129] (byte) draw_window::y3#1 ← ++ (byte) draw_window::y3#2
  [130] if((byte) draw_window::y3#1<(byte) draw_window::y2#0) goto draw_window::@6
  to:draw_window::@return
