#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_enter();
  int I;
  int J;
  int L1;
  int L2;
  int L3;
  _imp_string S;

  typedef struct F {
    _imp_string *SN;
    _imp_string SS1;

  } 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 &&
      SNN == _imp_str_literal("TEST") &&
      R.SS1 == _imp_str_literal("TESTTEST") &&
      XNAME == _imp_str_literal("TEST"))
    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(0);
  }

  _imp_leave();
  exit(0);
  return (0);
}
