#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %externalinteger i = 1

int I = 1;

//     2
//     3  %externalroutine fred

void FRED(void) {
  //     4    %integer i = 2

  int I;
  I = 2;

  //     5    i = 3

  I = 3;

  //     6  %end

  return;
} /* end of FRED */

//     7
//     8  %begin

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

  //     9    %integer i = 4

  int I;
  I = 4;

  //    10    %routine fred

  void FRED(void) {
    //    11      %integer i = 5

    int I;
    I = 5;

    //    12      i = 6

    I = 6;

    //    13    %end

    return;
  } /* end of FRED */

  //    14
  //    15    %begin

  { /*%begin*/

    //    16      %integer i = 7

    int I;
    I = 7;

    //    17      %routine fred

    void FRED(void) {
      //    18        %integer i = 8

      int I;
      I = 8;

      //    19        i = 9

      I = 9;

      //    20      %end

      return;
    } /* end of FRED */

    //    21      i = 10

    I = 10;

    //    22    %end

    goto end_1000;
  end_1000:;
  }

  // ?FRED unused
  //    23
  //    24    %begin

  { /*%begin*/

    //    25      %integer i = 11

    int I;
    I = 11;

    //    26      %routine fred

    void FRED(void) {
      //    27        %integer i = 12

      int I;
      I = 12;

      //    28        i = 13

      I = 13;

      //    29      %end

      return;
    } /* end of FRED */

    //    30      i = 14

    I = 14;

    //    31    %end

    goto end_1001;
  end_1001:;
  }

  // ?FRED unused
  //    32
  //    33    i = 15

  I = 15;

  //    34
  //    35  %endofprogram

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