#include <perms.h>

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

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

  //     2    ! testing to see if scopes get messed up.
  //     3    ! trying to reproduce error from tests/imptoc/rt25a.i which was fixed in tests/test106.imp by renaming second declaration of Q()
  //     4    %integer qwerty

  int QWERTY;

  //     5    %routine mess me up

  void MESSMEUP(void) {
    //     6      %integer k

    int K;

    //     7      %integername qwerty

    int *QWERTY;

    //     8      %routine nested again

    void NESTEDAGAIN(void) {
      //     9        %routine qwerty(%real r,s,t)

      void QWERTY(float R, float S, float T) {
        //    10        %end

        return;
      } /* end of QWERTY */

      // ?T unused
      // ?S unused
      // ?R unused
      //    11      %end

      return;
    } /* end of NESTEDAGAIN */

    // ?QWERTY unused
    //    12      qwerty == k

    QWERTY = (int *)/*?*/ &K;

    //    13      qwerty = 1

    *QWERTY = 1;

    //    14    %end

    return;
  } /* end of MESSMEUP */

  // ?NESTEDAGAIN unused
  //    15    %integer i

  int I;

  //    16    qwerty = 2

  QWERTY = 2;

  //    17    i = qwerty

  I = QWERTY;

  //    18  %endofprogram

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