#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_string Param;
  int J = 23 + 77 - 50;
  int K = J - 40;
  int M;
  int N;
  int R;
  int P;
  int Nl;
  int Spaces;
  unsigned char B = 'F';
  char Mi;
  unsigned short H;
  short S;
  short T;
  static const unsigned char Cb1 = 255;
  static const unsigned char Cb2 = 0;
  static const int Cint1 = Cb1 + 3 * 4;
  static const int Cint2 = Cint1 + Cb2 + 321;
  static const int Cint4 = 3;
  static const int Mint1 = 'X';
  static const int Mint2 = 'IMP';
  static int Failures = 0;
  void Pass(void) {
    Printstring(_imp_str_literal("Pass"));
    Newline();
  }
  void Fail(void) {
    Printstring(_imp_str_literal("FAIL"));
    Newline();
    Failures++;
  }
  int F(void) { return (3); }
  Param = Cliparam();
  if (Param == _imp_str_literal(""))
    Selectoutput(2);
  else if (Param == _imp_str_literal("s") || Param == _imp_str_literal("S"))
    Selectoutput(0);
  else if (Param == _imp_str_literal("j") || Param == _imp_str_literal("J")) {
    Openoutput(2, _imp_str_literal("journal"));
    Selectoutput(2);
  } else {
    Openoutput(2, Param);
    Selectoutput(2);
  }
  Newlines(2);
  Printstring(_imp_str_literal("INTEGER Arithmetic Validation"));
  Newline();
  Printstring(_imp_str_literal("============================="));
  Newlines(3);
  Printstring(_imp_str_literal("Test Simple Assignment of Integer Values"));
  Newline();
  Printstring(_imp_str_literal("----------------------------------------"));
  Newline();
  if (J == 50)
    Pass();
  else
    Fail();
  if (K == 10)
    Pass();
  else
    Fail();
#if 1 /* Cint1==267 */
  Pass();
#else
  Fail();
#endif

#if 1 /* Mint1=='X' */
  Pass();
#else
  Fail();
#endif

#if 1 /* Mint2==((('I'<<8) + 'M')<<8) + 'P' */
  Pass();
#else
  Fail();
#endif

#if 1 /* Cint2==588 */
  Pass();
#else
  Fail();
#endif
  Newlines(2);
  Printstring(_imp_str_literal("Test the  SIZE OF  Function."));
  Newline();
  Printstring(_imp_str_literal("----------------------------"));
  Newline();
  Printstring(_imp_str_literal("Size of %INTEGER ="));
  Write(Sizeof(J), 1);
  Newline();
  Printstring(_imp_str_literal("Size of %SHORT   ="));
  Write(Sizeof(S), 1);
  Newline();
  Printstring(_imp_str_literal("Size Of %HALF    ="));
  Write(Sizeof(H), 1);
  Newline();
  Printstring(_imp_str_literal("Size of %BYTE    ="));
  Write(Sizeof(B), 1);
  Newline();
  Printstring(_imp_str_literal("Size of %MITE    ="));
  Write(Sizeof(Mi), 1);
  Newline();
  Newlines(3);
  Printstring(_imp_str_literal("Test Re-Assignment of Predeclared Procedures"));
  Newline();
  Printstring(_imp_str_literal("--------------------------------------------"));
  Newline();
  Nl = 100;
  Spaces = 50;
  if (Nl == 100)
    Pass();
  else
    Fail();
  if (Spaces == 50)
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(_imp_str_literal("Test the Handling of Integer Expressions"));
  Newline();
  Printstring(_imp_str_literal("----------------------------------------"));
  Newline();
  M = 3;
  J = 3 + Cint4 + M + F();
  if (J == 12)
    Pass();
  else
    Fail();
  J = 3;
  K = 2;
  M = 30;
  N = 5;
  P = IEXP(-1, 3);
  if (P == -1)
    Pass();
  else
    Fail();
  P = IEXP((-1), 2);
  if (P == 1)
    Pass();
  else
    Fail();
  P = IEXP(2, IEXP(2, 3));
  if (P == 64)
    Pass();
  else
    Fail();
  P = 2 + 3 * IEXP(5, 3) - 1;
  if (P == 376)
    Pass();
  else
    Fail();
  P = 2 + (-3);
  if (P == -1)
    Pass();
  else
    Fail();
  P = J - (-K);
  if (P == 5)
    Pass();
  else
    Fail();
  P = J * K + M / N - 6;
  if (P == 6)
    Pass();
  else
    Fail();
  P = J * (K + M) / N - 6;
  if (P == 13)
    Pass();
  else
    Fail();
  P = (J * K) + M / (N - 6);
  if (P == -24)
    Pass();
  else
    Fail();
  P = J * (K + M / N - 6);
  if (P == 6)
    Pass();
  else
    Fail();
  if ((-J) * (-K) == K * J)
    Pass();
  else
    Fail();
  if ((((J * K) + (M / N)) - 6) == M / N + K * J - 6)
    Pass();
  else
    Fail();
  J = abs((Cint4 + IEXP(F(), 3)) * (234 - IEXP((Cint1 - 500), K) / 30) * 3 -
          1000 / (-F()));
  if (J == 141417)
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(_imp_str_literal(
      "Test Coercion Between the Various Types, with Assignment"));
  Newline();
  Printstring(_imp_str_literal(
      "--------------------------------------------------------"));
  Newline();
  B = 'F';
  S = 60;
  H = 50;
  Mi = 40;
  J = B;
  if (J == 70)
    Pass();
  else
    Fail();
  J = S;
  if (J == 60)
    Pass();
  else
    Fail();
  J = H;
  if (J == 50)
    Pass();
  else
    Fail();
  J = Mi;
  if (J == 40)
    Pass();
  else
    Fail();
  J = 80;
  B = J;
  if (B == 80)
    Pass();
  else
    Fail();
  B = S;
  if (B == 60)
    Pass();
  else
    Fail();
  B = H;
  if (B == 50)
    Pass();
  else
    Fail();
  B = Mi;
  if (B == 40)
    Pass();
  else
    Fail();
  B = 70;
  S = J;
  if (S == 80)
    Pass();
  else
    Fail();
  S = B;
  if (S == 70)
    Pass();
  else
    Fail();
  S = H;
  if (S == 50)
    Pass();
  else
    Fail();
  S = Mi;
  if (S == 40)
    Pass();
  else
    Fail();
  S = 60;
  H = J;
  if (H == 80)
    Pass();
  else
    Fail();
  H = B;
  if (H == 70)
    Pass();
  else
    Fail();
  H = S;
  if (H == 60)
    Pass();
  else
    Fail();
  H = Mi;
  if (H == 40)
    Pass();
  else
    Fail();
  H = 50;
  Mi = J;
  if (Mi == 80)
    Pass();
  else
    Fail();
  Mi = B;
  if (Mi == 70)
    Pass();
  else
    Fail();
  Mi = S;
  if (Mi == 60)
    Pass();
  else
    Fail();
  Mi = H;
  if (Mi == 50)
    Pass();
  else
    Fail();
  Mi = 40;
  J = Cb1;
  if (J == 255)
    Pass();
  else
    Fail();
  J = -Cb1;
  if (J == -255)
    Pass();
  else
    Fail();
  J = 80;
  Newlines(2);
  Printstring(_imp_str_literal("Check coercion with comparison"));
  Newline();
  Printstring(_imp_str_literal("------------------------------"));
  Newline();
  if (J > B)
    Pass();
  else
    Fail();
  if (J < S)
    Fail();
  else
    Pass();
  if (J == H)
    Fail();
  else
    Pass();
  if (J >= Mi)
    Pass();
  else
    Fail();
  if (B != J)
    Pass();
  else
    Fail();
  if (B <= S)
    Fail();
  else
    Pass();
  if (B == H)
    Fail();
  else
    Pass();
  if (B > Mi)
    Pass();
  else
    Fail();
  if (S < J)
    Pass();
  else
    Fail();
  if (S >= B)
    Fail();
  else
    Pass();
  if (S != H)
    Pass();
  else
    Fail();
  if (S <= Mi)
    Fail();
  else
    Pass();
  if (H < J)
    Pass();
  else
    Fail();
  if (H == B)
    Fail();
  else
    Pass();
  if (H >= S)
    Fail();
  else
    Pass();
  if (H > Mi)
    Pass();
  else
    Fail();
  if (Mi != J)
    Pass();
  else
    Fail();
  if (Mi >= B)
    Fail();
  else
    Pass();
  if (Mi == S)
    Fail();
  else
    Pass();
  if (Mi < H)
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(_imp_str_literal("Check Coercion with arithmetic"));
  Newline();
  Printstring(_imp_str_literal("------------------------------"));
  Newline();
  if (J + B == 150)
    Pass();
  else
    Fail();
  if (J - S == 20)
    Pass();
  else
    Fail();
  if (J * H == 4000)
    Pass();
  else
    Fail();
  if (J / Mi == 2)
    Pass();
  else
    Fail();
  if (B - J == -10)
    Pass();
  else
    Fail();
  if (B * S == 4200)
    Pass();
  else
    Fail();
  if (B / H == 1)
    Pass();
  else
    Fail();
  if (B + Mi == 110)
    Pass();
  else
    Fail();
  if (S * J == 4800)
    Pass();
  else
    Fail();
  if (!(S / B))
    Pass();
  else
    Fail();
  if (S + H == 110)
    Pass();
  else
    Fail();
  if (S - Mi == 20)
    Pass();
  else
    Fail();
  if (!(H / J))
    Pass();
  else
    Fail();
  if (H + B == 120)
    Pass();
  else
    Fail();
  if (H - S == -10)
    Pass();
  else
    Fail();
  if (H * Mi == 2000)
    Pass();
  else
    Fail();
  if (Mi * J == 3200)
    Pass();
  else
    Fail();
  if (Mi - S == -20)
    Pass();
  else
    Fail();
  if (Mi + B == 110)
    Pass();
  else
    Fail();
  if (!(Mi / H))
    Pass();
  else
    Fail();
  if (J + B + S + H + Mi == 300)
    Pass();
  else
    Fail();
  if (-B - S - H - Mi - J == -300)
    Pass();
  else
    Fail();
  if (Mi * H * S * B / J == 105000)
    Pass();
  else
    Fail();
  if (J * H - B / S + Mi == 4039)
    Pass();
  else
    Fail();
  Selectoutput(0);
  Write(Failures, 1);
  Printstring(_imp_str_literal(" failure(s)"));
  Newline();
  exit(0);
  return (1);
}
