#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_string Param;
  int J;
  int K;
  int L;
  int M;
  int N;
  int P;
  int Q;
  int Acc;
  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("Iterative Statements"));
  Newline();
  Printstring(_imp_str_literal("===================="));
  Newlines(3);
  Printstring(_imp_str_literal("Test the %FOR Statement"));
  Newline();
  Printstring(_imp_str_literal("-----------------------"));
  Newline();
  Acc = 0;
  for (K = -10; K <= 10; K++) Acc++;
  if (Acc == 21)
    Pass();
  else
    Fail();
  Acc = 0;
  J = 1;
  for (K = 2; K <= J; K++) Acc++;
  if (Acc == 0 && K == 1)
    Pass();
  else
    Fail();
  Acc = 0;
  L = 1000000;
  M = 5;
  N = 3;
  for (K = Acc; K != IEXP(10, M) * (N * 3 + 1) + L / 10; K += L / 10) Acc++;
  if (Acc == 11 && K == 1000000)
    Pass();
  else
    Fail();
  Acc = 0;
  for (K = -1; K <= 1; K += 2)
    for (L = 0; L <= 6; L += 3)
      for (M = 1; M <= 4; M++)
        for (N = 4; N >= -2; N -= 2)
          for (P = -1000; P <= 1000; P += 1000) {
            Acc++;
            for (Q = 2; Q <= 1; Q++) Acc++;
          }
  if (Acc == 288 && K == 1 && L == 6 && M == 4 && N == -2 && P == 1000)
    Pass();
  else
    Fail();
  Acc = 0;
  for (K = -2; K <= 2; K++) Acc++;
  if (Acc == 5 && K == 2)
    Pass();
  else
    Fail();
  Acc = 0;
  for (K = 2; K <= 1; K++) Acc++;
  if (Acc == 0 && K == 1)
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(_imp_str_literal("Test the %WHILE Statement"));
  Newline();
  Printstring(_imp_str_literal("-------------------------"));
  Newline();
  Acc = 0;
  K = 3;
  while (K > 3) {
    Acc++;
    K--;
  }
  if (Acc == 0 && K == 3)
    Pass();
  else
    Fail();
  Acc = 0;
  K = 10;
  while (K > 0) {
    Acc++;
    K--;
  }
  if (Acc == 10 && K == 0)
    Pass();
  else
    Fail();
  Acc = 0;
  K = 5;
  while (K > 3) {
    L = 6;
    while (L > 4) {
      M = 7;
      while (M > 5) {
        N = 8;
        while (N > 6) {
          P = 9;
          while (P > 7) {
            Q = 10;
            while (Q > 8) {
              Acc++;
              Q--;
            }
            P--;
          }
          N--;
        }
        M--;
      }
      L--;
    }
    K--;
  }
  if (Acc == 64)
    Pass();
  else
    Fail();
  Acc = 0;
  while (Acc < 10) Acc++;
  if (Acc == 10)
    Pass();
  else
    Fail();
  Acc = 0;
  while (Acc < 0) Acc++;
  if (!Acc)
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(_imp_str_literal("Test the %UNTIL Statement"));
  Newline();
  Printstring(_imp_str_literal("-------------------------"));
  Newline();
  Acc = 0;
  K = 0;
  do {
    K--;
    Acc++;
  } while (K > 0);
  if (Acc == 1 && K == -1)
    Pass();
  else
    Fail();
  Acc = 0;
  K = 10;
  do {
    Acc++;
    K--;
  } while (K);
  if (Acc == 10 && K == 0)
    Pass();
  else
    Fail();
  Acc = 0;
  do
    Acc++;
  while (Acc != 10);
  if (Acc == 10)
    Pass();
  else
    Fail();
  Newlines(2);
  Printstring(_imp_str_literal("Test the %EXIT and %CONTINUE Statements"));
  Newline();
  Printstring(_imp_str_literal("---------------------------------------"));
  Newline();
  Acc = 0;
  K = 0;
  for (;;) {
    K++;
    break;
    Acc++;
  }
  if (!Acc)
    Pass();
  else
    Fail();
  Acc = 0;
  for (;;) {
    if (Acc == 10) break;
    Acc++;
  }
  if (Acc == 10)
    Pass();
  else
    Fail();
  Acc = 0;
  K = 0;
  for (;;) {
    for (;;) {
      K++;
      break;
      Acc++;
    }
    Acc += 10;
    break;
  }
  if (Acc == 10)
    Pass();
  else
    Fail();
  Acc = 0;
  for (J = 1; J <= 5; J++) {
    if (J == 3) break;
    for (K = 1; K <= 3; K++) {
      Acc++;
      if (K == 2) break;
    }
  }
  if (Acc == 4 && J == 3 && K == 2)
    Pass();
  else
    Fail();
  Acc = 0;
  for (K = 1; K <= 10; K++) {
    Acc += K;
    if (K == 5) continue;
    Acc -= K;
  }
  if (Acc == 5)
    Pass();
  else
    Fail();
  Selectoutput(0);
  Write(Failures, 1);
  Printstring(_imp_str_literal(" failure(s)"));
  Newline();
  exit(0);
  return (1);
}
