#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  static int Half = 1;
  static int Lineexp = 0;
  static int Expind = 0;
  static int Expbit = 1024;
  static int Expsh = 0;
  static int Linesub = 0;
  static int Subind = 0;
  static int Subbit = 2048;
  static int Subshb = 0;
  static int Subshe = 0;
  static int Figura = 0;
  static int Sin = 1;
  static int Err = 0;
  static int Doc = 2;
  static int Sout = 3;
  static int Lbound = 200;
  static int Abound = 200;
  static int Sbound = 200;
  static int Vbound = 25;
  static int Escbit = 256;
  static int Undbit = 128;
  static int Casebit = 32;
  static int Charmask = 255;
  static int Basicmask = 127;
  static int Letmask = 95;
  static int Sentsp = 544;
  static int Top = 5;
  static int Bottom = 9;
  static int Left = 0;
  static int Page = 57;
  static int Line = 69;
  static int Sline = 69;
  static int Nls = 2;
  static int Sgap = 2;
  static int Pgap = 3;
  static int Indent = 0;
  static int Sectno = 0;
  static int Pageno = 1;
  static int Start = 1;
  static int Escape = '$';
  static int Cap = '@';
  static int Und = '_';
  static int Capsh = '.';
  static int Undsh = '%';
  static int Capo = '@';
  static int Undo = '_';
  static int Capsho = '.';
  static int Undsho = '%';
  static int Invert = 32;
  static int Ascii = 1;
  static int Just = 1;
  static int Mark = 1;
  static int Tab[26 /*0:25*/] = {1,   7,   13,  19,  25,  31,  37,  43,  49,
                                 55,  61,  89,  97,  105, 113, 121, 129, 137,
                                 145, 153, 161, 169, 177, 185, 193, 201};
  static int Tempa[26 /*0:25*/] = {1,   9,   17,  25,  33,  41,  49,  57,  65,
                                   73,  81,  89,  97,  105, 113, 121, 129, 137,
                                   145, 153, 161, 169, 177, 185, 193, 201};
  static int Tempb[26 /*0:25*/] = {1,   9,   17,  25,  33,  41,  49,  57,  65,
                                   73,  81,  89,  97,  105, 113, 121, 129, 137,
                                   145, 153, 161, 169, 177, 185, 193, 201};
  static int Xlines = 0;
  static int Linecapind = 0;
  static int Lineundind = 0;
  static int Linemidind = 0;
  static int Indentind = 1;
  static int Textind = 0;
  static int Errind = 0;
  static int Endind = 0;
  static int Cols = 0;
  static int Lines = 0;
  static int Pages = 0;
  static int Fixed = 0;
  static int Gaps = 0;
  static int Sgaps = 0;
  static int Size = 0;
  static int Smax = 0;
  static int Indentcol = 1;
  int Next;
  int Directive;
  int Relind;
  int Hbuff[Lbound];
  int Buff[Lbound];
  int Abuff[Abound];
  int Sbuff[Sbound];
  void Fault(int N) {
    static int S_sw;
    static void *S[9 /*1:9*/] = {
        &&S_1, &&S_default, &&S_3, &&S_4, &&S_5, &&S_6, &&S_7, &&S_8, &&S_9,
    };
    Selectoutput(Err);
    Printsymbol('*');
    goto *S[S_sw = (N)-1];
  S_1:
    printstring("FAULTY FORMAT AT ");
    Printch(Next);
    goto L__9;
  S_3:
    printstring("UNKNOWN NAME");
    goto L__9;
  S_4:
    printstring("SCALAR/VECTOR MISMATCH");
    goto L__9;
  S_5:
    printstring("UNKNOWN DIRECTIVE ");
    goto L__8;
  S_6:
    printstring("SPURIOUS DIRECTIVE ");
    goto L__8;
  S_7:
    printstring("OUT OF BOUNDS ");
    goto L__8;
  S_8:
    printstring("OFF PAGE ");
    goto L__8;
  S_9:
    printstring("OVER TEXT ");
  L__8:
    Printch(Directive);
    if (Relind != 0) Printch(Relind);
  L__9:
    Errind = 1;
    Newline();
    goto S_skip;
  S_default:
    fprintf(stderr, "Switch label 'S(%d):' not set in %s", S_sw + 1,
            __PRETTY_FUNCTION__);
    exit(1) /* or %signal ... */;
  S_skip:;
  }
  int Inbuff[200 /*1:200*/];
  static int Inp = 0;
  static int Inmax = 0;
  void Construct(void) {
    int K;
    Inmax = 0;
    do {
      Readch(K);
      Inmax = Inmax + 1;
      Inbuff(Inmax) = K;
    } while (K != Nl);
  }
  void Readone(int *K) {
    Inp = Inp + 1;
    if (Inp > Inmax) {
      Inp = 1;
      Construct();
    }
    K = Inbuff(Inp);
  }
  void Readatomordirective(void) {
    int K;
    int C;
    int U;
    int Atomcapind;
    int Atomundind;
    int Partexpind;
    int Partsubind;
    if (Next == 0)
      Readone(K);
    else {
      K = Next;
      Next = 0;
    }
    Partexpind = 0;
    Partsubind = 0;
    Directive = 0;
    Size = 0;
    Atomcapind = 0;
    Atomundind = 0;
    if (K == Capsh) {
      Atomcapind = Casebit;
      Readone(K);
    }
    for (;;) {
      if (K == Undsh) {
        Atomundind = Undbit;
        Readone(K);
      }
      U = Lineundind;
      C = Linecapind | Atomcapind;
      if (K == Und) {
        U = U | Undbit;
        Readone(K);
      }
      U = U | Partsubind;
      U = U | Partexpind;
      if (K != ' ') U = U | Atomundind;
      if (K == Cap) {
        C = Casebit;
        Readone(K);
      }
      if ('A' <= (K & Letmask) && (K & Letmask) <= 'Z') K = K ^ Invert;
      if ('A' <= (K & Basicmask) - Casebit && (K & Basicmask) - Casebit <= 'Z')
        K = K - C;
      if (K == Nl) break;
      if (K == Escape) {
        Readone(K);
        K = K + Escbit;
      }
      K = K | U;
      if (K == ' ') break;
      if ((K & Escbit) != 0 && 'A' <= (K & Letmask) && (K & Letmask) <= 'Z') {
        if (Size != 0) break;
        Directive = K & Letmask;
        Readone(Next);
        return;
      }
      Size = Size + 1;
      Abuff(Size) = K;
      Readone(K);
    }
    Next = K;
    if (Atomundind == 0 || Size == 0) return;
    K = Abuff(Size) ^ Undbit;
    if (K == '.' || K == ',' || K == ':' || K == ';' || K == ')')
      Abuff(Size) = K;
  }
  void Printsourceline(void) {
    int I;
    if (Errind != 0) {
      Selectoutput(Err);
      I = 0;
      while (I != Smax) {
        I = I + 1;
        Printch(Sbuff(I));
      }
      Newline();
      Errind = 0;
    }
    Selectoutput(Sout);
    I = 0;
    while (I != Smax) {
      I = I + 1;
      Printch(Sbuff(I));
    }
    Newline();
    Smax = 0;
  }
  void Store(int K) {
    Smax = Smax + 1;
    Sbuff(Smax) = K;
  }
  void Storesourceatom(void) {
    int I;
    int J;
    int K;
    int Atomcapind;
    int Atomundind;
    void Translateunderline(void) {
      int P;
      int Q;
      if (Lineundind != 0) {
        K = K - Undbit;
        return;
      }
      if ((K & Basicmask) == ' ') goto One;
      if (Atomundind != 0) {
        K = K - Undbit;
        return;
      }
      if (Undsho == 0) goto One;
      P = I;
      while (P != Size) {
        P = P + 1;
        Q = Abuff(P);
        if ((Q & Undbit) == 0 &&
            (P != Size ||
             (Q != '.' && Q != ',' && Q != ':' && Q != ';' && Q != ')')))
          goto One;
      }
      Store(Undsho);
      K = K - Undbit;
      Atomundind = 1;
      return;
    One:
      if (Undo == 0) return;
      Store(Undo);
      K = K - Undbit;
    }
    Atomcapind = 0;
    Atomundind = 0;
    if (Linecapind == 0 && Capsho != 0 && Size >= 2)
      for (I = 1; I <= Size; I++) {
        K = Abuff(I) & Basicmask;
        if ('A' <= K - Casebit && K - Casebit <= 'Z') {
          Atomcapind = 0;
          break;
        }
        if ('A' <= K && K <= 'Z') Atomcapind = Atomcapind + 1;
      }
    if (Smax != 0 && Xlines == 0)
      if (Smax + Size + 1 <= Sline)
        Store(' ');
      else
        Printsourceline();
    if (Atomcapind != 0) Store(Capsho);
    for (I = 1; I <= Size; I++) {
      K = Abuff(I);
      if ((K & Undbit) != 0) Translateunderline();
      if ('A' <= K && K <= 'Z' && (Linecapind != 0 || Atomcapind != 0))
        K = K + Casebit;
      if ('A' <= K && K <= 'Z' && Capo != 0) {
        Store(Capo);
        K = K + Casebit;
      }
      if ('A' <= (K & Letmask) && (K & Letmask) <= 'Z') K = K ^ Invert;
      if ((K & Escbit) != 0) Store(Escape);
      Store(K & Charmask);
    }
  }
  void Setcolumn(int M) {
    if (1 <= M && M <= Line) {
      M = M - 1;
      if (Cols < M) do {
          Cols = Cols + 1;
          Buff(Cols) = ' ';
        } while (Cols != M);
      else
        while (Cols != M) {
          if (Buff(Cols) != ' ') {
            Fault(9);
            break;
          }
          Cols = Cols - 1;
        }
    } else {
      Fault(8);
      if (Indentcol == M) Indentcol = 1;
    }
    Fixed = Cols;
    Gaps = 0;
    Sgaps = 0;
  }
  void Printdocline(void) {
    static int Cr = 13;
    int I;
    int J;
    int K;
    int L;
    int M;
    int U;
    void Printit(int Buff) {}
    void Putsuporsub(int Msk) {
      for (I = 1; I <= Cols; I++) {
        K = Buff(I);
        if ((K & Msk) != 0) {
          Hbuff(I) = K ^ Msk;
          Buff(I) = ' ';
        } else
          Hbuff(I) = ' ';
      }
    }
    void Wait(void) {
      Selectinput(0);
      Readch(I);
      Spaces(3);
      Newline();
      Printch(Cr);
      Printch(Cr);
      Selectinput(Sin);
    }
    Lines = Lines + Nls;
    if (Pages + 1 >= Start) {
      Selectoutput(Doc);
      if (Lines == Nls) {
        if (Mark != 0) {
          if (Mark == 1) {
            Printsymbol('=');
            Spaces(Line - 2);
            Printsymbol('=');
          } else {
            Printch(12);
          }
          Newline();
        }
        Newlines(Top);
      }
      if (Textind != 0) {
        L = Left;
        if (Linemidind != 0) L = L + (Line - Cols) / 2;
        Spaces(L);
        U = Undbit;
        for (I = 1; I <= Cols; I++) {
          K = Buff(I);
          if ((K & U) != 0) {
            M = I;
            for (J = I; J <= Cols; J++)
              if ((Buff(J) & Undbit) != 0) {
                Spaces(J - M);
                Printsymbol('_');
                M = J + 1;
              }
            Printch(Cr);
            Printch(Cr);
            Spaces(L + I - 1);
            U = 0;
          }
          Printch(K & Basicmask);
        }
      }
      Newlines(Nls);
      if (Lines >= Page)
        if (Pageno == 0)
          Newlines(Bottom);
        else {
          Newlines(2);
          Spaces(Left + Line / 2 - 4);
          Write(Pageno, 1);
          Newlines((Bottom - 2));
        }
    }
    Lineexp = 0;
    Linesub = 0;
    if (Lines >= Page) {
      Lines = 0;
      Pages = Pages + 1;
      if (Pageno != 0) Pageno = Pageno + 1;
      if (Figura == 1) {
        Figura = 0;
        Pageno = Pageno + 1;
      }
    }
    if (Xlines != 0) {
      Xlines = Xlines - 1;
      if (Xlines == 0) {
        Linecapind = 0;
        Lineundind = 0;
        Linemidind = 0;
        Indentind = 1;
      }
    }
    Textind = 0;
    Cols = 0;
    Fixed = 0;
    if (Indentind != 0) Setcolumn(Indentcol);
  }
  void Justify(void) {
    int I;
    int J;
    int K;
    int L;
    int Min;
    int Count;
    int Scount;
    int Wait;
    int Swait;
    Count = Line - Cols;
    if (Count <= 0 || Gaps == 0) return;
    Min = Count / Gaps;
    Count = Count - Min * Gaps;
    Scount = Sgaps;
    if (Count < Sgaps) Scount = Count;
    Count = Count - Scount;
    if ((Lines & 1) == 0) {
      Wait = 0;
      Swait = 0;
    } else {
      Wait = Gaps - Count;
      Swait = Sgaps - Scount;
    }
    J = Line;
    for (I = Cols; I >= 1; I--) {
      K = Buff(I);
      if ((K == Sentsp || K == ' ') && Buff(I - 1) != K) {
        L = J - Min;
        if (Wait == 0)
          if (Count != 0) {
            L = L - 1;
            Count = Count - 1;
          } else
            Wait = Wait - 1;
        if (K == Sentsp)
          if (Swait == 0)
            if (Scount != 0) {
              L = L - 1;
              Scount = Scount - 1;
            } else
              Swait = Swait - 1;
        while (J != L) {
          Buff(J) = ' ';
          J = J - 1;
        }
        if (J == I) {
          Cols = Line;
          return;
        }
      }
      Buff(J) = K;
      J = J - 1;
    }
    exit(0);
  }
  void Placeatom(void) {
    int I;
    int L;
    int S;
    if (Cols != Fixed && Xlines == 0) {
      L = Cols + 1;
      S = ' ';
      if (Buff(Cols) == '.' && 'A' <= Abuff(1) && Abuff(1) <= 'Z') {
        L = Cols + Sgap;
        S = Sentsp;
      }
      if (L + Size <= Line) {
        while (Cols != L) {
          Cols = Cols + 1;
          Buff(Cols) = S;
        }
        Gaps = Gaps + 1;
        if (S == Sentsp) Sgaps = Sgaps + 1;
      } else {
        if (Just != 0) Justify();
        Printdocline();
        if (Smax != 0) Printsourceline();
      }
    }
    I = 0;
    Lineexp = Lineexp | Expind;
    Linesub = Linesub | Subind;
    while (I != Size) {
      Cols = Cols + 1;
      I = I + 1;
      Buff(Cols) = Abuff(I);
    }
    Expind = 0;
    Subind = 0;
    Textind = 1;
  }
  void Processdirective(void) {
    int Num;
    int C;
    int T;
    static int S_sw;
    static void *S[26 /*65:90*/] = {
        &&S_65, &&S_66, &&S_67, &&S_68, &&S_69, &&S_70, &&S_71, &&S_72, &&S_73,
        &&S_74, &&S_75, &&S_76, &&S_77, &&S_78, &&S_79, &&S_80, &&S_81, &&S_82,
        &&S_83, &&S_84, &&S_85, &&S_86, &&S_87, &&S_88, &&S_89, &&S_90,
    };
    void Assign(void);
    void Skip(void) {
      Smax = Smax + 1;
      Sbuff(Smax) = Next;
      Readone(Next);
    }
    if (Xlines != 0) {
      Fault(6);
      Xlines = 1;
      Printdocline();
    }
    if (Textind != 0 && 'C' != (Directive & Letmask) &&
        (Directive & Letmask) != 'T') {
      Printdocline();
      if (Smax != 0) Printsourceline();
    }
    if (Smax + 5 > Sline) Printsourceline();
    if (Smax != 0) Store(' ');
    Store(Escape);
    Store(Directive);
    Relind = 0;
    Num = 1;
    if (Next == '+' || Next == '-') {
      Relind = Next;
      Skip();
    }
    if ('0' <= Next && Next <= '9') {
      Num = Next - '0';
      Skip();
      while ('0' <= Next && Next <= '9') {
        Num = 10 * Num - '0' + Next;
        Skip();
      }
    }
    if (Relind == '-') Num = -Num;
    goto *S[S_sw = (Directive & Letmask) - 65];
  S_65:;
    for (;;) {
      Assign();
      while (Next != ';' && Next != Nl) Skip();
      if (Next == Nl) break;
      Skip();
    }
    if (0 > Indent || Indent > Vbound) {
      Fault(7);
      Indent = 0;
    }
    Indentcol = Tab(Indent);
    Setcolumn(Indentcol);
    return;
  S_66:;
    if (Page - Lines < Num) Num = Page - Lines;
    while (Num > 0) {
      Printdocline();
      Num = Num - 1;
    }
    return;
  S_67:;
    if (Relind != 0) Num = Cols + 1 + Num;
    Setcolumn(Num);
    return;
  S_69:;
    Endind = 1;
    Next = Nl;
    while (Lines != 0) Printdocline();
    return;
  S_73:;
    if (Relind != 0) Num = Indent + Num;
    if (0 > Num || Num > Vbound) {
      Fault(7);
      Num = 0;
    }
    Num = Tab(Num);
    Setcolumn(Num);
    return;
  S_76:;
    Xlines = Num;
    Indentind = 0;
    while (Next != Nl) {
      if ((Next & Letmask) == 'C') Linecapind = Casebit;
      if ((Next & Letmask) == 'U') Lineundind = Undbit;
      if ((Next & Letmask) == 'M') Linemidind = 1;
      if ((Next & Letmask) == 'I') Indentind = 1;
      Skip();
    }
    if (Indentind == 0) {
      Cols = 0;
      Fixed = 0;
    }
    return;
  S_78:;
    while (Lines != 0) Printdocline();
    return;
  S_80:;
    if (Lines != 0) {
      if (Page - Lines < Num + 2) Num = Page - Lines;
      while (Num > 0) {
        Printdocline();
        Num = Num - 1;
      }
    }
    Setcolumn(Cols + 1 + Pgap);
    return;
  S_84:;
    if (Relind != 0) {
      T = 0;
      C = Cols + 1;
      if (Relind == '+')
        while (Num > 0) {
          do
            T = T + 1;
          while (T <= Vbound && Tab(T) <= C);
          if (T > Vbound) {
            Fault(7);
            return;
          }
          C = Tab(T);
          Num = Num - 1;
        }
      else {
        do
          T = T + 1;
        while (T <= Vbound && Tab(T) < C);
        while (Num < 0) {
          do
            T = T - 1;
          while (T >= 0 && Tab(T) >= C);
          if (T < 0) {
            Fault(7);
            return;
          }
          C = Tab(T);
          Num = Num + 1;
        }
      }
    } else {
      if (0 > Num || Num > Vbound) {
        Fault(7);
        return;
      }
      C = Tab(Num);
    }
    Setcolumn(C);
    return;
  S_86:;
    if (Num == 0) Figura = 1;
    if (Page - Lines < Num)
      while (Lines != 0) Printdocline();
    return;
  S_68:
  S_70:
  S_71:
  S_72:
  S_74:;
  S_75:
  S_77:
  S_79:
  S_81:
  S_82:;
  S_83:
  S_85:
  S_87:
  S_88:
  S_89:;
  S_90:;
    Fault(5);
    return;
    void Assign(void) {
      static int Scalarmax = 30;
      static int Parmax = 34;
      int I;
      int J;
      int K;
      void Readvalue(int *J);
      void Readname(int *Ordinal);
      int *Map(int I);
      int *Vmap(int I, int J);
      Readname(I);
      if (I == 0) return;
      if (Next != '=') {
        Fault(1);
        return;
      }
      do
        Skip();
      while (Next == ' ');
      if (I <= Scalarmax)
        if ('A' <= (Next & Letmask) && (Next & Letmask) <= 'Z') {
          Readname(J);
          if (J == 0) return;
          if (J > Scalarmax) {
            Fault(4);
            return;
          }
          *Map(I) = *Map(J);
        } else {
          Readvalue(J);
          *Map(I) = J;
        }
      else if ('A' <= (Next & Letmask) && (Next & Letmask) <= 'Z') {
        Readname(J);
        if (J == 0) return;
        if (J <= Scalarmax) {
          Fault(4);
          return;
        }
        for (K = 1; K <= Vbound; K++) *Vmap(I, K) = *Vmap(J, K);
      } else
        for (K = 1; K <= Vbound; K++) {
          Readvalue(J);
          *Vmap(I, K) = J;
          if (Next != ',') break;
          do
            Skip();
          while (Next == ' ');
        }
      if (Next != ';' && Next != Nl) Fault(1);
      void Readvalue(int *V) {
        if (Next != '\'') {
          V = 0;
          while ('0' <= Next && Next <= '9') {
            V = 10 * V - '0' + Next;
            Skip();
          }
        } else {
          Skip();
          V = Next;
          Skip();
          Skip();
        }
      }
      void Readname(int *Ordinal) {
        int N1;
        int N2;
        static int Name1[34 /*1:34*/] = {
            20976, 2548,  12454, 16423, 12590, 19849, 14739, 19681, 16609,
            9668,  19619, 16423, 5731,  3120,  21956, 3120,  21956, 3120,
            21956, 3120,  21956, 9686,  1635,  10931, 13362, 20097, 5904,
            20130, 20130, 0,     16434, 20514, 20653, 20653};
        static int Name2[34 /*1:34*/] = {
            0,     20973, 20480, 5120,  5120, 14496, 0,     16384, 16384,
            5588,  20943, 5583,  1541,  0,    0,     19712, 19712, 15360,
            15360, 19727, 19727, 5716,  9504, 20480, 11264, 19072, 19712,
            19714, 19717, 0,     19456, 0,    16416, 16448};
        void Get(int *K) {
          if ('A' > (Next & Letmask) || (Next & Letmask) > 'Z') {
            K = 0;
            return;
          }
          K = Next & 31;
          Skip();
        }
        void Gettrio(int *T) {
          int A;
          int B;
          int C;
          Get(A);
          Get(B);
          Get(C);
          T = (((A << 5) + B) << 5) + C;
        }
        while (Next == ' ') Skip();
        Gettrio(N1);
        Gettrio(N2);
        if (N1 == 0) {
          Fault(1);
          Ordinal = 0;
          return;
        }
        for (Ordinal = 1; Ordinal <= Parmax; Ordinal++)
          if (Name1(Ordinal) == N1 && Name2(Ordinal) == N2) return;
        Fault(3);
        Ordinal = 0;
      }
      int *Map(int I) {
        static int S_sw;
        static void *S[30 /*1:30*/] = {
            &&S_1,  &&S_2,  &&S_3,  &&S_4,  &&S_5,  &&S_6,       &&S_7,  &&S_8,
            &&S_9,  &&S_10, &&S_11, &&S_12, &&S_13, &&S_14,      &&S_15, &&S_16,
            &&S_17, &&S_18, &&S_19, &&S_20, &&S_21, &&S_22,      &&S_23, &&S_24,
            &&S_25, &&S_26, &&S_27, &&S_28, &&S_29, &&S_default,
        };
        goto *S[S_sw = (I)-1];
      S_1:
        return (&Top);
      S_2:
        return (&Bottom);
      S_3:
        return (&Left);
      S_4:
        return (&Page);
      S_5:
        return (&Line);
      S_6:
        return (&Sline);
      S_7:
        return (&Nls);
      S_8:
        return (&Sgap);
      S_9:
        return (&Pgap);
      S_10:
        return (&Indent);
      S_11:
        return (&Sectno);
      S_12:
        return (&Pageno);
      S_13:
        return (&Escape);
      S_14:
        return (&Cap);
      S_15:
        return (&Und);
      S_16:
        return (&Capsh);
      S_17:
        return (&Undsh);
      S_18:
        return (&Capo);
      S_19:
        return (&Undo);
      S_20:
        return (&Capsho);
      S_21:
        return (&Undsho);
      S_22:
        return (&Invert);
      S_23:
        return (&Ascii);
      S_24:
        return (&Just);
      S_25:
        return (&Mark);
      S_26:
        return (&Start);
      S_27:
        return (&Expsh);
      S_28:
        return (&Subshb);
      S_29:
        return (&Subshe);
        goto S_skip;
      S_default:
        fprintf(stderr, "Switch label 'S(%d):' not set in %s", S_sw + 1,
                __PRETTY_FUNCTION__);
        exit(1) /* or %signal ... */;
      S_skip:;
      }
      int *Vmap(int I, int J) {
        static int S_sw;
        static void *S[5 /*31:35*/] = {
            &&S_31, &&S_32, &&S_33, &&S_34, &&S_default,
        };
        goto *S[S_sw = (I)-31];
      S_31:
        return (Map(J));
      S_32:
        return (&Tab(J));
      S_33:
        return (&Tempa(J));
      S_34:
        return (&Tempb(J));
        goto S_skip;
      S_default:
        fprintf(stderr, "Switch label 'S(%d):' not set in %s", S_sw + 31,
                __PRETTY_FUNCTION__);
        exit(1) /* or %signal ... */;
      S_skip:;
      }
    }
  }
  Selectinput(Sin);
  Selectoutput(Sout);
  Next = 0;
  do {
    Readatomordirective();
    if (Directive != 0) {
      Processdirective();
      if (Next == Nl) Printsourceline();
    } else if (Xlines == 0)
      if (Size != 0) {
        Placeatom();
        Storesourceatom();
      } else if (Next == Nl)
        Printsourceline();
      else {
        if (Size != 0) {
          Placeatom();
          Storesourceatom();
        }
        if (Next == ' ') {
          Store(Next);
          Cols = Cols + 1;
          Buff(Cols) = ' ';
        }
        if (Next == Nl) {
          Printdocline();
          Printsourceline();
        }
      }
    if (Next == ' ' || Next == Nl) Next = 0;
  } while (Endind == 0);
  exit(0);
  return (1);
}
