#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %begin

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //     2    %integer cond

  int COND;

  //     3    cond = 1

  COND = 1;

  //     4    !
  //     5    %if cond # 0 %start

  if (COND == 0) goto L_0001;

    //     6      %if cond # 1 %start { generated dangling else error until fixed with extra bracketing }

  if (COND == 1) goto L_0002;

    //     7        cond = 4

  COND = 4;

  //     8      %finish

L_0002:;

//     9    %finishelsestart

  goto L_0003;
L_0001:;

//    10      cond = 3

  COND = 3;

  //    11    %finish

L_0003:;

//    12
//    13    ! Same logic but tortured expression of it...
//    14    ! this one *would* have still generated dangling else error
//    15    ! *IF* the then/else reversal were working as it should! (which it isn't)
//    16
//    17    %if cond # 0 %start

  if (COND == 0) goto L_0004;

    //    18      %if cond = 1 %start

  if (COND != 1) goto L_0005;

    //    19      %finishelse cond = 4

  goto L_0006;
L_0005:;
  COND = 4;
L_0006:;

//    20    %finishelsestart

  goto L_0007;
L_0004:;

//    21      cond = 3

  COND = 3;

  //    22    %finish

L_0007:;

//    23
//    24    ! Let's test the simple reversal on its own...
//    25    %if cond = 1 %start

  if (COND != 1) goto L_0008;

    //    26    %finishelse cond = 4

  goto L_0009;
L_0008:;
  COND = 4;
L_0009:;

//    27
//    28  %endofprogram

  _imp_stop(0);
  return 0;
end_0:;
}