#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %externalroutinespec pass

extern void PASS(void);

//     2  %externalroutinespec fail

extern void FAIL(void);

//     3  %constinteger three = 3, four = 4
//     4  %routine checkstar(%string(*)%array%name s)

static void CHECKSTAR(_imp_string *S) {
  //     5    %if s(1) = "one" %and s(2) = "two" %and s(3) = "three" %c

  if (_imp_strcmp((_imp_string *)/*?*/ &[/*BUG*/ 0], (_imp_string *)/*?*/ _imp_str_literal_ptr("one")) != 0)
    goto L_0001;

  if (_imp_strcmp((_imp_string *)/*?*/ &[/*BUG*/ 0], (_imp_string *)/*?*/ _imp_str_literal_ptr("two")) != 0)
    goto L_0001;

  if (_imp_strcmp((_imp_string *)/*?*/ &[/*BUG*/ 0], (_imp_string *)/*?*/ _imp_str_literal_ptr("three")) != 0)
    goto L_0001;

  if (_imp_strcmp((_imp_string *)/*?*/ &[/*BUG*/ 0], (_imp_string *)/*?*/ _imp_str_literal_ptr("four")) != 0)
    goto L_0001;

  PASS();
  goto L_0002;
L_0001:;
  FAIL();
L_0002:;

//     6+   %and s(four) = "four" %then pass %else fail
//     7    s(three) = "333"

  [/*BUG*/ 0] = _imp_str_literal("333");

  //     8  %end

  return;
} /* end of CHECKSTAR */

//     9
//    10  %endoffile