#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  _imp_string S24 = _imp_str_literal("123");
  _imp_string S32 = _imp_str_literal("56789ABCD");
  _imp_string S4 = _imp_str_literal("123");
  _imp_string S8 = _imp_str_literal("6789AB");
  int W;
  int X;
  int Y;
  int Z;
  void Runtest(_imp_string S24, _imp_string S32, _imp_string S4,
               _imp_string S8) {
    _imp_string S;
    _imp_string A;
    _imp_string B;
    _imp_string C;
    Newline();
    W = Sizeof(S24);
    Y = Sizeof(S32);
    Printstring(_imp_str_literal("Initial                  : A "));
    Spaces(W - *Length(S24));
    Printstring(_imp_str_literal(" B "));
    Newline();
    Printstring(
        _imp_join(_imp_str_literal("  String Size            : "), Itos(W, 0)));
    Spaces(W - *Length(Itos(W, 0)));
    Printstring(Itos(Y, 0));
    Newline();
    Printstring(_imp_join(_imp_str_literal("  Max String Length      : "),
                          Itos(W - 1, 0)));
    Spaces(W - *Length(Itos(W - 1, 0)));
    Printstring(Itos(Y - 1, 0));
    Newline();
    Printstring(_imp_join(_imp_str_literal("  Current String Length  : "),
                          Itos(*Length(S24), 0)));
    Spaces(W - *Length(Itos(*Length(S24), 0)));
    Printstring(Itos(*Length(S32), 0));
    Newline();
    Printstring(
        _imp_join(_imp_str_literal("                         : "), S24));
    Spaces(Sizeof(S24) - *Length(S24));
    Printstring(S32);
    Newline();
    S24 = _imp_join(S24, S32);
    Printstring(_imp_str_literal(" strcat a = a.b          : "));
    Newline();
    Printstring(
        _imp_join(_imp_str_literal("                         : "), S24));
    Spaces(Sizeof(S24) - *Length(S24));
    Printstring(S32);
    Newline();
    S32 = S24;
    Printstring(_imp_str_literal(" strcpy b = a            : "));
    Newline();
    Printstring(
        _imp_join(_imp_str_literal("                         : "), S24));
    Spaces(Sizeof(S24) - *Length(S24));
    Printstring(S32);
    Newline();
    Printstring(
        _imp_join(_imp_str_literal("Comparing                : "), S24));
    Spaces(W - *Length(S24));
    Printstring(S32);
    Newline();
    if (S24 == S32) {
      Printstring(_imp_str_literal("Comparing a = b is TRUE"));
      Newline();
    }
    if (S24 != S32) {
      Printstring(_imp_str_literal("Comparing a # b is TRUE"));
      Newline();
    }
    if (S24 > S32) {
      Printstring(_imp_str_literal("Comparing a > b is TRUE"));
      Newline();
    }
    if (S24 < S32) {
      Printstring(_imp_str_literal("Comparing a < b is TRUE"));
      Newline();
    }
    Newlines(2);
    Printstring(_imp_str_literal("Initial                  : A "));
    Spaces(Sizeof(S4) - *Length(S4));
    Printstring(_imp_str_literal(" B "));
    Newline();
    Printstring(_imp_join(_imp_str_literal("                         : "), S4));
    Spaces(Sizeof(S4) - *Length(S4));
    Printstring(S8);
    Newline();
    S4 = S8;
    Printstring(_imp_join(_imp_str_literal("After strjam a <- b      : "), S4));
    Spaces(Sizeof(S4) - *Length(S4));
    Printstring(S8);
    Newline();
    S8 = _imp_join(S8, S4);
    Printstring(_imp_join(_imp_str_literal("After strjcat b <- b + a : "), S4));
    Spaces(Sizeof(S4) - *Length(S4));
    Printstring(S8);
    Newline();
    Printstring(_imp_join(_imp_str_literal("Comparing                : "), S4));
    Spaces(Sizeof(S4) - *Length(S4));
    Printstring(S8);
    Newline();
    if (S4 == S8) {
      Printstring(_imp_str_literal("Comparing a = b is TRUE"));
      Newline();
    }
    if (S4 != S8) {
      Printstring(_imp_str_literal("Comparing a # b is TRUE"));
      Newline();
    }
    if (S4 > S8) {
      Printstring(_imp_str_literal("Comparing a > b is TRUE"));
      Newline();
    }
    if (S4 < S8) {
      Printstring(_imp_str_literal("Comparing a < b is TRUE"));
      Newline();
    }
    Newlines(2);
    Printstring(
        _imp_str_literal("*************************************************"));
    Newlines(2);
    S = _imp_str_literal("61239AB");
    B = _imp_str_literal("123");
    if (!_imp_resolve(S, A, B, C)) _imp_signal(7, 0, 0);
    Printstring(_imp_join(
        _imp_str_literal(" String resolution '"),
        _imp_join(
            S,
            _imp_join(
                _imp_str_literal("' -> A.('"),
                _imp_join(
                    B,
                    _imp_join(
                        _imp_str_literal("').C gives '"),
                        _imp_join(
                            A, _imp_join(
                                   _imp_str_literal("'('"),
                                   _imp_join(
                                       B, _imp_join(
                                              _imp_str_literal("')'"),
                                              _imp_join(C, _imp_str_literal(
                                                               "'"))))))))))));
    Newlines(2);
  }
  Setprompt;
  Printstring(_imp_str_literal("Load a value for s24"));
  Newline();
  Read(S24);
  Runtest(S24, S32, S4, S8);
  exit(0);
  return (1);
}
