#include <perms.h>

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

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

  //     2    %recordformat unionfm(                    %c

  struct UNIONFM {
    union {
      struct {
        union {
          struct {
            int A;
            int B;
          };
          struct {
            unsigned char A0;
            unsigned char A1;
            unsigned char A2;
            unsigned char A3;
            unsigned char B0;
            unsigned char B1;
            unsigned char B2;
            unsigned char B3;
          };
          struct {
            short int AA;
            short int AB;
            short int BA;
            short int BB;
          };
          struct {
            double LR;
          };
        };

        double DESC;
      };
    };
  };

  //     3+     (                                       %c
  //     4+       %integer a, b                         %c
  //     5+       %or                                   %c
  //     6+       %byteinteger a0,a1,a2,a3, b0,b1,b2,b3 %c
  //     7+       %or                                   %c
  //     8+       %shortinteger aa,ab, ba,bb            %c
  //     9+       %or                                   %c
  //    10+       %longreal lr                          %c
  //    11+     ),                                      %c
  //    12+     %longreal desc                          %c
  //    13+   )
  //    14  %endofprogram

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