#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %integer data
int DATA;
// 3 %integername pointer
int *POINTER;
// 4 %integermap mapresult
int *MAPRESULT(void) {
// 5 %owninteger data2
static int DATA2;
// 6 %result == data2
return /*?*/ &DATA2;
// 7 %end
} /* end of MAPRESULT */
// 8
// 9 %integermap test(%integer n)
int *TEST(int N) {
// 10 %result == data %if n = 1
if (N != 1) goto L_0001;
return /*?*/ &DATA;
L_0001:;
// 11 %result == pointer %if n = 2
if (N != 2) goto L_0002;
return POINTER;
L_0002:;
// 12 %result == mapresult
return MAPRESULT();
// 13 %end
} /* end of TEST */
// 14
// 15 %integer q
int Q;
// 16
// 17 q = test(4)
Q = *TEST(4);
// 18
// 19 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}