#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  int I;
  int J;
  int L1;
  int L2;
  int L3;
  _imp_string S;
  typedef struct F {
    _imp_string Ss1;
    _imp_string *Sn;
  } F;
  F R;
  _imp_string Sn;
  _imp_string Snn;
  _imp_string Xname;
  J = Addr(S);
  I = Addr(Sn);
  S = _imp_str_literal("TESTTESTTEST");
  Sn = S;
  L1 = *Length(*String(I));
  R.Ss1 = S;
  Xname = *String(J);
  R.Sn = &Snn;
  R.Sn = S;
  L2 = *Length(R.Ss1);
  L3 = *Length(Snn);
  if (L1 == 4 && L2 == 8 && L3 == 4 && Sn == Snn &&
      _imp_strcmp(Snn, _imp_str_literal("TEST")) == 0 &&
      _imp_strcmp(R.Ss1, _imp_str_literal("TESTTEST")) == 0 &&
      _imp_strcmp(Xname, _imp_str_literal("TEST")) == 0)
    Printstring(_imp_str_literal("TEST OK"));
  else {
    Printstring(_imp_str_literal("WRONG ANSWERS"));
    Printstring(_imp_str_literal("L1(4)="));
    Write(L1, 4);
    Newline();
    Printstring(_imp_str_literal("L2(8)="));
    Write(L2, 4);
    Newline();
    Printstring(_imp_str_literal("L3(4)="));
    Write(L3, 4);
    Newline();
    Printstring(_imp_join(_imp_str_literal("SN(TEST)="), Sn));
    Newline();
    Printstring(_imp_join(_imp_str_literal("SNN(TEST)="), Snn));
    Newline();
    Printstring(_imp_join(_imp_str_literal("R_SS1(TESTTEST="), R.Ss1));
    Newline();
    Printstring(_imp_join(_imp_str_literal("XNAME(TEST)="), Xname));
    Newline();
    _imp_monitor();
  }
  exit(0);
  return (1);
}
