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

extern char *nameDefine ;
int inDefine ;
extern int  statementf ;
int needInter ;
extern int  compiledLine ;
extern char *theFileName ;

#line 41 "../metachop/decomp0.ch"
#line 41 "../metachop/decomp0.ch"
static  inline void CNewLine ()
#line 41 "../metachop/decomp0.ch"
{
#line 41 "../metachop/decomp0.ch"
#line 43 "../metachop/decomp0.ch"
    char    string [10];
#line 43 "../metachop/decomp0.ch"
#line 45 "../metachop/decomp0.ch"
    NewLine();
#line 45 "../metachop/decomp0.ch"
#line 46 "../metachop/decomp0.ch"
    if ( compiledLine ) {
#line 46 "../metachop/decomp0.ch"
#line 47 "../metachop/decomp0.ch"
                            gotocol(1);
#line 47 "../metachop/decomp0.ch"
#line 48 "../metachop/decomp0.ch"
                            WriteString("#line ");
#line 48 "../metachop/decomp0.ch"
#line 49 "../metachop/decomp0.ch"
                            sprintf(string, "%d ", compiledLine);
#line 49 "../metachop/decomp0.ch"
#line 50 "../metachop/decomp0.ch"
                            WriteString(string);
#line 50 "../metachop/decomp0.ch"
#line 50 "../metachop/decomp0.ch"
                            WriteString("\"");
#line 50 "../metachop/decomp0.ch"
#line 50 "../metachop/decomp0.ch"
                            WriteString(theFileName);
#line 50 "../metachop/decomp0.ch"
#line 51 "../metachop/decomp0.ch"
                            WriteString("\"");
#line 51 "../metachop/decomp0.ch"
#line 52 "../metachop/decomp0.ch"
                            NewLine();
#line 52 "../metachop/decomp0.ch"
#line 52 "../metachop/decomp0.ch"
                         }
#line 52 "../metachop/decomp0.ch"
#line 54 "../metachop/decomp0.ch"
}
#line 54 "../metachop/decomp0.ch"

#line 56 "../metachop/decomp0.ch"
#line 56 "../metachop/decomp0.ch"
static  inline void CLNewLine ( int i )
#line 56 "../metachop/decomp0.ch"
{
#line 56 "../metachop/decomp0.ch"
#line 58 "../metachop/decomp0.ch"
    char    string [10];
#line 58 "../metachop/decomp0.ch"
#line 60 "../metachop/decomp0.ch"
    NewLine();
#line 60 "../metachop/decomp0.ch"
#line 61 "../metachop/decomp0.ch"
    if ( compiledLine ) {
#line 61 "../metachop/decomp0.ch"
#line 62 "../metachop/decomp0.ch"
                            gotocol(1);
#line 62 "../metachop/decomp0.ch"
#line 63 "../metachop/decomp0.ch"
                            WriteString("#line ");
#line 63 "../metachop/decomp0.ch"
#line 64 "../metachop/decomp0.ch"
                            sprintf(string, "%d ", compiledLine);
#line 64 "../metachop/decomp0.ch"
#line 65 "../metachop/decomp0.ch"
                            WriteString(string);
#line 65 "../metachop/decomp0.ch"
#line 65 "../metachop/decomp0.ch"
                            WriteString("\"");
#line 65 "../metachop/decomp0.ch"
#line 65 "../metachop/decomp0.ch"
                            WriteString(theFileName);
#line 65 "../metachop/decomp0.ch"
#line 66 "../metachop/decomp0.ch"
                            WriteString("\"");
#line 66 "../metachop/decomp0.ch"
#line 67 "../metachop/decomp0.ch"
                            LNewLine(i);
#line 67 "../metachop/decomp0.ch"
#line 67 "../metachop/decomp0.ch"
                         }
#line 67 "../metachop/decomp0.ch"
#line 69 "../metachop/decomp0.ch"
}
#line 69 "../metachop/decomp0.ch"

#define NewLine CNewLine
#define LNewLine CLNewLine

#line 77 "../metachop/decomp0.ch"
#line 77 "../metachop/decomp0.ch"
char *Switcher ( PTREE paramTree, char *name, int level )
#line 77 "../metachop/decomp0.ch"
{
#line 77 "../metachop/decomp0.ch"
    register PPTREE _inter ;
#line 77 "../metachop/decomp0.ch"
#line 77 "../metachop/decomp0.ch"
#line 79 "../metachop/decomp0.ch"
    PTREE   ident, exp1, exp2, son ;
#line 79 "../metachop/decomp0.ch"
#line 79 "../metachop/decomp0.ch"
#line 80 "../metachop/decomp0.ch"
    char    *name_ident, string ;
#line 80 "../metachop/decomp0.ch"
#line 81 "../metachop/decomp0.ch"
    char    namePt [10];
#line 81 "../metachop/decomp0.ch"
#line 83 "../metachop/decomp0.ch"
    sprintf(namePt, "_ptTree%d", level);
#line 83 "../metachop/decomp0.ch"
#line 84 "../metachop/decomp0.ch"
    switch ( NumberTree(paramTree) ) {
#line 84 "../metachop/decomp0.ch"
#line 86 "../metachop/decomp0.ch"
        case metachop::NIL : 
#line 86 "../metachop/decomp0.ch"
#line 86 "../metachop/decomp0.ch"
        _Case0 : 
#line 86 "../metachop/decomp0.ch"
#line 86 "../metachop/decomp0.ch"
            ;
#line 86 "../metachop/decomp0.ch"
#line 86 "../metachop/decomp0.ch"
            WriteString(name);
#line 86 "../metachop/decomp0.ch"
#line 86 "../metachop/decomp0.ch"
            PrintString(" = (PPTREE) 0;");
#line 86 "../metachop/decomp0.ch"
#line 86 "../metachop/decomp0.ch"
            LNewLine(1);
#line 86 "../metachop/decomp0.ch"
#line 86 "../metachop/decomp0.ch"
#line 87 "../metachop/decomp0.ch"
            return name ;
#line 87 "../metachop/decomp0.ch"
#line 88 "../metachop/decomp0.ch"
            break ;
#line 88 "../metachop/decomp0.ch"
#line 89 "../metachop/decomp0.ch"
        case metachop::IDENT : 
#line 89 "../metachop/decomp0.ch"
#line 89 "../metachop/decomp0.ch"
            (ident=SonTree(paramTree, 1));
#line 89 "../metachop/decomp0.ch"
#line 89 "../metachop/decomp0.ch"
#line 89 "../metachop/decomp0.ch"
        _Case1 : 
#line 89 "../metachop/decomp0.ch"
#line 89 "../metachop/decomp0.ch"
            ;
#line 89 "../metachop/decomp0.ch"
#line 90 "../metachop/decomp0.ch"
            return BrainyValue(ident);
#line 90 "../metachop/decomp0.ch"
#line 91 "../metachop/decomp0.ch"
            break ;
#line 91 "../metachop/decomp0.ch"
#line 93 "../metachop/decomp0.ch"
        case metachop::FUNC : 
#line 93 "../metachop/decomp0.ch"
#line 93 "../metachop/decomp0.ch"
        _Case2 : 
#line 93 "../metachop/decomp0.ch"
#line 93 "../metachop/decomp0.ch"
            ;
#line 93 "../metachop/decomp0.ch"
#line 93 "../metachop/decomp0.ch"
            WriteString(name);
#line 93 "../metachop/decomp0.ch"
#line 93 "../metachop/decomp0.ch"
            PrintString(" = StoreRef(");
#line 93 "../metachop/decomp0.ch"
#line 94 "../metachop/decomp0.ch"
            decomp(paramTree);
#line 94 "../metachop/decomp0.ch"
#line 95 "../metachop/decomp0.ch"
            PrintString(")");
#line 95 "../metachop/decomp0.ch"
#line 95 "../metachop/decomp0.ch"
            LNewLine(1);
#line 95 "../metachop/decomp0.ch"
#line 95 "../metachop/decomp0.ch"
#line 96 "../metachop/decomp0.ch"
            return name ;
#line 96 "../metachop/decomp0.ch"
#line 96 "../metachop/decomp0.ch"
            goto _Case3 ;
#line 96 "../metachop/decomp0.ch"
#line 97 "../metachop/decomp0.ch"
        case metachop::PARSE : 
#line 97 "../metachop/decomp0.ch"
#line 97 "../metachop/decomp0.ch"
            (son=SonTree(paramTree, 1));
#line 97 "../metachop/decomp0.ch"
#line 97 "../metachop/decomp0.ch"
#line 97 "../metachop/decomp0.ch"
        _Case3 : 
#line 97 "../metachop/decomp0.ch"
#line 97 "../metachop/decomp0.ch"
            ;
#line 97 "../metachop/decomp0.ch"
#line 98 "../metachop/decomp0.ch"
            ((_inter = (PPTREE)son,1) && 
#line 98 "../metachop/decomp0.ch"
                ((son=SonTree(_inter,2)),1) &&
#line 98 "../metachop/decomp0.ch"
                1);
#line 98 "../metachop/decomp0.ch"
            ;
#line 98 "../metachop/decomp0.ch"
#line 99 "../metachop/decomp0.ch"
            MakeTreeGenDir(son, name, 0);
#line 99 "../metachop/decomp0.ch"
#line 100 "../metachop/decomp0.ch"
            return name ;
#line 100 "../metachop/decomp0.ch"
#line 100 "../metachop/decomp0.ch"
            goto _Case4 ;
#line 100 "../metachop/decomp0.ch"
#line 102 "../metachop/decomp0.ch"
        case metachop::STRING : 
#line 102 "../metachop/decomp0.ch"
#line 102 "../metachop/decomp0.ch"
        _Case4 : 
#line 102 "../metachop/decomp0.ch"
#line 102 "../metachop/decomp0.ch"
            ;
#line 102 "../metachop/decomp0.ch"
#line 102 "../metachop/decomp0.ch"
            statementf = 0 ;
#line 102 "../metachop/decomp0.ch"
#line 103 "../metachop/decomp0.ch"
            WriteString(name);
#line 103 "../metachop/decomp0.ch"
#line 103 "../metachop/decomp0.ch"
            PrintString(" = MakeString(");
#line 103 "../metachop/decomp0.ch"
#line 104 "../metachop/decomp0.ch"
            decomp(paramTree);
#line 104 "../metachop/decomp0.ch"
#line 105 "../metachop/decomp0.ch"
            PrintString(") ");
#line 105 "../metachop/decomp0.ch"
            PrintString(";");
#line 105 "../metachop/decomp0.ch"
#line 105 "../metachop/decomp0.ch"
            LNewLine(1);
#line 105 "../metachop/decomp0.ch"
#line 105 "../metachop/decomp0.ch"
#line 106 "../metachop/decomp0.ch"
            return name ;
#line 106 "../metachop/decomp0.ch"
#line 106 "../metachop/decomp0.ch"
            goto _Case5 ;
#line 106 "../metachop/decomp0.ch"
#line 108 "../metachop/decomp0.ch"
        case metachop::NODE_TREE : 
#line 108 "../metachop/decomp0.ch"
#line 108 "../metachop/decomp0.ch"
        _Case5 : 
#line 108 "../metachop/decomp0.ch"
#line 108 "../metachop/decomp0.ch"
            ;
#line 108 "../metachop/decomp0.ch"
#line 108 "../metachop/decomp0.ch"
            MakeTreeGen(paramTree, name, level);
#line 108 "../metachop/decomp0.ch"
#line 109 "../metachop/decomp0.ch"
            return name ;
#line 109 "../metachop/decomp0.ch"
#line 109 "../metachop/decomp0.ch"
            goto _Case6 ;
#line 109 "../metachop/decomp0.ch"
#line 110 "../metachop/decomp0.ch"
        case metachop::PLU_AFF : 
#line 110 "../metachop/decomp0.ch"
#line 110 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 110 "../metachop/decomp0.ch"
#line 110 "../metachop/decomp0.ch"
#line 110 "../metachop/decomp0.ch"
            (exp2=SonTree(paramTree, 2));
#line 110 "../metachop/decomp0.ch"
#line 110 "../metachop/decomp0.ch"
#line 110 "../metachop/decomp0.ch"
        _Case6 : 
#line 110 "../metachop/decomp0.ch"
#line 110 "../metachop/decomp0.ch"
            ;
#line 110 "../metachop/decomp0.ch"
#line 111 "../metachop/decomp0.ch"
            name_ident = AllocString(BrainyValue(exp1));
#line 111 "../metachop/decomp0.ch"
#line 112 "../metachop/decomp0.ch"
            ReplaceTreeGen(exp2, name, name_ident, level);
#line 112 "../metachop/decomp0.ch"
#line 113 "../metachop/decomp0.ch"
            free(name_ident);
#line 113 "../metachop/decomp0.ch"
#line 114 "../metachop/decomp0.ch"
            return name ;
#line 114 "../metachop/decomp0.ch"
#line 114 "../metachop/decomp0.ch"
            goto _Case7 ;
#line 114 "../metachop/decomp0.ch"
#line 115 "../metachop/decomp0.ch"
        case metachop::EXPO_AFF : 
#line 115 "../metachop/decomp0.ch"
#line 115 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 115 "../metachop/decomp0.ch"
#line 115 "../metachop/decomp0.ch"
#line 115 "../metachop/decomp0.ch"
            (exp2=SonTree(paramTree, 2));
#line 115 "../metachop/decomp0.ch"
#line 115 "../metachop/decomp0.ch"
#line 115 "../metachop/decomp0.ch"
        _Case7 : 
#line 115 "../metachop/decomp0.ch"
#line 115 "../metachop/decomp0.ch"
            ;
#line 115 "../metachop/decomp0.ch"
#line 116 "../metachop/decomp0.ch"
            name_ident = AllocString(BrainyValue(exp1));
#line 116 "../metachop/decomp0.ch"
#line 117 "../metachop/decomp0.ch"
            AddListGen(exp2, name, name_ident, level);
#line 117 "../metachop/decomp0.ch"
#line 118 "../metachop/decomp0.ch"
            free(name_ident);
#line 118 "../metachop/decomp0.ch"
#line 119 "../metachop/decomp0.ch"
            return name ;
#line 119 "../metachop/decomp0.ch"
#line 119 "../metachop/decomp0.ch"
            goto _Case8 ;
#line 119 "../metachop/decomp0.ch"
#line 120 "../metachop/decomp0.ch"
        case metachop::MUL_AFF : 
#line 120 "../metachop/decomp0.ch"
#line 120 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 120 "../metachop/decomp0.ch"
#line 120 "../metachop/decomp0.ch"
#line 120 "../metachop/decomp0.ch"
            (exp2=SonTree(paramTree, 2));
#line 120 "../metachop/decomp0.ch"
#line 120 "../metachop/decomp0.ch"
#line 120 "../metachop/decomp0.ch"
        _Case8 : 
#line 120 "../metachop/decomp0.ch"
#line 120 "../metachop/decomp0.ch"
            ;
#line 120 "../metachop/decomp0.ch"
#line 121 "../metachop/decomp0.ch"
            name_ident = AllocString(BrainyValue(exp1));
#line 121 "../metachop/decomp0.ch"
#line 122 "../metachop/decomp0.ch"
            AddListGen1(exp2, name, name_ident, level);
#line 122 "../metachop/decomp0.ch"
#line 123 "../metachop/decomp0.ch"
            free(name_ident);
#line 123 "../metachop/decomp0.ch"
#line 124 "../metachop/decomp0.ch"
            return name ;
#line 124 "../metachop/decomp0.ch"
#line 125 "../metachop/decomp0.ch"
            break ;
#line 125 "../metachop/decomp0.ch"
#line 126 "../metachop/decomp0.ch"
        case metachop::PLUS : 
#line 126 "../metachop/decomp0.ch"
#line 126 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 126 "../metachop/decomp0.ch"
#line 126 "../metachop/decomp0.ch"
#line 126 "../metachop/decomp0.ch"
            (exp2=SonTree(paramTree, 2));
#line 126 "../metachop/decomp0.ch"
#line 126 "../metachop/decomp0.ch"
#line 126 "../metachop/decomp0.ch"
        _Case9 : 
#line 126 "../metachop/decomp0.ch"
#line 126 "../metachop/decomp0.ch"
            ;
#line 126 "../metachop/decomp0.ch"
#line 127 "../metachop/decomp0.ch"
            if ( ((_inter = (PPTREE)exp1,1) && 
#line 127 "../metachop/decomp0.ch"
                    (NumberTree(_inter) == metachop::NODE_TREE) &&
#line 127 "../metachop/decomp0.ch"
                    1) ) {
#line 127 "../metachop/decomp0.ch"
#line 128 "../metachop/decomp0.ch"
                            MakeTreeGen(exp1, name, level);
#line 128 "../metachop/decomp0.ch"
#line 129 "../metachop/decomp0.ch"
                            ReplaceTreeGen(exp2, (char *)0, name, level);
#line 129 "../metachop/decomp0.ch"
#line 129 "../metachop/decomp0.ch"
                         } else 
#line 130 "../metachop/decomp0.ch"
            if ( ((_inter = (PPTREE)exp1,1) && 
#line 130 "../metachop/decomp0.ch"
                    (NumberTree(_inter) == metachop::IDENT) &&
#line 130 "../metachop/decomp0.ch"
                    1) ) {
#line 130 "../metachop/decomp0.ch"
#line 131 "../metachop/decomp0.ch"
                            WriteString(name);
#line 131 "../metachop/decomp0.ch"
#line 131 "../metachop/decomp0.ch"
                            PrintString(" = CopyTree (");
#line 131 "../metachop/decomp0.ch"
#line 131 "../metachop/decomp0.ch"
                            DumpBrainyValue(exp1);
#line 131 "../metachop/decomp0.ch"
#line 131 "../metachop/decomp0.ch"
#line 131 "../metachop/decomp0.ch"
                            PrintString(");");
#line 131 "../metachop/decomp0.ch"
#line 131 "../metachop/decomp0.ch"
                            LNewLine(1);
#line 131 "../metachop/decomp0.ch"
#line 131 "../metachop/decomp0.ch"
#line 132 "../metachop/decomp0.ch"
                            ReplaceTreeGen(exp2, (char *)0, name, level);
#line 132 "../metachop/decomp0.ch"
#line 132 "../metachop/decomp0.ch"
                         }
#line 132 "../metachop/decomp0.ch"
#line 134 "../metachop/decomp0.ch"
            return name ;
#line 134 "../metachop/decomp0.ch"
#line 134 "../metachop/decomp0.ch"
            goto _Case10 ;
#line 134 "../metachop/decomp0.ch"
#line 135 "../metachop/decomp0.ch"
        case metachop::EXPO : 
#line 135 "../metachop/decomp0.ch"
#line 135 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 135 "../metachop/decomp0.ch"
#line 135 "../metachop/decomp0.ch"
#line 135 "../metachop/decomp0.ch"
            (exp2=SonTree(paramTree, 2));
#line 135 "../metachop/decomp0.ch"
#line 135 "../metachop/decomp0.ch"
#line 135 "../metachop/decomp0.ch"
        _Case10 : 
#line 135 "../metachop/decomp0.ch"
#line 135 "../metachop/decomp0.ch"
            ;
#line 135 "../metachop/decomp0.ch"
#line 136 "../metachop/decomp0.ch"
            if ( ((_inter = (PPTREE)exp1,1) && 
#line 136 "../metachop/decomp0.ch"
                    (NumberTree(_inter) == metachop::MUL) &&
#line 136 "../metachop/decomp0.ch"
                    1) ) 
#line 136 "../metachop/decomp0.ch"
#line 137 "../metachop/decomp0.ch"
                Switcher(exp1, name, level);
#line 137 "../metachop/decomp0.ch"
            else 
#line 138 "../metachop/decomp0.ch"
            {
#line 138 "../metachop/decomp0.ch"
#line 139 "../metachop/decomp0.ch"
                WriteString(name);
#line 139 "../metachop/decomp0.ch"
#line 139 "../metachop/decomp0.ch"
                PrintString(" = (PPTREE) 0;");
#line 139 "../metachop/decomp0.ch"
#line 139 "../metachop/decomp0.ch"
                LNewLine(1);
#line 139 "../metachop/decomp0.ch"
#line 139 "../metachop/decomp0.ch"
#line 140 "../metachop/decomp0.ch"
                AddListGen(exp1, (char *)0, name, level);
#line 140 "../metachop/decomp0.ch"
#line 140 "../metachop/decomp0.ch"
            }
#line 140 "../metachop/decomp0.ch"
#line 142 "../metachop/decomp0.ch"
            AddListGen(exp2, (char *)0, name, level);
#line 142 "../metachop/decomp0.ch"
#line 143 "../metachop/decomp0.ch"
            return name ;
#line 143 "../metachop/decomp0.ch"
#line 143 "../metachop/decomp0.ch"
            goto _Case11 ;
#line 143 "../metachop/decomp0.ch"
#line 144 "../metachop/decomp0.ch"
        case metachop::MUL : 
#line 144 "../metachop/decomp0.ch"
#line 144 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 144 "../metachop/decomp0.ch"
#line 144 "../metachop/decomp0.ch"
#line 144 "../metachop/decomp0.ch"
            (exp2=SonTree(paramTree, 2));
#line 144 "../metachop/decomp0.ch"
#line 144 "../metachop/decomp0.ch"
#line 144 "../metachop/decomp0.ch"
        _Case11 : 
#line 144 "../metachop/decomp0.ch"
#line 144 "../metachop/decomp0.ch"
            ;
#line 144 "../metachop/decomp0.ch"
#line 145 "../metachop/decomp0.ch"
            name_ident = Switcher(exp1, name, level);
#line 145 "../metachop/decomp0.ch"
#line 146 "../metachop/decomp0.ch"
            if ( strcmp(name, name_ident) ) {
#line 146 "../metachop/decomp0.ch"
#line 147 "../metachop/decomp0.ch"
                                                WriteString(name);
#line 147 "../metachop/decomp0.ch"
#line 147 "../metachop/decomp0.ch"
                                                PrintString(" = ");
#line 147 "../metachop/decomp0.ch"
#line 147 "../metachop/decomp0.ch"
                                                WriteString(name_ident);
#line 147 "../metachop/decomp0.ch"
#line 147 "../metachop/decomp0.ch"
                                                PrintString(";");
#line 147 "../metachop/decomp0.ch"
#line 147 "../metachop/decomp0.ch"
                                                LNewLine(1);
#line 147 "../metachop/decomp0.ch"
#line 147 "../metachop/decomp0.ch"
#line 147 "../metachop/decomp0.ch"
                                               }
#line 147 "../metachop/decomp0.ch"
#line 149 "../metachop/decomp0.ch"
            AddListGen(exp2, (char *)0, name, level);
#line 149 "../metachop/decomp0.ch"
#line 150 "../metachop/decomp0.ch"
            return name ;
#line 150 "../metachop/decomp0.ch"
#line 150 "../metachop/decomp0.ch"
            goto _Case12 ;
#line 150 "../metachop/decomp0.ch"
#line 151 "../metachop/decomp0.ch"
        case metachop::EXP : 
#line 151 "../metachop/decomp0.ch"
#line 151 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 151 "../metachop/decomp0.ch"
#line 151 "../metachop/decomp0.ch"
#line 151 "../metachop/decomp0.ch"
        _Case12 : 
#line 151 "../metachop/decomp0.ch"
#line 151 "../metachop/decomp0.ch"
            ;
#line 151 "../metachop/decomp0.ch"
#line 152 "../metachop/decomp0.ch"
            Switcher(exp1, name, level);
#line 152 "../metachop/decomp0.ch"
#line 153 "../metachop/decomp0.ch"
            return name ;
#line 153 "../metachop/decomp0.ch"
#line 154 "../metachop/decomp0.ch"
            break ;
#line 154 "../metachop/decomp0.ch"
#line 155 "../metachop/decomp0.ch"
        case metachop::AFF : 
#line 155 "../metachop/decomp0.ch"
#line 155 "../metachop/decomp0.ch"
            (exp1=SonTree(paramTree, 1));
#line 155 "../metachop/decomp0.ch"
#line 155 "../metachop/decomp0.ch"
#line 155 "../metachop/decomp0.ch"
            (exp2=SonTree(paramTree, 2));
#line 155 "../metachop/decomp0.ch"
#line 155 "../metachop/decomp0.ch"
#line 155 "../metachop/decomp0.ch"
        _Case13 : 
#line 155 "../metachop/decomp0.ch"
#line 155 "../metachop/decomp0.ch"
            ;
#line 155 "../metachop/decomp0.ch"
#line 156 "../metachop/decomp0.ch"
            name_ident = AllocString(BrainyValue(exp1));
#line 156 "../metachop/decomp0.ch"
#line 157 "../metachop/decomp0.ch"
            switch ( NumberTree(exp2) ) {
#line 157 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                case metachop::IDENT : 
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                _Case15 : 
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                    ;
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                    WriteString(name_ident);
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                    PrintString(" = ");
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                    DumpBrainyValue(exp2);
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                    PrintString(";");
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 159 "../metachop/decomp0.ch"
#line 159 "../metachop/decomp0.ch"
#line 160 "../metachop/decomp0.ch"
                    break ;
#line 160 "../metachop/decomp0.ch"
#line 162 "../metachop/decomp0.ch"
                case metachop::NIL : 
#line 162 "../metachop/decomp0.ch"
#line 162 "../metachop/decomp0.ch"
                _Case16 : 
#line 162 "../metachop/decomp0.ch"
#line 162 "../metachop/decomp0.ch"
                    ;
#line 162 "../metachop/decomp0.ch"
#line 162 "../metachop/decomp0.ch"
                    WriteString(name_ident);
#line 162 "../metachop/decomp0.ch"
#line 162 "../metachop/decomp0.ch"
                    PrintString(" = (PPTREE) 0 ;");
#line 162 "../metachop/decomp0.ch"
#line 162 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 162 "../metachop/decomp0.ch"
#line 162 "../metachop/decomp0.ch"
#line 163 "../metachop/decomp0.ch"
                    break ;
#line 163 "../metachop/decomp0.ch"
#line 165 "../metachop/decomp0.ch"
                case metachop::NODE_TREE : 
#line 165 "../metachop/decomp0.ch"
#line 165 "../metachop/decomp0.ch"
                _Case17 : 
#line 165 "../metachop/decomp0.ch"
#line 165 "../metachop/decomp0.ch"
                    ;
#line 165 "../metachop/decomp0.ch"
#line 165 "../metachop/decomp0.ch"
                    MakeTreeGen(exp2, name, level);
#line 165 "../metachop/decomp0.ch"
#line 166 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 166 "../metachop/decomp0.ch"
#line 167 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 167 "../metachop/decomp0.ch"
#line 167 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 167 "../metachop/decomp0.ch"
#line 167 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 167 "../metachop/decomp0.ch"
#line 167 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 167 "../metachop/decomp0.ch"
#line 168 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 168 "../metachop/decomp0.ch"
#line 168 "../metachop/decomp0.ch"
#line 168 "../metachop/decomp0.ch"
                                                       }
#line 168 "../metachop/decomp0.ch"
#line 170 "../metachop/decomp0.ch"
                    break ;
#line 170 "../metachop/decomp0.ch"
#line 172 "../metachop/decomp0.ch"
                case metachop::PLUS : 
#line 172 "../metachop/decomp0.ch"
#line 172 "../metachop/decomp0.ch"
                _Case18 : 
#line 172 "../metachop/decomp0.ch"
#line 172 "../metachop/decomp0.ch"
                    ;
#line 172 "../metachop/decomp0.ch"
#line 172 "../metachop/decomp0.ch"
                    Switcher(exp2, name, level);
#line 172 "../metachop/decomp0.ch"
#line 173 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 173 "../metachop/decomp0.ch"
#line 174 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 174 "../metachop/decomp0.ch"
#line 174 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 174 "../metachop/decomp0.ch"
#line 174 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 174 "../metachop/decomp0.ch"
#line 174 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 174 "../metachop/decomp0.ch"
#line 175 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 175 "../metachop/decomp0.ch"
#line 175 "../metachop/decomp0.ch"
#line 175 "../metachop/decomp0.ch"
                                                       }
#line 175 "../metachop/decomp0.ch"
#line 177 "../metachop/decomp0.ch"
                    break ;
#line 177 "../metachop/decomp0.ch"
#line 179 "../metachop/decomp0.ch"
                case metachop::EXPO : 
#line 179 "../metachop/decomp0.ch"
#line 179 "../metachop/decomp0.ch"
                _Case19 : 
#line 179 "../metachop/decomp0.ch"
#line 179 "../metachop/decomp0.ch"
                    ;
#line 179 "../metachop/decomp0.ch"
#line 179 "../metachop/decomp0.ch"
                    PrintString("{");
#line 179 "../metachop/decomp0.ch"
#line 179 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 179 "../metachop/decomp0.ch"
#line 179 "../metachop/decomp0.ch"
#line 180 "../metachop/decomp0.ch"
                    Tab();
#line 180 "../metachop/decomp0.ch"
#line 180 "../metachop/decomp0.ch"
#line 181 "../metachop/decomp0.ch"
                    Mark();
#line 181 "../metachop/decomp0.ch"
                    PrintString("PPTREE ");
#line 181 "../metachop/decomp0.ch"
                    WriteString(namePt);
#line 181 "../metachop/decomp0.ch"
                    PrintString("= (PPTREE) 0 ;");
#line 181 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 181 "../metachop/decomp0.ch"
#line 181 "../metachop/decomp0.ch"
                    Switcher(exp2, namePt, level + 1);
#line 181 "../metachop/decomp0.ch"
                    WriteString(name);
#line 181 "../metachop/decomp0.ch"
                    PrintString(" = ");
#line 181 "../metachop/decomp0.ch"
                    WriteString(namePt);
#line 181 "../metachop/decomp0.ch"
                    PrintString(" ;");
#line 181 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 181 "../metachop/decomp0.ch"
#line 181 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 181 "../metachop/decomp0.ch"
#line 187 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 187 "../metachop/decomp0.ch"
#line 187 "../metachop/decomp0.ch"
                                                        PrintString("= ");
#line 187 "../metachop/decomp0.ch"
#line 188 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 188 "../metachop/decomp0.ch"
#line 188 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 188 "../metachop/decomp0.ch"
#line 188 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 188 "../metachop/decomp0.ch"
#line 188 "../metachop/decomp0.ch"
#line 188 "../metachop/decomp0.ch"
                                                       }
#line 188 "../metachop/decomp0.ch"
                    PrintString(";");
#line 188 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 188 "../metachop/decomp0.ch"
#line 188 "../metachop/decomp0.ch"
                    UnMark();
#line 188 "../metachop/decomp0.ch"
#line 188 "../metachop/decomp0.ch"
#line 192 "../metachop/decomp0.ch"
                    PrintString("}");
#line 192 "../metachop/decomp0.ch"
#line 192 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 192 "../metachop/decomp0.ch"
#line 192 "../metachop/decomp0.ch"
#line 193 "../metachop/decomp0.ch"
                    break ;
#line 193 "../metachop/decomp0.ch"
#line 195 "../metachop/decomp0.ch"
                case metachop::MUL : 
#line 195 "../metachop/decomp0.ch"
#line 195 "../metachop/decomp0.ch"
                _Case20 : 
#line 195 "../metachop/decomp0.ch"
#line 195 "../metachop/decomp0.ch"
                    ;
#line 195 "../metachop/decomp0.ch"
#line 195 "../metachop/decomp0.ch"
                    PrintString("{");
#line 195 "../metachop/decomp0.ch"
#line 195 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 195 "../metachop/decomp0.ch"
#line 195 "../metachop/decomp0.ch"
#line 196 "../metachop/decomp0.ch"
                    Tab();
#line 196 "../metachop/decomp0.ch"
#line 196 "../metachop/decomp0.ch"
#line 197 "../metachop/decomp0.ch"
                    Mark();
#line 197 "../metachop/decomp0.ch"
                    PrintString("PPTREE ");
#line 197 "../metachop/decomp0.ch"
                    WriteString(namePt);
#line 197 "../metachop/decomp0.ch"
                    PrintString("=(PPTREE) 0;");
#line 197 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 197 "../metachop/decomp0.ch"
#line 197 "../metachop/decomp0.ch"
                    Switcher(exp2, namePt, level + 1);
#line 197 "../metachop/decomp0.ch"
                    WriteString(name);
#line 197 "../metachop/decomp0.ch"
                    PrintString(" = ");
#line 197 "../metachop/decomp0.ch"
                    WriteString(namePt);
#line 197 "../metachop/decomp0.ch"
                    PrintString(";");
#line 197 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 197 "../metachop/decomp0.ch"
#line 197 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 197 "../metachop/decomp0.ch"
#line 203 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 203 "../metachop/decomp0.ch"
#line 203 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 203 "../metachop/decomp0.ch"
#line 204 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 204 "../metachop/decomp0.ch"
#line 204 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 204 "../metachop/decomp0.ch"
#line 204 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 204 "../metachop/decomp0.ch"
#line 204 "../metachop/decomp0.ch"
#line 204 "../metachop/decomp0.ch"
                                                       }
#line 204 "../metachop/decomp0.ch"
                    PrintString(";");
#line 204 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 204 "../metachop/decomp0.ch"
#line 204 "../metachop/decomp0.ch"
                    UnMark();
#line 204 "../metachop/decomp0.ch"
#line 204 "../metachop/decomp0.ch"
#line 208 "../metachop/decomp0.ch"
                    PrintString("}");
#line 208 "../metachop/decomp0.ch"
#line 208 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 208 "../metachop/decomp0.ch"
#line 208 "../metachop/decomp0.ch"
#line 209 "../metachop/decomp0.ch"
                    break ;
#line 209 "../metachop/decomp0.ch"
#line 211 "../metachop/decomp0.ch"
                case metachop::PLU_AFF : 
#line 211 "../metachop/decomp0.ch"
#line 211 "../metachop/decomp0.ch"
                _Case21 : 
#line 211 "../metachop/decomp0.ch"
#line 211 "../metachop/decomp0.ch"
                    ;
#line 211 "../metachop/decomp0.ch"
#line 211 "../metachop/decomp0.ch"
                    Switcher(exp2, name, level);
#line 211 "../metachop/decomp0.ch"
#line 212 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 212 "../metachop/decomp0.ch"
#line 213 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 213 "../metachop/decomp0.ch"
#line 213 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 213 "../metachop/decomp0.ch"
#line 213 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 213 "../metachop/decomp0.ch"
#line 213 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 213 "../metachop/decomp0.ch"
#line 214 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 214 "../metachop/decomp0.ch"
#line 214 "../metachop/decomp0.ch"
#line 214 "../metachop/decomp0.ch"
                                                       }
#line 214 "../metachop/decomp0.ch"
#line 216 "../metachop/decomp0.ch"
                    break ;
#line 216 "../metachop/decomp0.ch"
#line 218 "../metachop/decomp0.ch"
                case metachop::EXPO_AFF : 
#line 218 "../metachop/decomp0.ch"
#line 218 "../metachop/decomp0.ch"
                _Case22 : 
#line 218 "../metachop/decomp0.ch"
#line 218 "../metachop/decomp0.ch"
                    ;
#line 218 "../metachop/decomp0.ch"
#line 218 "../metachop/decomp0.ch"
                    Switcher(exp2, name, level);
#line 218 "../metachop/decomp0.ch"
#line 219 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 219 "../metachop/decomp0.ch"
#line 220 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 220 "../metachop/decomp0.ch"
#line 220 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 220 "../metachop/decomp0.ch"
#line 220 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 220 "../metachop/decomp0.ch"
#line 220 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 220 "../metachop/decomp0.ch"
#line 221 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 221 "../metachop/decomp0.ch"
#line 221 "../metachop/decomp0.ch"
#line 221 "../metachop/decomp0.ch"
                                                       }
#line 221 "../metachop/decomp0.ch"
#line 223 "../metachop/decomp0.ch"
                    break ;
#line 223 "../metachop/decomp0.ch"
#line 225 "../metachop/decomp0.ch"
                case metachop::MUL_AFF : 
#line 225 "../metachop/decomp0.ch"
#line 225 "../metachop/decomp0.ch"
                _Case23 : 
#line 225 "../metachop/decomp0.ch"
#line 225 "../metachop/decomp0.ch"
                    ;
#line 225 "../metachop/decomp0.ch"
#line 225 "../metachop/decomp0.ch"
                    Switcher(exp2, name, level);
#line 225 "../metachop/decomp0.ch"
#line 226 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 226 "../metachop/decomp0.ch"
#line 227 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 227 "../metachop/decomp0.ch"
#line 227 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 227 "../metachop/decomp0.ch"
#line 227 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 227 "../metachop/decomp0.ch"
#line 227 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 227 "../metachop/decomp0.ch"
#line 228 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 228 "../metachop/decomp0.ch"
#line 228 "../metachop/decomp0.ch"
#line 228 "../metachop/decomp0.ch"
                                                       }
#line 228 "../metachop/decomp0.ch"
#line 230 "../metachop/decomp0.ch"
                    break ;
#line 230 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                case metachop::NEXT : 
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                _Case24 : 
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                    ;
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                    WriteString(name_ident);
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                    PrintString(" = ");
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                    decomp(exp2);
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                    PrintString(";");
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 232 "../metachop/decomp0.ch"
#line 232 "../metachop/decomp0.ch"
#line 233 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 233 "../metachop/decomp0.ch"
#line 234 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 234 "../metachop/decomp0.ch"
#line 234 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 234 "../metachop/decomp0.ch"
#line 234 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 234 "../metachop/decomp0.ch"
#line 234 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 234 "../metachop/decomp0.ch"
#line 235 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 235 "../metachop/decomp0.ch"
#line 235 "../metachop/decomp0.ch"
#line 235 "../metachop/decomp0.ch"
                                                       }
#line 235 "../metachop/decomp0.ch"
#line 237 "../metachop/decomp0.ch"
                    break ;
#line 237 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                default : 
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                _Case25 : 
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                    ;
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                    WriteString(name_ident);
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                    PrintString(" = StoreRef(");
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                    decomp(exp2);
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                    PrintString(");");
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 239 "../metachop/decomp0.ch"
#line 239 "../metachop/decomp0.ch"
#line 240 "../metachop/decomp0.ch"
                    if ( strcmp(name_ident, name) ) {
#line 240 "../metachop/decomp0.ch"
#line 241 "../metachop/decomp0.ch"
                                                        WriteString(name);
#line 241 "../metachop/decomp0.ch"
#line 241 "../metachop/decomp0.ch"
                                                        PrintString(" = ");
#line 241 "../metachop/decomp0.ch"
#line 241 "../metachop/decomp0.ch"
                                                        WriteString(name_ident);
#line 241 "../metachop/decomp0.ch"
#line 241 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 241 "../metachop/decomp0.ch"
#line 242 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 242 "../metachop/decomp0.ch"
#line 242 "../metachop/decomp0.ch"
#line 242 "../metachop/decomp0.ch"
                                                       }
#line 242 "../metachop/decomp0.ch"
#line 244 "../metachop/decomp0.ch"
                    break ;
#line 244 "../metachop/decomp0.ch"
            }
#line 244 "../metachop/decomp0.ch"
#line 244 "../metachop/decomp0.ch"
#line 246 "../metachop/decomp0.ch"
            free(name_ident);
#line 246 "../metachop/decomp0.ch"
#line 247 "../metachop/decomp0.ch"
            return name ;
#line 247 "../metachop/decomp0.ch"
#line 247 "../metachop/decomp0.ch"
            goto _Case14 ;
#line 247 "../metachop/decomp0.ch"
#line 249 "../metachop/decomp0.ch"
        default : 
#line 249 "../metachop/decomp0.ch"
#line 249 "../metachop/decomp0.ch"
        _Case14 : 
#line 249 "../metachop/decomp0.ch"
#line 249 "../metachop/decomp0.ch"
            ;
#line 249 "../metachop/decomp0.ch"
#line 249 "../metachop/decomp0.ch"
            WriteString(name);
#line 249 "../metachop/decomp0.ch"
#line 249 "../metachop/decomp0.ch"
            PrintString(" = StoreRef(");
#line 249 "../metachop/decomp0.ch"
#line 250 "../metachop/decomp0.ch"
            decomp(paramTree);
#line 250 "../metachop/decomp0.ch"
#line 251 "../metachop/decomp0.ch"
            PrintString(");");
#line 251 "../metachop/decomp0.ch"
#line 251 "../metachop/decomp0.ch"
            LNewLine(1);
#line 251 "../metachop/decomp0.ch"
#line 251 "../metachop/decomp0.ch"
#line 252 "../metachop/decomp0.ch"
            return name ;
#line 252 "../metachop/decomp0.ch"
    }
#line 252 "../metachop/decomp0.ch"
#line 252 "../metachop/decomp0.ch"
#line 254 "../metachop/decomp0.ch"
}
#line 254 "../metachop/decomp0.ch"

#line 258 "../metachop/decomp0.ch"
#line 258 "../metachop/decomp0.ch"
void MakeTreeGen ( PTREE paramTree, char *name, int level )
#line 258 "../metachop/decomp0.ch"
{
#line 258 "../metachop/decomp0.ch"
    register PPTREE _inter ;
#line 258 "../metachop/decomp0.ch"
#line 258 "../metachop/decomp0.ch"
#line 261 "../metachop/decomp0.ch"
    int nbParam, currParam, gennode ;
#line 261 "../metachop/decomp0.ch"
#line 262 "../metachop/decomp0.ch"
    char    string [5], namePt [10], resPt [10], *retName ;
#line 262 "../metachop/decomp0.ch"
#line 263 "../metachop/decomp0.ch"
    PTREE   ptTree, son ;
#line 263 "../metachop/decomp0.ch"
#line 263 "../metachop/decomp0.ch"
#line 265 "../metachop/decomp0.ch"
    sprintf(namePt, "_ptTree%d", level);
#line 265 "../metachop/decomp0.ch"
#line 266 "../metachop/decomp0.ch"
    sprintf(resPt, "_ptRes%d", level);
#line 266 "../metachop/decomp0.ch"
#line 267 "../metachop/decomp0.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 267 "../metachop/decomp0.ch"
        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 267 "../metachop/decomp0.ch"
            ((ptTree=SonTree(_inter,2)),1) &&
#line 267 "../metachop/decomp0.ch"
            1),
#line 267 "../metachop/decomp0.ch"
            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 267 "../metachop/decomp0.ch"
        1);
#line 267 "../metachop/decomp0.ch"
    ;
#line 267 "../metachop/decomp0.ch"
#line 271 "../metachop/decomp0.ch"
    nbParam = 0 ;
#line 271 "../metachop/decomp0.ch"
#line 272 "../metachop/decomp0.ch"
    while ( !((!ptTree)) ) {
#line 272 "../metachop/decomp0.ch"
#line 273 "../metachop/decomp0.ch"
                                nbParam++ ;
#line 273 "../metachop/decomp0.ch"
#line 274 "../metachop/decomp0.ch"
                                (ptTree?ptTree.Nextl():(PPTREE)0);
#line 274 "../metachop/decomp0.ch"
#line 274 "../metachop/decomp0.ch"
                             }
#line 274 "../metachop/decomp0.ch"
#line 276 "../metachop/decomp0.ch"
    PrintString("{");
#line 276 "../metachop/decomp0.ch"
#line 276 "../metachop/decomp0.ch"
    LNewLine(1);
#line 276 "../metachop/decomp0.ch"
#line 276 "../metachop/decomp0.ch"
#line 277 "../metachop/decomp0.ch"
    Tab();
#line 277 "../metachop/decomp0.ch"
#line 277 "../metachop/decomp0.ch"
#line 279 "../metachop/decomp0.ch"
    Mark();
#line 279 "../metachop/decomp0.ch"
    PrintString("PPTREE ");
#line 279 "../metachop/decomp0.ch"
    WriteString(namePt);
#line 279 "../metachop/decomp0.ch"
    PrintString("= (PPTREE) 0,");
#line 279 "../metachop/decomp0.ch"
    WriteString(resPt);
#line 279 "../metachop/decomp0.ch"
    PrintString("= (PPTREE) 0;");
#line 279 "../metachop/decomp0.ch"
    LNewLine(1);
#line 279 "../metachop/decomp0.ch"
#line 279 "../metachop/decomp0.ch"
    WriteString(resPt);
#line 279 "../metachop/decomp0.ch"
    PrintString(" = MakeTree(");
#line 279 "../metachop/decomp0.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 279 "../metachop/decomp0.ch"
        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 279 "../metachop/decomp0.ch"
            ((son=SonTree(_inter,1)),1) &&
#line 279 "../metachop/decomp0.ch"
            1),
#line 279 "../metachop/decomp0.ch"
            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 279 "../metachop/decomp0.ch"
        1);
#line 279 "../metachop/decomp0.ch"
    ;
#line 279 "../metachop/decomp0.ch"
    if ( cplusGen ) {
#line 279 "../metachop/decomp0.ch"
#line 286 "../metachop/decomp0.ch"
                        WriteString(NameOfNodePlus(Value(son)));
#line 286 "../metachop/decomp0.ch"
#line 286 "../metachop/decomp0.ch"
                        PrintString(", ");
#line 286 "../metachop/decomp0.ch"
#line 286 "../metachop/decomp0.ch"
                     } else 
#line 287 "../metachop/decomp0.ch"
    {
#line 287 "../metachop/decomp0.ch"
#line 288 "../metachop/decomp0.ch"
        WriteString(NameOfNode(Value(son)));
#line 288 "../metachop/decomp0.ch"
#line 288 "../metachop/decomp0.ch"
        PrintString(", ");
#line 288 "../metachop/decomp0.ch"
#line 288 "../metachop/decomp0.ch"
    }
#line 288 "../metachop/decomp0.ch"
    if ( nbParam > 99 ) {
#line 288 "../metachop/decomp0.ch"
#line 291 "../metachop/decomp0.ch"
                            WriteString(" Too many parameter for maketree");
#line 291 "../metachop/decomp0.ch"
#line 292 "../metachop/decomp0.ch"
                            nbParam = 99 ;
#line 292 "../metachop/decomp0.ch"
#line 292 "../metachop/decomp0.ch"
                          }
#line 292 "../metachop/decomp0.ch"
    sprintf(string, "%d);", nbParam);
#line 292 "../metachop/decomp0.ch"
    WriteString(string);
#line 292 "../metachop/decomp0.ch"
    LNewLine(1);
#line 292 "../metachop/decomp0.ch"
#line 292 "../metachop/decomp0.ch"
    currParam = 1 ;
#line 292 "../metachop/decomp0.ch"
    if ( !level ) 
#line 292 "../metachop/decomp0.ch"
#line 298 "../metachop/decomp0.ch"
        InitDecElem(name, nbParam);
#line 298 "../metachop/decomp0.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 298 "../metachop/decomp0.ch"
        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 298 "../metachop/decomp0.ch"
            ((ptTree=SonTree(_inter,2)),1) &&
#line 298 "../metachop/decomp0.ch"
            1),
#line 298 "../metachop/decomp0.ch"
            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 298 "../metachop/decomp0.ch"
        1);
#line 298 "../metachop/decomp0.ch"
    ;
#line 298 "../metachop/decomp0.ch"
    while ( !((!ptTree)) ) {
#line 298 "../metachop/decomp0.ch"
#line 301 "../metachop/decomp0.ch"
                                (son=(ptTree?ptTree.Nextl():(PPTREE)0));
#line 301 "../metachop/decomp0.ch"
#line 301 "../metachop/decomp0.ch"
#line 302 "../metachop/decomp0.ch"
                                if ( !(((_inter = (PPTREE)son,1) && 
#line 302 "../metachop/decomp0.ch"
                                            (NumberTree(_inter) == metachop::NIL) &&
#line 302 "../metachop/decomp0.ch"
                                            1)) && !(((_inter = (PPTREE)son,1) && 
#line 302 "../metachop/decomp0.ch"
                                                        (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 302 "../metachop/decomp0.ch"
                                                        1)) ) {
#line 302 "../metachop/decomp0.ch"
#line 303 "../metachop/decomp0.ch"
                                                                retName = Switcher(son, namePt, level + 1);
#line 303 "../metachop/decomp0.ch"
#line 304 "../metachop/decomp0.ch"
                                                                sprintf(string, "%d", currParam);
#line 304 "../metachop/decomp0.ch"
#line 305 "../metachop/decomp0.ch"
                                                                PrintString("ReplaceTree(");
#line 305 "../metachop/decomp0.ch"
#line 305 "../metachop/decomp0.ch"
                                                                WriteString(resPt);
#line 305 "../metachop/decomp0.ch"
#line 305 "../metachop/decomp0.ch"
                                                                PrintString(", ");
#line 305 "../metachop/decomp0.ch"
#line 306 "../metachop/decomp0.ch"
                                                                WriteString(string);
#line 306 "../metachop/decomp0.ch"
#line 306 "../metachop/decomp0.ch"
                                                                PrintString(", ");
#line 306 "../metachop/decomp0.ch"
#line 306 "../metachop/decomp0.ch"
                                                                WriteString(retName);
#line 306 "../metachop/decomp0.ch"
#line 307 "../metachop/decomp0.ch"
                                                                PrintString(");");
#line 307 "../metachop/decomp0.ch"
#line 307 "../metachop/decomp0.ch"
                                                                LNewLine(1);
#line 307 "../metachop/decomp0.ch"
#line 307 "../metachop/decomp0.ch"
#line 307 "../metachop/decomp0.ch"
                                                              }
#line 307 "../metachop/decomp0.ch"
#line 309 "../metachop/decomp0.ch"
                                currParam++ ;
#line 309 "../metachop/decomp0.ch"
#line 309 "../metachop/decomp0.ch"
                             }
#line 309 "../metachop/decomp0.ch"
    WriteString(name);
#line 309 "../metachop/decomp0.ch"
    PrintString(" = ");
#line 309 "../metachop/decomp0.ch"
    WriteString(resPt);
#line 309 "../metachop/decomp0.ch"
    PrintString(";");
#line 309 "../metachop/decomp0.ch"
    LNewLine(1);
#line 309 "../metachop/decomp0.ch"
#line 309 "../metachop/decomp0.ch"
    UnMark();
#line 309 "../metachop/decomp0.ch"
#line 309 "../metachop/decomp0.ch"
#line 313 "../metachop/decomp0.ch"
    PrintString("}");
#line 313 "../metachop/decomp0.ch"
#line 313 "../metachop/decomp0.ch"
    LNewLine(1);
#line 313 "../metachop/decomp0.ch"
#line 313 "../metachop/decomp0.ch"
#line 314 "../metachop/decomp0.ch"
}
#line 314 "../metachop/decomp0.ch"

#line 318 "../metachop/decomp0.ch"
#line 318 "../metachop/decomp0.ch"
void ReplaceTreeGen ( PTREE paramTree, char *name, char *mod_name, int level )
#line 318 "../metachop/decomp0.ch"
{
#line 318 "../metachop/decomp0.ch"
    register PPTREE _inter ;
#line 318 "../metachop/decomp0.ch"
#line 318 "../metachop/decomp0.ch"
#line 322 "../metachop/decomp0.ch"
    int nbParam, currParam, gennode ;
#line 322 "../metachop/decomp0.ch"
#line 323 "../metachop/decomp0.ch"
    char    string [5], namePt [10], name1Pt [10], *retName ;
#line 323 "../metachop/decomp0.ch"
#line 324 "../metachop/decomp0.ch"
    int treeType ;
#line 324 "../metachop/decomp0.ch"
#line 325 "../metachop/decomp0.ch"
    PTREE   ptTree, son, ident ;
#line 325 "../metachop/decomp0.ch"
#line 325 "../metachop/decomp0.ch"
#line 327 "../metachop/decomp0.ch"
    sprintf(namePt, "_ptTree%d", level);
#line 327 "../metachop/decomp0.ch"
#line 328 "../metachop/decomp0.ch"
    sprintf(name1Pt, "_sonTree%d", level);
#line 328 "../metachop/decomp0.ch"
#line 329 "../metachop/decomp0.ch"
    PrintString("{");
#line 329 "../metachop/decomp0.ch"
#line 329 "../metachop/decomp0.ch"
    LNewLine(1);
#line 329 "../metachop/decomp0.ch"
#line 329 "../metachop/decomp0.ch"
#line 330 "../metachop/decomp0.ch"
    Tab();
#line 330 "../metachop/decomp0.ch"
#line 330 "../metachop/decomp0.ch"
#line 332 "../metachop/decomp0.ch"
    Mark();
#line 332 "../metachop/decomp0.ch"
    PrintString("PPTREE ");
#line 332 "../metachop/decomp0.ch"
    WriteString(namePt);
#line 332 "../metachop/decomp0.ch"
    PrintString("= (PPTREE) 0,");
#line 332 "../metachop/decomp0.ch"
    WriteString(name1Pt);
#line 332 "../metachop/decomp0.ch"
    PrintString("= (PPTREE) 0 ;");
#line 332 "../metachop/decomp0.ch"
    LNewLine(1);
#line 332 "../metachop/decomp0.ch"
#line 332 "../metachop/decomp0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 332 "../metachop/decomp0.ch"
            (NumberTree(_inter) == metachop::IDENT) &&
#line 332 "../metachop/decomp0.ch"
            1) || ((_inter = (PPTREE)paramTree,1) && 
#line 332 "../metachop/decomp0.ch"
                        (NumberTree(_inter) == metachop::NIL) &&
#line 332 "../metachop/decomp0.ch"
                        1) ) {
#line 332 "../metachop/decomp0.ch"
#line 335 "../metachop/decomp0.ch"
                                PrintString("if (");
#line 335 "../metachop/decomp0.ch"
#line 335 "../metachop/decomp0.ch"
                                WriteString(namePt);
#line 335 "../metachop/decomp0.ch"
#line 335 "../metachop/decomp0.ch"
                                PrintString("= fathertree(");
#line 335 "../metachop/decomp0.ch"
#line 336 "../metachop/decomp0.ch"
                                WriteString(mod_name);
#line 336 "../metachop/decomp0.ch"
#line 336 "../metachop/decomp0.ch"
                                PrintString(")) {");
#line 336 "../metachop/decomp0.ch"
#line 336 "../metachop/decomp0.ch"
                                LNewLine(1);
#line 336 "../metachop/decomp0.ch"
#line 336 "../metachop/decomp0.ch"
#line 337 "../metachop/decomp0.ch"
                                Tab();
#line 337 "../metachop/decomp0.ch"
#line 337 "../metachop/decomp0.ch"
#line 339 "../metachop/decomp0.ch"
                                Mark();
#line 339 "../metachop/decomp0.ch"
                                PrintString("int rank = ranktree(");
#line 339 "../metachop/decomp0.ch"
                                WriteString(mod_name);
#line 339 "../metachop/decomp0.ch"
                                PrintString(");");
#line 339 "../metachop/decomp0.ch"
                                LNewLine(1);
#line 339 "../metachop/decomp0.ch"
#line 339 "../metachop/decomp0.ch"
                                PrintString("ReplaceTree(");
#line 339 "../metachop/decomp0.ch"
                                WriteString(namePt);
#line 339 "../metachop/decomp0.ch"
                                PrintString(",rank,");
#line 339 "../metachop/decomp0.ch"
                                if ( !(((_inter = (PPTREE)paramTree,1) && 
#line 339 "../metachop/decomp0.ch"
                                            (NumberTree(_inter) == metachop::NIL) &&
#line 339 "../metachop/decomp0.ch"
                                            1)) ) 
#line 339 "../metachop/decomp0.ch"
#line 343 "../metachop/decomp0.ch"
                                    decomp(paramTree);
#line 343 "../metachop/decomp0.ch"
#line 343 "../metachop/decomp0.ch"
                                else 
#line 343 "../metachop/decomp0.ch"
#line 345 "../metachop/decomp0.ch"
                                    PrintString("(PPTREE) 0 ");
#line 345 "../metachop/decomp0.ch"
                                    PrintString(");");
#line 345 "../metachop/decomp0.ch"
#line 345 "../metachop/decomp0.ch"
                                LNewLine(1);
#line 345 "../metachop/decomp0.ch"
#line 345 "../metachop/decomp0.ch"
                                UnMark();
#line 345 "../metachop/decomp0.ch"
#line 345 "../metachop/decomp0.ch"
#line 348 "../metachop/decomp0.ch"
                                PrintString("}");
#line 348 "../metachop/decomp0.ch"
#line 348 "../metachop/decomp0.ch"
                                LNewLine(1);
#line 348 "../metachop/decomp0.ch"
#line 348 "../metachop/decomp0.ch"
#line 349 "../metachop/decomp0.ch"
                                if ( name ) {
#line 349 "../metachop/decomp0.ch"
#line 350 "../metachop/decomp0.ch"
                                                WriteString(name);
#line 350 "../metachop/decomp0.ch"
#line 350 "../metachop/decomp0.ch"
                                                WriteString(" = ");
#line 350 "../metachop/decomp0.ch"
#line 351 "../metachop/decomp0.ch"
                                                if ( !(((_inter = (PPTREE)paramTree,1) && 
#line 351 "../metachop/decomp0.ch"
                                                            (NumberTree(_inter) == metachop::NIL) &&
#line 351 "../metachop/decomp0.ch"
                                                            1)) ) 
#line 351 "../metachop/decomp0.ch"
#line 352 "../metachop/decomp0.ch"
                                                    decomp(paramTree);
#line 352 "../metachop/decomp0.ch"
#line 352 "../metachop/decomp0.ch"
                                                else 
#line 352 "../metachop/decomp0.ch"
#line 354 "../metachop/decomp0.ch"
                                                    PrintString("(PPTREE) 0");
#line 354 "../metachop/decomp0.ch"
                                                    PrintString(";");
#line 354 "../metachop/decomp0.ch"
#line 354 "../metachop/decomp0.ch"
#line 355 "../metachop/decomp0.ch"
                                                LNewLine(1);
#line 355 "../metachop/decomp0.ch"
#line 355 "../metachop/decomp0.ch"
#line 355 "../metachop/decomp0.ch"
                                             }
#line 355 "../metachop/decomp0.ch"
#line 355 "../metachop/decomp0.ch"
                             } else 
#line 357 "../metachop/decomp0.ch"
    {
#line 357 "../metachop/decomp0.ch"
#line 358 "../metachop/decomp0.ch"
        ((_inter = (PPTREE)paramTree,1) && 
#line 358 "../metachop/decomp0.ch"
            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 358 "../metachop/decomp0.ch"
                ((ptTree=SonTree(_inter,2)),1) &&
#line 358 "../metachop/decomp0.ch"
                1),
#line 358 "../metachop/decomp0.ch"
                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 358 "../metachop/decomp0.ch"
            1);
#line 358 "../metachop/decomp0.ch"
        ;
#line 358 "../metachop/decomp0.ch"
#line 361 "../metachop/decomp0.ch"
        currParam = 1 ;
#line 361 "../metachop/decomp0.ch"
#line 362 "../metachop/decomp0.ch"
        sprintf(string, "%d);", currParam);
#line 362 "../metachop/decomp0.ch"
#line 363 "../metachop/decomp0.ch"
        while ( !((!ptTree)) ) {
#line 363 "../metachop/decomp0.ch"
#line 364 "../metachop/decomp0.ch"
                                    (son=(ptTree?ptTree.Nextl():(PPTREE)0));
#line 364 "../metachop/decomp0.ch"
#line 364 "../metachop/decomp0.ch"
#line 365 "../metachop/decomp0.ch"
                                    {
#line 365 "../metachop/decomp0.ch"
                                        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 365 "../metachop/decomp0.ch"
                                        _ptRes0 = MakeTree(LIST, 2);
#line 365 "../metachop/decomp0.ch"
                                        ident = _ptRes0;
#line 365 "../metachop/decomp0.ch"
                                    }
#line 365 "../metachop/decomp0.ch"
#line 365 "../metachop/decomp0.ch"
#line 366 "../metachop/decomp0.ch"
                                    if ( !(((_inter = (PPTREE)son,1) && 
#line 366 "../metachop/decomp0.ch"
                                                (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 366 "../metachop/decomp0.ch"
                                                1)) ) {
#line 366 "../metachop/decomp0.ch"
#line 367 "../metachop/decomp0.ch"
                                                        sprintf(string, "%d", currParam);
#line 367 "../metachop/decomp0.ch"
#line 368 "../metachop/decomp0.ch"
                                                        ((_inter = (PPTREE)son,1) && 
#line 368 "../metachop/decomp0.ch"
                                                            (NumberTree(_inter) == metachop::NODE_TREE) &&
#line 368 "../metachop/decomp0.ch"
                                                            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 368 "../metachop/decomp0.ch"
                                                                ((ident=SonTree(_inter,1)),1) &&
#line 368 "../metachop/decomp0.ch"
                                                                1),
#line 368 "../metachop/decomp0.ch"
                                                                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 368 "../metachop/decomp0.ch"
                                                            1);
#line 368 "../metachop/decomp0.ch"
                                                        ;
#line 368 "../metachop/decomp0.ch"
#line 369 "../metachop/decomp0.ch"
                                                        if ( !((!ident)) ) 
#line 369 "../metachop/decomp0.ch"
#line 370 "../metachop/decomp0.ch"
                                                            retName = Switcher(son, namePt, level + 1);
#line 370 "../metachop/decomp0.ch"
                                                        else 
#line 371 "../metachop/decomp0.ch"
                                                        {
#line 371 "../metachop/decomp0.ch"
#line 372 "../metachop/decomp0.ch"
                                                            WriteString(name1Pt);
#line 372 "../metachop/decomp0.ch"
#line 372 "../metachop/decomp0.ch"
                                                            PrintString(" = SonTree(");
#line 372 "../metachop/decomp0.ch"
#line 373 "../metachop/decomp0.ch"
                                                            WriteString(mod_name);
#line 373 "../metachop/decomp0.ch"
#line 373 "../metachop/decomp0.ch"
                                                            PrintString(",");
#line 373 "../metachop/decomp0.ch"
#line 374 "../metachop/decomp0.ch"
                                                            WriteString(string);
#line 374 "../metachop/decomp0.ch"
#line 374 "../metachop/decomp0.ch"
                                                            PrintString(");");
#line 374 "../metachop/decomp0.ch"
#line 374 "../metachop/decomp0.ch"
                                                            LNewLine(1);
#line 374 "../metachop/decomp0.ch"
#line 374 "../metachop/decomp0.ch"
#line 375 "../metachop/decomp0.ch"
                                                            ReplaceTreeGen(son, namePt, name1Pt, level + 1);
#line 375 "../metachop/decomp0.ch"
#line 376 "../metachop/decomp0.ch"
                                                            retName = namePt ;
#line 376 "../metachop/decomp0.ch"
#line 376 "../metachop/decomp0.ch"
                                                        }
#line 376 "../metachop/decomp0.ch"
#line 378 "../metachop/decomp0.ch"
                                                        if ( name ) {
#line 378 "../metachop/decomp0.ch"
#line 379 "../metachop/decomp0.ch"
                                                                        WriteString(name);
#line 379 "../metachop/decomp0.ch"
#line 379 "../metachop/decomp0.ch"
                                                                        WriteString(" = ");
#line 379 "../metachop/decomp0.ch"
#line 379 "../metachop/decomp0.ch"
                                                                     }
#line 379 "../metachop/decomp0.ch"
#line 381 "../metachop/decomp0.ch"
                                                        PrintString("ReplaceTree(");
#line 381 "../metachop/decomp0.ch"
#line 381 "../metachop/decomp0.ch"
                                                        WriteString(mod_name);
#line 381 "../metachop/decomp0.ch"
#line 381 "../metachop/decomp0.ch"
                                                        PrintString(", ");
#line 381 "../metachop/decomp0.ch"
#line 382 "../metachop/decomp0.ch"
                                                        WriteString(string);
#line 382 "../metachop/decomp0.ch"
#line 382 "../metachop/decomp0.ch"
                                                        PrintString(", ");
#line 382 "../metachop/decomp0.ch"
#line 383 "../metachop/decomp0.ch"
                                                        WriteString(retName);
#line 383 "../metachop/decomp0.ch"
#line 383 "../metachop/decomp0.ch"
                                                        PrintString(")");
#line 383 "../metachop/decomp0.ch"
                                                        PrintString(";");
#line 383 "../metachop/decomp0.ch"
#line 383 "../metachop/decomp0.ch"
                                                        LNewLine(1);
#line 383 "../metachop/decomp0.ch"
#line 383 "../metachop/decomp0.ch"
#line 383 "../metachop/decomp0.ch"
                                                      }
#line 383 "../metachop/decomp0.ch"
#line 385 "../metachop/decomp0.ch"
                                    currParam++ ;
#line 385 "../metachop/decomp0.ch"
#line 385 "../metachop/decomp0.ch"
                                 }
#line 385 "../metachop/decomp0.ch"
#line 385 "../metachop/decomp0.ch"
    }
#line 385 "../metachop/decomp0.ch"
    UnMark();
#line 385 "../metachop/decomp0.ch"
#line 385 "../metachop/decomp0.ch"
#line 389 "../metachop/decomp0.ch"
    PrintString("}");
#line 389 "../metachop/decomp0.ch"
#line 389 "../metachop/decomp0.ch"
    LNewLine(1);
#line 389 "../metachop/decomp0.ch"
#line 389 "../metachop/decomp0.ch"
#line 390 "../metachop/decomp0.ch"
}
#line 390 "../metachop/decomp0.ch"

#line 394 "../metachop/decomp0.ch"
#line 394 "../metachop/decomp0.ch"
void AddListGen ( PTREE paramTree, char *name, char *name_mod, int level )
#line 394 "../metachop/decomp0.ch"
{
#line 394 "../metachop/decomp0.ch"
#line 397 "../metachop/decomp0.ch"
    char    string [5];
#line 397 "../metachop/decomp0.ch"
#line 398 "../metachop/decomp0.ch"
    char    namePt [10];
#line 398 "../metachop/decomp0.ch"
#line 399 "../metachop/decomp0.ch"
    char    *nameTree ;
#line 399 "../metachop/decomp0.ch"
#line 401 "../metachop/decomp0.ch"
    sprintf(namePt, "_ptTree%d", level);
#line 401 "../metachop/decomp0.ch"
#line 402 "../metachop/decomp0.ch"
    PrintString("{");
#line 402 "../metachop/decomp0.ch"
#line 402 "../metachop/decomp0.ch"
    LNewLine(1);
#line 402 "../metachop/decomp0.ch"
#line 402 "../metachop/decomp0.ch"
#line 403 "../metachop/decomp0.ch"
    Tab();
#line 403 "../metachop/decomp0.ch"
#line 403 "../metachop/decomp0.ch"
#line 405 "../metachop/decomp0.ch"
    Mark();
#line 405 "../metachop/decomp0.ch"
    PrintString("PPTREE ");
#line 405 "../metachop/decomp0.ch"
    WriteString(namePt);
#line 405 "../metachop/decomp0.ch"
    PrintString("= (PPTREE) 0 ;");
#line 405 "../metachop/decomp0.ch"
    LNewLine(1);
#line 405 "../metachop/decomp0.ch"
#line 405 "../metachop/decomp0.ch"
    nameTree = Switcher(paramTree, namePt, level + 1);
#line 405 "../metachop/decomp0.ch"
    if ( name ) {
#line 405 "../metachop/decomp0.ch"
#line 408 "../metachop/decomp0.ch"
                    WriteString(name);
#line 408 "../metachop/decomp0.ch"
#line 408 "../metachop/decomp0.ch"
                    PrintString(" = ");
#line 408 "../metachop/decomp0.ch"
#line 408 "../metachop/decomp0.ch"
                 }
#line 408 "../metachop/decomp0.ch"
    WriteString(name_mod);
#line 408 "../metachop/decomp0.ch"
    PrintString(" = AddList( ");
#line 408 "../metachop/decomp0.ch"
    WriteString(name_mod);
#line 408 "../metachop/decomp0.ch"
    PrintString(",");
#line 408 "../metachop/decomp0.ch"
    WriteString(nameTree);
#line 408 "../metachop/decomp0.ch"
    PrintString(")");
#line 408 "../metachop/decomp0.ch"
    PrintString(";");
#line 408 "../metachop/decomp0.ch"
    LNewLine(1);
#line 408 "../metachop/decomp0.ch"
#line 408 "../metachop/decomp0.ch"
    UnMark();
#line 408 "../metachop/decomp0.ch"
#line 408 "../metachop/decomp0.ch"
#line 413 "../metachop/decomp0.ch"
    PrintString("}");
#line 413 "../metachop/decomp0.ch"
#line 413 "../metachop/decomp0.ch"
    LNewLine(1);
#line 413 "../metachop/decomp0.ch"
#line 413 "../metachop/decomp0.ch"
#line 414 "../metachop/decomp0.ch"
}
#line 414 "../metachop/decomp0.ch"

#line 419 "../metachop/decomp0.ch"
#line 419 "../metachop/decomp0.ch"
void AddListGen1 ( PTREE paramTree, char *name, char *name_mod, int level )
#line 419 "../metachop/decomp0.ch"
{
#line 419 "../metachop/decomp0.ch"
    register PPTREE _inter ;
#line 419 "../metachop/decomp0.ch"
#line 419 "../metachop/decomp0.ch"
#line 422 "../metachop/decomp0.ch"
    char    string [5];
#line 422 "../metachop/decomp0.ch"
#line 423 "../metachop/decomp0.ch"
    char    namePt [10];
#line 423 "../metachop/decomp0.ch"
#line 424 "../metachop/decomp0.ch"
    char    *nameTree ;
#line 424 "../metachop/decomp0.ch"
#line 425 "../metachop/decomp0.ch"
    PTREE   exp1, exp2 ;
#line 425 "../metachop/decomp0.ch"
#line 425 "../metachop/decomp0.ch"
#line 427 "../metachop/decomp0.ch"
    sprintf(namePt, "_ptTree%d", level);
#line 427 "../metachop/decomp0.ch"
#line 428 "../metachop/decomp0.ch"
    PrintString("{");
#line 428 "../metachop/decomp0.ch"
#line 428 "../metachop/decomp0.ch"
    LNewLine(1);
#line 428 "../metachop/decomp0.ch"
#line 428 "../metachop/decomp0.ch"
#line 429 "../metachop/decomp0.ch"
    Tab();
#line 429 "../metachop/decomp0.ch"
#line 429 "../metachop/decomp0.ch"
#line 431 "../metachop/decomp0.ch"
    Mark();
#line 431 "../metachop/decomp0.ch"
    PrintString("PPTREE ");
#line 431 "../metachop/decomp0.ch"
    WriteString(namePt);
#line 431 "../metachop/decomp0.ch"
    PrintString("= (PPTREE) 0 ;");
#line 431 "../metachop/decomp0.ch"
    LNewLine(1);
#line 431 "../metachop/decomp0.ch"
#line 431 "../metachop/decomp0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 431 "../metachop/decomp0.ch"
            (NumberTree(_inter) == metachop::MUL) &&
#line 431 "../metachop/decomp0.ch"
            ((exp1=SonTree(_inter,1)),1) &&
#line 431 "../metachop/decomp0.ch"
            ((exp2=SonTree(_inter,2)),1) &&
#line 431 "../metachop/decomp0.ch"
            1) ) {
#line 431 "../metachop/decomp0.ch"
#line 433 "../metachop/decomp0.ch"
                    AddListGen1(exp1, (char *)0, name_mod, level + 1);
#line 433 "../metachop/decomp0.ch"
#line 434 "../metachop/decomp0.ch"
                    AddListGen1(exp2, (char *)0, name_mod, level + 1);
#line 434 "../metachop/decomp0.ch"
#line 434 "../metachop/decomp0.ch"
                 } else 
#line 435 "../metachop/decomp0.ch"
    {
#line 435 "../metachop/decomp0.ch"
#line 436 "../metachop/decomp0.ch"
        nameTree = Switcher(paramTree, namePt, level + 1);
#line 436 "../metachop/decomp0.ch"
#line 437 "../metachop/decomp0.ch"
        WriteString(name_mod);
#line 437 "../metachop/decomp0.ch"
#line 437 "../metachop/decomp0.ch"
        PrintString(" =  AddList( ");
#line 437 "../metachop/decomp0.ch"
#line 437 "../metachop/decomp0.ch"
        WriteString(name_mod);
#line 437 "../metachop/decomp0.ch"
#line 438 "../metachop/decomp0.ch"
        PrintString(",");
#line 438 "../metachop/decomp0.ch"
#line 438 "../metachop/decomp0.ch"
        WriteString(nameTree);
#line 438 "../metachop/decomp0.ch"
#line 438 "../metachop/decomp0.ch"
        PrintString(");");
#line 438 "../metachop/decomp0.ch"
#line 438 "../metachop/decomp0.ch"
        LNewLine(1);
#line 438 "../metachop/decomp0.ch"
#line 438 "../metachop/decomp0.ch"
#line 438 "../metachop/decomp0.ch"
    }
#line 438 "../metachop/decomp0.ch"
    if ( name ) {
#line 438 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
                    WriteString(name);
#line 441 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
                    PrintString(" = ");
#line 441 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
                    WriteString(name_mod);
#line 441 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
                    PrintString(";");
#line 441 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 441 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
                 }
#line 441 "../metachop/decomp0.ch"
    UnMark();
#line 441 "../metachop/decomp0.ch"
#line 441 "../metachop/decomp0.ch"
#line 444 "../metachop/decomp0.ch"
    PrintString("}");
#line 444 "../metachop/decomp0.ch"
#line 444 "../metachop/decomp0.ch"
    LNewLine(1);
#line 444 "../metachop/decomp0.ch"
#line 444 "../metachop/decomp0.ch"
#line 445 "../metachop/decomp0.ch"
}
#line 445 "../metachop/decomp0.ch"

#line 450 "../metachop/decomp0.ch"
#line 450 "../metachop/decomp0.ch"
void SwitcherTop ( PTREE paramTree, char *name, int level )
#line 450 "../metachop/decomp0.ch"
{
#line 450 "../metachop/decomp0.ch"
    register PPTREE _inter ;
#line 450 "../metachop/decomp0.ch"
#line 450 "../metachop/decomp0.ch"
#line 453 "../metachop/decomp0.ch"
    PTREE   exp1 ;
#line 453 "../metachop/decomp0.ch"
#line 453 "../metachop/decomp0.ch"
#line 454 "../metachop/decomp0.ch"
    int allocated = 0 ;
#line 454 "../metachop/decomp0.ch"
#line 455 "../metachop/decomp0.ch"
    char    *pName ;
#line 455 "../metachop/decomp0.ch"
#line 457 "../metachop/decomp0.ch"
    Switcher(paramTree, name, level);
#line 457 "../metachop/decomp0.ch"
#line 458 "../metachop/decomp0.ch"
#if 0
#line 458 "../metachop/decomp0.ch"
#line 459 "../metachop/decomp0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 459 "../metachop/decomp0.ch"
            (NumberTree(_inter) == metachop::PLU_AFF) &&
#line 459 "../metachop/decomp0.ch"
            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 459 "../metachop/decomp0.ch"
                (NumberTree(_inter) == metachop::NIL) &&
#line 459 "../metachop/decomp0.ch"
                1),
#line 459 "../metachop/decomp0.ch"
                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 459 "../metachop/decomp0.ch"
            1) ) {
#line 459 "../metachop/decomp0.ch"
#line 459 "../metachop/decomp0.ch"
    _If26 : 
#line 459 "../metachop/decomp0.ch"
#line 459 "../metachop/decomp0.ch"
        ;
#line 459 "../metachop/decomp0.ch"
#line 459 "../metachop/decomp0.ch"
        goto _If27 ;
#line 459 "../metachop/decomp0.ch"
#line 459 "../metachop/decomp0.ch"
    } else 
#line 461 "../metachop/decomp0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 461 "../metachop/decomp0.ch"
            (NumberTree(_inter) == metachop::PLU_AFF) &&
#line 461 "../metachop/decomp0.ch"
            (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 461 "../metachop/decomp0.ch"
                (NumberTree(_inter) == metachop::IDENT) &&
#line 461 "../metachop/decomp0.ch"
                1),
#line 461 "../metachop/decomp0.ch"
                (_inter=_storeVal[1],1),_retVal[1]) &&
#line 461 "../metachop/decomp0.ch"
            1) ) {
#line 461 "../metachop/decomp0.ch"
#line 461 "../metachop/decomp0.ch"
    _If27 : 
#line 461 "../metachop/decomp0.ch"
#line 461 "../metachop/decomp0.ch"
        ;
#line 461 "../metachop/decomp0.ch"
#line 462 "../metachop/decomp0.ch"
        pName = name ;
#line 462 "../metachop/decomp0.ch"
#line 462 "../metachop/decomp0.ch"
    } else 
#line 464 "../metachop/decomp0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 464 "../metachop/decomp0.ch"
            (NumberTree(_inter) == metachop::EXPO_AFF) &&
#line 464 "../metachop/decomp0.ch"
            1) ) {
#line 464 "../metachop/decomp0.ch"
#line 464 "../metachop/decomp0.ch"
    _If28 : 
#line 464 "../metachop/decomp0.ch"
#line 464 "../metachop/decomp0.ch"
        ;
#line 464 "../metachop/decomp0.ch"
#line 464 "../metachop/decomp0.ch"
        ;
#line 464 "../metachop/decomp0.ch"
#line 464 "../metachop/decomp0.ch"
        goto _If29 ;
#line 464 "../metachop/decomp0.ch"
#line 464 "../metachop/decomp0.ch"
    } else 
#line 465 "../metachop/decomp0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 465 "../metachop/decomp0.ch"
            (NumberTree(_inter) == metachop::MUL_AFF) &&
#line 465 "../metachop/decomp0.ch"
            1) ) {
#line 465 "../metachop/decomp0.ch"
#line 465 "../metachop/decomp0.ch"
    _If29 : 
#line 465 "../metachop/decomp0.ch"
#line 465 "../metachop/decomp0.ch"
        ;
#line 465 "../metachop/decomp0.ch"
#line 465 "../metachop/decomp0.ch"
        ;
#line 465 "../metachop/decomp0.ch"
#line 465 "../metachop/decomp0.ch"
        goto _If30 ;
#line 465 "../metachop/decomp0.ch"
#line 465 "../metachop/decomp0.ch"
    } else 
#line 466 "../metachop/decomp0.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 466 "../metachop/decomp0.ch"
            (NumberTree(_inter) == metachop::PLU_AFF) &&
#line 466 "../metachop/decomp0.ch"
            1) ) {
#line 466 "../metachop/decomp0.ch"
#line 466 "../metachop/decomp0.ch"
    _If30 : 
#line 466 "../metachop/decomp0.ch"
#line 466 "../metachop/decomp0.ch"
        ;
#line 466 "../metachop/decomp0.ch"
#line 467 "../metachop/decomp0.ch"
        ((_inter = (PPTREE)paramTree,1) && 
#line 467 "../metachop/decomp0.ch"
            ((exp1=SonTree(_inter,1)),1) &&
#line 467 "../metachop/decomp0.ch"
            1);
#line 467 "../metachop/decomp0.ch"
        ;
#line 467 "../metachop/decomp0.ch"
#line 468 "../metachop/decomp0.ch"
        pName = AllocString(BrainyValue(exp1));
#line 468 "../metachop/decomp0.ch"
#line 469 "../metachop/decomp0.ch"
        allocated = 1 ;
#line 469 "../metachop/decomp0.ch"
#line 469 "../metachop/decomp0.ch"
    } else 
#line 471 "../metachop/decomp0.ch"
    if ( 1 ) {
#line 471 "../metachop/decomp0.ch"
#line 471 "../metachop/decomp0.ch"
    _If31 : 
#line 471 "../metachop/decomp0.ch"
#line 471 "../metachop/decomp0.ch"
        ;
#line 471 "../metachop/decomp0.ch"
#line 471 "../metachop/decomp0.ch"
        pName = name ;
#line 471 "../metachop/decomp0.ch"
#line 471 "../metachop/decomp0.ch"
    }
#line 471 "../metachop/decomp0.ch"
#line 473 "../metachop/decomp0.ch"
    if ( pName ) {
#line 473 "../metachop/decomp0.ch"
#line 474 "../metachop/decomp0.ch"
                    PrintString("{");
#line 474 "../metachop/decomp0.ch"
#line 474 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 474 "../metachop/decomp0.ch"
#line 474 "../metachop/decomp0.ch"
#line 475 "../metachop/decomp0.ch"
                    Tab();
#line 475 "../metachop/decomp0.ch"
#line 475 "../metachop/decomp0.ch"
#line 476 "../metachop/decomp0.ch"
                    Mark();
#line 476 "../metachop/decomp0.ch"
                    PrintString("PPTREE _SwitcherTree = ");
#line 476 "../metachop/decomp0.ch"
                    WriteString(pName);
#line 476 "../metachop/decomp0.ch"
                    PrintString(";");
#line 476 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 476 "../metachop/decomp0.ch"
#line 476 "../metachop/decomp0.ch"
                    Switcher(paramTree, name, level);
#line 476 "../metachop/decomp0.ch"
                    if ( strcmp(pName, "for_elem") ) {
#line 476 "../metachop/decomp0.ch"
#line 479 "../metachop/decomp0.ch"
                                                            PrintString("AddRef(");
#line 479 "../metachop/decomp0.ch"
#line 479 "../metachop/decomp0.ch"
                                                            WriteString(pName);
#line 479 "../metachop/decomp0.ch"
#line 479 "../metachop/decomp0.ch"
                                                            PrintString(");");
#line 479 "../metachop/decomp0.ch"
#line 479 "../metachop/decomp0.ch"
                                                            LNewLine(1);
#line 479 "../metachop/decomp0.ch"
#line 479 "../metachop/decomp0.ch"
#line 480 "../metachop/decomp0.ch"
                                                            PrintString("if (_SwitcherTree) FreeRef( _SwitcherTree);");
#line 480 "../metachop/decomp0.ch"
#line 480 "../metachop/decomp0.ch"
                                                            LNewLine(1);
#line 480 "../metachop/decomp0.ch"
#line 480 "../metachop/decomp0.ch"
#line 480 "../metachop/decomp0.ch"
                                                        }
#line 480 "../metachop/decomp0.ch"
                    UnMark();
#line 480 "../metachop/decomp0.ch"
#line 480 "../metachop/decomp0.ch"
#line 483 "../metachop/decomp0.ch"
                    PrintString("}");
#line 483 "../metachop/decomp0.ch"
#line 483 "../metachop/decomp0.ch"
                    LNewLine(1);
#line 483 "../metachop/decomp0.ch"
#line 483 "../metachop/decomp0.ch"
#line 483 "../metachop/decomp0.ch"
                  } else 
#line 484 "../metachop/decomp0.ch"
    {
#line 484 "../metachop/decomp0.ch"
#line 485 "../metachop/decomp0.ch"
        Switcher(paramTree, name, level);
#line 485 "../metachop/decomp0.ch"
#line 485 "../metachop/decomp0.ch"
    }
#line 485 "../metachop/decomp0.ch"
#line 487 "../metachop/decomp0.ch"
    if ( allocated ) 
#line 487 "../metachop/decomp0.ch"
#line 488 "../metachop/decomp0.ch"
        free(pName);
#line 488 "../metachop/decomp0.ch"
#endif
#line 488 "../metachop/decomp0.ch"
#line 490 "../metachop/decomp0.ch"
}
#line 490 "../metachop/decomp0.ch"
/*Well done my boy */ 
#line 490 "../metachop/decomp0.ch"

