
void main()
main: scope:[main]  from
  [0] phi()
  [1] call init
  to:main::@1
main::@1: scope:[main]  from main main::@4
  [2] main::x#2 = phi( main::@4/main::x#1, main/0 )
  [3] if(main::x#2<$10) goto main::@2
  to:main::@5
main::@5: scope:[main]  from main::@1 main::@5
  [4] phi()
  to:main::@5
main::@2: scope:[main]  from main::@1 main::@6
  [5] main::y#2 = phi( main::@1/0, main::@6/main::y#1 )
  [6] if(main::y#2<9) goto main::@3
  to:main::@4
main::@4: scope:[main]  from main::@2
  [7] main::x#1 = ++ main::x#2
  to:main::@1
main::@3: scope:[main]  from main::@2
  [8] main::z#0 = main::x#2 + main::y#2
  [9] main::tile#0 = level_address[main::z#0]
  [10] draw_block::tileno#0 = main::tile#0
  [11] draw_block::x#0 = main::x#2
  [12] draw_block::y#0 = main::y#2
  [13] call draw_block
  to:main::@6
main::@6: scope:[main]  from main::@3
  [14] main::y#1 = ++ main::y#2
  to:main::@2

void init()
init: scope:[init]  from main
  [15] phi()
  [16] call init_sprites
  to:init::@2
init::@2: scope:[init]  from init
  [17] phi()
  [18] call memset
  to:init::@3
init::@3: scope:[init]  from init::@2
  [19] phi()
  [20] call memset
  to:init::toD0181
init::toD0181: scope:[init]  from init::@3
  [21] phi()
  to:init::@1
init::@1: scope:[init]  from init::toD0181
  [22] *D018 = init::toD0181_return#0
  asm { lda#$5b sta$d011  }
  [24] *BORDER_COLOR = BLACK
  [25] *BG_COLOR = BLACK
  [26] *BG_COLOR1 = RED
  [27] *BG_COLOR2 = BLUE
  [28] *BG_COLOR3 = GREEN
  to:init::@return
init::@return: scope:[init]  from init::@1
  [29] return 
  to:@return

void draw_block(char tileno , char x , char y , char color)
draw_block: scope:[draw_block]  from main::@3
  [30] draw_block::tileno#1 = draw_block::tileno#0 << 2
  [31] draw_block::x1#0 = draw_block::x#0 << 1
  [32] draw_block::y#1 = draw_block::y#0 << 1
  [33] mul8u::a#1 = draw_block::y#1
  [34] call mul8u
  [35] mul8u::return#2 = mul8u::res#2
  to:draw_block::@1
draw_block::@1: scope:[draw_block]  from draw_block
  [36] draw_block::z#0 = mul8u::return#2
  [37] draw_block::z#1 = draw_block::z#0 + draw_block::x1#0
  [38] draw_block::drawtile#0 = tileset[draw_block::tileno#1]
  [39] draw_block::$11 = screen + draw_block::z#1
  [40] *draw_block::$11 = draw_block::drawtile#0
  [41] draw_block::$12 = colors + draw_block::z#1
  [42] *draw_block::$12 = YELLOW
  [43] draw_block::$6 = draw_block::z#1 + 1
  [44] draw_block::$13 = screen + draw_block::$6
  [45] *draw_block::$13 = 1
  [46] draw_block::$14 = colors + draw_block::$6
  [47] *draw_block::$14 = YELLOW
  [48] draw_block::$8 = draw_block::z#1 + $28
  [49] draw_block::$15 = screen + draw_block::$8
  [50] *draw_block::$15 = 2
  [51] draw_block::$16 = colors + draw_block::$8
  [52] *draw_block::$16 = YELLOW
  [53] draw_block::$10 = draw_block::z#1 + $29
  [54] draw_block::$17 = screen + draw_block::$10
  [55] *draw_block::$17 = 3
  [56] draw_block::$18 = colors + draw_block::$10
  [57] *draw_block::$18 = YELLOW
  to:draw_block::@return
draw_block::@return: scope:[draw_block]  from draw_block::@1
  [58] return 
  to:@return

void init_sprites()
init_sprites: scope:[init_sprites]  from init
  [59] *SPRITES_ENABLE = 1
  [60] *SPRITES_EXPAND_X = 0
  [61] *SPRITES_EXPAND_Y = 0
  [62] *SPRITES_XMSB = 0
  [63] *SPRITES_COLOR = WHITE
  [64] *SPRITES_MC = 0
  to:init_sprites::@return
init_sprites::@return: scope:[init_sprites]  from init_sprites
  [65] return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from init::@2 init::@3
  [66] memset::c#4 = phi( init::@2/0, init::@3/BLACK )
  [66] memset::str#3 = phi( init::@2/(void *)screen, init::@3/(void *)colors )
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [67] memset::end#0 = (char *)memset::str#3 + $3e8
  [68] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [69] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [70] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset::@2
  [71] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [72] *memset::dst#2 = memset::c#4
  [73] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

unsigned int mul8u(char a , char b)
mul8u: scope:[mul8u]  from draw_block
  [74] phi()
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@3
  [75] mul8u::mb#2 = phi( mul8u/(unsigned int)mul8u::b#0, mul8u::@3/mul8u::mb#1 )
  [75] mul8u::res#2 = phi( mul8u/0, mul8u::@3/mul8u::res#6 )
  [75] mul8u::a#2 = phi( mul8u/mul8u::a#1, mul8u::@3/mul8u::a#0 )
  [76] if(mul8u::a#2!=0) goto mul8u::@2
  to:mul8u::@return
mul8u::@return: scope:[mul8u]  from mul8u::@1
  [77] return 
  to:@return
mul8u::@2: scope:[mul8u]  from mul8u::@1
  [78] mul8u::$1 = mul8u::a#2 & 1
  [79] if(mul8u::$1==0) goto mul8u::@3
  to:mul8u::@4
mul8u::@4: scope:[mul8u]  from mul8u::@2
  [80] mul8u::res#1 = mul8u::res#2 + mul8u::mb#2
  to:mul8u::@3
mul8u::@3: scope:[mul8u]  from mul8u::@2 mul8u::@4
  [81] mul8u::res#6 = phi( mul8u::@2/mul8u::res#2, mul8u::@4/mul8u::res#1 )
  [82] mul8u::a#0 = mul8u::a#2 >> 1
  [83] mul8u::mb#1 = mul8u::mb#2 << 1
  to:mul8u::@1
