Test: ex081

Higher SubleqErrorOutputSubleqITR
int puts(int s);
int _putint(int i);
int printf(int s)
{
   for( int i=0; *s; s++ )
   {
      if( *s != '%' ){ __out *s; continue; }
      ++s;
      if( *s == '%' ) __out '%';
      else if( *s == 'c' ) __out *(&s-++i);
      else if( *s == 's' ) puts(*(&s-++i));
      else if( *s == 'd' || *s == 'i' ) _putint(*(&s-++i));
   }
}

int main()
{
   printf("%% %c %s %d\n",'A',"hi",123);
}



% A hi 123

   top:top top sqmain

_printf:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   dec sp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t2 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t3 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t4 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t5 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t6 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t7 0

   t1; t2; bp t1; dec t1; t1 t2
   ?+23; ?+21; ?+24; t2 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; c1 Z; Z 0; Z
l1:
   t2; t1; bp t2; c2 t2; t2 t1
   t2; t3; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t3
   t1; t2; ?+11; t3 Z; Z ?+4; Z; 0 t1; t1 t2
   t3; t2 Z; Z t3 ?+3; Z Z ?+9; Z; t2 t3; t2 t3
   Z t3 l3
   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; ?+11; t3 Z; Z ?+4; Z; 0 t2; t2 t1
   t3; t1 Z; Z t3; c3 t3 ?+3; Z Z ?+15
   Z; t3 Z ?+9; Z; t3; inc t3
   Z t3 l4
   t1; t2; bp t1; c2 t1; t1 t2
   t1; t4; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t4
   t2; t1; ?+11; t4 Z; Z ?+4; Z; 0 t2; t2 t1
   t1 (-1)

   Z Z l2


l4:

   t1; t2; bp t1; c2 t1; t1 t2
   t2 Z; ?+9; Z ?+5; Z; inc 0

   t7; t4; bp t7; c2 t7; t7 t4
   t7; t2; ?+11; t4 Z; Z ?+4; Z; 0 t7; t7 t2
   t4; t7; ?+11; t2 Z; Z ?+4; Z; 0 t4; t4 t7
   t2; t7 Z; Z t2; Z; c3 t2 ?+3
   t2 t2 ?+9; t2 Z ?+3; Z Z ?+3; inc t2
   Z t2 l11
   c3 (-1)
   Z Z l12
l11:
   t4; t2; bp t4; c2 t4; t4 t2
   t4; t7; ?+11; t2 Z; Z ?+4; Z; 0 t4; t4 t7
   t2; t4; ?+11; t7 Z; Z ?+4; Z; 0 t2; t2 t4
   t7; t4 Z; Z t7; Z; c7 t7 ?+3
   t7 t7 ?+9; t7 Z ?+3; Z Z ?+3; inc t7
   Z t7 l9
   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; bp t1; dec t1; t1 t3
   t3 Z; ?+9; Z ?+5; Z; inc 0
   t1; t4; ?+11; t3 Z; Z ?+4; Z; 0 t1; t1 t4
   t3; t2 Z; Z t3; Z; t4 t3
   t4; t2; ?+11; t3 Z; Z ?+4; Z; 0 t4; t4 t2
   t2 (-1)
   Z Z l10
l9:
   t2; t7; bp t2; c2 t2; t2 t7
   t2; t4; ?+11; t7 Z; Z ?+4; Z; 0 t2; t2 t4
   t7; t2; ?+11; t4 Z; Z ?+4; Z; 0 t7; t7 t2
   t4; t2 Z; Z t4; Z; c6 t4 ?+3
   t4 t4 ?+9; t4 Z ?+3; Z Z ?+3; inc t4
   Z t4 l7
   t2; t3; bp t2; c2 t2; t2 t3
   t2; t4; bp t2; dec t2; t2 t4
   t4 Z; ?+9; Z ?+5; Z; inc 0
   t2; t1; ?+11; t4 Z; Z ?+4; Z; 0 t2; t2 t1
   t4; t3 Z; Z t4; Z; t1 t4
   t1; t3; ?+11; t4 Z; Z ?+4; Z; 0 t1; t1 t3
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t3 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 _puts; . ?;
   c2 sp
   Z Z l8
l7:
   t2; t5; bp t2; c2 t2; t2 t5
   t2; t4; ?+11; t5 Z; Z ?+4; Z; 0 t2; t2 t4
   t5; t2; ?+11; t4 Z; Z ?+4; Z; 0 t5; t5 t2
   t4; t2 Z; Z t4; Z; c4 t4 ?+3
   t4 t4 ?+9; t4 Z ?+3; Z Z ?+3; inc t4
   t2; inc t2; Z t4 ?+3; Z Z l5
   t5; t6; bp t5; c2 t5; t5 t6
   t5; t7; ?+11; t6 Z; Z ?+4; Z; 0 t5; t5 t7
   t6; t5; ?+11; t7 Z; Z ?+4; Z; 0 t6; t6 t5
   t7; t5 Z; Z t7; Z; c5 t7 ?+3
   t7 t7 ?+9; t7 Z ?+3; Z Z ?+3; inc t7
   Z t7 ?+3; Z Z l5; t2;
l5:
   Z t2 l6
   t4; t1; bp t4; c2 t4; t4 t1
   t4; t2; bp t4; dec t4; t4 t2
   t2 Z; ?+9; Z ?+5; Z; inc 0
   t4; t5; ?+11; t2 Z; Z ?+4; Z; 0 t4; t4 t5
   t2; t1 Z; Z t2; Z; t5 t2
   t5; t1; ?+11; t2 Z; Z ?+4; Z; 0 t5; t5 t1
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t1 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 __putint; . ?;
   c2 sp
l6:
l8:
l10:
l12:

l2:
   t2; t1; bp t2; c2 t2; t2 t1
   t1 Z; ?+9; Z ?+5; Z; inc 0
   Z Z l1
l3:

   ?+8; sp ?+4; t7; 0 t7; inc sp
   ?+8; sp ?+4; t6; 0 t6; inc sp
   ?+8; sp ?+4; t5; 0 t5; inc sp
   ?+8; sp ?+4; t4; 0 t4; inc sp
   ?+8; sp ?+4; t3; 0 t3; inc sp
   ?+8; sp ?+4; t2; 0 t2; inc sp
   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

_main:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0

   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; c8 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; c10 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; c11 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; c13 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 _printf; . ?;
   c14 sp

   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

_puts:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   dec sp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t2 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t3 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t4 0

   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; dec t2; t2 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z

l13:
   t1; t3; bp t1; c2 t1; t1 t3
   t1; t2; ?+11; t3 Z; Z ?+4; Z; 0 t1; t1 t2
   t3; t1; ?+11; t2 Z; Z ?+4; Z; 0 t3; t3 t1
   t2; t1 Z; Z t2 ?+3; Z Z ?+9; Z; t1 t2; t1 t2
   Z t2 l14
   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2 Z; ?+9; Z ?+5; Z; inc 0
   t2; t1; ?+11; t3 Z; Z ?+4; Z; 0 t2; t2 t1
   t1 (-1)
   Z Z l13
l14:

   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; dec t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   t1; t3 Z; Z t1; Z; t4 t1
   ax; t1 ax
   Z Z end_puts

end_puts:
   ?+8; sp ?+4; t4; 0 t4; inc sp
   ?+8; sp ?+4; t3; 0 t3; inc sp
   ?+8; sp ?+4; t2; 0 t2; inc sp
   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

__putint:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t2 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t3 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t4 0

   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; c1 Z; Z t2; Z; t3 t2
   Z t2 l15
   c15 (-1)

   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t3 t2
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t2 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 __putintr; . ?;
   t2; ax t2
   c2 sp
   t3; t1; dec t3; t2 t3; t3 t1
   ax; t1 ax
   Z Z end__putint

l15:

   t2; t1; bp t2; c2 t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   t1; t4 Z; Z t1; Z; c1 t1
   Z t1 l16
   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t3 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 __putintr; . ?;
   t3; ax t3
   c2 sp
   ax; t3 ax
   Z Z end__putint
l16:

   c16 (-1)

   ax; dec ax
   Z Z end__putint

end__putint:
   ?+8; sp ?+4; t4; 0 t4; inc sp
   ?+8; sp ?+4; t3; 0 t3; inc sp
   ?+8; sp ?+4; t2; 0 t2; inc sp
   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

__putintr:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   c17 sp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t2 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t3 0

   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t3 Z; Z t2; Z; c1 t2
   Z t2 l17
   t1; t2; bp t1; c17 t1; t1 t2
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t2 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; c18 Z; Z 0; Z
   t2; t1; bp t2; c2 t2; t2 t1
   t2; t3; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t3
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t3 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 __divMod; . ?;
   t3; ax t3
   c19 sp
   t1; t2; bp t1; dec t1; t1 t2
   ?+23; ?+21; ?+24; t2 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z

   t1; t2; bp t1; dec t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t3 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 __putintr; . ?;
   t3; ax t3
   c2 sp
   t2; t1; bp t2; dec t2; t2 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z

   t1; t2; bp t1; c17 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; c16 t2; t3 t2; t2 t1
   t1 (-1)

   t1; t2; bp t1; dec t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; t3 t2; dec t2; t2 t1
   ax; t1 ax
   Z Z end__putintr

l17:

   ax; c1 ax
   Z Z end__putintr

end__putintr:
   ?+8; sp ?+4; t3; 0 t3; inc sp
   ?+8; sp ?+4; t2; 0 t2; inc sp
   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

__divMod:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   c22 sp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t2 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t3 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t4 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t5 0

   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; c20 t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   t1; t4 Z; Z t1; Z; t3 t1
   Z t1 l18
   t1; t2; bp t1; c2 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; c19 t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   ?+23; ?+21; ?+24; t4 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z

   ax; c1 ax
   Z Z end__divMod

l18:

   t1; t2; bp t1; c20 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; dec t2; t2 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z
   t3; t1; bp t3; c17 t3; t3 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; dec Z; Z 0; Z

l__divMod_next:
   t1; t2; bp t1; dec t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; c21 t2; t2 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z

   t1; t2; bp t1; c17 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; c22 t2; t2 t1
   ?+23; ?+21; ?+24; t1 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t3 Z; Z 0; Z

   t1; t2; bp t1; dec t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; dec t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   t1; t2; t3 t1; t4 t1; t1 t2
   t1; t4; bp t1; dec t1; t1 t4
   ?+23; ?+21; ?+24; t4 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t2 Z; Z 0; Z

   t1; t2; bp t1; c17 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; c17 t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   t1; t2; t3 t1; t4 t1; t1 t2
   t1; t4; bp t1; c17 t1; t1 t4
   ?+23; ?+21; ?+24; t4 Z; Z ?+10; Z ?+8
   Z ?+11; Z; 0; t2 Z; Z 0; Z

   t5; t2; bp t5; c2 t5; t5 t2
   t5; t3; ?+11; t2 Z; Z ?+4; Z; 0 t5; t5 t3
   t2; t5; bp t2; dec t2; t2 t5
   t2; t1; ?+11; t5 Z; Z ?+4; Z; 0 t2; t2 t1
   t5; t1 Z; Z t5; Z; t3 t5
   Z t5 l19
   t1; t2; bp t1; c22 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t2; t1; bp t2; c19 t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t4 Z; Z 0; Z
   t4; t1; bp t4; c20 t4; t4 t1
   t4; t2; ?+11; t1 Z; Z ?+4; Z; 0 t4; t4 t2
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t2 Z; Z 0; Z
   t2; t1; bp t2; c2 t2; t2 t1
   t2; t4; ?+11; t1 Z; Z ?+4; Z; 0 t2; t2 t4
   t1; t2; bp t1; c21 t1; t1 t2
   t1; t5; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t5
   t2; t4 Z; Z t2; Z; t5 t2
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+9; sp ?+5; t2 Z; Z 0; Z
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 __divMod; . ?;
   t2; ax t2
   c19 sp
   t5; t4; t3 t5; t2 t5; t5 t4
   ax; t4 ax
   Z Z end__divMod
l19:

   Z Z l__divMod_next

end__divMod:
   ?+8; sp ?+4; t5; 0 t5; inc sp
   ?+8; sp ?+4; t4; 0 t4; inc sp
   ?+8; sp ?+4; t3; 0 t3; inc sp
   ?+8; sp ?+4; t2; 0 t2; inc sp
   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

sqmain:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 _main; . ?; inc sp

   Z Z (-1)

. c2:-2 c20:-3 c19:-4 c14:-5 c1:0 c18:10 c4:100 c9:104 105 0 c5:105 c6:115 c8:123 c17:2 c21:3 c3:37 c12:37 37 32 37 99 32 37 115 32 37 100 10 0 c22:4 c15:45 c16:48 c11:65 c7:99 c13:c12 c10:c9

. t1:0 t2:0 t3:0 t4:0 t5:0 t6:0 t7:0

. inc:-1 Z:0 dec:1 ax:0 bp:0 sp:-sp

Root (ex081.hsq:21)
   Function:0 [puts] (ex081.hsq:1)
      Keyword [int] (ex081.hsq:1)
      Param-type-list (ex081.hsq:1)
         Stackvar:-2 [s] (ex081.hsq:1)
   Function:0 [_putint] (ex081.hsq:2)
      Keyword [int] (ex081.hsq:2)
      Param-type-list (ex081.hsq:2)
         Stackvar:-2 [i] (ex081.hsq:2)
   Function:1 [printf] (ex081.hsq:3)
      Keyword [int] (ex081.hsq:3)
      Param-type-list (ex081.hsq:3)
         Stackvar:-2 [s] (ex081.hsq:3)
      Block (ex081.hsq:4)
         Keyword-statement [for] (ex081.hsq:5)
            Declaration (ex081.hsq:5)
               Keyword [int] (ex081.hsq:5)
               Declarator [=] (ex081.hsq:5)
                  Stackvar:1 [i] (ex081.hsq:5)
                  Const [0] (ex081.hsq:5)
            Equality [!=] (ex081.hsq:5)
               Unary [*] (ex081.hsq:5)
                  Unary [*] (ex081.hsq:5) s:3
                     Additive [+] (ex081.hsq:5) s:3
                        Variable [@bp] (ex081.hsq:5) s:3
                        Const [-2] (ex081.hsq:5) s:3
               Const [0] (ex081.hsq:5)
            Postfix [++] (ex081.hsq:5)
               Unary [*] (ex081.hsq:5) s:3
                  Additive [+] (ex081.hsq:5) s:3
                     Variable [@bp] (ex081.hsq:5) s:3
                     Const [-2] (ex081.hsq:5) s:3
            Block (ex081.hsq:6)
               Keyword-statement [if] (ex081.hsq:7)
                  Equality [!=] (ex081.hsq:7)
                     Unary [*] (ex081.hsq:7)
                        Unary [*] (ex081.hsq:7) s:3
                           Additive [+] (ex081.hsq:7) s:3
                              Variable [@bp] (ex081.hsq:7) s:3
                              Const [-2] (ex081.hsq:7) s:3
                     Const ['%'] (ex081.hsq:7)
                  Block (ex081.hsq:7)
                     OperatorIO [__out] (ex081.hsq:7)
                        Unary [*] (ex081.hsq:7)
                           Unary [*] (ex081.hsq:7) s:3
                              Additive [+] (ex081.hsq:7) s:3
                                 Variable [@bp] (ex081.hsq:7) s:3
                                 Const [-2] (ex081.hsq:7) s:3
                     Keyword-statement [continue] (ex081.hsq:7)
               Unary [++] (ex081.hsq:8)
                  Unary [*] (ex081.hsq:8) s:3
                     Additive [+] (ex081.hsq:8) s:3
                        Variable [@bp] (ex081.hsq:8) s:3
                        Const [-2] (ex081.hsq:8) s:3
               Keyword-statement [if] (ex081.hsq:9)
                  Equality [==] (ex081.hsq:9)
                     Unary [*] (ex081.hsq:9)
                        Unary [*] (ex081.hsq:9) s:3
                           Additive [+] (ex081.hsq:9) s:3
                              Variable [@bp] (ex081.hsq:9) s:3
                              Const [-2] (ex081.hsq:9) s:3
                     Const ['%'] (ex081.hsq:9)
                  OperatorIO [__out] (ex081.hsq:9)
                     Const ['%'] (ex081.hsq:9)
                  Keyword-statement [if] (ex081.hsq:10)
                     Equality [==] (ex081.hsq:10)
                        Unary [*] (ex081.hsq:10)
                           Unary [*] (ex081.hsq:10) s:3
                              Additive [+] (ex081.hsq:10) s:3
                                 Variable [@bp] (ex081.hsq:10) s:3
                                 Const [-2] (ex081.hsq:10) s:3
                        Const ['c'] (ex081.hsq:10)
                     OperatorIO [__out] (ex081.hsq:10)
                        Unary [*] (ex081.hsq:10)
                           Additive [-] (ex081.hsq:10)
                              Additive [+] (ex081.hsq:10) s:3
                                 Variable [@bp] (ex081.hsq:10) s:3
                                 Const [-2] (ex081.hsq:10) s:3
                              Unary [++] (ex081.hsq:10)
                                 Unary [*] (ex081.hsq:10) i:5
                                    Additive [+] (ex081.hsq:10) i:5
                                       Variable [@bp] (ex081.hsq:10) i:5
                                       Const [1] (ex081.hsq:10) i:5
                     Keyword-statement [if] (ex081.hsq:11)
                        Equality [==] (ex081.hsq:11)
                           Unary [*] (ex081.hsq:11)
                              Unary [*] (ex081.hsq:11) s:3
                                 Additive [+] (ex081.hsq:11) s:3
                                    Variable [@bp] (ex081.hsq:11) s:3
                                    Const [-2] (ex081.hsq:11) s:3
                           Const ['s'] (ex081.hsq:11)
                        Postfix [(] (ex081.hsq:11)
                           Label [puts] (ex081.hsq:11)
                           Expression-list (ex081.hsq:11)
                              Unary [*] (ex081.hsq:11)
                                 Additive [-] (ex081.hsq:11)
                                    Additive [+] (ex081.hsq:11) s:3
                                       Variable [@bp] (ex081.hsq:11) s:3
                                       Const [-2] (ex081.hsq:11) s:3
                                    Unary [++] (ex081.hsq:11)
                                       Unary [*] (ex081.hsq:11) i:5
                                          Additive [+] (ex081.hsq:11) i:5
                                             Variable [@bp] (ex081.hsq:11) i:5
                                             Const [1] (ex081.hsq:11) i:5
                        Keyword-statement [if] (ex081.hsq:12)
                           Logical-Or [||] (ex081.hsq:12)
                              Equality [==] (ex081.hsq:12)
                                 Unary [*] (ex081.hsq:12)
                                    Unary [*] (ex081.hsq:12) s:3
                                       Additive [+] (ex081.hsq:12) s:3
                                          Variable [@bp] (ex081.hsq:12) s:3
                                          Const [-2] (ex081.hsq:12) s:3
                                 Const ['d'] (ex081.hsq:12)
                              Equality [==] (ex081.hsq:12)
                                 Unary [*] (ex081.hsq:12)
                                    Unary [*] (ex081.hsq:12) s:3
                                       Additive [+] (ex081.hsq:12) s:3
                                          Variable [@bp] (ex081.hsq:12) s:3
                                          Const [-2] (ex081.hsq:12) s:3
                                 Const ['i'] (ex081.hsq:12)
                           Postfix [(] (ex081.hsq:12)
                              Label [_putint] (ex081.hsq:12)
                              Expression-list (ex081.hsq:12)
                                 Unary [*] (ex081.hsq:12)
                                    Additive [-] (ex081.hsq:12)
                                       Additive [+] (ex081.hsq:12) s:3
                                          Variable [@bp] (ex081.hsq:12) s:3
                                          Const [-2] (ex081.hsq:12) s:3
                                       Unary [++] (ex081.hsq:12)
                                          Unary [*] (ex081.hsq:12) i:5
                                             Additive [+] (ex081.hsq:12) i:5
                                                Variable [@bp] (ex081.hsq:12) i:5
                                                Const [1] (ex081.hsq:12) i:5
   Function:0 [main] (ex081.hsq:16)
      Keyword [int] (ex081.hsq:16)
      Param-type-list (ex081.hsq:16)
      Block (ex081.hsq:17)
         Postfix [(] (ex081.hsq:18)
            Label [printf] (ex081.hsq:18) printf:3
            Expression-list (ex081.hsq:18)
               String [%% %c %s %d.] (ex081.hsq:18)
               Const ['A'] (ex081.hsq:18)
               String [hi] (ex081.hsq:18)
               Const [123] (ex081.hsq:18)
   Function:1 [puts] (::puts:1)
      Keyword [int] (::puts:1)
      Param-type-list (::puts:1)
         Stackvar:-2 [s] (::puts:1)
      Block (::puts:2)
         Declaration (::puts:3)
            Keyword [int] (::puts:3)
            Declarator [=] (::puts:3)
               Stackvar:1 [p] (::puts:3)
               Unary [*] (::puts:3) s:1
                  Additive [+] (::puts:3) s:1
                     Variable [@bp] (::puts:3) s:1
                     Const [-2] (::puts:3) s:1
         Keyword-statement [while] (::puts:4)
            Equality [!=] (::puts:4)
               Unary [*] (::puts:4)
                  Unary [*] (::puts:4) s:1
                     Additive [+] (::puts:4) s:1
                        Variable [@bp] (::puts:4) s:1
                        Const [-2] (::puts:4) s:1
               Const [0] (::puts:4)
            OperatorIO [__out] (::puts:4)
               Unary [*] (::puts:4)
                  Postfix [++] (::puts:4)
                     Unary [*] (::puts:4) s:1
                        Additive [+] (::puts:4) s:1
                           Variable [@bp] (::puts:4) s:1
                           Const [-2] (::puts:4) s:1
         Keyword-statement [return] (::puts:5)
            Additive [-] (::puts:5)
               Unary [*] (::puts:5) s:1
                  Additive [+] (::puts:5) s:1
                     Variable [@bp] (::puts:5) s:1
                     Const [-2] (::puts:5) s:1
               Unary [*] (::puts:5) p:3
                  Additive [+] (::puts:5) p:3
                     Variable [@bp] (::puts:5) p:3
                     Const [1] (::puts:5) p:3
   Function:0 [_putintr] (::_putint:1)
      Keyword [int] (::_putint:1)
      Param-type-list (::_putint:1)
         Stackvar:-2 [x] (::_putint:1)
   Function:0 [_putint] (::_putint:2)
      Keyword [int] (::_putint:2)
      Param-type-list (::_putint:2)
         Stackvar:-2 [x] (::_putint:2)
      Block (::_putint:3)
         Keyword-statement [if] (::_putint:4)
            Relational [<] (::_putint:4)
               Unary [*] (::_putint:4) x:2
                  Additive [+] (::_putint:4) x:2
                     Variable [@bp] (::_putint:4) x:2
                     Const [-2] (::_putint:4) x:2
               Const [0] (::_putint:4)
            Block (::_putint:5)
               OperatorIO [__out] (::_putint:6)
                  Const [45] (::_putint:6)
               Keyword-statement [return] (::_putint:7)
                  Additive [+] (::_putint:7)
                     Const [1] (::_putint:7)
                     Postfix [(] (::_putint:7)
                        Label [_putintr] (::_putint:7)
                        Expression-list (::_putint:7)
                           Unary [-] (::_putint:7)
                              Unary [*] (::_putint:7) x:2
                                 Additive [+] (::_putint:7) x:2
                                    Variable [@bp] (::_putint:7) x:2
                                    Const [-2] (::_putint:7) x:2
         Keyword-statement [if] (::_putint:9)
            Relational [>] (::_putint:9)
               Unary [*] (::_putint:9) x:2
                  Additive [+] (::_putint:9) x:2
                     Variable [@bp] (::_putint:9) x:2
                     Const [-2] (::_putint:9) x:2
               Const [0] (::_putint:9)
            Keyword-statement [return] (::_putint:10)
               Postfix [(] (::_putint:10)
                  Label [_putintr] (::_putint:10) _putintr:2
                  Expression-list (::_putint:10)
                     Unary [*] (::_putint:10) x:2
                        Additive [+] (::_putint:10) x:2
                           Variable [@bp] (::_putint:10) x:2
                           Const [-2] (::_putint:10) x:2
         OperatorIO [__out] (::_putint:12)
            Const [48] (::_putint:12)
         Keyword-statement [return] (::_putint:13)
            Const [1] (::_putint:13)
   Function:0 [_divMod] (::_putintr:1)
      Keyword [int] (::_putintr:1)
      Param-type-list (::_putintr:1)
         Stackvar:-2 [a] (::_putintr:1)
         Stackvar:-3 [b] (::_putintr:1)
         Stackvar:-4 [m] (::_putintr:1)
   Function:2 [_putintr] (::_putintr:2)
      Keyword [int] (::_putintr:2)
      Param-type-list (::_putintr:2)
         Stackvar:-2 [x] (::_putintr:2)
      Block (::_putintr:3)
         Keyword-statement [if] (::_putintr:4)
            Relational [>] (::_putintr:4)
               Unary [*] (::_putintr:4) x:2
                  Additive [+] (::_putintr:4) x:2
                     Variable [@bp] (::_putintr:4) x:2
                     Const [-2] (::_putintr:4) x:2
               Const [0] (::_putintr:4)
            Block (::_putintr:5)
               Declaration (::_putintr:6)
                  Keyword [int] (::_putintr:6)
                  Declarator [0] (::_putintr:6)
                     Stackvar:1 [i] (::_putintr:6)
                  Declarator [0] (::_putintr:6)
                     Stackvar:2 [j] (::_putintr:6)
               Assignment [=] (::_putintr:7)
                  Unary [*] (::_putintr:7) i:6
                     Additive [+] (::_putintr:7) i:6
                        Variable [@bp] (::_putintr:7) i:6
                        Const [1] (::_putintr:7) i:6
                  Postfix [(] (::_putintr:7)
                     Label [_divMod] (::_putintr:7)
                     Expression-list (::_putintr:7)
                        Unary [*] (::_putintr:7) x:2
                           Additive [+] (::_putintr:7) x:2
                              Variable [@bp] (::_putintr:7) x:2
                              Const [-2] (::_putintr:7) x:2
                        Const [10] (::_putintr:7)
                        Additive [+] (::_putintr:7) j:6
                           Variable [@bp] (::_putintr:7) j:6
                           Const [2] (::_putintr:7) j:6
               Assignment [=] (::_putintr:8)
                  Unary [*] (::_putintr:8) i:6
                     Additive [+] (::_putintr:8) i:6
                        Variable [@bp] (::_putintr:8) i:6
                        Const [1] (::_putintr:8) i:6
                  Postfix [(] (::_putintr:8)
                     Label [_putintr] (::_putintr:8) _putintr:2
                     Expression-list (::_putintr:8)
                        Unary [*] (::_putintr:8) i:6
                           Additive [+] (::_putintr:8) i:6
                              Variable [@bp] (::_putintr:8) i:6
                              Const [1] (::_putintr:8) i:6
               OperatorIO [__out] (::_putintr:9)
                  Additive [+] (::_putintr:9)
                     Const [48] (::_putintr:9)
                     Unary [*] (::_putintr:9) j:6
                        Additive [+] (::_putintr:9) j:6
                           Variable [@bp] (::_putintr:9) j:6
                           Const [2] (::_putintr:9) j:6
               Keyword-statement [return] (::_putintr:10)
                  Additive [+] (::_putintr:10)
                     Unary [*] (::_putintr:10) i:6
                        Additive [+] (::_putintr:10) i:6
                           Variable [@bp] (::_putintr:10) i:6
                           Const [1] (::_putintr:10) i:6
                     Const [1] (::_putintr:10)
         Keyword-statement [return] (::_putintr:12)
            Const [0] (::_putintr:12)
   Function:4 [_divMod] (::_divMod:1)
      Keyword [int] (::_divMod:1)
      Param-type-list (::_divMod:1)
         Stackvar:-2 [a] (::_divMod:1)
         Stackvar:-3 [b] (::_divMod:1)
         Stackvar:-4 [j] (::_divMod:1)
      Block (::_divMod:2)
         Keyword-statement [if] (::_divMod:3)
            Relational [<] (::_divMod:3)
               Unary [*] (::_divMod:3) a:1
                  Additive [+] (::_divMod:3) a:1
                     Variable [@bp] (::_divMod:3) a:1
                     Const [-2] (::_divMod:3) a:1
               Unary [*] (::_divMod:3) b:1
                  Additive [+] (::_divMod:3) b:1
                     Variable [@bp] (::_divMod:3) b:1
                     Const [-3] (::_divMod:3) b:1
            Block (::_divMod:3)
               Assignment [=] (::_divMod:3)
                  Unary [*] (::_divMod:3)
                     Unary [*] (::_divMod:3) j:1
                        Additive [+] (::_divMod:3) j:1
                           Variable [@bp] (::_divMod:3) j:1
                           Const [-4] (::_divMod:3) j:1
                  Unary [*] (::_divMod:3) a:1
                     Additive [+] (::_divMod:3) a:1
                        Variable [@bp] (::_divMod:3) a:1
                        Const [-2] (::_divMod:3) a:1
               Keyword-statement [return] (::_divMod:3)
                  Const [0] (::_divMod:3)
         Declaration (::_divMod:5)
            Keyword [int] (::_divMod:5)
            Declarator [=] (::_divMod:5)
               Stackvar:1 [b1] (::_divMod:5)
               Unary [*] (::_divMod:5) b:1
                  Additive [+] (::_divMod:5) b:1
                     Variable [@bp] (::_divMod:5) b:1
                     Const [-3] (::_divMod:5) b:1
            Declarator [=] (::_divMod:5)
               Stackvar:2 [i] (::_divMod:5)
               Const [1] (::_divMod:5)
            Declarator [0] (::_divMod:5)
               Stackvar:3 [bp] (::_divMod:5)
            Declarator [0] (::_divMod:5)
               Stackvar:4 [ip] (::_divMod:5)
         Label-statement [next] (::_divMod:7)
            Assignment [=] (::_divMod:8)
               Unary [*] (::_divMod:8) bp:5
                  Additive [+] (::_divMod:8) bp:5
                     Variable [@bp] (::_divMod:8) bp:5
                     Const [3] (::_divMod:8) bp:5
               Unary [*] (::_divMod:8) b1:5
                  Additive [+] (::_divMod:8) b1:5
                     Variable [@bp] (::_divMod:8) b1:5
                     Const [1] (::_divMod:8) b1:5
         Assignment [=] (::_divMod:8)
            Unary [*] (::_divMod:8) ip:5
               Additive [+] (::_divMod:8) ip:5
                  Variable [@bp] (::_divMod:8) ip:5
                  Const [4] (::_divMod:8) ip:5
            Unary [*] (::_divMod:8) i:5
               Additive [+] (::_divMod:8) i:5
                  Variable [@bp] (::_divMod:8) i:5
                  Const [2] (::_divMod:8) i:5
         Assignment [=] (::_divMod:9)
            Unary [*] (::_divMod:9) b1:5
               Additive [+] (::_divMod:9) b1:5
                  Variable [@bp] (::_divMod:9) b1:5
                  Const [1] (::_divMod:9) b1:5
            Additive [+] (::_divMod:9)
               Unary [*] (::_divMod:9) b1:5
                  Additive [+] (::_divMod:9) b1:5
                     Variable [@bp] (::_divMod:9) b1:5
                     Const [1] (::_divMod:9) b1:5
               Unary [*] (::_divMod:9) b1:5
                  Additive [+] (::_divMod:9) b1:5
                     Variable [@bp] (::_divMod:9) b1:5
                     Const [1] (::_divMod:9) b1:5
         Assignment [=] (::_divMod:9)
            Unary [*] (::_divMod:9) i:5
               Additive [+] (::_divMod:9) i:5
                  Variable [@bp] (::_divMod:9) i:5
                  Const [2] (::_divMod:9) i:5
            Additive [+] (::_divMod:9)
               Unary [*] (::_divMod:9) i:5
                  Additive [+] (::_divMod:9) i:5
                     Variable [@bp] (::_divMod:9) i:5
                     Const [2] (::_divMod:9) i:5
               Unary [*] (::_divMod:9) i:5
                  Additive [+] (::_divMod:9) i:5
                     Variable [@bp] (::_divMod:9) i:5
                     Const [2] (::_divMod:9) i:5
         Keyword-statement [if] (::_divMod:11)
            Relational [<] (::_divMod:11)
               Unary [*] (::_divMod:11) a:1
                  Additive [+] (::_divMod:11) a:1
                     Variable [@bp] (::_divMod:11) a:1
                     Const [-2] (::_divMod:11) a:1
               Unary [*] (::_divMod:11) b1:5
                  Additive [+] (::_divMod:11) b1:5
                     Variable [@bp] (::_divMod:11) b1:5
                     Const [1] (::_divMod:11) b1:5
            Keyword-statement [return] (::_divMod:12)
               Additive [+] (::_divMod:12)
                  Unary [*] (::_divMod:12) ip:5
                     Additive [+] (::_divMod:12) ip:5
                        Variable [@bp] (::_divMod:12) ip:5
                        Const [4] (::_divMod:12) ip:5
                  Postfix [(] (::_divMod:12)
                     Label [_divMod] (::_divMod:12) _divMod:1
                     Expression-list (::_divMod:12)
                        Additive [-] (::_divMod:12)
                           Unary [*] (::_divMod:12) a:1
                              Additive [+] (::_divMod:12) a:1
                                 Variable [@bp] (::_divMod:12) a:1
                                 Const [-2] (::_divMod:12) a:1
                           Unary [*] (::_divMod:12) bp:5
                              Additive [+] (::_divMod:12) bp:5
                                 Variable [@bp] (::_divMod:12) bp:5
                                 Const [3] (::_divMod:12) bp:5
                        Unary [*] (::_divMod:12) b:1
                           Additive [+] (::_divMod:12) b:1
                              Variable [@bp] (::_divMod:12) b:1
                              Const [-3] (::_divMod:12) b:1
                        Unary [*] (::_divMod:12) j:1
                           Additive [+] (::_divMod:12) j:1
                              Variable [@bp] (::_divMod:12) j:1
                              Const [-4] (::_divMod:12) j:1
         Keyword-statement [goto] (::_divMod:14)
            Label [next] (::_divMod:14) next:7