#include <perms.h>

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

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

  //     2    %integername p,p2

  int *P;
  int *P2;

  //     3    %integer q, q2

  int Q;
  int Q2;

  //     4      q = 1

  Q = 1;

  //     5      q = 1

  Q = 1;

  //     6      q = '*'

  Q = 42;

  //     7      q = '    '

  Q = 32;

  //     8      q = M'abcd'

  Q = 1633837924;

  //     9      q = K'7777'

  Q = 4095;

  //    10      q = B'0101010101'

  Q = 341;

  //    11      q = 123

  Q = 123;

  //    12      q = X'CAFE' + 1

  Q = 51966 + 1;

  //    13      q = (400+24) + 242

  Q = 400 + 24 + 242;

  //    14      q = 123 & 12 + 234 ! 23 * 345 !! 34 - 45 - (5 // 2) << 2 >> 3 ^^ 2 ^^ 2

  Q = (((123 & 12) + 234 | 23 * 345) ^ 34) - 45 -
      _imp_IEXP(_imp_IEXP((unsigned int)((long)5 / (long)2) << 2 >> 3, 2), 2);

  //    15      q = 1

  Q = 1;

  //    16      q = '*'

  Q = 42;

  //    17      q = '    '

  Q = 32;

  //    18      q = M'abcd'

  Q = 1633837924;

  //    19      q = K'7777'

  Q = 4095;

  //    20      q = B'0101010101'

  Q = 341;

  //    21      q = 123

  Q = 123;

  //    22      q = X'CAFE' + 1

  Q = 51966 + 1;

  //    23      q = (400+24) + 242

  Q = 400 + 24 + 242;

  //    24      q = 123 & 12 + 234 ! 23 * 345 !! 34 - 45 - (5 // 2) << 2 >> 3 ^^ 2 ^^ 2

  Q = (((123 & 12) + 234 | 23 * 345) ^ 34) - 45 -
      _imp_IEXP(_imp_IEXP((unsigned int)((long)5 / (long)2) << 2 >> 3, 2), 2);

  //    25      q = 1

  Q = 1;

  //    26      q = q2

  Q = Q2;

  //    27      p == q

  P = (int *)/*?*/ &Q;

  //    28      p == p2

  P = (int *)P2;

  //    29      p = 1

  *P = 1;

  //    30      p = q

  *P = Q;

  //    31  %endofprogram

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