#include <perms.h>

                                                                //      1  %externalintegerfn main
#line 1 "regression-bugs-tmp/cat.imp"
int MAIN( void )
#line 1 "regression-bugs-tmp/cat.imp"
{
                                                                //      2  %string (255) a, s
#line 2 "regression-bugs-tmp/cat.imp"
_imp_string /*%string(255)*/ A;
#line 2 "regression-bugs-tmp/cat.imp"
_imp_string /*%string(255)*/ S;
                                                                //      3  %integer i, j, k, l;
#line 3 "regression-bugs-tmp/cat.imp"
int I;
#line 3 "regression-bugs-tmp/cat.imp"
int J;
#line 3 "regression-bugs-tmp/cat.imp"
int K;
#line 3 "regression-bugs-tmp/cat.imp"
int L;
                                                                //      4  %integername p, q
#line 4 "regression-bugs-tmp/cat.imp"
int /*name*/*P;
#line 4 "regression-bugs-tmp/cat.imp"
int /*name*/*Q;
                                                                //      5    i = 20; j = 25; k = 21; l = 27;
#line 5 "regression-bugs-tmp/cat.imp"
I = 20;
#line 5 "regression-bugs-tmp/cat.imp"
J = 25;
#line 5 "regression-bugs-tmp/cat.imp"
K = 21;
#line 5 "regression-bugs-tmp/cat.imp"
L = 27;
                                                                //      6    p == j; q == l;
#line 6 "regression-bugs-tmp/cat.imp"
P = &J;
#line 6 "regression-bugs-tmp/cat.imp"
Q = &L;
                                                                //      7    %cycle
#line 7 "regression-bugs-tmp/cat.imp"
L_0002:;
                                                                //      8      i = j; p = q
#line 8 "regression-bugs-tmp/cat.imp"
I = J;
#line 8 "regression-bugs-tmp/cat.imp"
*P = *Q;
                                                                //      9    %repeat %until k=3 %or (i=p %and l=1)
#line 9 "regression-bugs-tmp/cat.imp"
if (((K) == (3))) goto L_0003;
#line 9 "regression-bugs-tmp/cat.imp"
if (((I) != (*P))) goto L_0004;
#line 9 "regression-bugs-tmp/cat.imp"
if (((L) == (1))) goto L_0003;
#line 9 "regression-bugs-tmp/cat.imp"
L_0004:;
#line 9 "regression-bugs-tmp/cat.imp"
goto L_0002;
#line 9 "regression-bugs-tmp/cat.imp"
L_0003:;
                                                                //     10    %begin
#line 10 "regression-bugs-tmp/cat.imp"
void _BLOCK_1_LEVEL_1_(void) {
                                                                //     11  !    %integerarray ia1(0 /* crashes if i */ :j)
                                                                //     12      %integerarray ia1(0:l)
#line 12 "regression-bugs-tmp/cat.imp"
int IA1[((L) + ((int)(1)))];
                                                                //     13  
                                                                //     14      select input(0)
#line 14 "regression-bugs-tmp/cat.imp"
_imp_SELECTINPUT(0);
                                                                //     15      select output(0)
#line 15 "regression-bugs-tmp/cat.imp"
_imp_SELECTOUTPUT(0);
                                                                //     16      s = "1+1+1+1+1+1+1+1+1"
#line 16 "regression-bugs-tmp/cat.imp"
S = _imp_str_literal("1+1+1+1+1+1+1+1+1");
                                                                //     17      %while s -> a.("+").s %cycle
#line 17 "regression-bugs-tmp/cat.imp"
L_0005:;
#line 17 "regression-bugs-tmp/cat.imp"
if (!(_imp_resolve(S, &A, _imp_str_literal("+"), &S))) goto L_0006;
                                                                //     18         readch(i)
#line 18 "regression-bugs-tmp/cat.imp"
_imp_READCH(&I);
                                                                //     19         %exit %if i < 0
#line 19 "regression-bugs-tmp/cat.imp"
if (((I) >= (0))) goto L_0008;
#line 19 "regression-bugs-tmp/cat.imp"
goto L_0006;
#line 19 "regression-bugs-tmp/cat.imp"
L_0008:;
                                                                //     20         print symbol(i)
#line 20 "regression-bugs-tmp/cat.imp"
_imp_PRINTSYMBOL(I);
                                                                //     21      %repeat
#line 21 "regression-bugs-tmp/cat.imp"
goto L_0005;
#line 21 "regression-bugs-tmp/cat.imp"
L_0006:;
                                                                //     22  
                                                                //     23      %cycle
#line 23 "regression-bugs-tmp/cat.imp"
L_0009:;
                                                                //     24         %exit %if i < 0
#line 24 "regression-bugs-tmp/cat.imp"
if (((I) >= (0))) goto L_000c;
#line 24 "regression-bugs-tmp/cat.imp"
goto L_000a;
#line 24 "regression-bugs-tmp/cat.imp"
L_000c:;
                                                                //     25         print symbol(i)
#line 25 "regression-bugs-tmp/cat.imp"
_imp_PRINTSYMBOL(I);
                                                                //     26      %repeat %until %not s -> a.("+").s
#line 26 "regression-bugs-tmp/cat.imp"
if (!(_imp_resolve(S, &A, _imp_str_literal("+"), &S))) goto L_000a;
#line 26 "regression-bugs-tmp/cat.imp"
goto L_0009;
#line 26 "regression-bugs-tmp/cat.imp"
L_000a:;
                                                                //     27  
                                                                //     28      %for i = 0,1,10 %cycle
#line 28 "regression-bugs-tmp/cat.imp"
I = (-1);
if ((((10)-(0)) % (1)) != 0) _imp_signal(5,1,0,"Illegal cycle I = 0, 1, 10");
L_000d:;
if (I == 10) goto L_000e;
I += 1;
                                                                //     29         %exit %if i < 0
#line 29 "regression-bugs-tmp/cat.imp"
if (((I) >= (0))) goto L_0010;
#line 29 "regression-bugs-tmp/cat.imp"
goto L_000e;
#line 29 "regression-bugs-tmp/cat.imp"
L_0010:;
                                                                //     30         print symbol(i)
#line 30 "regression-bugs-tmp/cat.imp"
_imp_PRINTSYMBOL(I);
                                                                //     31      %repeat
#line 31 "regression-bugs-tmp/cat.imp"
goto L_000d;
#line 31 "regression-bugs-tmp/cat.imp"
L_000e:;
                                                                //     32  
                                                                //     33      i = ia1(24)
#line 33 "regression-bugs-tmp/cat.imp"
I = IA1[24];
                                                                //     34    %end
#line 34 "regression-bugs-tmp/cat.imp"
return;
} // End of block _BLOCK_1_LEVEL_1_ at level 2
_BLOCK_1_LEVEL_1_();
                                                                //     35    %stop
#line 35 "regression-bugs-tmp/cat.imp"
exit(0);
                                                                //     36  %end
#line 36 "regression-bugs-tmp/cat.imp"
} // End of block MAIN at level 1
                                                                //     37  
                                                                //     38  %endoffile
#line 38 "regression-bugs-tmp/cat.imp"
// End of file
