#include <perms.h>

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

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

  //     2    %integer I1

  int I1;

  //     3    %integername In

  int *IN;

  //     4    %real R1

  float R1;

  //     5    %recordformat rf(%integer i, %real r)

  struct RF {
    union {
      struct {
        int I;
        float R;
      };
    };
  };

  //     6    %record (rf) rec

  struct RF REC;

  //     7    %record (rf) %name recn

  struct RF *RECN;

  //     8    recn == rec

  RECN = (struct RF *)/*?*/ &REC;

  //     9    I1 = rec_i

  I1 = REC.I;

  //    10    I1 = recn_i

  I1 = RECN->I;

  //    11    In == rec_i

  IN = (int *)/*?*/ &REC.I;

  //    12    In == recn_i

  IN = (int *)/*?*/ &RECN->I;

  //    13    In = I1

  *IN = I1;

  //    14  %endofprogram

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