#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2
// 3 %string(255) x, s
_imp_string255 X;
_imp_string255 S;
// 4
// 5 %integer i
int I;
// 6 %string(255)%name sn
_imp_string255 *SN;
// 7 %string(255)%array sra(0:9)
_imp_string255 SRA[10];
// 8 %string(255)%namearray sna(0:9)
_imp_string255 *SNA[10];
// 9 %string(255)%namearrayname snan
_imp_string255 **SNAN;
// 10 %string(255)%map sm(%integer i); %result == s; %end
_imp_string255 *SM(int I)
{
return /*?*/ &S;
} /* end of SM */
// ?I unused
// 11 sn == s
SN = (_imp_string255 *)/*?*/ &S;
// 12 x = s
_imp_strncpy(/*?*/ &X, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = S;
(void *)&tmp;
}),
/*max:*/ 255);
// 13 x = sn
_imp_strncpy(/*?*/ &X, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *SN;
(void *)&tmp;
}),
/*max:*/ 255);
// 14 sn = x
*SN = X;
// 15 x = sra(i)
_imp_strncpy(/*?*/ &X, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = SRA[I];
(void *)&tmp;
}),
/*max:*/ 255);
// 16 sn == sra(i)
SN = (_imp_string255 *)/*?*/ &SRA[I];
// 17 x = sra(i)
_imp_strncpy(/*?*/ &X, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = SRA[I];
(void *)&tmp;
}),
/*max:*/ 255);
// 18 sra(i) = x
_imp_strncpy(/*?*/ &SRA[I], ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = X;
(void *)&tmp;
}),
/*max:*/ 255);
// 19 sn == sna(i)
SN = (_imp_string255 *)SNA[I];
// 20 x = sna(i)
_imp_strncpy(/*?*/ &X, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *SNA[I];
(void *)&tmp;
}),
/*max:*/ 255);
// 21 sna(i) = x
*SNA[I] = X;
// 22 snan == sna
SNAN = (_imp_string255 *)SNA;
// 23 sn == snan(i)
SN = (_imp_string255 *)[/*BUG*/ 0];
// 24 x = snan(i)
_imp_strncpy(/*?*/ &X, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *[/*BUG*/ 0];
(void *)&tmp;
}),
/*max:*/ 255);
// 25 snan(i) = x
*[/*BUG*/ 0] = X;
// 26 x = sm(i)
_imp_strncpy(/*?*/ &X, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *SM(I);
(void *)&tmp;
}),
/*max:*/ 255);
// 27 sn == sm(i)
SN = (_imp_string255 *)SM(I);
// 28 sm(i) = x
*SM(I) = X;
// 29 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}