#include <perms.h>

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

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

  //     2
  //     3  %routine BD(%integer p, q)

  void BD(int P, int Q) {
    //     4  %end

    return;
  } /* end of BD */

  // ?Q unused
  // ?P unused
  //     5
  //     6  %recordformat Stackfm(%integer Base, Disp)

  struct STACKFM {
    union {
      struct {
        int BASE;
        int DISP;
      };
    };
  };

  //     7
  //     8  ! Unfortunately, another example that fails in a big program
  //     9  ! but works when we try to find a minimal example...
  //    10
  //    11  %routine Show Data(%record(Stackfm)%name V, %integer Left)

  void SHOWDATA(struct STACKFM * V, int LEFT) {
    //    12     BD(V_Base, V_Disp)

    BD(V->BASE, V->DISP);

    //    13  %end

    return;
  } /* end of SHOWDATA */

  // ?LEFT unused
  //    14
  //    15  %endofprogram

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