#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  static const int Strlen = 3;
  static const _imp_string Check[3 /*1:3*/] = {_imp_str_literal("ABC"),
                                               _imp_str_literal("DEF"),
                                               _imp_str_literal("GHI")};
  int I;
  int Fail;
  _imp_string Sf[3 /*1:3*/];
  _imp_string San;
  typedef struct F {
    int I;
    int J;
    _imp_string S[3 /*1:3*/];
    _imp_string Sn;
  } F;
  F *R;
  static unsigned char A[36 /*0:35*/] = {
      0,    0,    0,    1,    0,    0,    0,
      2,    0x03, 0x41, 0x42, 0x43, 0x03, 0x44,
      0x45, 0x46, 0x03, 0x47, 0x48, 0x49, [20 ... 35] = 0};
  void Checkvalue(int I, _imp_string S) {
    if (S != Check[I]) {
      Printstring(_imp_str_literal("\nBUG IN STRING VALUE"));
      Fail = 1;
      _imp_monitor();
    }
  }
  void Checkname(int I, _imp_string *S) {
    if (*S != Check[I]) {
      Printstring(_imp_str_literal("\nBUG IN STRING NAMES"));
      Fail = 1;
      _imp_monitor();
    }
  }
  Fail = 0;
  R = Record(Addr(A[0]));
  *San = &Array;
  R->Sn = &R->S;
  Checkvalue(1, R->S);
  Checkname(1, R->S);
  Checkvalue(1, R->Sn);
  Checkname(1, R->Sn);
  Checkvalue(1, San(1));
  Checkname(1, San(1));
  for (I = 1; I <= 3; I++) {
    Checkvalue(I, R->S);
    Checkname(I, R->S);
    Checkvalue(I, R->Sn);
    Checkname(I, R->Sn);
    Checkvalue(I, San(I));
    Checkname(I, San(I));
  }
  if (!Fail) Printstring(_imp_str_literal("Test OK"));
  exit(0);
  return (1);
}
