
#line 5 "decomp1.ch"
/*************************************************************************/
#line 5 "decomp1.ch"
/*                                                                       */
#line 5 "decomp1.ch"
/*        Produced by Metachop version 2.0  -    1989-1995               */
#line 5 "decomp1.ch"
/*     Tree      Meta     Chopper      developped    by                  */
#line 5 "decomp1.ch"
/*                  Eric Lavillonniere                                   */
#line 5 "decomp1.ch"
/*                                                                       */
#line 5 "decomp1.ch"
/*************************************************************************/
#line 5 "decomp1.ch"
#line 5 "decomp1.ch"
#include "token.h"
#line 5 "decomp1.ch"
extern int _retVal[50];
#line 5 "decomp1.ch"
extern PPTREE _storeVal[50],_nextVal;
#line 5 "decomp1.ch"
extern PPTREE stackTree[1024];
#line 5 "decomp1.ch"
extern int ptStackTree;
#line 5 "decomp1.ch"
#define decomp decomp_metachop
#line 5 "decomp1.ch"
#line 5 "decomp1.ch"
#ifndef for_elem
#line 5 "decomp1.ch"
#line 5 "decomp1.ch"
#define for_elem _for_elem
#line 5 "decomp1.ch"
#endif
#ifdef INCONNU
#line 5 "decomp1.ch"
#line 5 "decomp1.ch"
PTREE   for_elem ;
#line 5 "decomp1.ch"
#line 5 "decomp1.ch"
#endif
#include "decmetac.h"

int statementf, equality, caseDesign, simpleCase, ifCase, condDesign, condCase ;
char    *ptEquality, *ptCase, *ptCond ;
extern warningOk ;
extern int  nbVerify ;
extern int  output ;
extern char *theLanguageName ;
void    printheader (PTREE) ;
static int  typ_list_ok = 1 ;
extern int  needInter ;
extern int  cplusGen ;
char    *DecToIdent (PTREE) ;
char    tabLabel [100], *ptTab, *nameDefine ;
char    stringNumb [200];
int inFunction = 0 ;
int inParam = 0 ;
int nbLabel, nb_par_parse ;
char    *theLanguage ;
void    lstat_dec1 (PTREE) ;
void    DecompStat (PTREE, int) ;

#ifdef FOR_METACHOP
#line 5 "decomp1.ch"
#line 35 "decomp1.ch"
PTREE   postComment ;
#line 35 "decomp1.ch"
#line 35 "decomp1.ch"
#endif

extern char *theFileName ;
extern int  compiledLine ;

#line 41 "decomp1.ch"
#line 41 "decomp1.ch"
static  int SearchPos ( PTREE tree, int *line, int *col )
#line 41 "decomp1.ch"
{
#line 41 "decomp1.ch"
#line 43 "decomp1.ch"
    {
#line 43 "decomp1.ch"
#line 43 "decomp1.ch"
        int _for_slot = 1, _arity = treearity(tree);
#line 43 "decomp1.ch"
#line 43 "decomp1.ch"
        MY_TREE _for_elem = (PPTREE)0 ;
#line 43 "decomp1.ch"
#line 43 "decomp1.ch"
#line 43 "decomp1.ch"
        for (; _for_slot <= _arity ; _for_slot++ ) {
#line 43 "decomp1.ch"
#line 43 "decomp1.ch"
            _for_elem = SonTree(tree, _for_slot);
#line 43 "decomp1.ch"
#line 44 "decomp1.ch"
            if ( _for_elem && NumberTree(_for_elem) != IN_LANGUAGE ) 
#line 44 "decomp1.ch"
#line 44 "decomp1.ch"
                if ( SearchPos(for_elem, line, col) ) {
#line 44 "decomp1.ch"
#line 45 "decomp1.ch"
                                                            return 1 ;
#line 45 "decomp1.ch"
#line 45 "decomp1.ch"
                                                          }
#line 45 "decomp1.ch"
#line 45 "decomp1.ch"
        }
#line 45 "decomp1.ch"
#line 45 "decomp1.ch"
#line 45 "decomp1.ch"
    }
#line 45 "decomp1.ch"
#line 48 "decomp1.ch"
    if ( GetStartPos(tree, line, col) || GetEndPos(tree, line, col) ) 
#line 48 "decomp1.ch"
#line 49 "decomp1.ch"
        return 1 ;
#line 49 "decomp1.ch"
#line 50 "decomp1.ch"
    return 0 ;
#line 50 "decomp1.ch"
#line 51 "decomp1.ch"
}
#line 51 "decomp1.ch"

#line 53 "decomp1.ch"
#line 53 "decomp1.ch"
static  inline void WRITE_START_LINE ( PTREE tree )
#line 53 "decomp1.ch"
{
#line 53 "decomp1.ch"
#line 55 "decomp1.ch"
    int line = compiledLine, col ;
#line 55 "decomp1.ch"
#line 56 "decomp1.ch"
    char    string [10];
#line 56 "decomp1.ch"
#line 57 "decomp1.ch"
    PTREE   father ;
#line 57 "decomp1.ch"
#line 57 "decomp1.ch"
#line 59 "decomp1.ch"
    if ( !GetStartPos(tree, &line, &col) ) {
#line 59 "decomp1.ch"
#line 60 "decomp1.ch"
                                                    SearchPos(tree, &line, &col);
#line 60 "decomp1.ch"
#line 60 "decomp1.ch"
                                                  }
#line 60 "decomp1.ch"
#line 63 "decomp1.ch"
    {
#line 63 "decomp1.ch"
#line 63 "decomp1.ch"
        LNewLine(1);
#line 63 "decomp1.ch"
#line 64 "decomp1.ch"
        gotocol(1);
#line 64 "decomp1.ch"
#line 65 "decomp1.ch"
        WriteString("#line ");
#line 65 "decomp1.ch"
#line 66 "decomp1.ch"
        sprintf(string, "%d ", line);
#line 66 "decomp1.ch"
#line 67 "decomp1.ch"
        WriteString(string);
#line 67 "decomp1.ch"
#line 67 "decomp1.ch"
        WriteString("\"");
#line 67 "decomp1.ch"
#line 67 "decomp1.ch"
        WriteString(theFileName);
#line 67 "decomp1.ch"
#line 68 "decomp1.ch"
        WriteString("\"");
#line 68 "decomp1.ch"
#line 69 "decomp1.ch"
        LNewLine(1);
#line 69 "decomp1.ch"
#line 70 "decomp1.ch"
        compiledLine = line ;
#line 70 "decomp1.ch"
#line 71 "decomp1.ch"
    }
#line 71 "decomp1.ch"
#line 72 "decomp1.ch"
}
#line 72 "decomp1.ch"

#line 74 "decomp1.ch"
#line 74 "decomp1.ch"
static  inline void WRITE_STOP_LINE ( PTREE tree )
#line 74 "decomp1.ch"
{
#line 74 "decomp1.ch"
#line 76 "decomp1.ch"
    int line = compiledLine, col ;
#line 76 "decomp1.ch"
#line 77 "decomp1.ch"
    char    string [10];
#line 77 "decomp1.ch"
#line 78 "decomp1.ch"
    PTREE   father ;
#line 78 "decomp1.ch"
#line 78 "decomp1.ch"
#line 80 "decomp1.ch"
    GetEndPos(tree, &line, &col);
#line 80 "decomp1.ch"
#line 82 "decomp1.ch"
    {
#line 82 "decomp1.ch"
#line 82 "decomp1.ch"
        LNewLine(1);
#line 82 "decomp1.ch"
#line 83 "decomp1.ch"
        gotocol(1);
#line 83 "decomp1.ch"
#line 84 "decomp1.ch"
        WriteString("#line ");
#line 84 "decomp1.ch"
#line 85 "decomp1.ch"
        sprintf(string, "%d ", line);
#line 85 "decomp1.ch"
#line 86 "decomp1.ch"
        WriteString(string);
#line 86 "decomp1.ch"
#line 86 "decomp1.ch"
        WriteString("\"");
#line 86 "decomp1.ch"
#line 86 "decomp1.ch"
        WriteString(theFileName);
#line 86 "decomp1.ch"
#line 87 "decomp1.ch"
        WriteString("\"");
#line 87 "decomp1.ch"
#line 88 "decomp1.ch"
        LNewLine(1);
#line 88 "decomp1.ch"
#line 89 "decomp1.ch"
        compiledLine = line ;
#line 89 "decomp1.ch"
#line 90 "decomp1.ch"
    }
#line 90 "decomp1.ch"
#line 91 "decomp1.ch"
}
#line 91 "decomp1.ch"

#line 93 "decomp1.ch"
#line 93 "decomp1.ch"
static  inline void CNewLine ()
#line 93 "decomp1.ch"
{
#line 93 "decomp1.ch"
#line 95 "decomp1.ch"
    char    string [10];
#line 95 "decomp1.ch"
#line 97 "decomp1.ch"
    LNewLine(1);
#line 97 "decomp1.ch"
#line 98 "decomp1.ch"
    if ( compiledLine ) {
#line 98 "decomp1.ch"
#line 99 "decomp1.ch"
                            gotocol(1);
#line 99 "decomp1.ch"
#line 100 "decomp1.ch"
                            WriteString("#line ");
#line 100 "decomp1.ch"
#line 101 "decomp1.ch"
                            sprintf(string, "%d ", compiledLine);
#line 101 "decomp1.ch"
#line 102 "decomp1.ch"
                            WriteString(string);
#line 102 "decomp1.ch"
#line 102 "decomp1.ch"
                            WriteString("\"");
#line 102 "decomp1.ch"
#line 102 "decomp1.ch"
                            WriteString(theFileName);
#line 102 "decomp1.ch"
#line 103 "decomp1.ch"
                            WriteString("\"");
#line 103 "decomp1.ch"
#line 104 "decomp1.ch"
                            LNewLine(1);
#line 104 "decomp1.ch"
#line 104 "decomp1.ch"
                         }
#line 104 "decomp1.ch"
#line 106 "decomp1.ch"
}
#line 106 "decomp1.ch"

#line 108 "decomp1.ch"
#line 108 "decomp1.ch"
static  inline void CLNewLine ( int i )
#line 108 "decomp1.ch"
{
#line 108 "decomp1.ch"
#line 110 "decomp1.ch"
    char    string [10];
#line 110 "decomp1.ch"
#line 112 "decomp1.ch"
    LNewLine(1);
#line 112 "decomp1.ch"
#line 113 "decomp1.ch"
    if ( compiledLine ) {
#line 113 "decomp1.ch"
#line 114 "decomp1.ch"
                            gotocol(1);
#line 114 "decomp1.ch"
#line 115 "decomp1.ch"
                            WriteString("#line ");
#line 115 "decomp1.ch"
#line 116 "decomp1.ch"
                            sprintf(string, "%d ", compiledLine);
#line 116 "decomp1.ch"
#line 117 "decomp1.ch"
                            WriteString(string);
#line 117 "decomp1.ch"
#line 117 "decomp1.ch"
                            WriteString("\"");
#line 117 "decomp1.ch"
#line 117 "decomp1.ch"
                            WriteString(theFileName);
#line 117 "decomp1.ch"
#line 118 "decomp1.ch"
                            WriteString("\"");
#line 118 "decomp1.ch"
#line 119 "decomp1.ch"
                            LNewLine(i);
#line 119 "decomp1.ch"
#line 119 "decomp1.ch"
                         }
#line 119 "decomp1.ch"
#line 121 "decomp1.ch"
}
#line 121 "decomp1.ch"

#define NewLine CNewLine
#define LNewLine CLNewLine

#line 126 "decomp1.ch"
#line 126 "decomp1.ch"
PTREE DecompMetachop::DecompFunction ( PTREE paramTree, int funcAlone )
#line 126 "decomp1.ch"
{
#line 126 "decomp1.ch"
    register PPTREE _inter ;
#line 126 "decomp1.ch"
#line 126 "decomp1.ch"
#line 128 "decomp1.ch"
    PTREE   sc, type, declarator, param, range, param_decl, ctor, stat, exp ;
#line 128 "decomp1.ch"
#line 128 "decomp1.ch"
#line 129 "decomp1.ch"
    PTREE   tree, stat1, val, exp2, exp1, son ;
#line 129 "decomp1.ch"
#line 129 "decomp1.ch"
#line 131 "decomp1.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 131 "decomp1.ch"
        (NumberTree(_inter) == metachop::FUNC) &&
#line 131 "decomp1.ch"
        ((sc=SonTree(_inter,1)),1) &&
#line 131 "decomp1.ch"
        ((type=SonTree(_inter,2)),1) &&
#line 131 "decomp1.ch"
        ((declarator=SonTree(_inter,3)),1) &&
#line 131 "decomp1.ch"
        ((param=SonTree(_inter,4)),1) &&
#line 131 "decomp1.ch"
        ((range=SonTree(_inter,5)),1) &&
#line 131 "decomp1.ch"
        ((param_decl=SonTree(_inter,6)),1) &&
#line 131 "decomp1.ch"
        ((ctor=SonTree(_inter,7)),1) &&
#line 131 "decomp1.ch"
        ((stat=SonTree(_inter,8)),1) &&
#line 131 "decomp1.ch"
        1);
#line 131 "decomp1.ch"
    ;
#line 131 "decomp1.ch"
#line 132 "decomp1.ch"
    (exp2=ctor);
#line 132 "decomp1.ch"
#line 132 "decomp1.ch"
#line 133 "decomp1.ch"
    if ( ctor ) 
#line 133 "decomp1.ch"
#line 134 "decomp1.ch"
        ((_inter = (PPTREE)ctor,1) && 
#line 134 "decomp1.ch"
            ((ctor=SonTree(_inter,1)),1) &&
#line 134 "decomp1.ch"
            1);
#line 134 "decomp1.ch"
        ;
#line 134 "decomp1.ch"
#line 135 "decomp1.ch"
    ((_inter = (PPTREE)stat,1) && 
#line 135 "decomp1.ch"
        ((stat1=SonTree(_inter,1)),1) &&
#line 135 "decomp1.ch"
        1);
#line 135 "decomp1.ch"
    ;
#line 135 "decomp1.ch"
#line 139 "decomp1.ch"
    {
#line 139 "decomp1.ch"
#line 139 "decomp1.ch"
        (exp1=FatherTree(paramTree));
#line 139 "decomp1.ch"
#line 139 "decomp1.ch"
#line 140 "decomp1.ch"
        if ( ((_inter = (PPTREE)exp1,1) && 
#line 140 "decomp1.ch"
                (NumberTree(_inter) == metachop::ATTRIBUTS) &&
#line 140 "decomp1.ch"
                1) ) 
#line 140 "decomp1.ch"
#line 141 "decomp1.ch"
            (exp1=FatherTree(exp1));
#line 141 "decomp1.ch"
#line 141 "decomp1.ch"
#line 142 "decomp1.ch"
        if ( !(((_inter = (PPTREE)exp1,1) && 
#line 142 "decomp1.ch"
                    (NumberTree(_inter) == metachop::EXTERNAL) &&
#line 142 "decomp1.ch"
                    1)) ) {
#line 142 "decomp1.ch"
#line 148 "decomp1.ch"
                            if ( currLine > 0 ) {
#line 148 "decomp1.ch"
#line 149 "decomp1.ch"
                                                    if ( !inClass || !((!stat1)) ) {
#line 149 "decomp1.ch"
#line 150 "decomp1.ch"
if ( ( _inter = 
#line 150 "decomp1.ch"
        FatherTree(exp1),((_inter = (PPTREE)_inter,1) && 
#line 150 "decomp1.ch"
                            (NumberTree(_inter) == metachop::TEMPLATE_DECL) &&
#line 150 "decomp1.ch"
                            1)) ) 
#line 150 "decomp1.ch"
#line 151 "decomp1.ch"
    LNewLine(2);
#line 151 "decomp1.ch"
#line 151 "decomp1.ch"
else 
#line 151 "decomp1.ch"
#line 153 "decomp1.ch"
    LNewLine(1);
#line 153 "decomp1.ch"
#line 153 "decomp1.ch"
#line 153 "decomp1.ch"
#line 153 "decomp1.ch"
                                                                                       } else 
#line 153 "decomp1.ch"
#line 155 "decomp1.ch"
                                                        LNewLine(1);
#line 155 "decomp1.ch"
#line 155 "decomp1.ch"
#line 155 "decomp1.ch"
#line 155 "decomp1.ch"
                                                  }
#line 155 "decomp1.ch"
#line 157 "decomp1.ch"
                            if ( indentFunctionType ) 
#line 157 "decomp1.ch"
#line 158 "decomp1.ch"
                                indentFuncFlag = 1 ;
#line 158 "decomp1.ch"
#line 158 "decomp1.ch"
                          }
#line 158 "decomp1.ch"
#line 160 "decomp1.ch"
    }
#line 160 "decomp1.ch"
#line 162 "decomp1.ch"
    Mark();
#line 162 "decomp1.ch"
    if ( !((!sc)) ) {
#line 162 "decomp1.ch"
#line 163 "decomp1.ch"
                        DumpBrainyValue(sc);
#line 163 "decomp1.ch"
#line 163 "decomp1.ch"
#line 163 "decomp1.ch"
                        Tab();
#line 163 "decomp1.ch"
#line 163 "decomp1.ch"
#line 163 "decomp1.ch"
                      }
#line 163 "decomp1.ch"
    decomp(type);
#line 163 "decomp1.ch"
#line 163 "decomp1.ch"
    decomp(declarator);
#line 163 "decomp1.ch"
#line 163 "decomp1.ch"
    indentFuncFlag = 0 ;
#line 163 "decomp1.ch"
    SepBefore();
#line 163 "decomp1.ch"
#line 163 "decomp1.ch"
    PrintString("(");
#line 163 "decomp1.ch"
    if ( !((!param)) ) 
#line 163 "decomp1.ch"
#line 171 "decomp1.ch"
        Space(1);
#line 171 "decomp1.ch"
#line 171 "decomp1.ch"
    (val=param);
#line 171 "decomp1.ch"
#line 171 "decomp1.ch"
    comm(val, PRE);
#line 171 "decomp1.ch"
    while ( !((!param)) ) {
#line 171 "decomp1.ch"
#line 175 "decomp1.ch"
                                (son=(param?param.Nextl():(PPTREE)0));
#line 175 "decomp1.ch"
#line 175 "decomp1.ch"
#line 176 "decomp1.ch"
                                decomp(son);
#line 176 "decomp1.ch"
#line 176 "decomp1.ch"
#line 177 "decomp1.ch"
                                if ( !((!param)) ) {
#line 177 "decomp1.ch"
#line 178 "decomp1.ch"
                                                        PrintString(",");
#line 178 "decomp1.ch"
#line 178 "decomp1.ch"
                                                     }
#line 178 "decomp1.ch"
#line 180 "decomp1.ch"
                                Space(1);
#line 180 "decomp1.ch"
#line 180 "decomp1.ch"
#line 180 "decomp1.ch"
                            }
#line 180 "decomp1.ch"
    PrintString(")");
#line 180 "decomp1.ch"
    SepAfter();
#line 180 "decomp1.ch"
#line 180 "decomp1.ch"
    comm(val, POST);
#line 180 "decomp1.ch"
    if ( range ) 
#line 180 "decomp1.ch"
#line 185 "decomp1.ch"
        decomp(range);
#line 185 "decomp1.ch"
#line 185 "decomp1.ch"
    comm(exp2, PRE);
#line 185 "decomp1.ch"
    if ( !((!ctor)) ) {
#line 185 "decomp1.ch"
#line 188 "decomp1.ch"
                            LNewLine(1);
#line 188 "decomp1.ch"
#line 188 "decomp1.ch"
#line 189 "decomp1.ch"
                            Tab();
#line 189 "decomp1.ch"
#line 189 "decomp1.ch"
#line 190 "decomp1.ch"
                            Mark();
#line 190 "decomp1.ch"
                            PrintString(":");
#line 190 "decomp1.ch"
                            Space(1);
#line 190 "decomp1.ch"
#line 190 "decomp1.ch"
                            while ( !((!ctor)) ) {
#line 190 "decomp1.ch"
#line 192 "decomp1.ch"
                                                    (son=(ctor?ctor.Nextl():(PPTREE)0));
#line 192 "decomp1.ch"
#line 192 "decomp1.ch"
#line 193 "decomp1.ch"
                                                    decomp(son);
#line 193 "decomp1.ch"
#line 193 "decomp1.ch"
#line 194 "decomp1.ch"
                                                    if ( !((!ctor)) ) {
#line 194 "decomp1.ch"
#line 195 "decomp1.ch"
PrintString(",");
#line 195 "decomp1.ch"
#line 195 "decomp1.ch"
Space(1);
#line 195 "decomp1.ch"
#line 195 "decomp1.ch"
#line 195 "decomp1.ch"
SepAfter();
#line 195 "decomp1.ch"
#line 195 "decomp1.ch"
#line 195 "decomp1.ch"
                                                                        }
#line 195 "decomp1.ch"
#line 195 "decomp1.ch"
                                                   }
#line 195 "decomp1.ch"
                            UnMark();
#line 195 "decomp1.ch"
#line 195 "decomp1.ch"
#line 199 "decomp1.ch"
                            comm(exp2, POST);
#line 199 "decomp1.ch"
#line 200 "decomp1.ch"
                            LNewLine(1);
#line 200 "decomp1.ch"
#line 200 "decomp1.ch"
#line 200 "decomp1.ch"
                        }
#line 200 "decomp1.ch"
    if ( !((!param_decl)) ) 
#line 200 "decomp1.ch"
#line 203 "decomp1.ch"
        LNewLine(1);
#line 203 "decomp1.ch"
#line 203 "decomp1.ch"
    decomp(param_decl);
#line 203 "decomp1.ch"
#line 203 "decomp1.ch"
    statementf = 0 ;
#line 203 "decomp1.ch"
    ((_inter = (PPTREE)stat,1) && 
#line 203 "decomp1.ch"
        ((stat1=SonTree(_inter,1)),1) &&
#line 203 "decomp1.ch"
        1);
#line 203 "decomp1.ch"
    ;
#line 203 "decomp1.ch"
    if ( !((!stat1)) || !((!param_decl)) ) 
#line 203 "decomp1.ch"
#line 210 "decomp1.ch"
        LNewLine(1);
#line 210 "decomp1.ch"
#line 210 "decomp1.ch"
    decomp(stat);
#line 210 "decomp1.ch"
#line 210 "decomp1.ch"
    if ( funcAlone ) 
#line 210 "decomp1.ch"
#line 215 "decomp1.ch"
        LNewLine(1);
#line 215 "decomp1.ch"
#line 215 "decomp1.ch"
    else 
#line 216 "decomp1.ch"
    if ( !LastInList(paramTree) ) {
#line 216 "decomp1.ch"
#line 217 "decomp1.ch"
                                        if ( !inClass || !((!stat1)) ) {
#line 217 "decomp1.ch"
#line 218 "decomp1.ch"
if ( !LastInList(paramTree) ) {
#line 218 "decomp1.ch"
#line 219 "decomp1.ch"
                                    LNewLine(2);
#line 219 "decomp1.ch"
#line 219 "decomp1.ch"
#line 219 "decomp1.ch"
                                 }
#line 219 "decomp1.ch"
#line 219 "decomp1.ch"
                                                                           } else 
#line 221 "decomp1.ch"
                                        {
#line 221 "decomp1.ch"
#line 222 "decomp1.ch"
                                            if ( !LastInTopList(paramTree) ) {
#line 222 "decomp1.ch"
#line 223 "decomp1.ch"
LNewLine(1);
#line 223 "decomp1.ch"
#line 223 "decomp1.ch"
#line 223 "decomp1.ch"
                                                                                }
#line 223 "decomp1.ch"
#line 223 "decomp1.ch"
                                        }
#line 223 "decomp1.ch"
#line 223 "decomp1.ch"
                                     }
#line 223 "decomp1.ch"
    UnMark();
#line 223 "decomp1.ch"
#line 223 "decomp1.ch"
#line 228 "decomp1.ch"
    return postComment ;
#line 228 "decomp1.ch"
#line 229 "decomp1.ch"
}
#line 229 "decomp1.ch"

#line 231 "decomp1.ch"
#line 231 "decomp1.ch"
PTREE DecompMetachop::IntDecomp ( PTREE paramTree, int funcAlone )
#line 231 "decomp1.ch"
{
#line 231 "decomp1.ch"
    register PPTREE _inter ;
#line 231 "decomp1.ch"
#line 231 "decomp1.ch"
#line 233 "decomp1.ch"
    PTREE   ident, tree, list, son, exp1, exp2, exp, stat, param ;
#line 233 "decomp1.ch"
#line 233 "decomp1.ch"
#line 234 "decomp1.ch"
    PTREE   decl, sc, type, list_decl, name1, ident1, declarator, param_decl ;
#line 234 "decomp1.ch"
#line 234 "decomp1.ch"
#line 236 "decomp1.ch"
    PTREE   stat1, stat2, exp3, val, range, ctor ;
#line 236 "decomp1.ch"
#line 236 "decomp1.ch"
#line 237 "decomp1.ch"
    int oldStatement = statementf, oldEquality = equality, oldIfCase = ifCase ;
#line 237 "decomp1.ch"
#line 239 "decomp1.ch"
    int oldCaseDesign = caseDesign, oldSimpleCase = simpleCase ;
#line 239 "decomp1.ch"
#line 240 "decomp1.ch"
    int oldCondCase = condCase, oldCondDesign = condDesign ;
#line 240 "decomp1.ch"
#line 241 "decomp1.ch"
    char    *oldPtCase ;
#line 241 "decomp1.ch"
#line 242 "decomp1.ch"
    char    *interString ;
#line 242 "decomp1.ch"
#line 243 "decomp1.ch"
    int i, inDiff = 0 ;
#line 243 "decomp1.ch"
#line 244 "decomp1.ch"
    PTREE   oldPostComment = (PTREE)0 ;
#line 244 "decomp1.ch"
#line 244 "decomp1.ch"
#line 245 "decomp1.ch"
    int first = 1 ;
#line 245 "decomp1.ch"
#line 246 "decomp1.ch"
    int oneInstruct ;
#line 246 "decomp1.ch"
#line 244 "decomp1.ch"
    (oldPostComment=postComment);
#line 244 "decomp1.ch"
#line 244 "decomp1.ch"
#line 248 "decomp1.ch"
    switch ( NumberTree(paramTree) ) {
#line 248 "decomp1.ch"
#line 249 "decomp1.ch"
        case metachop::CHOP_DEF : 
#line 249 "decomp1.ch"
#line 249 "decomp1.ch"
            (ident=SonTree(paramTree, 1));
#line 249 "decomp1.ch"
#line 249 "decomp1.ch"
#line 249 "decomp1.ch"
            (list=SonTree(paramTree, 2));
#line 249 "decomp1.ch"
#line 249 "decomp1.ch"
#line 249 "decomp1.ch"
        _Case0 : 
#line 249 "decomp1.ch"
#line 249 "decomp1.ch"
            ;
#line 249 "decomp1.ch"
#line 250 "decomp1.ch"
            WRITE_START_LINE(paramTree);
#line 250 "decomp1.ch"
#line 251 "decomp1.ch"
            warningOk = 0 ;
#line 251 "decomp1.ch"
#line 254 "decomp1.ch"
            theLanguageName = AllocString(Value(ident));
#line 254 "decomp1.ch"
#line 255 "decomp1.ch"
            SwitchLang(theLanguageName);
#line 255 "decomp1.ch"
#line 256 "decomp1.ch"
            printheader(ident);
#line 256 "decomp1.ch"
#line 259 "decomp1.ch"
            {
#line 259 "decomp1.ch"
                /* [ metachop::COMPOUND
                    [ LIST 
                        [ metachop::IFNDEF_DIR
                            [ metachop::IDENT "for_elem"]
                            [ LIST 
                                [ metachop::DEFINE_DIR
                                    [ metachop::IDENT "for_elem"]
                                    [ NIL ] 
                                    [ LIST 
                                        "_for_elem"
                                    ]
                                ]
                            ]
                            [ NIL ] 
                        ]
                        [ metachop::IFDEF_DIR
                            [ metachop::IDENT "INCONNU"]
                            [ LIST 
                                [ metachop::DECLARATION
                                    [ NIL ] 
                                    [ metachop::TIDENT [ metachop::IDENT "PTREE"]]
                                    [ LIST 
                                        [ metachop::IDENT "for_elem"]
                                    ]
                                ]
                            ]
                            [ NIL ] 
                        ]
                    ]
                   ]
#line 259 "decomp1.ch"
                */
#line 259 "decomp1.ch"
                TheConstructor(-2,MakeString("for_elem"),metachop::IDENT,1,-2,MakeString("for_elem"),metachop::IDENT,1,-4,
#line 259 "decomp1.ch"
                    -2,MakeString("_for_elem"),-4,LIST,2,metachop::DEFINE_DIR,3,-4,LIST,2,-4,metachop::IFNDEF_DIR,3,-2,MakeString("INCONNU"),metachop::IDENT,1,-4,
#line 259 "decomp1.ch"
                    -2,MakeString("PTREE"),metachop::IDENT,1,metachop::TIDENT,1,-2,MakeString("for_elem"),metachop::IDENT,1,-4,LIST,2,metachop::DECLARATION,3,-4,LIST,2,-4,metachop::IFDEF_DIR,3,-4,LIST,2,LIST,2,metachop::COMPOUND,1,-3) ;
#line 259 "decomp1.ch"
                decl = PopTree ;
#line 259 "decomp1.ch"
                }
#line 259 "decomp1.ch"
#line 259 "decomp1.ch"
#line 269 "decomp1.ch"
            ((_inter = (PPTREE)decl,1) && 
#line 269 "decomp1.ch"
                ((decl=SonTree(_inter,1)),1) &&
#line 269 "decomp1.ch"
                1);
#line 269 "decomp1.ch"
            ;
#line 269 "decomp1.ch"
#line 270 "decomp1.ch"
            decomp(decl);
#line 270 "decomp1.ch"
#line 270 "decomp1.ch"
#line 270 "decomp1.ch"
            decomp(list);
#line 270 "decomp1.ch"
#line 270 "decomp1.ch"
#line 271 "decomp1.ch"
            write(2, "\n", 1);
#line 271 "decomp1.ch"
#line 272 "decomp1.ch"
            WRITE_STOP_LINE(paramTree);
#line 272 "decomp1.ch"
#line 273 "decomp1.ch"
            break ;
#line 273 "decomp1.ch"
#line 274 "decomp1.ch"
        case metachop::DECLARATION : 
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
            (sc=SonTree(paramTree, 1));
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
            (type=SonTree(paramTree, 2));
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
            (list_decl=SonTree(paramTree, 3));
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
        _Case1 : 
#line 274 "decomp1.ch"
#line 274 "decomp1.ch"
            ;
#line 274 "decomp1.ch"
#line 275 "decomp1.ch"
            if ( ((_inter = (PPTREE)type,1) && 
#line 275 "decomp1.ch"
                    (NumberTree(_inter) == metachop::TIDENT) &&
#line 275 "decomp1.ch"
                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 275 "decomp1.ch"
                        (NumberTree(_inter) == metachop::IDENT) &&
#line 275 "decomp1.ch"
                        (!strcmp(Value(SonTree(_inter,1)),"PTREE")) &&
#line 275 "decomp1.ch"
                        1),
#line 275 "decomp1.ch"
                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 275 "decomp1.ch"
                    1) ) {
#line 275 "decomp1.ch"
#line 276 "decomp1.ch"
                            int hasPutMark = 0 ;
#line 276 "decomp1.ch"
#line 278 "decomp1.ch"
                            int isExtern = 0 ;
#line 278 "decomp1.ch"
#line 279 "decomp1.ch"
                            if ( !((!sc)) ) {
#line 279 "decomp1.ch"
#line 280 "decomp1.ch"
                                                if ( !strcmp(Value(sc), "extern") ) 
#line 280 "decomp1.ch"
#line 281 "decomp1.ch"
                                                    isExtern = 1 ;
#line 281 "decomp1.ch"
#line 282 "decomp1.ch"
                                                DumpBrainyValue(sc);
#line 282 "decomp1.ch"
#line 282 "decomp1.ch"
#line 282 "decomp1.ch"
                                              }
#line 282 "decomp1.ch"
#line 285 "decomp1.ch"
                            {
#line 285 "decomp1.ch"
#line 285 "decomp1.ch"
                                decomp(type);
#line 285 "decomp1.ch"
#line 285 "decomp1.ch"
#line 290 "decomp1.ch"
                                if ( !((!list_decl)) ) {
#line 290 "decomp1.ch"
#line 291 "decomp1.ch"
                                                            SepAfter();
#line 291 "decomp1.ch"
#line 291 "decomp1.ch"
#line 291 "decomp1.ch"
                                                         }
#line 291 "decomp1.ch"
#line 293 "decomp1.ch"
                                Tab();
#line 293 "decomp1.ch"
#line 293 "decomp1.ch"
#line 294 "decomp1.ch"
                            }
#line 294 "decomp1.ch"
#line 295 "decomp1.ch"
                            while ( !((!list_decl)) ) {
#line 295 "decomp1.ch"
#line 298 "decomp1.ch"
                                                            if ( !hasPutMark ) {
#line 298 "decomp1.ch"
#line 299 "decomp1.ch"
Mark();
#line 299 "decomp1.ch"
#line 300 "decomp1.ch"
hasPutMark = 1 ;
#line 300 "decomp1.ch"
#line 300 "decomp1.ch"
                                                                                 }
#line 300 "decomp1.ch"
#line 302 "decomp1.ch"
                                                            (decl=(list_decl?list_decl.Nextl():(PPTREE)0));
#line 302 "decomp1.ch"
#line 302 "decomp1.ch"
#line 303 "decomp1.ch"
                                                            decomp(decl);
#line 303 "decomp1.ch"
#line 303 "decomp1.ch"
#line 304 "decomp1.ch"
                                                            InsertDecElem(AllocString(BrainyValue(decl)));
#line 304 "decomp1.ch"
#line 305 "decomp1.ch"
                                                            if ( !inFunction ) 
#line 305 "decomp1.ch"
#line 306 "decomp1.ch"
                                                                SetUse(BrainyValue(decl));
#line 306 "decomp1.ch"
#line 307 "decomp1.ch"
                                                            if ( !((!list_decl)) ) {
#line 307 "decomp1.ch"
#line 308 "decomp1.ch"
PrintString(",");
#line 308 "decomp1.ch"
#line 308 "decomp1.ch"
Space(1);
#line 308 "decomp1.ch"
#line 308 "decomp1.ch"
#line 308 "decomp1.ch"
                                                                                     }
#line 308 "decomp1.ch"
#line 308 "decomp1.ch"
                                                        }
#line 308 "decomp1.ch"
#line 311 "decomp1.ch"
                            if ( hasPutMark ) 
#line 311 "decomp1.ch"
#line 312 "decomp1.ch"
                                UnMark();
#line 312 "decomp1.ch"
#line 313 "decomp1.ch"
                            SepBefore();
#line 313 "decomp1.ch"
#line 313 "decomp1.ch"
#line 313 "decomp1.ch"
                            PrintString(";");
#line 313 "decomp1.ch"
#line 316 "decomp1.ch"
                            comm(paramTree, POST);
#line 316 "decomp1.ch"
#line 317 "decomp1.ch"
                            (oldPostComment=paramTree);
#line 317 "decomp1.ch"
#line 317 "decomp1.ch"
#line 321 "decomp1.ch"
                            (exp=FatherTree(paramTree));
#line 321 "decomp1.ch"
#line 321 "decomp1.ch"
#line 322 "decomp1.ch"
                            if ( ( _inter = 
#line 322 "decomp1.ch"
                                    FatherTree(paramTree),!(((_inter = (PPTREE)_inter,1) && 
#line 322 "decomp1.ch"
                                                                (NumberTree(_inter) == metachop::ATTRIBUTS) &&
#line 322 "decomp1.ch"
                                                                1))) ) {
#line 322 "decomp1.ch"
#line 323 "decomp1.ch"
                                                                        if ( !LastInTopList(paramTree) ) {
#line 323 "decomp1.ch"
#line 324 "decomp1.ch"
LNewLine(1);
#line 324 "decomp1.ch"
#line 324 "decomp1.ch"
#line 324 "decomp1.ch"
                                                                                                            }
#line 324 "decomp1.ch"
#line 324 "decomp1.ch"
                                                                       }
#line 324 "decomp1.ch"
#line 324 "decomp1.ch"
                         } else 
#line 324 "decomp1.ch"
#line 328 "decomp1.ch"
                return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 328 "decomp1.ch"
#line 328 "decomp1.ch"
#line 329 "decomp1.ch"
            break ;
#line 329 "decomp1.ch"
#line 330 "decomp1.ch"
        case metachop::DECLARATOR : 
#line 330 "decomp1.ch"
#line 330 "decomp1.ch"
            (type=SonTree(paramTree, 1));
#line 330 "decomp1.ch"
#line 330 "decomp1.ch"
#line 330 "decomp1.ch"
            (decl=SonTree(paramTree, 2));
#line 330 "decomp1.ch"
#line 330 "decomp1.ch"
#line 330 "decomp1.ch"
        _Case2 : 
#line 330 "decomp1.ch"
#line 330 "decomp1.ch"
            ;
#line 330 "decomp1.ch"
#line 331 "decomp1.ch"
            if ( ((_inter = (PPTREE)type,1) && 
#line 331 "decomp1.ch"
                    (NumberTree(_inter) == metachop::TIDENT) &&
#line 331 "decomp1.ch"
                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 331 "decomp1.ch"
                        (NumberTree(_inter) == metachop::IDENT) &&
#line 331 "decomp1.ch"
                        (!strcmp(Value(SonTree(_inter,1)),"PTREE")) &&
#line 331 "decomp1.ch"
                        1),
#line 331 "decomp1.ch"
                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 331 "decomp1.ch"
                    1) ) {
#line 331 "decomp1.ch"
#line 332 "decomp1.ch"
                            decomp(type);
#line 332 "decomp1.ch"
#line 332 "decomp1.ch"
#line 333 "decomp1.ch"
                            if ( !((!decl)) ) {
#line 333 "decomp1.ch"
#line 334 "decomp1.ch"
                                                    decomp(decl);
#line 334 "decomp1.ch"
#line 334 "decomp1.ch"
#line 335 "decomp1.ch"
                                                    InsertDecElem(AllocString(BrainyValue(decl)));
#line 335 "decomp1.ch"
#line 335 "decomp1.ch"
                                                }
#line 335 "decomp1.ch"
#line 335 "decomp1.ch"
                         } else 
#line 335 "decomp1.ch"
#line 338 "decomp1.ch"
                return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 338 "decomp1.ch"
#line 338 "decomp1.ch"
#line 339 "decomp1.ch"
            break ;
#line 339 "decomp1.ch"
#line 340 "decomp1.ch"
        case metachop::FUNC : 
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (sc=SonTree(paramTree, 1));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (type=SonTree(paramTree, 2));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (declarator=SonTree(paramTree, 3));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (param=SonTree(paramTree, 4));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (range=SonTree(paramTree, 5));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (param_decl=SonTree(paramTree, 6));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (ctor=SonTree(paramTree, 7));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            (stat=SonTree(paramTree, 8));
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
        _Case3 : 
#line 340 "decomp1.ch"
#line 340 "decomp1.ch"
            ;
#line 340 "decomp1.ch"
#line 341 "decomp1.ch"
            WRITE_START_LINE(paramTree);
#line 341 "decomp1.ch"
#line 342 "decomp1.ch"
            dec_function(paramTree, sc, type, declarator, param, param_decl, stat);
#line 342 "decomp1.ch"
#line 344 "decomp1.ch"
            (postComment=DecompFunction(paramTree, funcAlone));
#line 344 "decomp1.ch"
#line 344 "decomp1.ch"
#line 345 "decomp1.ch"
            DumpFunction();
#line 345 "decomp1.ch"
#line 346 "decomp1.ch"
            FuncFree();
#line 346 "decomp1.ch"
#line 347 "decomp1.ch"
            if ( nameDefine ) {
#line 347 "decomp1.ch"
#line 348 "decomp1.ch"
                                free(nameDefine);
#line 348 "decomp1.ch"
#line 349 "decomp1.ch"
                                nameDefine = 0 ;
#line 349 "decomp1.ch"
#line 349 "decomp1.ch"
                               }
#line 349 "decomp1.ch"
#line 351 "decomp1.ch"
            inFunction = 0 ;
#line 351 "decomp1.ch"
#line 352 "decomp1.ch"
            break ;
#line 352 "decomp1.ch"
#line 353 "decomp1.ch"
        case metachop::AFF : 
#line 353 "decomp1.ch"
#line 353 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 353 "decomp1.ch"
#line 353 "decomp1.ch"
#line 353 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 353 "decomp1.ch"
#line 353 "decomp1.ch"
#line 353 "decomp1.ch"
        _Case4 : 
#line 353 "decomp1.ch"
#line 353 "decomp1.ch"
            ;
#line 353 "decomp1.ch"
#line 354 "decomp1.ch"
            statementf = 0 ;
#line 354 "decomp1.ch"
#line 355 "decomp1.ch"
            if ( !(((_inter = (PPTREE)exp1,1) && 
#line 355 "decomp1.ch"
                        (NumberTree(_inter) == metachop::IDENT) &&
#line 355 "decomp1.ch"
                        1) && IsDecDecElem(BrainyValue(exp1))) ) {
#line 355 "decomp1.ch"
#line 358 "decomp1.ch"
                                                                    statementf = oldStatement ;
#line 358 "decomp1.ch"
#line 359 "decomp1.ch"
                                                                    return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 359 "decomp1.ch"
#line 359 "decomp1.ch"
                                                                   } else 
#line 360 "decomp1.ch"
            if ( ((_inter = (PPTREE)exp2,1) && 
#line 360 "decomp1.ch"
                    (NumberTree(_inter) == metachop::PARSE) &&
#line 360 "decomp1.ch"
                    ((son=SonTree(_inter,1)),1) &&
#line 360 "decomp1.ch"
                    1) ) {
#line 360 "decomp1.ch"
#line 361 "decomp1.ch"
                            ((_inter = (PPTREE)son,1) && 
#line 361 "decomp1.ch"
                                ((name1=SonTree(_inter,1)),1) &&
#line 361 "decomp1.ch"
                                ((son=SonTree(_inter,2)),1) &&
#line 361 "decomp1.ch"
                                1);
#line 361 "decomp1.ch"
                            ;
#line 361 "decomp1.ch"
#line 363 "decomp1.ch"
                            {
#line 363 "decomp1.ch"
#line 363 "decomp1.ch"
                                MakeTreeGenDir(son, interString = AllocString(BrainyValue(exp1)), 0);
#line 363 "decomp1.ch"
#line 365 "decomp1.ch"
                                free(interString);
#line 365 "decomp1.ch"
#line 366 "decomp1.ch"
                            }
#line 366 "decomp1.ch"
#line 366 "decomp1.ch"
                         } else 
#line 367 "decomp1.ch"
            {
#line 367 "decomp1.ch"
#line 368 "decomp1.ch"
                if ( ToSwitcher(exp2) ) {
#line 368 "decomp1.ch"
#line 369 "decomp1.ch"
                                            SwitcherTop(paramTree, interString = AllocString(BrainyValue(exp1)), 0);
#line 369 "decomp1.ch"
#line 371 "decomp1.ch"
                                            free(interString);
#line 371 "decomp1.ch"
#line 371 "decomp1.ch"
                                          } else 
#line 372 "decomp1.ch"
                if ( ((_inter = (PPTREE)exp2,1) && 
#line 372 "decomp1.ch"
                        (NumberTree(_inter) == metachop::NIL) &&
#line 372 "decomp1.ch"
                        1) ) {
#line 372 "decomp1.ch"
#line 373 "decomp1.ch"
                                decomp(exp1);
#line 373 "decomp1.ch"
#line 373 "decomp1.ch"
#line 373 "decomp1.ch"
                                PrintString(" = (PPTREE) 0 ");
#line 373 "decomp1.ch"
#line 374 "decomp1.ch"
                                if ( oldStatement ) {
#line 374 "decomp1.ch"
#line 375 "decomp1.ch"
                                                        PrintString(";");
#line 375 "decomp1.ch"
#line 375 "decomp1.ch"
                                                        LNewLine(1);
#line 375 "decomp1.ch"
#line 375 "decomp1.ch"
#line 375 "decomp1.ch"
                                                     }
#line 375 "decomp1.ch"
#line 375 "decomp1.ch"
                             } else 
#line 377 "decomp1.ch"
                {
#line 377 "decomp1.ch"
#line 378 "decomp1.ch"
                    statementf = 0 ;
#line 378 "decomp1.ch"
#line 379 "decomp1.ch"
                    if ( strcmp(BrainyValue(exp1), "for_elem") ) {
#line 379 "decomp1.ch"
#line 380 "decomp1.ch"
                                                                        PrintString("(");
#line 380 "decomp1.ch"
#line 380 "decomp1.ch"
                                                                        decomp(exp1);
#line 380 "decomp1.ch"
#line 380 "decomp1.ch"
#line 380 "decomp1.ch"
                                                                        PrintString("=");
#line 380 "decomp1.ch"
#line 380 "decomp1.ch"
                                                                        decomp(exp2);
#line 380 "decomp1.ch"
#line 380 "decomp1.ch"
#line 380 "decomp1.ch"
                                                                        PrintString(")");
#line 380 "decomp1.ch"
#line 380 "decomp1.ch"
                                                                    } else 
#line 381 "decomp1.ch"
                    {
#line 381 "decomp1.ch"
#line 384 "decomp1.ch"
                        statementf = oldStatement ;
#line 384 "decomp1.ch"
#line 385 "decomp1.ch"
                        return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 385 "decomp1.ch"
#line 385 "decomp1.ch"
                    }
#line 385 "decomp1.ch"
#line 387 "decomp1.ch"
                    if ( oldStatement ) {
#line 387 "decomp1.ch"
#line 388 "decomp1.ch"
                                            PrintString(";");
#line 388 "decomp1.ch"
#line 388 "decomp1.ch"
                                            LNewLine(1);
#line 388 "decomp1.ch"
#line 388 "decomp1.ch"
#line 388 "decomp1.ch"
                                         }
#line 388 "decomp1.ch"
#line 388 "decomp1.ch"
                }
#line 388 "decomp1.ch"
#line 388 "decomp1.ch"
            }
#line 388 "decomp1.ch"
#line 392 "decomp1.ch"
            break ;
#line 392 "decomp1.ch"
#line 393 "decomp1.ch"
        case metachop::MUL_AFF : 
#line 393 "decomp1.ch"
#line 393 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 393 "decomp1.ch"
#line 393 "decomp1.ch"
#line 393 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 393 "decomp1.ch"
#line 393 "decomp1.ch"
#line 393 "decomp1.ch"
        _Case5 : 
#line 393 "decomp1.ch"
#line 393 "decomp1.ch"
            ;
#line 393 "decomp1.ch"
#line 394 "decomp1.ch"
            statementf = 0 ;
#line 394 "decomp1.ch"
#line 395 "decomp1.ch"
            if ( !(((_inter = (PPTREE)exp1,1) && 
#line 395 "decomp1.ch"
                        (NumberTree(_inter) == metachop::IDENT) &&
#line 395 "decomp1.ch"
                        1) && IsDecDecElem(BrainyValue(exp1))) ) {
#line 395 "decomp1.ch"
#line 398 "decomp1.ch"
                                                                    statementf = oldStatement ;
#line 398 "decomp1.ch"
#line 399 "decomp1.ch"
                                                                    return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 399 "decomp1.ch"
#line 399 "decomp1.ch"
                                                                   } else 
#line 399 "decomp1.ch"
#line 401 "decomp1.ch"
                SwitcherTop(paramTree, (char *)0, 0);
#line 401 "decomp1.ch"
#line 401 "decomp1.ch"
#line 402 "decomp1.ch"
            break ;
#line 402 "decomp1.ch"
#line 403 "decomp1.ch"
        case metachop::EXPO_AFF : 
#line 403 "decomp1.ch"
#line 403 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 403 "decomp1.ch"
#line 403 "decomp1.ch"
#line 403 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 403 "decomp1.ch"
#line 403 "decomp1.ch"
#line 403 "decomp1.ch"
        _Case6 : 
#line 403 "decomp1.ch"
#line 403 "decomp1.ch"
            ;
#line 403 "decomp1.ch"
#line 404 "decomp1.ch"
            statementf = 0 ;
#line 404 "decomp1.ch"
#line 405 "decomp1.ch"
            SwitcherTop(paramTree, (char *)0, 0);
#line 405 "decomp1.ch"
#line 406 "decomp1.ch"
            break ;
#line 406 "decomp1.ch"
#line 407 "decomp1.ch"
        case metachop::PLU_AFF : 
#line 407 "decomp1.ch"
#line 407 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 407 "decomp1.ch"
#line 407 "decomp1.ch"
#line 407 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 407 "decomp1.ch"
#line 407 "decomp1.ch"
#line 407 "decomp1.ch"
        _Case7 : 
#line 407 "decomp1.ch"
#line 407 "decomp1.ch"
            ;
#line 407 "decomp1.ch"
#line 408 "decomp1.ch"
            statementf = 0 ;
#line 408 "decomp1.ch"
#line 409 "decomp1.ch"
            if ( !(((_inter = (PPTREE)exp1,1) && 
#line 409 "decomp1.ch"
                        (NumberTree(_inter) == metachop::IDENT) &&
#line 409 "decomp1.ch"
                        1) && IsDecDecElem(BrainyValue(exp1))) ) {
#line 409 "decomp1.ch"
#line 412 "decomp1.ch"
                                                                    statementf = oldStatement ;
#line 412 "decomp1.ch"
#line 413 "decomp1.ch"
                                                                    return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 413 "decomp1.ch"
#line 413 "decomp1.ch"
                                                                   } else 
#line 413 "decomp1.ch"
#line 415 "decomp1.ch"
                SwitcherTop(paramTree, (char *)0, 0);
#line 415 "decomp1.ch"
#line 415 "decomp1.ch"
#line 416 "decomp1.ch"
            break ;
#line 416 "decomp1.ch"
#line 417 "decomp1.ch"
        case metachop::LXOR : 
#line 417 "decomp1.ch"
#line 417 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 417 "decomp1.ch"
#line 417 "decomp1.ch"
#line 417 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 417 "decomp1.ch"
#line 417 "decomp1.ch"
#line 417 "decomp1.ch"
        _Case8 : 
#line 417 "decomp1.ch"
#line 417 "decomp1.ch"
            ;
#line 417 "decomp1.ch"
#line 418 "decomp1.ch"
            (exp=exp1);
#line 418 "decomp1.ch"
#line 418 "decomp1.ch"
#line 419 "decomp1.ch"
            while ( ((_inter = (PPTREE)exp,1) && 
#line 419 "decomp1.ch"
                        (NumberTree(_inter) == metachop::LXOR) &&
#line 419 "decomp1.ch"
                        ((exp=SonTree(_inter,1)),1) &&
#line 419 "decomp1.ch"
                        1) || ((_inter = (PPTREE)exp,1) && 
#line 419 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::EXP) &&
#line 419 "decomp1.ch"
                                    ((exp=SonTree(_inter,1)),1) &&
#line 419 "decomp1.ch"
                                    1) ) 
#line 419 "decomp1.ch"
#line 420 "decomp1.ch"
                ;
#line 420 "decomp1.ch"
#line 421 "decomp1.ch"
            if ( exp2 && !(((_inter = (PPTREE)exp,1) && 
#line 421 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::IDENT) &&
#line 421 "decomp1.ch"
                                    1) && IsDecDecElem(BrainyValue(exp))) ) {
#line 421 "decomp1.ch"
#line 422 "decomp1.ch"
return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 422 "decomp1.ch"
#line 422 "decomp1.ch"
                                                                              } else 
#line 423 "decomp1.ch"
            {
#line 423 "decomp1.ch"
#line 424 "decomp1.ch"
                if ( ((_inter = (PPTREE)exp2,1) && 
#line 424 "decomp1.ch"
                        (NumberTree(_inter) == metachop::INTEGER) &&
#line 424 "decomp1.ch"
                        1) || ((_inter = (PPTREE)exp2,1) && 
#line 424 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::NEG) &&
#line 424 "decomp1.ch"
                                    1) ) {
#line 424 "decomp1.ch"
#line 425 "decomp1.ch"
                                            PrintString("NFatherTree(");
#line 425 "decomp1.ch"
#line 425 "decomp1.ch"
                                            decomp(exp1);
#line 425 "decomp1.ch"
#line 425 "decomp1.ch"
#line 425 "decomp1.ch"
                                            PrintString(",");
#line 425 "decomp1.ch"
#line 425 "decomp1.ch"
                                            decomp(exp2);
#line 425 "decomp1.ch"
#line 425 "decomp1.ch"
#line 425 "decomp1.ch"
                                            PrintString(")");
#line 425 "decomp1.ch"
#line 425 "decomp1.ch"
                                         } else 
#line 426 "decomp1.ch"
                if ( ((_inter = (PPTREE)exp2,1) && 
#line 426 "decomp1.ch"
                        (NumberTree(_inter) == metachop::NODE_TREE) &&
#line 426 "decomp1.ch"
                        1) || ((_inter = (PPTREE)exp2,1) && 
#line 426 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::NOT) &&
#line 426 "decomp1.ch"
                                    1) ) {
#line 426 "decomp1.ch"
#line 427 "decomp1.ch"
                                            PrintString("SFatherTree(");
#line 427 "decomp1.ch"
#line 427 "decomp1.ch"
                                            decomp(exp1);
#line 427 "decomp1.ch"
#line 427 "decomp1.ch"
#line 427 "decomp1.ch"
                                            PrintString(",");
#line 427 "decomp1.ch"
#line 428 "decomp1.ch"
                                            if ( ((_inter = (PPTREE)exp2,1) && 
#line 428 "decomp1.ch"
                                                    (NumberTree(_inter) == metachop::NOT) &&
#line 428 "decomp1.ch"
                                                    1) ) 
#line 428 "decomp1.ch"
#line 429 "decomp1.ch"
                                                PrintString("-1 -");
#line 429 "decomp1.ch"
#line 430 "decomp1.ch"
                                            if ( cplusGen ) {
#line 430 "decomp1.ch"
#line 431 "decomp1.ch"
                                                                WriteString(NameOfNodePlus(Value(exp2)));
#line 431 "decomp1.ch"
#line 431 "decomp1.ch"
                                                             } else 
#line 432 "decomp1.ch"
                                            {
#line 432 "decomp1.ch"
#line 433 "decomp1.ch"
                                                WriteString(NameOfNode(Value(exp2)));
#line 433 "decomp1.ch"
#line 433 "decomp1.ch"
                                            }
#line 433 "decomp1.ch"
#line 435 "decomp1.ch"
                                            PrintString(")");
#line 435 "decomp1.ch"
#line 435 "decomp1.ch"
                                         } else 
#line 436 "decomp1.ch"
                if ( !exp2 ) {
#line 436 "decomp1.ch"
#line 437 "decomp1.ch"
                                PrintString("FatherTree(");
#line 437 "decomp1.ch"
#line 437 "decomp1.ch"
                                decomp(exp1);
#line 437 "decomp1.ch"
#line 437 "decomp1.ch"
#line 437 "decomp1.ch"
                                PrintString(")");
#line 437 "decomp1.ch"
#line 437 "decomp1.ch"
                               }
#line 437 "decomp1.ch"
#line 437 "decomp1.ch"
            }
#line 437 "decomp1.ch"
#line 440 "decomp1.ch"
            break ;
#line 440 "decomp1.ch"
#line 441 "decomp1.ch"
        case metachop::EQU : 
#line 441 "decomp1.ch"
#line 441 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 441 "decomp1.ch"
#line 441 "decomp1.ch"
#line 441 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 441 "decomp1.ch"
#line 441 "decomp1.ch"
#line 441 "decomp1.ch"
        _Case9 : 
#line 441 "decomp1.ch"
#line 441 "decomp1.ch"
            ;
#line 441 "decomp1.ch"
#line 442 "decomp1.ch"
            (param=exp2);
#line 442 "decomp1.ch"
#line 442 "decomp1.ch"
#line 443 "decomp1.ch"
            while ( ((_inter = (PPTREE)param,1) && 
#line 443 "decomp1.ch"
                        (NumberTree(_inter) == metachop::EXP) &&
#line 443 "decomp1.ch"
                        ((param=SonTree(_inter,1)),1) &&
#line 443 "decomp1.ch"
                        1) ) 
#line 443 "decomp1.ch"
#line 444 "decomp1.ch"
                ;
#line 444 "decomp1.ch"
#line 445 "decomp1.ch"
            while ( ((_inter = (PPTREE)exp1,1) && 
#line 445 "decomp1.ch"
                        (NumberTree(_inter) == metachop::EXP) &&
#line 445 "decomp1.ch"
                        ((exp1=SonTree(_inter,1)),1) &&
#line 445 "decomp1.ch"
                        1) ) 
#line 445 "decomp1.ch"
#line 446 "decomp1.ch"
                ;
#line 446 "decomp1.ch"
#line 447 "decomp1.ch"
            while ( ((_inter = (PPTREE)param,1) && 
#line 447 "decomp1.ch"
                        (NumberTree(_inter) == metachop::PLU_AFF) &&
#line 447 "decomp1.ch"
                        ((param=SonTree(_inter,1)),1) &&
#line 447 "decomp1.ch"
                        1) || ((_inter = (PPTREE)param,1) && 
#line 447 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::EXPO_AFF) &&
#line 447 "decomp1.ch"
                                    ((param=SonTree(_inter,2)),1) &&
#line 447 "decomp1.ch"
                                    1) || ((_inter = (PPTREE)param,1) && 
#line 447 "decomp1.ch"
                                                (NumberTree(_inter) == metachop::MUL_AFF) &&
#line 447 "decomp1.ch"
                                                ((param=SonTree(_inter,2)),1) &&
#line 447 "decomp1.ch"
                                                1) || ((_inter = (PPTREE)param,1) && 
#line 447 "decomp1.ch"
                                                            (NumberTree(_inter) == metachop::AFF) &&
#line 447 "decomp1.ch"
                                                            ((param=SonTree(_inter,2)),1) &&
#line 447 "decomp1.ch"
                                                            1) ) 
#line 447 "decomp1.ch"
#line 451 "decomp1.ch"
                ;
#line 451 "decomp1.ch"
#line 452 "decomp1.ch"
            if ( !(((_inter = (PPTREE)param,1) && 
#line 452 "decomp1.ch"
                        (NumberTree(_inter) == metachop::NODE_TREE) &&
#line 452 "decomp1.ch"
                        1) || ((_inter = (PPTREE)param,1) && 
#line 452 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::NIL) &&
#line 452 "decomp1.ch"
                                    1) || ((_inter = (PPTREE)param,1) && 
#line 452 "decomp1.ch"
                                                (NumberTree(_inter) == metachop::NODE_LIST) &&
#line 452 "decomp1.ch"
                                                1)) ) {
#line 452 "decomp1.ch"
#line 455 "decomp1.ch"
                                                        return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 455 "decomp1.ch"
#line 455 "decomp1.ch"
                                                      } else 
#line 456 "decomp1.ch"
            {
#line 456 "decomp1.ch"
#line 457 "decomp1.ch"
                ((_inter = (PPTREE)paramTree,1) && 
#line 457 "decomp1.ch"
                    ((ident=SonTree(_inter,1)),1) &&
#line 457 "decomp1.ch"
                    ((stat=SonTree(_inter,2)),1) &&
#line 457 "decomp1.ch"
                    1);
#line 457 "decomp1.ch"
                ;
#line 457 "decomp1.ch"
#line 458 "decomp1.ch"
                while ( ((_inter = (PPTREE)ident,1) && 
#line 458 "decomp1.ch"
                            (NumberTree(_inter) == metachop::EXP) &&
#line 458 "decomp1.ch"
                            ((ident=SonTree(_inter,1)),1) &&
#line 458 "decomp1.ch"
                            1) ) 
#line 458 "decomp1.ch"
#line 459 "decomp1.ch"
                    ;
#line 459 "decomp1.ch"
#line 460 "decomp1.ch"
                goto test ;
#line 460 "decomp1.ch"
#line 460 "decomp1.ch"
            }
#line 460 "decomp1.ch"
#line 462 "decomp1.ch"
            break ;
#line 462 "decomp1.ch"
#line 463 "decomp1.ch"
        case metachop::NEQU : 
#line 463 "decomp1.ch"
#line 463 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 463 "decomp1.ch"
#line 463 "decomp1.ch"
#line 463 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 463 "decomp1.ch"
#line 463 "decomp1.ch"
#line 463 "decomp1.ch"
        _Case10 : 
#line 463 "decomp1.ch"
#line 463 "decomp1.ch"
            ;
#line 463 "decomp1.ch"
#line 464 "decomp1.ch"
            inDiff = 1 ;
#line 464 "decomp1.ch"
#line 465 "decomp1.ch"
            (param=exp2);
#line 465 "decomp1.ch"
#line 465 "decomp1.ch"
#line 466 "decomp1.ch"
            while ( ((_inter = (PPTREE)param,1) && 
#line 466 "decomp1.ch"
                        (NumberTree(_inter) == metachop::EXP) &&
#line 466 "decomp1.ch"
                        ((param=SonTree(_inter,1)),1) &&
#line 466 "decomp1.ch"
                        1) ) 
#line 466 "decomp1.ch"
#line 467 "decomp1.ch"
                ;
#line 467 "decomp1.ch"
#line 468 "decomp1.ch"
            while ( ((_inter = (PPTREE)exp1,1) && 
#line 468 "decomp1.ch"
                        (NumberTree(_inter) == metachop::EXP) &&
#line 468 "decomp1.ch"
                        ((exp1=SonTree(_inter,1)),1) &&
#line 468 "decomp1.ch"
                        1) ) 
#line 468 "decomp1.ch"
#line 469 "decomp1.ch"
                ;
#line 469 "decomp1.ch"
#line 470 "decomp1.ch"
            while ( ((_inter = (PPTREE)param,1) && 
#line 470 "decomp1.ch"
                        (NumberTree(_inter) == metachop::PLU_AFF) &&
#line 470 "decomp1.ch"
                        ((param=SonTree(_inter,1)),1) &&
#line 470 "decomp1.ch"
                        1) || ((_inter = (PPTREE)param,1) && 
#line 470 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::EXPO_AFF) &&
#line 470 "decomp1.ch"
                                    ((param=SonTree(_inter,1)),1) &&
#line 470 "decomp1.ch"
                                    1) || ((_inter = (PPTREE)param,1) && 
#line 470 "decomp1.ch"
                                                (NumberTree(_inter) == metachop::MUL_AFF) &&
#line 470 "decomp1.ch"
                                                ((param=SonTree(_inter,1)),1) &&
#line 470 "decomp1.ch"
                                                1) || ((_inter = (PPTREE)param,1) && 
#line 470 "decomp1.ch"
                                                            (NumberTree(_inter) == metachop::AFF) &&
#line 470 "decomp1.ch"
                                                            ((param=SonTree(_inter,1)),1) &&
#line 470 "decomp1.ch"
                                                            1) ) 
#line 470 "decomp1.ch"
#line 474 "decomp1.ch"
                ;
#line 474 "decomp1.ch"
#line 475 "decomp1.ch"
            if ( !(((_inter = (PPTREE)param,1) && 
#line 475 "decomp1.ch"
                        (NumberTree(_inter) == metachop::NODE_TREE) &&
#line 475 "decomp1.ch"
                        1) || ((_inter = (PPTREE)param,1) && 
#line 475 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::NIL) &&
#line 475 "decomp1.ch"
                                    1) || ((_inter = (PPTREE)param,1) && 
#line 475 "decomp1.ch"
                                                (NumberTree(_inter) == metachop::NODE_LIST) &&
#line 475 "decomp1.ch"
                                                1)) ) {
#line 475 "decomp1.ch"
#line 478 "decomp1.ch"
                                                        return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 478 "decomp1.ch"
#line 478 "decomp1.ch"
                                                      } else 
#line 479 "decomp1.ch"
            {
#line 479 "decomp1.ch"
#line 480 "decomp1.ch"
                ((_inter = (PPTREE)paramTree,1) && 
#line 480 "decomp1.ch"
                    ((ident=SonTree(_inter,1)),1) &&
#line 480 "decomp1.ch"
                    ((stat=SonTree(_inter,2)),1) &&
#line 480 "decomp1.ch"
                    1);
#line 480 "decomp1.ch"
                ;
#line 480 "decomp1.ch"
#line 481 "decomp1.ch"
                while ( ((_inter = (PPTREE)ident,1) && 
#line 481 "decomp1.ch"
                            (NumberTree(_inter) == metachop::EXP) &&
#line 481 "decomp1.ch"
                            ((ident=SonTree(_inter,1)),1) &&
#line 481 "decomp1.ch"
                            1) ) 
#line 481 "decomp1.ch"
#line 482 "decomp1.ch"
                    ;
#line 482 "decomp1.ch"
#line 483 "decomp1.ch"
                goto test ;
#line 483 "decomp1.ch"
#line 483 "decomp1.ch"
            }
#line 483 "decomp1.ch"
#line 485 "decomp1.ch"
            break ;
#line 485 "decomp1.ch"
#line 486 "decomp1.ch"
        test : 
#line 486 "decomp1.ch"
#line 487 "decomp1.ch"
            condDesign = 1 ;
#line 487 "decomp1.ch"
#line 488 "decomp1.ch"
            i = 0 ;
#line 488 "decomp1.ch"
#line 489 "decomp1.ch"
            switch ( NumberTree(ident) ) {
#line 489 "decomp1.ch"
#line 491 "decomp1.ch"
                case metachop::LXOR : 
#line 491 "decomp1.ch"
#line 491 "decomp1.ch"
                _Case39 : 
#line 491 "decomp1.ch"
#line 491 "decomp1.ch"
                    ;
#line 491 "decomp1.ch"
#line 491 "decomp1.ch"
                    PrintString("( _inter = ");
#line 491 "decomp1.ch"
#line 491 "decomp1.ch"
                    LNewLine(1);
#line 491 "decomp1.ch"
#line 491 "decomp1.ch"
#line 492 "decomp1.ch"
                    Tab();
#line 492 "decomp1.ch"
#line 492 "decomp1.ch"
#line 492 "decomp1.ch"
                    decomp(ident);
#line 492 "decomp1.ch"
#line 492 "decomp1.ch"
#line 492 "decomp1.ch"
                    PrintString(",");
#line 492 "decomp1.ch"
#line 493 "decomp1.ch"
                    ptCond = AllocString("_inter");
#line 493 "decomp1.ch"
#line 494 "decomp1.ch"
                    break ;
#line 494 "decomp1.ch"
#line 496 "decomp1.ch"
                case metachop::IDENT : 
#line 496 "decomp1.ch"
#line 496 "decomp1.ch"
                _Case40 : 
#line 496 "decomp1.ch"
#line 496 "decomp1.ch"
                    ;
#line 496 "decomp1.ch"
#line 496 "decomp1.ch"
                    ptCond = AllocString(BrainyValue(ident));
#line 496 "decomp1.ch"
#line 497 "decomp1.ch"
                    break ;
#line 497 "decomp1.ch"
#line 499 "decomp1.ch"
                default : 
#line 499 "decomp1.ch"
#line 499 "decomp1.ch"
                _Case41 : 
#line 499 "decomp1.ch"
#line 499 "decomp1.ch"
                    ;
#line 499 "decomp1.ch"
#line 499 "decomp1.ch"
                    ptCond = AllocString("");
#line 499 "decomp1.ch"
#line 500 "decomp1.ch"
                    break ;
#line 500 "decomp1.ch"
            }
#line 500 "decomp1.ch"
#line 500 "decomp1.ch"
#line 502 "decomp1.ch"
            if ( ((_inter = (PPTREE)stat,1) && 
#line 502 "decomp1.ch"
                    (NumberTree(_inter) == metachop::IDENT) &&
#line 502 "decomp1.ch"
                    ((ident1=SonTree(_inter,1)),1) &&
#line 502 "decomp1.ch"
                    1) ) {
#line 502 "decomp1.ch"
#line 503 "decomp1.ch"
                            if ( inDiff ) 
#line 503 "decomp1.ch"
#line 504 "decomp1.ch"
                                PrintString("!");
#line 504 "decomp1.ch"
#line 505 "decomp1.ch"
                            DumpBrainyValue(ident1);
#line 505 "decomp1.ch"
#line 505 "decomp1.ch"
#line 505 "decomp1.ch"
                            PrintString(" = ");
#line 505 "decomp1.ch"
#line 505 "decomp1.ch"
                            WriteString(ptCond);
#line 505 "decomp1.ch"
#line 505 "decomp1.ch"
                         } else 
#line 506 "decomp1.ch"
            {
#line 506 "decomp1.ch"
#line 507 "decomp1.ch"
                while ( ((_inter = (PPTREE)stat,1) && 
#line 507 "decomp1.ch"
                            (NumberTree(_inter) == metachop::EXP) &&
#line 507 "decomp1.ch"
                            ((stat=SonTree(_inter,1)),1) &&
#line 507 "decomp1.ch"
                            1) ) 
#line 507 "decomp1.ch"
#line 508 "decomp1.ch"
                    ;
#line 508 "decomp1.ch"
#line 509 "decomp1.ch"
                if ( inDiff ) {
#line 509 "decomp1.ch"
#line 510 "decomp1.ch"
                                i = 1 ;
#line 510 "decomp1.ch"
#line 511 "decomp1.ch"
                                PrintString("!(");
#line 511 "decomp1.ch"
#line 511 "decomp1.ch"
                               }
#line 511 "decomp1.ch"
#line 513 "decomp1.ch"
                if ( ((_inter = (PPTREE)stat,1) && 
#line 513 "decomp1.ch"
                        (NumberTree(_inter) == metachop::AFF) &&
#line 513 "decomp1.ch"
                        ((ident1=SonTree(_inter,1)),1) &&
#line 513 "decomp1.ch"
                        ((stat=SonTree(_inter,2)),1) &&
#line 513 "decomp1.ch"
                        1) ) {
#line 513 "decomp1.ch"
#line 514 "decomp1.ch"
                                if ( !i ) {
#line 514 "decomp1.ch"
#line 515 "decomp1.ch"
                                                i = 1 ;
#line 515 "decomp1.ch"
#line 516 "decomp1.ch"
                                                PrintString("(");
#line 516 "decomp1.ch"
#line 516 "decomp1.ch"
                                            }
#line 516 "decomp1.ch"
#line 516 "decomp1.ch"
                             } else 
#line 516 "decomp1.ch"
#line 519 "decomp1.ch"
                    (ident1=(PTREE)0);
#line 519 "decomp1.ch"
#line 519 "decomp1.ch"
#line 519 "decomp1.ch"
#line 520 "decomp1.ch"
                decomp(stat);
#line 520 "decomp1.ch"
#line 520 "decomp1.ch"
#line 521 "decomp1.ch"
                if ( ident1 ) {
#line 521 "decomp1.ch"
#line 522 "decomp1.ch"
                                PrintString("&& (");
#line 522 "decomp1.ch"
#line 522 "decomp1.ch"
                                DumpBrainyValue(ident1);
#line 522 "decomp1.ch"
#line 522 "decomp1.ch"
#line 522 "decomp1.ch"
                                PrintString(" = ");
#line 522 "decomp1.ch"
#line 522 "decomp1.ch"
                                WriteString(ptCond);
#line 522 "decomp1.ch"
#line 522 "decomp1.ch"
                                PrintString(")");
#line 522 "decomp1.ch"
#line 522 "decomp1.ch"
                               }
#line 522 "decomp1.ch"
#line 524 "decomp1.ch"
                if ( i ) 
#line 524 "decomp1.ch"
#line 525 "decomp1.ch"
                    PrintString(")");
#line 525 "decomp1.ch"
#line 525 "decomp1.ch"
            }
#line 525 "decomp1.ch"
#line 527 "decomp1.ch"
            condDesign = 0 ;
#line 527 "decomp1.ch"
#line 528 "decomp1.ch"
            if ( ((_inter = (PPTREE)ident,1) && 
#line 528 "decomp1.ch"
                    (NumberTree(_inter) == metachop::LXOR) &&
#line 528 "decomp1.ch"
                    1) ) 
#line 528 "decomp1.ch"
#line 529 "decomp1.ch"
                PrintString(")");
#line 529 "decomp1.ch"
#line 530 "decomp1.ch"
            if ( statementf ) {
#line 530 "decomp1.ch"
#line 531 "decomp1.ch"
                                PrintString(";");
#line 531 "decomp1.ch"
#line 531 "decomp1.ch"
                                LNewLine(1);
#line 531 "decomp1.ch"
#line 531 "decomp1.ch"
#line 531 "decomp1.ch"
                               }
#line 531 "decomp1.ch"
#line 533 "decomp1.ch"
            free(ptCond);
#line 533 "decomp1.ch"
#line 534 "decomp1.ch"
            break ;
#line 534 "decomp1.ch"
#line 535 "decomp1.ch"
        case metachop::COMPOUND : 
#line 535 "decomp1.ch"
#line 535 "decomp1.ch"
            (list=SonTree(paramTree, 1));
#line 535 "decomp1.ch"
#line 535 "decomp1.ch"
#line 535 "decomp1.ch"
        _Case11 : 
#line 535 "decomp1.ch"
#line 535 "decomp1.ch"
            ;
#line 535 "decomp1.ch"
#line 536 "decomp1.ch"
            if ( ansiMode && !((!list)) ) 
#line 536 "decomp1.ch"
#line 537 "decomp1.ch"
                LNewLine(1);
#line 537 "decomp1.ch"
#line 537 "decomp1.ch"
#line 538 "decomp1.ch"
            SepBefore();
#line 538 "decomp1.ch"
#line 538 "decomp1.ch"
#line 538 "decomp1.ch"
            PrintString("{");
#line 538 "decomp1.ch"
#line 539 "decomp1.ch"
            if ( !statementf && needInter ) {
#line 539 "decomp1.ch"
#line 540 "decomp1.ch"
                                                LNewLine(1);
#line 540 "decomp1.ch"
#line 540 "decomp1.ch"
#line 541 "decomp1.ch"
                                                Tab();
#line 541 "decomp1.ch"
#line 541 "decomp1.ch"
#line 541 "decomp1.ch"
                                                PrintString("register PPTREE _inter ;");
#line 541 "decomp1.ch"
#line 541 "decomp1.ch"
                                                LNewLine(1);
#line 541 "decomp1.ch"
#line 541 "decomp1.ch"
#line 541 "decomp1.ch"
                                               }
#line 541 "decomp1.ch"
#line 543 "decomp1.ch"
            if ( !((!list)) ) {
#line 543 "decomp1.ch"
#line 544 "decomp1.ch"
                                    LNewLine(1);
#line 544 "decomp1.ch"
#line 544 "decomp1.ch"
#line 545 "decomp1.ch"
                                    Tab();
#line 545 "decomp1.ch"
#line 545 "decomp1.ch"
#line 546 "decomp1.ch"
                                    Mark();
#line 546 "decomp1.ch"
                                    statementf = 1 ;
#line 546 "decomp1.ch"
                                    while ( !((!list)) ) {
#line 546 "decomp1.ch"
#line 548 "decomp1.ch"
                                                            (son=(list?list.Nextl():(PPTREE)0));
#line 548 "decomp1.ch"
#line 548 "decomp1.ch"
#line 549 "decomp1.ch"
                                                            (postComment=son);
#line 549 "decomp1.ch"
#line 549 "decomp1.ch"
#line 550 "decomp1.ch"
                                                            ((_inter = (PPTREE)postComment,1) && 
#line 550 "decomp1.ch"
                                                                (NumberTree(_inter) == metachop::ATTRIBUTS) &&
#line 550 "decomp1.ch"
                                                                ((postComment=SonTree(_inter,1)),1) &&
#line 550 "decomp1.ch"
                                                                1);
#line 550 "decomp1.ch"
                                                            ;
#line 550 "decomp1.ch"
#line 551 "decomp1.ch"
                                                            WRITE_START_LINE(son);
#line 551 "decomp1.ch"
#line 552 "decomp1.ch"
                                                            DecompStat(son, 1);
#line 552 "decomp1.ch"
#line 552 "decomp1.ch"
                                                           }
#line 552 "decomp1.ch"
                                    UnMark();
#line 552 "decomp1.ch"
#line 552 "decomp1.ch"
#line 552 "decomp1.ch"
                                }
#line 552 "decomp1.ch"
#line 556 "decomp1.ch"
            WRITE_STOP_LINE(paramTree);
#line 556 "decomp1.ch"
#line 557 "decomp1.ch"
            PrintString("}");
#line 557 "decomp1.ch"
#line 557 "decomp1.ch"
            SepAfter();
#line 557 "decomp1.ch"
#line 557 "decomp1.ch"
#line 558 "decomp1.ch"
            break ;
#line 558 "decomp1.ch"
#line 559 "decomp1.ch"
        case metachop::DO : 
#line 559 "decomp1.ch"
#line 559 "decomp1.ch"
            (stat=SonTree(paramTree, 1));
#line 559 "decomp1.ch"
#line 559 "decomp1.ch"
#line 559 "decomp1.ch"
            (exp=SonTree(paramTree, 2));
#line 559 "decomp1.ch"
#line 559 "decomp1.ch"
#line 559 "decomp1.ch"
        _Case12 : 
#line 559 "decomp1.ch"
#line 559 "decomp1.ch"
            ;
#line 559 "decomp1.ch"
#line 560 "decomp1.ch"
            PrintString("do");
#line 560 "decomp1.ch"
#line 561 "decomp1.ch"
            if ( !(((_inter = (PPTREE)stat,1) && 
#line 561 "decomp1.ch"
                        (NumberTree(_inter) == metachop::COMPOUND) &&
#line 561 "decomp1.ch"
                        1)) ) {
#line 561 "decomp1.ch"
#line 562 "decomp1.ch"
                                if ( !(((_inter = (PPTREE)stat,1) && 
#line 562 "decomp1.ch"
                                            (NumberTree(_inter) == metachop::STAT_VOID) &&
#line 562 "decomp1.ch"
                                            1)) ) {
#line 562 "decomp1.ch"
#line 563 "decomp1.ch"
                                                    LNewLine(1);
#line 563 "decomp1.ch"
#line 563 "decomp1.ch"
#line 564 "decomp1.ch"
                                                    Tab();
#line 564 "decomp1.ch"
#line 564 "decomp1.ch"
#line 564 "decomp1.ch"
                                                  }
#line 564 "decomp1.ch"
#line 566 "decomp1.ch"
                                (postComment=stat);
#line 566 "decomp1.ch"
#line 566 "decomp1.ch"
#line 567 "decomp1.ch"
                                WRITE_START_LINE(stat);
#line 567 "decomp1.ch"
#line 568 "decomp1.ch"
                                DecompStat(stat, 1);
#line 568 "decomp1.ch"
#line 568 "decomp1.ch"
                              } else 
#line 569 "decomp1.ch"
            {
#line 569 "decomp1.ch"
#line 570 "decomp1.ch"
                Space(1);
#line 570 "decomp1.ch"
#line 570 "decomp1.ch"
#line 570 "decomp1.ch"
                decomp(stat);
#line 570 "decomp1.ch"
#line 570 "decomp1.ch"
#line 570 "decomp1.ch"
                Space(1);
#line 570 "decomp1.ch"
#line 570 "decomp1.ch"
#line 570 "decomp1.ch"
            }
#line 570 "decomp1.ch"
#line 572 "decomp1.ch"
            statementf = 0 ;
#line 572 "decomp1.ch"
#line 573 "decomp1.ch"
            WRITE_START_LINE(exp);
#line 573 "decomp1.ch"
#line 574 "decomp1.ch"
            PrintString("while (");
#line 574 "decomp1.ch"
#line 574 "decomp1.ch"
            Space(1);
#line 574 "decomp1.ch"
#line 574 "decomp1.ch"
#line 574 "decomp1.ch"
            decomp(exp);
#line 574 "decomp1.ch"
#line 574 "decomp1.ch"
#line 574 "decomp1.ch"
            Space(1);
#line 574 "decomp1.ch"
#line 574 "decomp1.ch"
#line 574 "decomp1.ch"
            PrintString(");");
#line 574 "decomp1.ch"
#line 575 "decomp1.ch"
            statementf = 1 ;
#line 575 "decomp1.ch"
#line 576 "decomp1.ch"
            LNewLine(1);
#line 576 "decomp1.ch"
#line 576 "decomp1.ch"
#line 577 "decomp1.ch"
            break ;
#line 577 "decomp1.ch"
#line 578 "decomp1.ch"
        case metachop::FOR : 
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
            (exp1=SonTree(paramTree, 1));
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
            (exp2=SonTree(paramTree, 2));
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
            (exp3=SonTree(paramTree, 3));
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
            (stat=SonTree(paramTree, 4));
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
        _Case13 : 
#line 578 "decomp1.ch"
#line 578 "decomp1.ch"
            ;
#line 578 "decomp1.ch"
#line 579 "decomp1.ch"
            WRITE_START_LINE(paramTree);
#line 579 "decomp1.ch"
#line 580 "decomp1.ch"
            statementf = 0 ;
#line 580 "decomp1.ch"
#line 581 "decomp1.ch"
            PrintString("for (");
#line 581 "decomp1.ch"
#line 582 "decomp1.ch"
            if ( !((!exp1)) ) {
#line 582 "decomp1.ch"
#line 583 "decomp1.ch"
                                    Space(1);
#line 583 "decomp1.ch"
#line 583 "decomp1.ch"
#line 583 "decomp1.ch"
                                    decomp(exp1);
#line 583 "decomp1.ch"
#line 583 "decomp1.ch"
#line 583 "decomp1.ch"
                                    Space(1);
#line 583 "decomp1.ch"
#line 583 "decomp1.ch"
#line 583 "decomp1.ch"
                                }
#line 583 "decomp1.ch"
#line 585 "decomp1.ch"
            PrintString(";");
#line 585 "decomp1.ch"
#line 586 "decomp1.ch"
            if ( !((!exp2)) ) {
#line 586 "decomp1.ch"
#line 587 "decomp1.ch"
                                    Space(1);
#line 587 "decomp1.ch"
#line 587 "decomp1.ch"
#line 587 "decomp1.ch"
                                    decomp(exp2);
#line 587 "decomp1.ch"
#line 587 "decomp1.ch"
#line 587 "decomp1.ch"
                                    Space(1);
#line 587 "decomp1.ch"
#line 587 "decomp1.ch"
#line 587 "decomp1.ch"
                                }
#line 587 "decomp1.ch"
#line 589 "decomp1.ch"
            PrintString(";");
#line 589 "decomp1.ch"
#line 590 "decomp1.ch"
            if ( !((!exp2)) ) {
#line 590 "decomp1.ch"
#line 591 "decomp1.ch"
                                    Space(1);
#line 591 "decomp1.ch"
#line 591 "decomp1.ch"
#line 591 "decomp1.ch"
                                    decomp(exp3);
#line 591 "decomp1.ch"
#line 591 "decomp1.ch"
#line 591 "decomp1.ch"
                                    Space(1);
#line 591 "decomp1.ch"
#line 591 "decomp1.ch"
#line 591 "decomp1.ch"
                                }
#line 591 "decomp1.ch"
#line 593 "decomp1.ch"
            PrintString(")");
#line 593 "decomp1.ch"
#line 593 "decomp1.ch"
            Space(1);
#line 593 "decomp1.ch"
#line 593 "decomp1.ch"
#line 594 "decomp1.ch"
            statementf = 1 ;
#line 594 "decomp1.ch"
#line 595 "decomp1.ch"
            if ( !(((_inter = (PPTREE)stat,1) && 
#line 595 "decomp1.ch"
                        (NumberTree(_inter) == metachop::COMPOUND) &&
#line 595 "decomp1.ch"
                        1)) ) {
#line 595 "decomp1.ch"
#line 596 "decomp1.ch"
                                (postComment=stat);
#line 596 "decomp1.ch"
#line 596 "decomp1.ch"
#line 597 "decomp1.ch"
                                LNewLine(1);
#line 597 "decomp1.ch"
#line 597 "decomp1.ch"
#line 598 "decomp1.ch"
                                Tab();
#line 598 "decomp1.ch"
#line 598 "decomp1.ch"
#line 599 "decomp1.ch"
                                Mark();
#line 599 "decomp1.ch"
                                WRITE_START_LINE(stat);
#line 599 "decomp1.ch"
                                DecompStat(stat, 1);
#line 599 "decomp1.ch"
                                UnMark();
#line 599 "decomp1.ch"
#line 599 "decomp1.ch"
#line 599 "decomp1.ch"
                              } else 
#line 602 "decomp1.ch"
            {
#line 602 "decomp1.ch"
#line 603 "decomp1.ch"
                decomp(stat);
#line 603 "decomp1.ch"
#line 603 "decomp1.ch"
#line 603 "decomp1.ch"
                LNewLine(1);
#line 603 "decomp1.ch"
#line 603 "decomp1.ch"
#line 603 "decomp1.ch"
            }
#line 603 "decomp1.ch"
#line 605 "decomp1.ch"
            break ;
#line 605 "decomp1.ch"
#line 606 "decomp1.ch"
        case metachop::LABEL : 
#line 606 "decomp1.ch"
#line 606 "decomp1.ch"
            (ident=SonTree(paramTree, 1));
#line 606 "decomp1.ch"
#line 606 "decomp1.ch"
#line 606 "decomp1.ch"
            (stat=SonTree(paramTree, 2));
#line 606 "decomp1.ch"
#line 606 "decomp1.ch"
#line 606 "decomp1.ch"
        _Case14 : 
#line 606 "decomp1.ch"
#line 606 "decomp1.ch"
            ;
#line 606 "decomp1.ch"
#line 607 "decomp1.ch"
            (postComment=stat);
#line 607 "decomp1.ch"
#line 607 "decomp1.ch"
#line 608 "decomp1.ch"
            UnMark();
#line 608 "decomp1.ch"
#line 609 "decomp1.ch"
            DumpBrainyValue(ident);
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
            Space(1);
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
            PrintString(":");
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
            Space(1);
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
            LNewLine(1);
#line 609 "decomp1.ch"
#line 609 "decomp1.ch"
#line 610 "decomp1.ch"
            Tab();
#line 610 "decomp1.ch"
#line 610 "decomp1.ch"
#line 611 "decomp1.ch"
            Mark();
#line 611 "decomp1.ch"
#line 613 "decomp1.ch"
            Mark();
#line 613 "decomp1.ch"
            WRITE_START_LINE(stat);
#line 613 "decomp1.ch"
            DecompStat(stat, 0);
#line 613 "decomp1.ch"
            UnMark();
#line 613 "decomp1.ch"
#line 613 "decomp1.ch"
#line 616 "decomp1.ch"
            break ;
#line 616 "decomp1.ch"
#line 617 "decomp1.ch"
        case metachop::IF : 
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
            (exp=SonTree(paramTree, 1));
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
            (stat1=SonTree(paramTree, 2));
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
            (stat2=SonTree(paramTree, 3));
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
        _Case15 : 
#line 617 "decomp1.ch"
#line 617 "decomp1.ch"
            ;
#line 617 "decomp1.ch"
#line 618 "decomp1.ch"
            statementf = 0 ;
#line 618 "decomp1.ch"
#line 619 "decomp1.ch"
            PrintString("if (");
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
            Space(1);
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
            decomp(exp);
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
            Space(1);
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
            PrintString(")");
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
            Space(1);
#line 619 "decomp1.ch"
#line 619 "decomp1.ch"
#line 620 "decomp1.ch"
            statementf = 1 ;
#line 620 "decomp1.ch"
#line 621 "decomp1.ch"
            oldPtCase = ptCond ;
#line 621 "decomp1.ch"
#line 624 "decomp1.ch"
            if ( !(((_inter = (PPTREE)stat1,1) && 
#line 624 "decomp1.ch"
                        (NumberTree(_inter) == metachop::COMPOUND) &&
#line 624 "decomp1.ch"
                        1)) ) {
#line 624 "decomp1.ch"
#line 625 "decomp1.ch"
                                (postComment=stat1);
#line 625 "decomp1.ch"
#line 625 "decomp1.ch"
#line 626 "decomp1.ch"
                                LNewLine(1);
#line 626 "decomp1.ch"
#line 626 "decomp1.ch"
#line 627 "decomp1.ch"
                                Tab();
#line 627 "decomp1.ch"
#line 627 "decomp1.ch"
#line 628 "decomp1.ch"
                                Mark();
#line 628 "decomp1.ch"
                                WRITE_START_LINE(stat1);
#line 628 "decomp1.ch"
                                DecompStat(stat1, 0);
#line 628 "decomp1.ch"
                                UnMark();
#line 628 "decomp1.ch"
#line 628 "decomp1.ch"
#line 628 "decomp1.ch"
                              } else 
#line 628 "decomp1.ch"
#line 632 "decomp1.ch"
                decomp(stat1);
#line 632 "decomp1.ch"
#line 632 "decomp1.ch"
#line 632 "decomp1.ch"
#line 633 "decomp1.ch"
            ptCond = oldPtCase ;
#line 633 "decomp1.ch"
#line 636 "decomp1.ch"
            if ( !((!stat2)) ) {
#line 636 "decomp1.ch"
#line 637 "decomp1.ch"
                                    if ( !(((_inter = (PPTREE)stat1,1) && 
#line 637 "decomp1.ch"
                                                (NumberTree(_inter) == metachop::COMPOUND) &&
#line 637 "decomp1.ch"
                                                1)) || ansiMode ) 
#line 637 "decomp1.ch"
#line 638 "decomp1.ch"
                                        LNewLine(1);
#line 638 "decomp1.ch"
#line 638 "decomp1.ch"
                                    else 
#line 638 "decomp1.ch"
#line 640 "decomp1.ch"
                                        Space(1);
#line 640 "decomp1.ch"
#line 640 "decomp1.ch"
#line 640 "decomp1.ch"
#line 641 "decomp1.ch"
                                    PrintString("else");
#line 641 "decomp1.ch"
#line 641 "decomp1.ch"
                                    Space(1);
#line 641 "decomp1.ch"
#line 641 "decomp1.ch"
#line 642 "decomp1.ch"
                                    if ( ansiMode ) 
#line 642 "decomp1.ch"
#line 643 "decomp1.ch"
                                        LNewLine(1);
#line 643 "decomp1.ch"
#line 643 "decomp1.ch"
#line 644 "decomp1.ch"
                                    if ( !(((_inter = (PPTREE)stat2,1) && 
#line 644 "decomp1.ch"
                                                (NumberTree(_inter) == metachop::COMPOUND) &&
#line 644 "decomp1.ch"
                                                1)) && !(((_inter = (PPTREE)stat2,1) && 
#line 644 "decomp1.ch"
                                                            (NumberTree(_inter) == metachop::IF) &&
#line 644 "decomp1.ch"
                                                            1)) ) {
#line 644 "decomp1.ch"
#line 645 "decomp1.ch"
                                                                    (postComment=stat2);
#line 645 "decomp1.ch"
#line 645 "decomp1.ch"
#line 646 "decomp1.ch"
                                                                    LNewLine(1);
#line 646 "decomp1.ch"
#line 646 "decomp1.ch"
#line 647 "decomp1.ch"
                                                                    Tab();
#line 647 "decomp1.ch"
#line 647 "decomp1.ch"
#line 648 "decomp1.ch"
                                                                    Mark();
#line 648 "decomp1.ch"
                                                                    WRITE_START_LINE(stat2);
#line 648 "decomp1.ch"
                                                                    DecompStat(stat2, 1);
#line 648 "decomp1.ch"
                                                                    UnMark();
#line 648 "decomp1.ch"
#line 648 "decomp1.ch"
#line 648 "decomp1.ch"
                                                                  } else 
#line 651 "decomp1.ch"
                                    {
#line 651 "decomp1.ch"
#line 652 "decomp1.ch"
                                        (postComment=stat2);
#line 652 "decomp1.ch"
#line 652 "decomp1.ch"
#line 653 "decomp1.ch"
                                        WRITE_START_LINE(stat2);
#line 653 "decomp1.ch"
#line 654 "decomp1.ch"
                                        decomp(stat2);
#line 654 "decomp1.ch"
#line 654 "decomp1.ch"
#line 655 "decomp1.ch"
                                        control_stat1(stat2);
#line 655 "decomp1.ch"
#line 655 "decomp1.ch"
                                    }
#line 655 "decomp1.ch"
#line 655 "decomp1.ch"
                                 }
#line 655 "decomp1.ch"
#line 658 "decomp1.ch"
            break ;
#line 658 "decomp1.ch"
#line 659 "decomp1.ch"
        case metachop::SWITCH : 
#line 659 "decomp1.ch"
#line 659 "decomp1.ch"
            (exp=SonTree(paramTree, 1));
#line 659 "decomp1.ch"
#line 659 "decomp1.ch"
#line 659 "decomp1.ch"
            (list=SonTree(paramTree, 2));
#line 659 "decomp1.ch"
#line 659 "decomp1.ch"
#line 659 "decomp1.ch"
        _Case16 : 
#line 659 "decomp1.ch"
#line 659 "decomp1.ch"
            ;
#line 659 "decomp1.ch"
#line 660 "decomp1.ch"
            (param=paramTree);
#line 660 "decomp1.ch"
#line 660 "decomp1.ch"
#line 661 "decomp1.ch"
            statementf = 0 ;
#line 661 "decomp1.ch"
#line 662 "decomp1.ch"
            if ( !(((_inter = (PPTREE)exp,1) && 
#line 662 "decomp1.ch"
                        (NumberTree(_inter) == metachop::IDENT) &&
#line 662 "decomp1.ch"
                        1)) || !IsDecDecElem(BrainyValue(exp)) ) {
#line 662 "decomp1.ch"
#line 663 "decomp1.ch"
                                                                        PrintString("switch (");
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
                                                                        Space(1);
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
                                                                        decomp(exp);
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
                                                                        Space(1);
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
                                                                        PrintString(")");
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
                                                                        Space(1);
#line 663 "decomp1.ch"
#line 663 "decomp1.ch"
#line 664 "decomp1.ch"
                                                                        if ( ansiMode ) 
#line 664 "decomp1.ch"
#line 665 "decomp1.ch"
LNewLine(1);
#line 665 "decomp1.ch"
#line 665 "decomp1.ch"
#line 666 "decomp1.ch"
                                                                        PrintString("{");
#line 666 "decomp1.ch"
#line 666 "decomp1.ch"
                                                                        LNewLine(1);
#line 666 "decomp1.ch"
#line 666 "decomp1.ch"
#line 667 "decomp1.ch"
                                                                        statementf = 1 ;
#line 667 "decomp1.ch"
#line 668 "decomp1.ch"
                                                                        Tab();
#line 668 "decomp1.ch"
#line 668 "decomp1.ch"
#line 670 "decomp1.ch"
                                                                        Mark();
#line 670 "decomp1.ch"
                                                                        while ( !((!list)) ) {
#line 670 "decomp1.ch"
#line 671 "decomp1.ch"
(son=(list?list.Nextl():(PPTREE)0));
#line 671 "decomp1.ch"
#line 671 "decomp1.ch"
#line 672 "decomp1.ch"
WRITE_START_LINE(son);
#line 672 "decomp1.ch"
#line 673 "decomp1.ch"
if ( ((_inter = (PPTREE)son,1) && 
#line 673 "decomp1.ch"
        (NumberTree(_inter) == metachop::DEFAULT) &&
#line 673 "decomp1.ch"
        ((stat=SonTree(_inter,1)),1) &&
#line 673 "decomp1.ch"
        1) ) {
#line 673 "decomp1.ch"
#line 674 "decomp1.ch"
                PrintString("default :");
#line 674 "decomp1.ch"
#line 674 "decomp1.ch"
                Space(1);
#line 674 "decomp1.ch"
#line 674 "decomp1.ch"
#line 674 "decomp1.ch"
             } else 
#line 675 "decomp1.ch"
{
#line 675 "decomp1.ch"
#line 676 "decomp1.ch"
    statementf = 0 ;
#line 676 "decomp1.ch"
#line 677 "decomp1.ch"
    ((_inter = (PPTREE)son,1) && 
#line 677 "decomp1.ch"
        ((exp=SonTree(_inter,1)),1) &&
#line 677 "decomp1.ch"
        ((stat=SonTree(_inter,2)),1) &&
#line 677 "decomp1.ch"
        1);
#line 677 "decomp1.ch"
    ;
#line 677 "decomp1.ch"
#line 678 "decomp1.ch"
    PrintString("case ");
#line 678 "decomp1.ch"
#line 678 "decomp1.ch"
    decomp(exp);
#line 678 "decomp1.ch"
#line 678 "decomp1.ch"
#line 678 "decomp1.ch"
    Space(1);
#line 678 "decomp1.ch"
#line 678 "decomp1.ch"
#line 678 "decomp1.ch"
    PrintString(":");
#line 678 "decomp1.ch"
#line 678 "decomp1.ch"
    Space(1);
#line 678 "decomp1.ch"
#line 678 "decomp1.ch"
#line 679 "decomp1.ch"
    statementf = 1 ;
#line 679 "decomp1.ch"
#line 679 "decomp1.ch"
}
#line 679 "decomp1.ch"
#line 684 "decomp1.ch"
if ( !sontree(stat, 2) ) {
#line 684 "decomp1.ch"
#line 685 "decomp1.ch"
                                (son=sontree(stat, 1));
#line 685 "decomp1.ch"
#line 685 "decomp1.ch"
#line 686 "decomp1.ch"
                                switch ( NumberTree(son) ) {
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::COMPOUND : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case42 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case43 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::CASE : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case43 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case44 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::DEFAULT : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case44 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case45 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::IF : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case45 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case46 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::WHILE : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case46 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case47 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::FOR : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case47 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case48 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::DO : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case48 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case49 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::SWITCH : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case49 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case50 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::IF_DIR : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case50 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case51 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::IFDEF_DIR : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case51 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case52 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::IFNDEF_DIR : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case52 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case53 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::NO_PRETTY : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case53 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case54 ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    case metachop::ATTRIBUTS : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                    _Case54 : 
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        ;
#line 686 "decomp1.ch"
#line 686 "decomp1.ch"
                                        goto _Case55 ;
#line 686 "decomp1.ch"
#line 701 "decomp1.ch"
                                    case metachop::EXCEPTION : 
#line 701 "decomp1.ch"
#line 701 "decomp1.ch"
                                    _Case55 : 
#line 701 "decomp1.ch"
#line 701 "decomp1.ch"
                                        ;
#line 701 "decomp1.ch"
#line 701 "decomp1.ch"
                                        oneInstruct = 0 ;
#line 701 "decomp1.ch"
#line 702 "decomp1.ch"
                                        break ;
#line 702 "decomp1.ch"
#line 710 "decomp1.ch"
                                    default : 
#line 710 "decomp1.ch"
#line 710 "decomp1.ch"
                                    _Case56 : 
#line 710 "decomp1.ch"
#line 710 "decomp1.ch"
                                        ;
#line 710 "decomp1.ch"
#line 710 "decomp1.ch"
                                        if ( son && !IsComm(son, PRE) ) 
#line 710 "decomp1.ch"
#line 711 "decomp1.ch"
                                            oneInstruct = 1 ;
#line 711 "decomp1.ch"
                                        else 
#line 711 "decomp1.ch"
#line 713 "decomp1.ch"
                                            oneInstruct = 0 ;
#line 713 "decomp1.ch"
#line 713 "decomp1.ch"
                                }
#line 713 "decomp1.ch"
#line 713 "decomp1.ch"
#line 713 "decomp1.ch"
                             } else 
#line 713 "decomp1.ch"
#line 716 "decomp1.ch"
    oneInstruct = 0 ;
#line 716 "decomp1.ch"
#line 716 "decomp1.ch"
#line 717 "decomp1.ch"
if ( !oneInstruct ) {
#line 717 "decomp1.ch"
#line 718 "decomp1.ch"
                        LNewLine(1);
#line 718 "decomp1.ch"
#line 718 "decomp1.ch"
#line 719 "decomp1.ch"
                        Tab();
#line 719 "decomp1.ch"
#line 719 "decomp1.ch"
#line 719 "decomp1.ch"
                      }
#line 719 "decomp1.ch"
#line 722 "decomp1.ch"
Mark();
#line 722 "decomp1.ch"
while ( !((!stat)) ) {
#line 722 "decomp1.ch"
#line 723 "decomp1.ch"
                        (son=(stat?stat.Nextl():(PPTREE)0));
#line 723 "decomp1.ch"
#line 723 "decomp1.ch"
#line 724 "decomp1.ch"
                        (postComment=son);
#line 724 "decomp1.ch"
#line 724 "decomp1.ch"
#line 725 "decomp1.ch"
                        WRITE_START_LINE(son);
#line 725 "decomp1.ch"
#line 726 "decomp1.ch"
                        DecompStat(son, 1);
#line 726 "decomp1.ch"
#line 726 "decomp1.ch"
                       }
#line 726 "decomp1.ch"
UnMark();
#line 726 "decomp1.ch"
#line 726 "decomp1.ch"
#line 726 "decomp1.ch"
                                                                                               }
#line 726 "decomp1.ch"
                                                                        UnMark();
#line 726 "decomp1.ch"
#line 726 "decomp1.ch"
#line 731 "decomp1.ch"
                                                                        PrintString("}");
#line 731 "decomp1.ch"
#line 731 "decomp1.ch"
                                                                        LNewLine(1);
#line 731 "decomp1.ch"
#line 731 "decomp1.ch"
#line 731 "decomp1.ch"
                                                                    } else 
#line 732 "decomp1.ch"
            {
#line 732 "decomp1.ch"
#line 733 "decomp1.ch"
                int i = classify_case(paramTree);
#line 733 "decomp1.ch"
#line 734 "decomp1.ch"
                ifCase = i - 1 ;
#line 734 "decomp1.ch"
#line 737 "decomp1.ch"
                (ident=exp);
#line 737 "decomp1.ch"
#line 737 "decomp1.ch"
#line 738 "decomp1.ch"
                if ( ptCase ) 
#line 738 "decomp1.ch"
#line 739 "decomp1.ch"
                    free(ptCase);
#line 739 "decomp1.ch"
#line 740 "decomp1.ch"
                ptCase = AllocString(BrainyValue(ident));
#line 740 "decomp1.ch"
#line 741 "decomp1.ch"
                ptCond = ptCase ;
#line 741 "decomp1.ch"
#line 742 "decomp1.ch"
                (exp=switch_body(list));
#line 742 "decomp1.ch"
#line 742 "decomp1.ch"
#line 743 "decomp1.ch"
                decomp(exp);
#line 743 "decomp1.ch"
#line 743 "decomp1.ch"
#line 748 "decomp1.ch"
                if ( ptCase ) 
#line 748 "decomp1.ch"
#line 749 "decomp1.ch"
                    free(ptCase);
#line 749 "decomp1.ch"
#line 750 "decomp1.ch"
                ptCase = (char *)0 ;
#line 750 "decomp1.ch"
#line 751 "decomp1.ch"
                {
#line 751 "decomp1.ch"
                    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 751 "decomp1.ch"
                    _ptTree0 = (PPTREE) 0;
#line 751 "decomp1.ch"
                    ReplaceTree(param, 2, _ptTree0);
#line 751 "decomp1.ch"
                }
#line 751 "decomp1.ch"
#line 751 "decomp1.ch"
#line 751 "decomp1.ch"
            }
#line 751 "decomp1.ch"
#line 753 "decomp1.ch"
            break ;
#line 753 "decomp1.ch"
#line 754 "decomp1.ch"
        case metachop::WHILE : 
#line 754 "decomp1.ch"
#line 754 "decomp1.ch"
            (exp=SonTree(paramTree, 1));
#line 754 "decomp1.ch"
#line 754 "decomp1.ch"
#line 754 "decomp1.ch"
            (stat=SonTree(paramTree, 2));
#line 754 "decomp1.ch"
#line 754 "decomp1.ch"
#line 754 "decomp1.ch"
        _Case17 : 
#line 754 "decomp1.ch"
#line 754 "decomp1.ch"
            ;
#line 754 "decomp1.ch"
#line 755 "decomp1.ch"
            statementf = 0 ;
#line 755 "decomp1.ch"
#line 756 "decomp1.ch"
            PrintString("while (");
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
            Space(1);
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
            decomp(exp);
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
            Space(1);
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
            PrintString(")");
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
            Space(1);
#line 756 "decomp1.ch"
#line 756 "decomp1.ch"
#line 757 "decomp1.ch"
            statementf = 1 ;
#line 757 "decomp1.ch"
#line 758 "decomp1.ch"
            if ( !(((_inter = (PPTREE)stat,1) && 
#line 758 "decomp1.ch"
                        (NumberTree(_inter) == metachop::COMPOUND) &&
#line 758 "decomp1.ch"
                        1)) ) {
#line 758 "decomp1.ch"
#line 759 "decomp1.ch"
                                (postComment=stat);
#line 759 "decomp1.ch"
#line 759 "decomp1.ch"
#line 760 "decomp1.ch"
                                LNewLine(1);
#line 760 "decomp1.ch"
#line 760 "decomp1.ch"
#line 761 "decomp1.ch"
                                Tab();
#line 761 "decomp1.ch"
#line 761 "decomp1.ch"
#line 762 "decomp1.ch"
                                Mark();
#line 762 "decomp1.ch"
                                WRITE_START_LINE(stat);
#line 762 "decomp1.ch"
                                DecompStat(stat, 0);
#line 762 "decomp1.ch"
                                UnMark();
#line 762 "decomp1.ch"
#line 762 "decomp1.ch"
#line 762 "decomp1.ch"
                              } else 
#line 765 "decomp1.ch"
            {
#line 765 "decomp1.ch"
#line 766 "decomp1.ch"
                decomp(stat);
#line 766 "decomp1.ch"
#line 766 "decomp1.ch"
#line 766 "decomp1.ch"
            }
#line 766 "decomp1.ch"
#line 768 "decomp1.ch"
            break ;
#line 768 "decomp1.ch"
#line 769 "decomp1.ch"
        case metachop::IFDEF_DIR : 
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
            (exp=SonTree(paramTree, 1));
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
            (stat1=SonTree(paramTree, 2));
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
            (stat2=SonTree(paramTree, 3));
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
        _Case18 : 
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
            ;
#line 769 "decomp1.ch"
#line 769 "decomp1.ch"
            goto _Case19 ;
#line 769 "decomp1.ch"
#line 770 "decomp1.ch"
        case metachop::IFNDEF_DIR : 
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
            (exp=SonTree(paramTree, 1));
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
            (stat1=SonTree(paramTree, 2));
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
            (stat2=SonTree(paramTree, 3));
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
        _Case19 : 
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
            ;
#line 770 "decomp1.ch"
#line 770 "decomp1.ch"
            goto _Case20 ;
#line 770 "decomp1.ch"
#line 771 "decomp1.ch"
        case metachop::IF_DIR : 
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
            (exp=SonTree(paramTree, 1));
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
            (stat1=SonTree(paramTree, 2));
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
            (stat2=SonTree(paramTree, 3));
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
        _Case20 : 
#line 771 "decomp1.ch"
#line 771 "decomp1.ch"
            ;
#line 771 "decomp1.ch"
#line 772 "decomp1.ch"
            gotocol(0);
#line 772 "decomp1.ch"
#line 773 "decomp1.ch"
            switch ( NumberTree(paramTree) ) {
#line 773 "decomp1.ch"
#line 775 "decomp1.ch"
                case metachop::IFDEF_DIR : 
#line 775 "decomp1.ch"
#line 775 "decomp1.ch"
                _Case57 : 
#line 775 "decomp1.ch"
#line 775 "decomp1.ch"
                    ;
#line 775 "decomp1.ch"
#line 775 "decomp1.ch"
                    PrintString("#ifdef ");
#line 775 "decomp1.ch"
#line 776 "decomp1.ch"
                    break ;
#line 776 "decomp1.ch"
#line 778 "decomp1.ch"
                case metachop::IFNDEF_DIR : 
#line 778 "decomp1.ch"
#line 778 "decomp1.ch"
                _Case58 : 
#line 778 "decomp1.ch"
#line 778 "decomp1.ch"
                    ;
#line 778 "decomp1.ch"
#line 778 "decomp1.ch"
                    PrintString("#ifndef ");
#line 778 "decomp1.ch"
#line 779 "decomp1.ch"
                    break ;
#line 779 "decomp1.ch"
#line 781 "decomp1.ch"
                case metachop::IF_DIR : 
#line 781 "decomp1.ch"
#line 781 "decomp1.ch"
                _Case59 : 
#line 781 "decomp1.ch"
#line 781 "decomp1.ch"
                    ;
#line 781 "decomp1.ch"
#line 781 "decomp1.ch"
                    PrintString("#if ");
#line 781 "decomp1.ch"
#line 782 "decomp1.ch"
                    break ;
#line 782 "decomp1.ch"
            }
#line 782 "decomp1.ch"
#line 782 "decomp1.ch"
#line 784 "decomp1.ch"
            decomp(exp);
#line 784 "decomp1.ch"
#line 784 "decomp1.ch"
#line 784 "decomp1.ch"
            LNewLine(1);
#line 784 "decomp1.ch"
#line 784 "decomp1.ch"
#line 785 "decomp1.ch"
            while ( !((!stat1)) ) {
#line 785 "decomp1.ch"
#line 786 "decomp1.ch"
                                        (son=(stat1?stat1.Nextl():(PPTREE)0));
#line 786 "decomp1.ch"
#line 786 "decomp1.ch"
#line 787 "decomp1.ch"
                                        (postComment=son);
#line 787 "decomp1.ch"
#line 787 "decomp1.ch"
#line 788 "decomp1.ch"
                                        WRITE_START_LINE(son);
#line 788 "decomp1.ch"
#line 789 "decomp1.ch"
                                        DecompStat(son, 1);
#line 789 "decomp1.ch"
#line 789 "decomp1.ch"
                                    }
#line 789 "decomp1.ch"
#line 791 "decomp1.ch"
            follow_if_dir(stat2, paramTree);
#line 791 "decomp1.ch"
#line 792 "decomp1.ch"
            break ;
#line 792 "decomp1.ch"
#line 794 "decomp1.ch"
        case metachop::SEP_BEFORE : 
#line 794 "decomp1.ch"
#line 794 "decomp1.ch"
        _Case21 : 
#line 794 "decomp1.ch"
#line 794 "decomp1.ch"
            ;
#line 794 "decomp1.ch"
#line 794 "decomp1.ch"
            PrintString("SepBefore();");
#line 794 "decomp1.ch"
#line 794 "decomp1.ch"
            LNewLine(1);
#line 794 "decomp1.ch"
#line 794 "decomp1.ch"
#line 795 "decomp1.ch"
            break ;
#line 795 "decomp1.ch"
#line 797 "decomp1.ch"
        case metachop::SEP_AFTER : 
#line 797 "decomp1.ch"
#line 797 "decomp1.ch"
        _Case22 : 
#line 797 "decomp1.ch"
#line 797 "decomp1.ch"
            ;
#line 797 "decomp1.ch"
#line 797 "decomp1.ch"
            PrintString("SepAfter();");
#line 797 "decomp1.ch"
#line 797 "decomp1.ch"
            LNewLine(1);
#line 797 "decomp1.ch"
#line 797 "decomp1.ch"
#line 798 "decomp1.ch"
            break ;
#line 798 "decomp1.ch"
#line 800 "decomp1.ch"
        case metachop::SEP_OMIT : 
#line 800 "decomp1.ch"
#line 800 "decomp1.ch"
        _Case23 : 
#line 800 "decomp1.ch"
#line 800 "decomp1.ch"
            ;
#line 800 "decomp1.ch"
#line 800 "decomp1.ch"
            PrintString("NoSep();");
#line 800 "decomp1.ch"
#line 800 "decomp1.ch"
            LNewLine(1);
#line 800 "decomp1.ch"
#line 800 "decomp1.ch"
#line 801 "decomp1.ch"
            break ;
#line 801 "decomp1.ch"
#line 802 "decomp1.ch"
        case metachop::TAB : 
#line 802 "decomp1.ch"
#line 802 "decomp1.ch"
            (val=SonTree(paramTree, 1));
#line 802 "decomp1.ch"
#line 802 "decomp1.ch"
#line 802 "decomp1.ch"
        _Case24 : 
#line 802 "decomp1.ch"
#line 802 "decomp1.ch"
            ;
#line 802 "decomp1.ch"
#line 803 "decomp1.ch"
            if ( (!val) ) {
#line 803 "decomp1.ch"
#line 804 "decomp1.ch"
                                PrintString("Tab();");
#line 804 "decomp1.ch"
#line 804 "decomp1.ch"
                                LNewLine(1);
#line 804 "decomp1.ch"
#line 804 "decomp1.ch"
#line 804 "decomp1.ch"
                            } else 
#line 805 "decomp1.ch"
            {
#line 805 "decomp1.ch"
#line 806 "decomp1.ch"
                PrintString("NTab(");
#line 806 "decomp1.ch"
#line 806 "decomp1.ch"
                decomp(val);
#line 806 "decomp1.ch"
#line 806 "decomp1.ch"
#line 806 "decomp1.ch"
                PrintString(");");
#line 806 "decomp1.ch"
#line 806 "decomp1.ch"
                LNewLine(1);
#line 806 "decomp1.ch"
#line 806 "decomp1.ch"
#line 806 "decomp1.ch"
            }
#line 806 "decomp1.ch"
#line 808 "decomp1.ch"
            break ;
#line 808 "decomp1.ch"
#line 809 "decomp1.ch"
        case metachop::SPACE : 
#line 809 "decomp1.ch"
#line 809 "decomp1.ch"
            (val=SonTree(paramTree, 1));
#line 809 "decomp1.ch"
#line 809 "decomp1.ch"
#line 809 "decomp1.ch"
        _Case25 : 
#line 809 "decomp1.ch"
#line 809 "decomp1.ch"
            ;
#line 809 "decomp1.ch"
#line 810 "decomp1.ch"
            if ( (!val) ) {
#line 810 "decomp1.ch"
#line 811 "decomp1.ch"
                                PrintString("Space(1);");
#line 811 "decomp1.ch"
#line 811 "decomp1.ch"
                                LNewLine(1);
#line 811 "decomp1.ch"
#line 811 "decomp1.ch"
#line 811 "decomp1.ch"
                            } else 
#line 812 "decomp1.ch"
            {
#line 812 "decomp1.ch"
#line 813 "decomp1.ch"
                PrintString("Space(");
#line 813 "decomp1.ch"
#line 813 "decomp1.ch"
                decomp(val);
#line 813 "decomp1.ch"
#line 813 "decomp1.ch"
#line 813 "decomp1.ch"
                PrintString(");");
#line 813 "decomp1.ch"
#line 813 "decomp1.ch"
                LNewLine(1);
#line 813 "decomp1.ch"
#line 813 "decomp1.ch"
#line 813 "decomp1.ch"
            }
#line 813 "decomp1.ch"
#line 815 "decomp1.ch"
            break ;
#line 815 "decomp1.ch"
#line 816 "decomp1.ch"
        case metachop::NEWLINE : 
#line 816 "decomp1.ch"
#line 816 "decomp1.ch"
            (param=SonTree(paramTree, 1));
#line 816 "decomp1.ch"
#line 816 "decomp1.ch"
#line 816 "decomp1.ch"
        _Case26 : 
#line 816 "decomp1.ch"
#line 816 "decomp1.ch"
            ;
#line 816 "decomp1.ch"
#line 817 "decomp1.ch"
            if ( !param ) {
#line 817 "decomp1.ch"
#line 818 "decomp1.ch"
                                PrintString("LNewLine(1);");
#line 818 "decomp1.ch"
#line 818 "decomp1.ch"
                                LNewLine(1);
#line 818 "decomp1.ch"
#line 818 "decomp1.ch"
#line 818 "decomp1.ch"
                            } else 
#line 819 "decomp1.ch"
            {
#line 819 "decomp1.ch"
#line 820 "decomp1.ch"
                PrintString("LNewLine(");
#line 820 "decomp1.ch"
#line 820 "decomp1.ch"
                decomp(param);
#line 820 "decomp1.ch"
#line 820 "decomp1.ch"
#line 820 "decomp1.ch"
                PrintString(");");
#line 820 "decomp1.ch"
#line 820 "decomp1.ch"
                LNewLine(1);
#line 820 "decomp1.ch"
#line 820 "decomp1.ch"
#line 820 "decomp1.ch"
            }
#line 820 "decomp1.ch"
#line 822 "decomp1.ch"
            break ;
#line 822 "decomp1.ch"
#line 824 "decomp1.ch"
        case metachop::NODE_TREE : 
#line 824 "decomp1.ch"
#line 824 "decomp1.ch"
        _Case27 : 
#line 824 "decomp1.ch"
#line 824 "decomp1.ch"
            ;
#line 824 "decomp1.ch"
#line 824 "decomp1.ch"
            node(paramTree);
#line 824 "decomp1.ch"
#line 825 "decomp1.ch"
            break ;
#line 825 "decomp1.ch"
#line 827 "decomp1.ch"
        case metachop::NODE_LIST : 
#line 827 "decomp1.ch"
#line 827 "decomp1.ch"
        _Case28 : 
#line 827 "decomp1.ch"
#line 827 "decomp1.ch"
            ;
#line 827 "decomp1.ch"
#line 827 "decomp1.ch"
            node(paramTree);
#line 827 "decomp1.ch"
#line 828 "decomp1.ch"
            break ;
#line 828 "decomp1.ch"
#line 830 "decomp1.ch"
        case metachop::NIL : 
#line 830 "decomp1.ch"
#line 830 "decomp1.ch"
        _Case29 : 
#line 830 "decomp1.ch"
#line 830 "decomp1.ch"
            ;
#line 830 "decomp1.ch"
#line 830 "decomp1.ch"
            PrintString("(!");
#line 830 "decomp1.ch"
#line 830 "decomp1.ch"
            WriteString(ptCond);
#line 830 "decomp1.ch"
#line 830 "decomp1.ch"
            PrintString(")");
#line 830 "decomp1.ch"
#line 831 "decomp1.ch"
            break ;
#line 831 "decomp1.ch"
#line 832 "decomp1.ch"
        case metachop::ARRO : 
#line 832 "decomp1.ch"
#line 832 "decomp1.ch"
            (ident=SonTree(paramTree, 1));
#line 832 "decomp1.ch"
#line 832 "decomp1.ch"
#line 832 "decomp1.ch"
        _Case30 : 
#line 832 "decomp1.ch"
#line 832 "decomp1.ch"
            ;
#line 832 "decomp1.ch"
#line 833 "decomp1.ch"
            if ( statementf ) {
#line 833 "decomp1.ch"
#line 834 "decomp1.ch"
                                PrintString("decomp(");
#line 834 "decomp1.ch"
#line 834 "decomp1.ch"
                                decomp(ident);
#line 834 "decomp1.ch"
#line 834 "decomp1.ch"
#line 834 "decomp1.ch"
                                PrintString(");");
#line 834 "decomp1.ch"
#line 834 "decomp1.ch"
                                LNewLine(1);
#line 834 "decomp1.ch"
#line 834 "decomp1.ch"
#line 834 "decomp1.ch"
                               } else 
#line 834 "decomp1.ch"
#line 836 "decomp1.ch"
                decomp(ident);
#line 836 "decomp1.ch"
#line 836 "decomp1.ch"
#line 836 "decomp1.ch"
#line 837 "decomp1.ch"
            break ;
#line 837 "decomp1.ch"
#line 838 "decomp1.ch"
        case metachop::VALUE : 
#line 838 "decomp1.ch"
#line 838 "decomp1.ch"
            (ident=SonTree(paramTree, 1));
#line 838 "decomp1.ch"
#line 838 "decomp1.ch"
#line 838 "decomp1.ch"
        _Case31 : 
#line 838 "decomp1.ch"
#line 838 "decomp1.ch"
            ;
#line 838 "decomp1.ch"
#line 839 "decomp1.ch"
            if ( statementf ) {
#line 839 "decomp1.ch"
#line 840 "decomp1.ch"
                                PrintString("DumpBrainyValue(");
#line 840 "decomp1.ch"
#line 840 "decomp1.ch"
                                DumpBrainyValue(ident);
#line 840 "decomp1.ch"
#line 840 "decomp1.ch"
#line 840 "decomp1.ch"
                                PrintString(");");
#line 840 "decomp1.ch"
#line 840 "decomp1.ch"
                                LNewLine(1);
#line 840 "decomp1.ch"
#line 840 "decomp1.ch"
#line 840 "decomp1.ch"
                               } else 
#line 841 "decomp1.ch"
            {
#line 841 "decomp1.ch"
#line 842 "decomp1.ch"
                PrintString("BrainyValue(");
#line 842 "decomp1.ch"
#line 842 "decomp1.ch"
                DumpBrainyValue(ident);
#line 842 "decomp1.ch"
#line 842 "decomp1.ch"
#line 842 "decomp1.ch"
                PrintString(")");
#line 842 "decomp1.ch"
#line 842 "decomp1.ch"
            }
#line 842 "decomp1.ch"
#line 844 "decomp1.ch"
            break ;
#line 844 "decomp1.ch"
#line 845 "decomp1.ch"
        case metachop::ALINEA : 
#line 845 "decomp1.ch"
#line 845 "decomp1.ch"
            (list=SonTree(paramTree, 1));
#line 845 "decomp1.ch"
#line 845 "decomp1.ch"
#line 845 "decomp1.ch"
        _Case32 : 
#line 845 "decomp1.ch"
#line 845 "decomp1.ch"
            ;
#line 845 "decomp1.ch"
#line 846 "decomp1.ch"
            PrintString("Mark();");
#line 846 "decomp1.ch"
#line 846 "decomp1.ch"
            LNewLine(1);
#line 846 "decomp1.ch"
#line 846 "decomp1.ch"
#line 847 "decomp1.ch"
            lstat_dec1(list);
#line 847 "decomp1.ch"
#line 848 "decomp1.ch"
            PrintString("UnMark();");
#line 848 "decomp1.ch"
#line 848 "decomp1.ch"
            LNewLine(1);
#line 848 "decomp1.ch"
#line 848 "decomp1.ch"
#line 849 "decomp1.ch"
            break ;
#line 849 "decomp1.ch"
#line 850 "decomp1.ch"
        case metachop::BOX : 
#line 850 "decomp1.ch"
#line 850 "decomp1.ch"
            (list=SonTree(paramTree, 1));
#line 850 "decomp1.ch"
#line 850 "decomp1.ch"
#line 850 "decomp1.ch"
        _Case33 : 
#line 850 "decomp1.ch"
#line 850 "decomp1.ch"
            ;
#line 850 "decomp1.ch"
#line 851 "decomp1.ch"
            lstat_dec1(list);
#line 851 "decomp1.ch"
#line 852 "decomp1.ch"
            break ;
#line 852 "decomp1.ch"
#line 853 "decomp1.ch"
        case metachop::NEXT : 
#line 853 "decomp1.ch"
#line 853 "decomp1.ch"
            (ident=SonTree(paramTree, 1));
#line 853 "decomp1.ch"
#line 853 "decomp1.ch"
#line 853 "decomp1.ch"
        _Case34 : 
#line 853 "decomp1.ch"
#line 853 "decomp1.ch"
            ;
#line 853 "decomp1.ch"
#line 854 "decomp1.ch"
            PrintString("(");
#line 854 "decomp1.ch"
#line 854 "decomp1.ch"
            decomp(ident);
#line 854 "decomp1.ch"
#line 854 "decomp1.ch"
#line 854 "decomp1.ch"
            PrintString("?");
#line 854 "decomp1.ch"
#line 854 "decomp1.ch"
            decomp(ident);
#line 854 "decomp1.ch"
#line 854 "decomp1.ch"
#line 854 "decomp1.ch"
            PrintString(".Nextl():(PPTREE)0)");
#line 854 "decomp1.ch"
#line 855 "decomp1.ch"
#if 0
#line 855 "decomp1.ch"
#line 856 "decomp1.ch"
            (stat=FatherTree(paramTree));
#line 856 "decomp1.ch"
#line 856 "decomp1.ch"
#line 857 "decomp1.ch"
            if ( ((_inter = (PPTREE)stat,1) && 
#line 857 "decomp1.ch"
                    (NumberTree(_inter) == LIST) &&
#line 857 "decomp1.ch"
                    1) ) 
#line 857 "decomp1.ch"
#line 858 "decomp1.ch"
                (stat=SFatherTree(stat,-1 -LIST));
#line 858 "decomp1.ch"
#line 858 "decomp1.ch"
#line 859 "decomp1.ch"
            if ( ((_inter = (PPTREE)stat,1) && 
#line 859 "decomp1.ch"
                    (NumberTree(_inter) == metachop::COMPOUND) &&
#line 859 "decomp1.ch"
                    1) ) {
#line 859 "decomp1.ch"
#line 860 "decomp1.ch"
                            PrintString("FreeUnRef(NEXT_L(");
#line 860 "decomp1.ch"
#line 860 "decomp1.ch"
                            decomp(ident);
#line 860 "decomp1.ch"
#line 860 "decomp1.ch"
#line 860 "decomp1.ch"
                            PrintString("))");
#line 860 "decomp1.ch"
#line 860 "decomp1.ch"
                         } else 
#line 861 "decomp1.ch"
            {
#line 861 "decomp1.ch"
#line 862 "decomp1.ch"
                PrintString("NEXT_L(");
#line 862 "decomp1.ch"
#line 862 "decomp1.ch"
                decomp(ident);
#line 862 "decomp1.ch"
#line 862 "decomp1.ch"
#line 862 "decomp1.ch"
                PrintString(")");
#line 862 "decomp1.ch"
#line 862 "decomp1.ch"
            }
#line 862 "decomp1.ch"
#endif
#line 862 "decomp1.ch"
#line 865 "decomp1.ch"
            if ( statementf ) 
#line 865 "decomp1.ch"
#line 866 "decomp1.ch"
                PrintString(";");
#line 866 "decomp1.ch"
#line 867 "decomp1.ch"
            break ;
#line 867 "decomp1.ch"
#line 868 "decomp1.ch"
        case metachop::IN_LANG : 
#line 868 "decomp1.ch"
#line 868 "decomp1.ch"
            (ident=SonTree(paramTree, 1));
#line 868 "decomp1.ch"
#line 868 "decomp1.ch"
#line 868 "decomp1.ch"
            (stat=SonTree(paramTree, 2));
#line 868 "decomp1.ch"
#line 868 "decomp1.ch"
#line 868 "decomp1.ch"
        _Case35 : 
#line 868 "decomp1.ch"
#line 868 "decomp1.ch"
            ;
#line 868 "decomp1.ch"
#line 869 "decomp1.ch"
            PrintString("{");
#line 869 "decomp1.ch"
#line 869 "decomp1.ch"
            LNewLine(1);
#line 869 "decomp1.ch"
#line 869 "decomp1.ch"
#line 870 "decomp1.ch"
            Tab();
#line 870 "decomp1.ch"
#line 870 "decomp1.ch"
#line 871 "decomp1.ch"
            Mark();
#line 871 "decomp1.ch"
            PrintString("PLANG _oldLanguage = pCurrentLanguage;");
#line 871 "decomp1.ch"
            LNewLine(1);
#line 871 "decomp1.ch"
#line 871 "decomp1.ch"
            PrintString("SwitchLang(\"");
#line 871 "decomp1.ch"
            PrintString(Value(ident));
#line 871 "decomp1.ch"
            PrintString("\");");
#line 871 "decomp1.ch"
            LNewLine(1);
#line 871 "decomp1.ch"
#line 871 "decomp1.ch"
            if ( ((_inter = (PPTREE)ident,1) && 
#line 871 "decomp1.ch"
                    (NumberTree(_inter) == metachop::STRING) &&
#line 871 "decomp1.ch"
                    1) ) {
#line 871 "decomp1.ch"
#line 875 "decomp1.ch"
                            char    *oldLanguage = theLanguageName ;
#line 875 "decomp1.ch"
#line 876 "decomp1.ch"
                            theLanguageName = AllocString(Value(ident));
#line 876 "decomp1.ch"
#line 877 "decomp1.ch"
                            WRITE_START_LINE(stat);
#line 877 "decomp1.ch"
#line 878 "decomp1.ch"
                            decomp(stat);
#line 878 "decomp1.ch"
#line 878 "decomp1.ch"
#line 879 "decomp1.ch"
                            free(theLanguageName);
#line 879 "decomp1.ch"
#line 880 "decomp1.ch"
                            theLanguageName = oldLanguage ;
#line 880 "decomp1.ch"
#line 880 "decomp1.ch"
                         } else 
#line 881 "decomp1.ch"
            {
#line 881 "decomp1.ch"
#line 882 "decomp1.ch"
                WRITE_START_LINE(stat);
#line 882 "decomp1.ch"
#line 883 "decomp1.ch"
                decomp(stat);
#line 883 "decomp1.ch"
#line 883 "decomp1.ch"
#line 883 "decomp1.ch"
            }
#line 883 "decomp1.ch"
            PrintString(";");
#line 883 "decomp1.ch"
            LNewLine(1);
#line 883 "decomp1.ch"
#line 883 "decomp1.ch"
            PrintString("SwitchLangPoint(_oldLanguage);");
#line 883 "decomp1.ch"
            LNewLine(1);
#line 883 "decomp1.ch"
#line 883 "decomp1.ch"
            UnMark();
#line 883 "decomp1.ch"
#line 883 "decomp1.ch"
#line 888 "decomp1.ch"
            PrintString("}");
#line 888 "decomp1.ch"
#line 888 "decomp1.ch"
            LNewLine(1);
#line 888 "decomp1.ch"
#line 888 "decomp1.ch"
#line 889 "decomp1.ch"
            break ;
#line 889 "decomp1.ch"
#line 890 "decomp1.ch"
        case metachop::FOREACH : 
#line 890 "decomp1.ch"
#line 890 "decomp1.ch"
            (stat=SonTree(paramTree, 3));
#line 890 "decomp1.ch"
#line 890 "decomp1.ch"
#line 890 "decomp1.ch"
        _Case36 : 
#line 890 "decomp1.ch"
#line 890 "decomp1.ch"
            ;
#line 890 "decomp1.ch"
#line 890 "decomp1.ch"
            break ;
#line 890 "decomp1.ch"
#line 891 "decomp1.ch"
        case metachop::FORALLSONS : 
#line 891 "decomp1.ch"
#line 891 "decomp1.ch"
            (ident=SonTree(paramTree, 1));
#line 891 "decomp1.ch"
#line 891 "decomp1.ch"
#line 891 "decomp1.ch"
            (stat=SonTree(paramTree, 2));
#line 891 "decomp1.ch"
#line 891 "decomp1.ch"
#line 891 "decomp1.ch"
        _Case37 : 
#line 891 "decomp1.ch"
#line 891 "decomp1.ch"
            ;
#line 891 "decomp1.ch"
#line 892 "decomp1.ch"
            {
#line 892 "decomp1.ch"
#line 893 "decomp1.ch"
                PTREE   forAllSons ;
#line 893 "decomp1.ch"
#line 893 "decomp1.ch"
#line 894 "decomp1.ch"
                {
#line 894 "decomp1.ch"
                    /* [ metachop::COMPOUND
                        [ LIST 
                            [ metachop::DECLARATION
                                [ NIL ] 
                                [ metachop::TINT ]
                                [ LIST 
                                    [ metachop::TYP_AFF
                                        [ metachop::IDENT "_for_slot"]
                                        [ metachop::INITIALIZER [ metachop::INTEGER "1"]]
                                    ]
                                    [ metachop::TYP_AFF
                                        [ metachop::IDENT "_arity"]
                                        [ metachop::INITIALIZER
                                            [ metachop::EXP_LIST
                                                [ metachop::IDENT "treearity"]
                                                [ META "tree"]
                                            ]
                                        ]
                                    ]
                                ]
                            ]
                            [ metachop::DECLARATION
                                [ NIL ] 
                                [ metachop::TIDENT [ metachop::IDENT "MY_TREE"]]
                                [ LIST 
                                    [ metachop::TYP_AFF
                                        [ metachop::IDENT "_for_elem"]
                                        [ metachop::INITIALIZER
                                            [ metachop::CAST
                                                [ metachop::ABST_DECLARATOR
                                                    [ metachop::TIDENT [ metachop::IDENT "PPTREE"]]
                                                    [ NIL ] 
                                                ]
                                                [ metachop::INTEGER "0"]
                                            ]
                                        ]
                                    ]
                                ]
                            ]
                            [ metachop::FOR
                                [ NIL ] 
                                [ metachop::LEQU
                                    [ metachop::IDENT "_for_slot"]
                                    [ metachop::IDENT "_arity"]
                                ]
                                [ metachop::AINCR [ metachop::IDENT "_for_slot"]]
                                [ metachop::COMPOUND
                                    [ LIST 
                                        [ metachop::AFF
                                            [ metachop::IDENT "_for_elem"]
                                            [ metachop::EXP_LIST
                                                [ metachop::IDENT "SonTree"]
                                                [ metachop::EXP_SEQ
                                                    [ LIST 
                                                        [ META "tree"]
                                                        [ metachop::IDENT "_for_slot"]
                                                    ]
                                                ]
                                            ]
                                        ]
                                        [ metachop::IF
                                            [ metachop::AND
                                                [ metachop::IDENT "_for_elem"]
                                                [ metachop::NEQU
                                                    [ metachop::EXP_LIST
                                                        [ metachop::IDENT "NumberTree"]
                                                        [ metachop::IDENT "_for_elem"]
                                                    ]
                                                    [ metachop::IDENT "IN_LANGUAGE"]
                                                ]
                                            ]
                                            [ META "stat"]
                                            [ NIL ] 
                                        ]
                                    ]
                                ]
                            ]
                        ]
                       ]
#line 894 "decomp1.ch"
                    */
#line 894 "decomp1.ch"
                    TheConstructor(-4,metachop::TINT,0,-2,MakeString("_for_slot"),metachop::IDENT,1,
#line 894 "decomp1.ch"
                        -2,MakeString("1"),metachop::INTEGER,1,metachop::INITIALIZER,1,metachop::TYP_AFF,2,-2,MakeString("_arity"),metachop::IDENT,1,-2,MakeString("treearity"),metachop::IDENT,1,
#line 894 "decomp1.ch"
                        -2,MakeString("tree"),META,1,metachop::EXP_LIST,2,metachop::INITIALIZER,1,metachop::TYP_AFF,2,-4,LIST,2,LIST,2,metachop::DECLARATION,3,-4,-2,MakeString("MY_TREE"),metachop::IDENT,1,metachop::TIDENT,1,
#line 894 "decomp1.ch"
                        -2,MakeString("_for_elem"),metachop::IDENT,1,-2,MakeString("PPTREE"),metachop::IDENT,1,metachop::TIDENT,1,-4,metachop::ABST_DECLARATOR,2,-2,MakeString("0"),metachop::INTEGER,1,metachop::CAST,2,metachop::INITIALIZER,1,metachop::TYP_AFF,2,-4,LIST,2,metachop::DECLARATION,3,
#line 894 "decomp1.ch"
                        -4,-2,MakeString("_for_slot"),metachop::IDENT,1,-2,MakeString("_arity"),metachop::IDENT,1,metachop::LEQU,2,-2,MakeString("_for_slot"),metachop::IDENT,1,metachop::AINCR,1,
#line 894 "decomp1.ch"
                        -3);
#line 894 "decomp1.ch"
                    TheConstructor(-2,MakeString("_for_elem"),metachop::IDENT,1,-2,MakeString("SonTree"),metachop::IDENT,1,
#line 894 "decomp1.ch"
                        -2,MakeString("tree"),META,1,-2,MakeString("_for_slot"),metachop::IDENT,1,-4,LIST,2,LIST,2,metachop::EXP_SEQ,1,metachop::EXP_LIST,2,metachop::AFF,2,-2,MakeString("_for_elem"),metachop::IDENT,1,
#line 894 "decomp1.ch"
                        -2,MakeString("NumberTree"),metachop::IDENT,1,-2,MakeString("_for_elem"),metachop::IDENT,1,metachop::EXP_LIST,2,-2,MakeString("IN_LANGUAGE"),metachop::IDENT,1,metachop::NEQU,2,metachop::AND,2,-2,MakeString("stat"),META,1,-4,metachop::IF,3,-4,LIST,2,LIST,2,metachop::COMPOUND,1,metachop::FOR,4,-4,LIST,2,LIST,2,LIST,2,metachop::COMPOUND,1,-3) ;
#line 894 "decomp1.ch"
                    forAllSons = PopTree ;
#line 894 "decomp1.ch"
                    }
#line 894 "decomp1.ch"
#line 894 "decomp1.ch"
#line 906 "decomp1.ch"
                metarep("tree", forAllSons, ident);
#line 906 "decomp1.ch"
#line 907 "decomp1.ch"
                metarep("stat", forAllSons, stat);
#line 907 "decomp1.ch"
#line 908 "decomp1.ch"
                decomp(forAllSons);
#line 908 "decomp1.ch"
#line 908 "decomp1.ch"
#line 908 "decomp1.ch"
            }
#line 908 "decomp1.ch"
#line 910 "decomp1.ch"
            break ;
#line 910 "decomp1.ch"
#line 911 "decomp1.ch"
        default : 
#line 911 "decomp1.ch"
#line 911 "decomp1.ch"
        _Case38 : 
#line 911 "decomp1.ch"
#line 911 "decomp1.ch"
            ;
#line 911 "decomp1.ch"
#line 911 "decomp1.ch"
            return DecompCplus::IntDecomp(paramTree, funcAlone);
#line 911 "decomp1.ch"
    }
#line 911 "decomp1.ch"
#line 911 "decomp1.ch"
#line 913 "decomp1.ch"
    equality = oldEquality ;
#line 913 "decomp1.ch"
#line 914 "decomp1.ch"
    statementf = oldStatement ;
#line 914 "decomp1.ch"
#line 915 "decomp1.ch"
    caseDesign = oldCaseDesign ;
#line 915 "decomp1.ch"
#line 916 "decomp1.ch"
    simpleCase = oldSimpleCase ;
#line 916 "decomp1.ch"
#line 917 "decomp1.ch"
    condDesign = oldCondDesign ;
#line 917 "decomp1.ch"
#line 918 "decomp1.ch"
    ifCase = oldIfCase ;
#line 918 "decomp1.ch"
#line 919 "decomp1.ch"
    return oldPostComment ;
#line 919 "decomp1.ch"
#line 920 "decomp1.ch"
}
#line 920 "decomp1.ch"

#line 922 "decomp1.ch"
#line 922 "decomp1.ch"
void printheader ( PTREE name1 )
#line 922 "decomp1.ch"
{
#line 922 "decomp1.ch"
#line 925 "decomp1.ch"
    WriteString("\
/*************************************************************************/");
#line 925 "decomp1.ch"
#line 928 "decomp1.ch"
    NewLine();
#line 928 "decomp1.ch"
#line 929 "decomp1.ch"
    WriteString("\
/*                                                                       */");
#line 929 "decomp1.ch"
#line 932 "decomp1.ch"
    NewLine();
#line 932 "decomp1.ch"
#line 933 "decomp1.ch"
    WriteString("\
/*        Produced by Metachop version 2.0  -    1989-1995               */");
#line 933 "decomp1.ch"
#line 936 "decomp1.ch"
    NewLine();
#line 936 "decomp1.ch"
#line 937 "decomp1.ch"
    WriteString("\
/*     Tree      Meta     Chopper      developped    by                  */");
#line 937 "decomp1.ch"
#line 940 "decomp1.ch"
    NewLine();
#line 940 "decomp1.ch"
#line 941 "decomp1.ch"
    WriteString("\
/*                  Eric Lavillonniere                                   */");
#line 941 "decomp1.ch"
#line 944 "decomp1.ch"
    NewLine();
#line 944 "decomp1.ch"
#line 945 "decomp1.ch"
    WriteString("\
/*                                                                       */");
#line 945 "decomp1.ch"
#line 948 "decomp1.ch"
    NewLine();
#line 948 "decomp1.ch"
#line 949 "decomp1.ch"
    WriteString("\
/*************************************************************************/");
#line 949 "decomp1.ch"
#line 952 "decomp1.ch"
    NewLine();
#line 952 "decomp1.ch"
#line 953 "decomp1.ch"
    NewLine();
#line 953 "decomp1.ch"
#line 954 "decomp1.ch"
    PrintString("#include \"token.h\"");
#line 954 "decomp1.ch"
#line 954 "decomp1.ch"
    LNewLine(1);
#line 954 "decomp1.ch"
#line 954 "decomp1.ch"
#line 957 "decomp1.ch"
    PrintString("extern int _retVal[50];");
#line 957 "decomp1.ch"
#line 957 "decomp1.ch"
    LNewLine(1);
#line 957 "decomp1.ch"
#line 957 "decomp1.ch"
#line 958 "decomp1.ch"
    PrintString("extern PPTREE _storeVal[50],_nextVal;");
#line 958 "decomp1.ch"
#line 958 "decomp1.ch"
    LNewLine(1);
#line 958 "decomp1.ch"
#line 958 "decomp1.ch"
#line 959 "decomp1.ch"
    PrintString("extern PPTREE stackTree[1024];");
#line 959 "decomp1.ch"
#line 959 "decomp1.ch"
    LNewLine(1);
#line 959 "decomp1.ch"
#line 959 "decomp1.ch"
#line 960 "decomp1.ch"
    PrintString("extern int ptStackTree;");
#line 960 "decomp1.ch"
#line 960 "decomp1.ch"
    LNewLine(1);
#line 960 "decomp1.ch"
#line 960 "decomp1.ch"
#line 961 "decomp1.ch"
    PrintString("#define decomp ");
#line 961 "decomp1.ch"
#line 961 "decomp1.ch"
    WriteString(NameLang("decomp"));
#line 961 "decomp1.ch"
#line 961 "decomp1.ch"
    LNewLine(1);
#line 961 "decomp1.ch"
#line 961 "decomp1.ch"
#line 962 "decomp1.ch"
    LNewLine(1);
#line 962 "decomp1.ch"
#line 962 "decomp1.ch"
#line 963 "decomp1.ch"
}
#line 963 "decomp1.ch"

#line 965 "decomp1.ch"
#line 965 "decomp1.ch"
void dec_function ( PTREE paramTree, PTREE sc, PTREE type, PTREE declarator, PTREE param, PTREE param_decl, PTREE stat )
#line 965 "decomp1.ch"
{
#line 965 "decomp1.ch"
    register PPTREE _inter ;
#line 965 "decomp1.ch"
#line 965 "decomp1.ch"
#line 968 "decomp1.ch"
    PTREE   son, val, list ;
#line 968 "decomp1.ch"
#line 968 "decomp1.ch"
#line 969 "decomp1.ch"
    char    str [5];
#line 969 "decomp1.ch"
#line 971 "decomp1.ch"
    inFunction = 1 ;
#line 971 "decomp1.ch"
#line 972 "decomp1.ch"
    write(2, "+", 1);
#line 972 "decomp1.ch"
#line 973 "decomp1.ch"
#if 0
#line 973 "decomp1.ch"
#line 974 "decomp1.ch"
    GCManagerRetBeg(paramTree);
#line 974 "decomp1.ch"
#endif
#line 974 "decomp1.ch"
#line 976 "decomp1.ch"
    write(2, ">", 1);
#line 976 "decomp1.ch"
#line 979 "decomp1.ch"
    GenTree(paramTree);
#line 979 "decomp1.ch"
#line 980 "decomp1.ch"
    write(2, ">", 1);
#line 980 "decomp1.ch"
#line 983 "decomp1.ch"
    LookForEach(paramTree, 0);
#line 983 "decomp1.ch"
#line 984 "decomp1.ch"
    write(2, ">", 1);
#line 984 "decomp1.ch"
#line 987 "decomp1.ch"
    GCManager(paramTree);
#line 987 "decomp1.ch"
#line 988 "decomp1.ch"
    write(2, ">", 1);
#line 988 "decomp1.ch"
#line 991 "decomp1.ch"
#if 0
#line 991 "decomp1.ch"
#line 992 "decomp1.ch"
    GCManagerFunc(paramTree);
#line 992 "decomp1.ch"
#line 993 "decomp1.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 993 "decomp1.ch"
        ((stat=SonTree(_inter,6)),1) &&
#line 993 "decomp1.ch"
        1);
#line 993 "decomp1.ch"
    ;
#line 993 "decomp1.ch"
#line 994 "decomp1.ch"
    GCManagerRetEnd(paramTree, ((_inter = (PPTREE)type,1) && 
#line 994 "decomp1.ch"
                                    (NumberTree(_inter) == metachop::TIDENT) &&
#line 994 "decomp1.ch"
                                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 994 "decomp1.ch"
                                        (NumberTree(_inter) == metachop::IDENT) &&
#line 994 "decomp1.ch"
                                        (!strcmp(Value(SonTree(_inter,1)),"PTREE")) &&
#line 994 "decomp1.ch"
                                        1),
#line 994 "decomp1.ch"
                                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 994 "decomp1.ch"
                                    1));
#line 994 "decomp1.ch"
#endif
#line 994 "decomp1.ch"
#line 996 "decomp1.ch"
    needInter = 0 ;
#line 996 "decomp1.ch"
#line 998 "decomp1.ch"
    {
#line 998 "decomp1.ch"
#line 998 "decomp1.ch"
        PTREE   _Baum0 ;
#line 998 "decomp1.ch"
#line 998 "decomp1.ch"
#line 998 "decomp1.ch"
        {
#line 998 "decomp1.ch"
            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 998 "decomp1.ch"
            _ptRes0 = MakeTree(metachop::NODE_TREE, 1);
#line 998 "decomp1.ch"
            {
#line 998 "decomp1.ch"
                PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 998 "decomp1.ch"
                _ptRes1 = MakeTree(META, 1);
#line 998 "decomp1.ch"
                _ptTree1 = MakeString("b") ;
#line 998 "decomp1.ch"
                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 998 "decomp1.ch"
                _ptTree0 = _ptRes1;
#line 998 "decomp1.ch"
            }
#line 998 "decomp1.ch"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 998 "decomp1.ch"
            _Baum0 = _ptRes0;
#line 998 "decomp1.ch"
        }
#line 998 "decomp1.ch"
#line 998 "decomp1.ch"
#line 998 "decomp1.ch"
        ItPtree it(paramTree, _Baum0);
#line 998 "decomp1.ch"
#line 999 "decomp1.ch"
        PPTREE  _for_elem ;
#line 999 "decomp1.ch"
#line 1000 "decomp1.ch"
        while ( for_elem = it++ ) {
#line 1000 "decomp1.ch"
#line 1001 "decomp1.ch"
                                        needInter++ ;
#line 1001 "decomp1.ch"
#line 1002 "decomp1.ch"
                                        break ;
#line 1002 "decomp1.ch"
#line 1002 "decomp1.ch"
                                    }
#line 1002 "decomp1.ch"
#line 1004 "decomp1.ch"
        if ( !needInter ) {
#line 1004 "decomp1.ch"
#line 1004 "decomp1.ch"
                                PTREE   _Baum1 ;
#line 1004 "decomp1.ch"
#line 1004 "decomp1.ch"
#line 1005 "decomp1.ch"
                                {
#line 1005 "decomp1.ch"
                                    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 1005 "decomp1.ch"
                                    _ptRes0 = MakeTree(metachop::NODE_LIST, 1);
#line 1005 "decomp1.ch"
                                    {
#line 1005 "decomp1.ch"
                                        PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 1005 "decomp1.ch"
                                        _ptRes1 = MakeTree(META, 1);
#line 1005 "decomp1.ch"
                                        _ptTree1 = MakeString("b") ;
#line 1005 "decomp1.ch"
                                        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1005 "decomp1.ch"
                                        _ptTree0 = _ptRes1;
#line 1005 "decomp1.ch"
                                    }
#line 1005 "decomp1.ch"
                                    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 1005 "decomp1.ch"
                                    _Baum1 = _ptRes0;
#line 1005 "decomp1.ch"
                                }
#line 1005 "decomp1.ch"
#line 1005 "decomp1.ch"
#line 1005 "decomp1.ch"
                                it = ItPtree(paramTree, _Baum1);
#line 1005 "decomp1.ch"
#line 1006 "decomp1.ch"
                                while ( for_elem = it++ ) {
#line 1006 "decomp1.ch"
#line 1007 "decomp1.ch"
                                                                needInter++ ;
#line 1007 "decomp1.ch"
#line 1008 "decomp1.ch"
                                                                break ;
#line 1008 "decomp1.ch"
#line 1008 "decomp1.ch"
                                                            }
#line 1008 "decomp1.ch"
#line 1008 "decomp1.ch"
                            }
#line 1008 "decomp1.ch"
#line 1011 "decomp1.ch"
        if ( cplusGen ) {
#line 1011 "decomp1.ch"
#line 1012 "decomp1.ch"
                            FuncToAnsi(paramTree);
#line 1012 "decomp1.ch"
#line 1012 "decomp1.ch"
                         }
#line 1012 "decomp1.ch"
#line 1014 "decomp1.ch"
        write(2, " ", 1);
#line 1014 "decomp1.ch"
#line 1015 "decomp1.ch"
    }
#line 1015 "decomp1.ch"
#line 1016 "decomp1.ch"
}
#line 1016 "decomp1.ch"

#line 1020 "decomp1.ch"
#line 1020 "decomp1.ch"
int ToSwitcher ( PTREE tree )
#line 1020 "decomp1.ch"
{
#line 1020 "decomp1.ch"
    register PPTREE _inter ;
#line 1020 "decomp1.ch"
#line 1020 "decomp1.ch"
#line 1023 "decomp1.ch"
debut : 
#line 1023 "decomp1.ch"
#line 1024 "decomp1.ch"
    switch ( NumberTree(tree) ) {
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        case metachop::NODE_TREE : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        _Case60 : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            goto _Case61 ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        case metachop::PLU_AFF : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        _Case61 : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            goto _Case62 ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        case metachop::EXPO_AFF : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        _Case62 : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            goto _Case63 ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        case metachop::MUL_AFF : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        _Case63 : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            goto _Case64 ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        case metachop::PLUS : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        _Case64 : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            goto _Case65 ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        case metachop::MUL : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
        _Case65 : 
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            ;
#line 1024 "decomp1.ch"
#line 1024 "decomp1.ch"
            goto _Case66 ;
#line 1024 "decomp1.ch"
#line 1031 "decomp1.ch"
        case metachop::EXPO : 
#line 1031 "decomp1.ch"
#line 1031 "decomp1.ch"
        _Case66 : 
#line 1031 "decomp1.ch"
#line 1031 "decomp1.ch"
            ;
#line 1031 "decomp1.ch"
#line 1031 "decomp1.ch"
            return 1 ;
#line 1031 "decomp1.ch"
#line 1031 "decomp1.ch"
            goto _Case67 ;
#line 1031 "decomp1.ch"
#line 1033 "decomp1.ch"
        case metachop::EXP : 
#line 1033 "decomp1.ch"
#line 1033 "decomp1.ch"
        _Case67 : 
#line 1033 "decomp1.ch"
#line 1033 "decomp1.ch"
            ;
#line 1033 "decomp1.ch"
#line 1033 "decomp1.ch"
            ((_inter = (PPTREE)tree,1) && 
#line 1033 "decomp1.ch"
                ((tree=SonTree(_inter,1)),1) &&
#line 1033 "decomp1.ch"
                1);
#line 1033 "decomp1.ch"
            ;
#line 1033 "decomp1.ch"
#line 1034 "decomp1.ch"
            goto debut ;
#line 1034 "decomp1.ch"
#line 1034 "decomp1.ch"
            goto _Case68 ;
#line 1034 "decomp1.ch"
#line 1036 "decomp1.ch"
        case metachop::AFF : 
#line 1036 "decomp1.ch"
#line 1036 "decomp1.ch"
        _Case68 : 
#line 1036 "decomp1.ch"
#line 1036 "decomp1.ch"
            ;
#line 1036 "decomp1.ch"
#line 1036 "decomp1.ch"
            ((_inter = (PPTREE)tree,1) && 
#line 1036 "decomp1.ch"
                ((tree=SonTree(_inter,2)),1) &&
#line 1036 "decomp1.ch"
                1);
#line 1036 "decomp1.ch"
            ;
#line 1036 "decomp1.ch"
#line 1037 "decomp1.ch"
            goto debut ;
#line 1037 "decomp1.ch"
#line 1037 "decomp1.ch"
            goto _Case69 ;
#line 1037 "decomp1.ch"
#line 1038 "decomp1.ch"
        default : 
#line 1038 "decomp1.ch"
#line 1038 "decomp1.ch"
        _Case69 : 
#line 1038 "decomp1.ch"
#line 1038 "decomp1.ch"
            ;
#line 1038 "decomp1.ch"
#line 1038 "decomp1.ch"
            return 0 ;
#line 1038 "decomp1.ch"
    }
#line 1038 "decomp1.ch"
#line 1038 "decomp1.ch"
#line 1040 "decomp1.ch"
}
#line 1040 "decomp1.ch"

#line 1044 "decomp1.ch"
#line 1044 "decomp1.ch"
void PtreeToClass ( PTREE tree )
#line 1044 "decomp1.ch"
{
#line 1044 "decomp1.ch"
#line 1047 "decomp1.ch"
    PTREE   declarator ;
#line 1047 "decomp1.ch"
#line 1047 "decomp1.ch"
#line 1048 "decomp1.ch"
    int found = 0 ;
#line 1048 "decomp1.ch"
#line 1065 "decomp1.ch"
}
#line 1065 "decomp1.ch"

#line 1069 "decomp1.ch"
#line 1069 "decomp1.ch"
void FuncToAnsi ( PTREE tree )
#line 1069 "decomp1.ch"
{
#line 1069 "decomp1.ch"
    register PPTREE _inter ;
#line 1069 "decomp1.ch"
#line 1069 "decomp1.ch"
#line 1072 "decomp1.ch"
    PTREE   parameter, declarator, son ;
#line 1072 "decomp1.ch"
#line 1072 "decomp1.ch"
#line 1073 "decomp1.ch"
    PTREE   listDeclarator, listDecl ;
#line 1073 "decomp1.ch"
#line 1073 "decomp1.ch"
#line 1074 "decomp1.ch"
    PTREE   Declarator, Decl ;
#line 1074 "decomp1.ch"
#line 1074 "decomp1.ch"
#line 1075 "decomp1.ch"
    char    *ident ;
#line 1075 "decomp1.ch"
#line 1077 "decomp1.ch"
    ((_inter = (PPTREE)tree,1) && 
#line 1077 "decomp1.ch"
        ((parameter=SonTree(_inter,4)),1) &&
#line 1077 "decomp1.ch"
        ((declarator=SonTree(_inter,6)),1) &&
#line 1077 "decomp1.ch"
        1);
#line 1077 "decomp1.ch"
    ;
#line 1077 "decomp1.ch"
#line 1081 "decomp1.ch"
    if ( declarator && parameter ) {
#line 1081 "decomp1.ch"
#line 1084 "decomp1.ch"
                                        while ( parameter ) {
#line 1084 "decomp1.ch"
#line 1085 "decomp1.ch"
                                                                (son=sontree(parameter, 1));
#line 1085 "decomp1.ch"
#line 1085 "decomp1.ch"
#line 1086 "decomp1.ch"
                                                                switch ( NumberTree(son) ) {
#line 1086 "decomp1.ch"
#line 1087 "decomp1.ch"
                                                                    case metachop::VAR_LIST : 
#line 1087 "decomp1.ch"
#line 1087 "decomp1.ch"
                                                                    _Case70 : 
#line 1087 "decomp1.ch"
#line 1087 "decomp1.ch"
                                                                        ;
#line 1087 "decomp1.ch"
#line 1087 "decomp1.ch"
                                                                        break ;
#line 1087 "decomp1.ch"
#line 1090 "decomp1.ch"
                                                                    default : 
#line 1090 "decomp1.ch"
#line 1090 "decomp1.ch"
                                                                    _Case71 : 
#line 1090 "decomp1.ch"
#line 1090 "decomp1.ch"
                                                                        ;
#line 1090 "decomp1.ch"
#line 1089 "decomp1.ch"
                                                                        {
#line 1089 "decomp1.ch"
#line 1090 "decomp1.ch"
ident = AllocString(BrainyValue(parameter));
#line 1090 "decomp1.ch"
#line 1091 "decomp1.ch"
(listDeclarator=declarator);
#line 1091 "decomp1.ch"
#line 1091 "decomp1.ch"
#line 1092 "decomp1.ch"
while ( listDeclarator ) {
#line 1092 "decomp1.ch"
#line 1093 "decomp1.ch"
                            (Declarator=(listDeclarator?listDeclarator.Nextl():(PPTREE)0));
#line 1093 "decomp1.ch"
#line 1093 "decomp1.ch"
#line 1094 "decomp1.ch"
                            ((_inter = (PPTREE)Declarator,1) && 
#line 1094 "decomp1.ch"
                                ((listDecl=SonTree(_inter,3)),1) &&
#line 1094 "decomp1.ch"
                                1);
#line 1094 "decomp1.ch"
                            ;
#line 1094 "decomp1.ch"
#line 1095 "decomp1.ch"
                            while ( listDecl ) {
#line 1095 "decomp1.ch"
#line 1096 "decomp1.ch"
                                                    (Decl=(listDecl?listDecl.Nextl():(PPTREE)0));
#line 1096 "decomp1.ch"
#line 1096 "decomp1.ch"
#line 1097 "decomp1.ch"
                                                    (son=Decl);
#line 1097 "decomp1.ch"
#line 1097 "decomp1.ch"
#line 1098 "decomp1.ch"
                                                    while ( son && !(((_inter = (PPTREE)son,1) && 
#line 1098 "decomp1.ch"
(NumberTree(_inter) == metachop::IDENT) &&
#line 1098 "decomp1.ch"
1)                                                                  ) ) {
#line 1098 "decomp1.ch"
#line 1099 "decomp1.ch"
switch ( NumberTree(son) ) {
#line 1099 "decomp1.ch"
#line 1100 "decomp1.ch"
    case metachop::RANGE_MODIFIER : 
#line 1100 "decomp1.ch"
#line 1100 "decomp1.ch"
    _Case72 : 
#line 1100 "decomp1.ch"
#line 1100 "decomp1.ch"
        ;
#line 1100 "decomp1.ch"
#line 1100 "decomp1.ch"
        (son=sontree(son, 2));
#line 1100 "decomp1.ch"
#line 1100 "decomp1.ch"
#line 1100 "decomp1.ch"
        goto _Case73 ;
#line 1100 "decomp1.ch"
#line 1101 "decomp1.ch"
    default : 
#line 1101 "decomp1.ch"
#line 1101 "decomp1.ch"
    _Case73 : 
#line 1101 "decomp1.ch"
#line 1101 "decomp1.ch"
        ;
#line 1101 "decomp1.ch"
#line 1101 "decomp1.ch"
        (son=sontree(son, 1));
#line 1101 "decomp1.ch"
#line 1101 "decomp1.ch"
}
#line 1101 "decomp1.ch"
#line 1101 "decomp1.ch"
#line 1101 "decomp1.ch"
                                                                        }
#line 1101 "decomp1.ch"
#line 1104 "decomp1.ch"
                                                    if ( son && !strcmp(BrainyValue(son), ident) ) {
#line 1104 "decomp1.ch"
#line 1105 "decomp1.ch"
{
#line 1105 "decomp1.ch"
    PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 1105 "decomp1.ch"
    {
#line 1105 "decomp1.ch"
        PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 1105 "decomp1.ch"
        _ptRes1 = MakeTree(metachop::DECLARATOR, 2);
#line 1105 "decomp1.ch"
        _ptTree1 = StoreRef(CopyTree(sontree(Declarator, 2)));
#line 1105 "decomp1.ch"
        ReplaceTree(_ptRes1, 1, _ptTree1);
#line 1105 "decomp1.ch"
        _ptTree1 = StoreRef(CopyTree(Decl));
#line 1105 "decomp1.ch"
        ReplaceTree(_ptRes1, 2, _ptTree1);
#line 1105 "decomp1.ch"
        _ptTree0 = _ptRes1;
#line 1105 "decomp1.ch"
    }
#line 1105 "decomp1.ch"
    ReplaceTree(parameter, 1, _ptTree0);
#line 1105 "decomp1.ch"
}
#line 1105 "decomp1.ch"
#line 1105 "decomp1.ch"
#line 1110 "decomp1.ch"
listDecl = (PPTREE) 0 ;
#line 1110 "decomp1.ch"
#line 1110 "decomp1.ch"
#line 1111 "decomp1.ch"
listDeclarator = (PPTREE) 0 ;
#line 1111 "decomp1.ch"
#line 1111 "decomp1.ch"
#line 1111 "decomp1.ch"
                                                                                                        }
#line 1111 "decomp1.ch"
#line 1111 "decomp1.ch"
                                                }
#line 1111 "decomp1.ch"
#line 1111 "decomp1.ch"
                          }
#line 1111 "decomp1.ch"
#line 1115 "decomp1.ch"
free(ident);
#line 1115 "decomp1.ch"
#line 1115 "decomp1.ch"
                                                                        }
#line 1115 "decomp1.ch"
                                                                }
#line 1115 "decomp1.ch"
#line 1115 "decomp1.ch"
#line 1118 "decomp1.ch"
                                                                (parameter?parameter.Nextl():(PPTREE)0);
#line 1118 "decomp1.ch"
#line 1118 "decomp1.ch"
                                                             }
#line 1118 "decomp1.ch"
#line 1118 "decomp1.ch"
                                     }
#line 1118 "decomp1.ch"
#line 1123 "decomp1.ch"
    {
#line 1123 "decomp1.ch"
        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 1123 "decomp1.ch"
        if (_ptTree0= fathertree(declarator)) {
#line 1123 "decomp1.ch"
            int rank = ranktree(declarator);
#line 1123 "decomp1.ch"
            ReplaceTree(_ptTree0,rank,(PPTREE) 0 );
#line 1123 "decomp1.ch"
        }
#line 1123 "decomp1.ch"
    }
#line 1123 "decomp1.ch"
#line 1123 "decomp1.ch"
#line 1124 "decomp1.ch"
}
#line 1124 "decomp1.ch"

#line 1126 "decomp1.ch"
#line 1126 "decomp1.ch"
void DecompMetachop::lstat_dec1 ( PTREE paramTree )
#line 1126 "decomp1.ch"
{
#line 1126 "decomp1.ch"
#line 1128 "decomp1.ch"
    PTREE   son ;
#line 1128 "decomp1.ch"
#line 1128 "decomp1.ch"
#line 1129 "decomp1.ch"
    PTREE   oldPostComment = (PTREE)0 ;
#line 1129 "decomp1.ch"
#line 1129 "decomp1.ch"
#line 1129 "decomp1.ch"
    (oldPostComment=postComment);
#line 1129 "decomp1.ch"
#line 1129 "decomp1.ch"
#line 1131 "decomp1.ch"
    while ( !((!paramTree)) ) {
#line 1131 "decomp1.ch"
#line 1132 "decomp1.ch"
                                    (son=(paramTree?paramTree.Nextl():(PPTREE)0));
#line 1132 "decomp1.ch"
#line 1132 "decomp1.ch"
#line 1133 "decomp1.ch"
                                    (postComment=son);
#line 1133 "decomp1.ch"
#line 1133 "decomp1.ch"
#line 1134 "decomp1.ch"
                                    DecompStat(son, 1);
#line 1134 "decomp1.ch"
#line 1134 "decomp1.ch"
                                }
#line 1134 "decomp1.ch"
#line 1136 "decomp1.ch"
    (postComment=oldPostComment);
#line 1136 "decomp1.ch"
#line 1136 "decomp1.ch"
#line 1137 "decomp1.ch"
}
#line 1137 "decomp1.ch"

#line 1139 "decomp1.ch"
#line 1139 "decomp1.ch"
void DecompMetachop::DecompStat ( PTREE stat, int withNewLine )
#line 1139 "decomp1.ch"
{
#line 1139 "decomp1.ch"
    register PPTREE _inter ;
#line 1139 "decomp1.ch"
#line 1139 "decomp1.ch"
#line 1141 "decomp1.ch"
    PTREE   son ;
#line 1141 "decomp1.ch"
#line 1141 "decomp1.ch"
#line 1143 "decomp1.ch"
    switch ( NumberTree(stat) ) {
#line 1143 "decomp1.ch"
#line 1145 "decomp1.ch"
        case metachop::STRING : 
#line 1145 "decomp1.ch"
#line 1145 "decomp1.ch"
        _Case74 : 
#line 1145 "decomp1.ch"
#line 1145 "decomp1.ch"
            ;
#line 1145 "decomp1.ch"
#line 1145 "decomp1.ch"
            PrintString("PrintString(");
#line 1145 "decomp1.ch"
#line 1145 "decomp1.ch"
            decomp(stat);
#line 1145 "decomp1.ch"
#line 1145 "decomp1.ch"
#line 1145 "decomp1.ch"
            PrintString(")");
#line 1145 "decomp1.ch"
#line 1146 "decomp1.ch"
            control_stat1(stat);
#line 1146 "decomp1.ch"
#line 1147 "decomp1.ch"
            if ( withNewLine ) 
#line 1147 "decomp1.ch"
#line 1148 "decomp1.ch"
                LNewLine(1);
#line 1148 "decomp1.ch"
#line 1148 "decomp1.ch"
#line 1149 "decomp1.ch"
            break ;
#line 1149 "decomp1.ch"
#line 1150 "decomp1.ch"
        case metachop::STRING_LIST : 
#line 1150 "decomp1.ch"
#line 1150 "decomp1.ch"
            (stat=SonTree(stat, 1));
#line 1150 "decomp1.ch"
#line 1150 "decomp1.ch"
#line 1150 "decomp1.ch"
        _Case75 : 
#line 1150 "decomp1.ch"
#line 1150 "decomp1.ch"
            ;
#line 1150 "decomp1.ch"
#line 1151 "decomp1.ch"
            while ( (son=(stat?stat.Nextl():(PPTREE)0)) ) 
#line 1151 "decomp1.ch"
#line 1152 "decomp1.ch"
                DecompStat(son, withNewLine);
#line 1152 "decomp1.ch"
#line 1153 "decomp1.ch"
            break ;
#line 1153 "decomp1.ch"
#line 1155 "decomp1.ch"
        default : 
#line 1155 "decomp1.ch"
#line 1155 "decomp1.ch"
        _Case76 : 
#line 1155 "decomp1.ch"
#line 1155 "decomp1.ch"
            ;
#line 1155 "decomp1.ch"
#line 1155 "decomp1.ch"
            decomp(stat);
#line 1155 "decomp1.ch"
#line 1155 "decomp1.ch"
#line 1156 "decomp1.ch"
            control_stat1(stat);
#line 1156 "decomp1.ch"
#line 1157 "decomp1.ch"
            if ( withNewLine ) 
#line 1157 "decomp1.ch"
#line 1158 "decomp1.ch"
                LNewLine(1);
#line 1158 "decomp1.ch"
#line 1158 "decomp1.ch"
#line 1159 "decomp1.ch"
            break ;
#line 1159 "decomp1.ch"
    }
#line 1159 "decomp1.ch"
#line 1159 "decomp1.ch"
#line 1161 "decomp1.ch"
}
#line 1161 "decomp1.ch"

#line 1165 "decomp1.ch"
#line 1165 "decomp1.ch"
void DecompMetachop::copy ()
#line 1165 "decomp1.ch"
{
#line 1165 "decomp1.ch"
#line 1168 "decomp1.ch"
    char    *str ;
#line 1168 "decomp1.ch"
#line 1170 "decomp1.ch"
    str = "\n\r Metachop version 2.0, CopyRight(C) 1989-95 Eric Lavillonniere \n\r";
#line 1170 "decomp1.ch"
#line 1172 "decomp1.ch"
    write(2, str, strlen(str));
#line 1172 "decomp1.ch"
#line 1173 "decomp1.ch"
    str = " Metachop comes with ABSOLUTELY NO WARRANTY.\n\r";
#line 1173 "decomp1.ch"
#line 1174 "decomp1.ch"
    write(2, str, strlen(str));
#line 1174 "decomp1.ch"
#line 1175 "decomp1.ch"
    str = " This is free software, and you are welcome to redistribute it \n\r";
#line 1175 "decomp1.ch"
#line 1177 "decomp1.ch"
    write(2, str, strlen(str));
#line 1177 "decomp1.ch"
#line 1178 "decomp1.ch"
    str = " under certain conditions.\n\r";
#line 1178 "decomp1.ch"
#line 1179 "decomp1.ch"
    write(2, str, strlen(str));
#line 1179 "decomp1.ch"
#line 1180 "decomp1.ch"
    str = " For details see file COPYING in metachop directory.\n\r\n\r";
#line 1180 "decomp1.ch"
#line 1181 "decomp1.ch"
    write(2, str, strlen(str));
#line 1181 "decomp1.ch"
#line 1182 "decomp1.ch"
}
#line 1182 "decomp1.ch"

#line 1186 "decomp1.ch"
#line 1186 "decomp1.ch"
void DecompMetachop::ChopTree ( PTREE tree, int funcAlone )
#line 1186 "decomp1.ch"
{
#line 1186 "decomp1.ch"
#line 1191 "decomp1.ch"
    copy();
#line 1191 "decomp1.ch"
#line 1192 "decomp1.ch"
    SwitchLang("metachop");
#line 1192 "decomp1.ch"
#line 1195 "decomp1.ch"
    if ( simplifyExpression ) 
#line 1195 "decomp1.ch"
#line 1196 "decomp1.ch"
        clean_tree(tree);
#line 1196 "decomp1.ch"
#line 1200 "decomp1.ch"
    PtreeToClass(tree);
#line 1200 "decomp1.ch"
#line 1203 "decomp1.ch"
    DecompCplus::ptDecomp -> Decomp(tree, funcAlone);
#line 1203 "decomp1.ch"
#line 1204 "decomp1.ch"
    AddRef(tree);
#line 1204 "decomp1.ch"
#line 1207 "decomp1.ch"
    WriteString("/*Well done my boy */ ");
#line 1207 "decomp1.ch"
#line 1208 "decomp1.ch"
    NewLine();
#line 1208 "decomp1.ch"
#line 1209 "decomp1.ch"
}
#line 1209 "decomp1.ch"

#line 1213 "decomp1.ch"
#line 1213 "decomp1.ch"
char *MakeTreeGenDir ( PTREE paramTree, char *name, int level )
#line 1213 "decomp1.ch"
{
#line 1213 "decomp1.ch"
#line 1216 "decomp1.ch"
    PTREE   tree, inter ;
#line 1216 "decomp1.ch"
#line 1216 "decomp1.ch"
#line 1218 "decomp1.ch"
    if ( (!paramTree) ) {
#line 1218 "decomp1.ch"
#line 1219 "decomp1.ch"
                            WriteString(name);
#line 1219 "decomp1.ch"
#line 1219 "decomp1.ch"
                            PrintString("= (PPTREE) 0;");
#line 1219 "decomp1.ch"
#line 1219 "decomp1.ch"
                            LNewLine(1);
#line 1219 "decomp1.ch"
#line 1219 "decomp1.ch"
#line 1219 "decomp1.ch"
                          } else 
#line 1220 "decomp1.ch"
    {
#line 1220 "decomp1.ch"
#line 1221 "decomp1.ch"
        PrintString("{");
#line 1221 "decomp1.ch"
#line 1221 "decomp1.ch"
        LNewLine(1);
#line 1221 "decomp1.ch"
#line 1221 "decomp1.ch"
#line 1222 "decomp1.ch"
        Tab();
#line 1222 "decomp1.ch"
#line 1222 "decomp1.ch"
#line 1223 "decomp1.ch"
        Mark();
#line 1223 "decomp1.ch"
        (tree=LookMeta(paramTree, name));
#line 1223 "decomp1.ch"
#line 1223 "decomp1.ch"
        PrintString("/* ");
#line 1223 "decomp1.ch"
        Mark();
#line 1223 "decomp1.ch"
        (inter=copytree(paramTree));
#line 1223 "decomp1.ch"
#line 1223 "decomp1.ch"
        {
#line 1223 "decomp1.ch"
#line 1229 "decomp1.ch"
            ItPtree it (inter) ;
#line 1229 "decomp1.ch"
#line 1230 "decomp1.ch"
            PPTREE  _for_elem ;
#line 1230 "decomp1.ch"
#line 1231 "decomp1.ch"
            while ( for_elem = it++ ) 
#line 1231 "decomp1.ch"
#line 1232 "decomp1.ch"
                replacetree(for_elem, 0, (PTREE)0);
#line 1232 "decomp1.ch"
#line 1233 "decomp1.ch"
            DumpTree(inter);
#line 1233 "decomp1.ch"
#line 1233 "decomp1.ch"
        }
#line 1233 "decomp1.ch"
        UnMark();
#line 1233 "decomp1.ch"
#line 1233 "decomp1.ch"
        LNewLine(1);
#line 1233 "decomp1.ch"
#line 1233 "decomp1.ch"
        PrintString("*/");
#line 1233 "decomp1.ch"
        LNewLine(1);
#line 1233 "decomp1.ch"
#line 1233 "decomp1.ch"
        MakeTreeGenDirRec(paramTree, - 1);
#line 1233 "decomp1.ch"
        WriteString(name);
#line 1233 "decomp1.ch"
        PrintString(" = PopTree ;");
#line 1233 "decomp1.ch"
        LNewLine(1);
#line 1233 "decomp1.ch"
#line 1233 "decomp1.ch"
        UnMark();
#line 1233 "decomp1.ch"
#line 1233 "decomp1.ch"
#line 1240 "decomp1.ch"
        Tab();
#line 1240 "decomp1.ch"
#line 1240 "decomp1.ch"
#line 1241 "decomp1.ch"
        if ( tree ) {
#line 1241 "decomp1.ch"
#line 1242 "decomp1.ch"
                        Mark();
#line 1242 "decomp1.ch"
                        decomp(tree);
#line 1242 "decomp1.ch"
#line 1242 "decomp1.ch"
                        UnMark();
#line 1242 "decomp1.ch"
#line 1242 "decomp1.ch"
#line 1244 "decomp1.ch"
                        LNewLine(1);
#line 1244 "decomp1.ch"
#line 1244 "decomp1.ch"
#line 1244 "decomp1.ch"
                     }
#line 1244 "decomp1.ch"
#line 1246 "decomp1.ch"
        PrintString("}");
#line 1246 "decomp1.ch"
#line 1246 "decomp1.ch"
        LNewLine(1);
#line 1246 "decomp1.ch"
#line 1246 "decomp1.ch"
#line 1246 "decomp1.ch"
    }
#line 1246 "decomp1.ch"
#line 1248 "decomp1.ch"
    return (name);
#line 1248 "decomp1.ch"
#line 1249 "decomp1.ch"
}
#line 1249 "decomp1.ch"
/*Well done my boy */ 
#line 1249 "decomp1.ch"

