#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %string(2) %fn symbolprefix
_imp_string2 SYMBOLPREFIX(void) {
// 3 %result = "_"
return *(_imp_string2 *)/*?*/ _imp_str_literal_ptr("_");
// 4 %end
} /* end of SYMBOLPREFIX */
// 5
// 6 %routine r
void R(void) {
// 7 %string(255) name
_imp_string255 NAME;
// 8 name = symbolprefix."HELP"
/* clang-format off */
_imp_strncpy(/*?*/&NAME, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join(({__typeof__(_imp_string2) tmp; /*D*/ tmp = SYMBOLPREFIX(); (void *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("HELP")); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);
/* clang-format on */
// 9 %if name="_HELP" %then printstring("Test OK")
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&NAME, (_imp_string *)/*?*/_imp_str_literal_ptr("_HELP")) != 0) goto L_0001;
/* clang-format on */
_imp_PRINTSTRING(_imp_str_literal("Test OK"));
L_0001:;
// 10 %end
return;
} /* end of R */
// 11 r
R();
// 12 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}