#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_string Param;
  static const int Bits1 = 0b00000000000000000000000000000000;
  int Bits2 = 0b01010101010101010101010101010101;
  static const int Bits3 = 0b00001111000011110000111100001111;
  int Bits4 = 0b11111111111111111111111111111111;
  int Bits5 = 0b10110111100001010011110010101000;
  static const int Bits6 = 0b00100110111100101010100111110111;
  int Lmask = 0b10000000000000000000000000000000;
  int Rmask = 0b00000000000000000000000000000001;
  static int Failures = 0;
  void Pass(void) {
    Printstring(_imp_str_literal("Pass"));
    Newline();
  }
  void Fail(void) {
    Printstring(_imp_str_literal("FAIL"));
    Newline();
    Failures++;
  }
  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("Logical Operation Validation"));
  Newline();
  Printstring(_imp_str_literal("============================"));
  Newlines(3);
  Printstring(_imp_str_literal("Test the Bit Vector Operations."));
  Newline();
  Printstring(_imp_str_literal("-------------------------------"));
  Newline();
#if 1 /*  !Bits1 */
  Pass();
#else
  Fail();
#endif
  if (Bits2 == 1431655765)
    Pass();
  else
    Fail();
#if 1 /* Bits3==252645135 */
  Pass();
#else
  Fail();
#endif
  if (Bits4 == -1)
    Pass();
  else
    Fail();
  if ((Bits2 & Bits3) == 84215045)
    Pass();
  else
    Fail();
  if ((Bits2 | Bits3) == 1600085855)
    Pass();
  else
    Fail();
  if ((Bits2 ^ Bits3) == 1515870810)
    Pass();
  else
    Fail();
  if (~Bits2 == -1431655766)
    Pass();
  else
    Fail();
#if 1 /* Bits3<<4== -252645136 */
  Pass();
#else
  Fail();
#endif
  if ((unsigned)Bits2 >> 4 == 89478485)
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(
      _imp_str_literal("Test the Precedence of the Logical Operators."));
  Newline();
  Printstring(
      _imp_str_literal("---------------------------------------------"));
  Newline();
  if ((((~Bits6) & ((unsigned)Bits3 >> 6)) ^ Bits5) ==
      (~Bits6 & (unsigned)Bits3 >> 6 ^ Bits5))
    Pass();
  else
    Fail();
  if (((~Bits6) & Bits5) == (~Bits6 & Bits5))
    Pass();
  else
    Fail();
  if (((unsigned)(~Bits5) >> 5) == ((unsigned)~Bits5 >> 5))
    Pass();
  else
    Fail();
  if (((~Bits6) | Bits5) == (~Bits6 | Bits5))
    Pass();
  else
    Fail();
  if (((~Bits6) ^ Bits5) == (~Bits6 ^ Bits5))
    Pass();
  else
    Fail();
  if ((Bits6 & ((unsigned)Bits5 >> 4)) == (Bits6 & (unsigned)Bits5 >> 4))
    Pass();
  else
    Fail();
  if ((Bits6 | ((unsigned)Bits5 >> 4)) == (Bits6 | (unsigned)Bits5 >> 4))
    Pass();
  else
    Fail();
  if ((Bits6 ^ ((unsigned)Bits5 >> 4)) == (Bits6 ^ (unsigned)Bits5 >> 4))
    Pass();
  else
    Fail();
  if ((Bits6 & (Bits5 << 4)) == (Bits6 & Bits5 << 4))
    Pass();
  else
    Fail();
  if ((Bits6 | (Bits5 << 4)) == (Bits6 | Bits5 << 4))
    Pass();
  else
    Fail();
  if ((Bits6 ^ (Bits5 << 4)) == (Bits6 ^ Bits5 << 4))
    Pass();
  else
    Fail();
  if ((Bits6 | (Bits5 & Bits3)) == (Bits6 | Bits5 & Bits3))
    Pass();
  else
    Fail();
  if ((Bits6 ^ (Bits5 & Bits3)) == (Bits6 ^ Bits5 & Bits3))
    Pass();
  else
    Fail();
  if (((Bits6 | Bits5) ^ Bits3) == ((Bits6 | Bits5) ^ Bits3))
    Pass();
  else
    Fail();
  if (((Bits6 ^ Bits5) | Bits3) == (Bits6 ^ Bits5 | Bits3))
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(_imp_str_literal("Assorted Tests on the Logical Operators."));
  Newline();
  Printstring(_imp_str_literal("----------------------------------------"));
  Newline();
#if 1 /* (Bits6^Bits3^Bits3)==Bits6 */
  Pass();
#else
  Fail();
#endif

#if 1 /*  ~( ~Bits6)==Bits6 */
  Pass();
#else
  Fail();
#endif
  if (~Bits1 == Bits4)
    Pass();
  else
    Fail();
  if (((unsigned)Rmask >> 10) << 10 == Rmask)
    Fail();
  else
    Pass();
  if (((unsigned)Lmask >> 10) << 10 == Lmask)
    Pass();
  else
    Fail();
#if 1 /* (unsigned)Bits6>>0==Bits6<<0 */
  Pass();
#else
  Fail();
#endif
  Selectoutput(0);
  Write(Failures, 1);
  Printstring(_imp_str_literal(" failure(s)"));
  Newline();
  exit(0);
  return (1);
}
