#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 = q2
Q = Q2;
// 16 p == q
P = (int *)/*?*/ &Q;
// 17 p == p2
P = (int *)P2;
// 18 p = 1
*P = 1;
// 19 p = q
*P = Q;
// 20 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}