#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %owninteger nextsym=4
static int NEXTSYM = 4;
// 3 %integer opd
int OPD;
// 4 opd=23
OPD = 23;
// 5 %unless 20<=opd<=nextsym+20 %then printstring(" bug1
{
// Double-sided test on OPD (Part I)
int tmp;
if (20 > (tmp = OPD)) goto L_0001;
// Double-sided test on OPD (Part II)
if (tmp <= NEXTSYM + 20) goto L_0002;
}
L_0001:;
_imp_PRINTSTRING(_imp_str_literal(" bug1 \n"));
L_0002:;
// 6+ ")
// 7 %if 20<=opd<=nextsym+20 %then opd=opd %else printstring(" bug2
{
// Double-sided test on OPD (Part I)
int tmp;
if (20 > (tmp = OPD)) goto L_0003;
// Double-sided test on OPD (Part II)
if (tmp > NEXTSYM + 20) goto L_0003;
}
OPD = OPD;
goto L_0004;
L_0003:;
_imp_PRINTSTRING(_imp_str_literal(" bug2 \n"));
L_0004:;
// 8+ ")
// 9 %unless opd>=20 %and opd<=nextsym+20 %then printstring(" bug3
if (OPD < 20) goto L_0005;
if (OPD <= NEXTSYM + 20) goto L_0006;
L_0005:;
_imp_PRINTSTRING(_imp_str_literal(" bug3 \n"));
L_0006:;
// 10+ ")
// 11
// 12 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}