#include <perms.h>

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

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

  //     2    %integer res, fred, jim

  int RES;
  int FRED;
  int JIM;

  //     3    fred = 1

  FRED = 1;

  //     4    jim = fred + 2

  JIM = FRED + 2;

  //     5    ! how do you do integer exponentiation?
  //     6    res = ((fred * jim) + jim) - ((fred << jim) // jim)

  RES = FRED * JIM + JIM - ((long)(FRED << JIM) / (long)JIM);

  //     7    res = fred >> (fred ! jim) & jim;

  RES = (unsigned int)FRED >> (FRED | JIM) & JIM;

  //     8  %endofprogram

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