#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %integer value, value2
int VALUE;
int VALUE2;
// 3 %integername ptr, ptr2
int *PTR;
int *PTR2;
// 4
// 5 %integermap intmap
int *INTMAP(void)
{
// 6 %result == value2
return /*?*/ &VALUE2;
// 7 %end
} /* end of INTMAP */
// 8
// 9 %integermap intmap2(%integer i)
int *INTMAP2(int I)
{
// 10 %result == ptr
return PTR;
// 11 %end
} /* end of INTMAP2 */
// ?I unused
// 12
// 13 ptr == value
PTR = (int *)/*?*/ &VALUE;
// 14 ptr == intmap
PTR = (int *)INTMAP();
// 15 ptr == intmap2(55)
PTR = (int *)INTMAP2(55);
// 16 ptr == ptr
PTR = (int *)PTR;
// 17 ptr = 42
*PTR = 42;
// 18
// 19 value = 21
VALUE = 21;
// 20 value = ptr
VALUE = *PTR;
// 21 value = intmap
VALUE = *INTMAP();
// 22 value = intmap2(44)
VALUE = *INTMAP2(44);
// 23
// 24 intmap = 63
*INTMAP() = 63;
// 25 intmap2(88) = 63
*INTMAP2(88) = 63;
// 26
// 27 %if value2 = value %then %stop
if (VALUE2 != VALUE) goto L_0001;
_imp_stop(0);
L_0001:;
// 28 %if intmap = value %then %stop
if (*INTMAP() != VALUE) goto L_0002;
_imp_stop(0);
L_0002:;
// 29 %if intmap2(99) = value %then %stop
if (*INTMAP2(99) != VALUE) goto L_0003;
_imp_stop(0);
L_0003:;
// 30 %if ptr = value %then %stop
if (*PTR != VALUE) goto L_0004;
_imp_stop(0);
L_0004:;
// 31 %if intmap == ptr %then %stop
if (_imp_ADDR((void *)(INTMAP())) != _imp_ADDR((void *)(PTR))) goto L_0005;
_imp_stop(0);
L_0005:;
// 32 %if intmap2(11) == ptr %then %stop
if (_imp_ADDR((void *)(INTMAP2(11))) != _imp_ADDR((void *)(PTR))) goto L_0006;
_imp_stop(0);
L_0006:;
// 33 %if ptr == ptr2 %then %stop
if (_imp_ADDR((void *)(PTR)) != _imp_ADDR((void *)(PTR2))) goto L_0007;
_imp_stop(0);
L_0007:;
// 34
// 35 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}