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

extern int  equality, caseDesign, simpleCase, ifCase, condDesign, condCase, inDefine ;
extern char *ptEquality, *ptCase, *ptCond ;
extern char tabLabel [], *ptTab, *nameDefine ;
extern char stringNumb [];
extern int  nbLabel ;
extern char *currentLanguage ;

#line 42 "../metachop/decomp2.ch"
#line 42 "../metachop/decomp2.ch"
PTREE switch_el ( PTREE paramTree, int last )
#line 42 "../metachop/decomp2.ch"
{
#line 42 "../metachop/decomp2.ch"
    register PPTREE _inter ;
#line 42 "../metachop/decomp2.ch"
#line 42 "../metachop/decomp2.ch"
#line 45 "../metachop/decomp2.ch"
    PTREE   lstat, cond, list, ident, output, list_output, temporary, tree, tree1, son ;
#line 45 "../metachop/decomp2.ch"
#line 45 "../metachop/decomp2.ch"
#line 47 "../metachop/decomp2.ch"
    char    *oldPtCase, *name, *name1 ;
#line 47 "../metachop/decomp2.ch"
#line 48 "../metachop/decomp2.ch"
    int i ;
#line 48 "../metachop/decomp2.ch"
#line 51 "../metachop/decomp2.ch"
    if ( ((_inter = (PPTREE)paramTree,1) && 
#line 51 "../metachop/decomp2.ch"
            (NumberTree(_inter) == metachop::DEFAULT) &&
#line 51 "../metachop/decomp2.ch"
            ((lstat=SonTree(_inter,1)),1) &&
#line 51 "../metachop/decomp2.ch"
            1) ) {
#line 51 "../metachop/decomp2.ch"
#line 52 "../metachop/decomp2.ch"
                    PTREE   rep = (PTREE)0 ;
#line 52 "../metachop/decomp2.ch"
#line 52 "../metachop/decomp2.ch"
#line 52 "../metachop/decomp2.ch"
                    {
#line 52 "../metachop/decomp2.ch"
                        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 52 "../metachop/decomp2.ch"
                        _ptRes0 = MakeTree(metachop::CASE, 2);
#line 52 "../metachop/decomp2.ch"
                        {
#line 52 "../metachop/decomp2.ch"
                            PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 52 "../metachop/decomp2.ch"
                            _ptRes1 = MakeTree(metachop::DEF_IDENT, 0);
#line 52 "../metachop/decomp2.ch"
                            _ptTree0 = _ptRes1;
#line 52 "../metachop/decomp2.ch"
                        }
#line 52 "../metachop/decomp2.ch"
                        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 52 "../metachop/decomp2.ch"
                        ReplaceTree(_ptRes0, 2, lstat);
#line 52 "../metachop/decomp2.ch"
                        rep = _ptRes0;
#line 52 "../metachop/decomp2.ch"
                    }
#line 52 "../metachop/decomp2.ch"
#line 52 "../metachop/decomp2.ch"
#line 53 "../metachop/decomp2.ch"
                    {
#line 53 "../metachop/decomp2.ch"
                        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 53 "../metachop/decomp2.ch"
                        if (_ptTree0= fathertree(paramTree)) {
#line 53 "../metachop/decomp2.ch"
                            int rank = ranktree(paramTree);
#line 53 "../metachop/decomp2.ch"
                            ReplaceTree(_ptTree0,rank,rep);
#line 53 "../metachop/decomp2.ch"
                        }
#line 53 "../metachop/decomp2.ch"
                        paramTree = rep;
#line 53 "../metachop/decomp2.ch"
                    }
#line 53 "../metachop/decomp2.ch"
#line 53 "../metachop/decomp2.ch"
#line 53 "../metachop/decomp2.ch"
                 }
#line 53 "../metachop/decomp2.ch"
#line 55 "../metachop/decomp2.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 55 "../metachop/decomp2.ch"
        ((cond=SonTree(_inter,1)),1) &&
#line 55 "../metachop/decomp2.ch"
        ((lstat=SonTree(_inter,2)),1) &&
#line 55 "../metachop/decomp2.ch"
        1);
#line 55 "../metachop/decomp2.ch"
    ;
#line 55 "../metachop/decomp2.ch"
#line 56 "../metachop/decomp2.ch"
    if ( !ifCase ) {
#line 56 "../metachop/decomp2.ch"
#line 57 "../metachop/decomp2.ch"
                        if ( ((_inter = (PPTREE)cond,1) && 
#line 57 "../metachop/decomp2.ch"
                                (NumberTree(_inter) == metachop::IDENT) &&
#line 57 "../metachop/decomp2.ch"
                                1) ) {
#line 57 "../metachop/decomp2.ch"
#line 58 "../metachop/decomp2.ch"
                                        {
#line 58 "../metachop/decomp2.ch"
                                            /* [ metachop::DEFAULT [ META "stat_list"]]
#line 58 "../metachop/decomp2.ch"
                                            */
#line 58 "../metachop/decomp2.ch"
                                            TheConstructor(-2,MakeString("stat_list"),META,1,metachop::DEFAULT,1,-3) ;
#line 58 "../metachop/decomp2.ch"
                                            output = PopTree ;
#line 58 "../metachop/decomp2.ch"
                                            }
#line 58 "../metachop/decomp2.ch"
#line 58 "../metachop/decomp2.ch"
#line 58 "../metachop/decomp2.ch"
                                     } else 
#line 59 "../metachop/decomp2.ch"
                        if ( ((_inter = (PPTREE)cond,1) && 
#line 59 "../metachop/decomp2.ch"
                                (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 59 "../metachop/decomp2.ch"
                                1) ) {
#line 59 "../metachop/decomp2.ch"
#line 60 "../metachop/decomp2.ch"
                                        {
#line 60 "../metachop/decomp2.ch"
                                            /* [ metachop::DEFAULT [ META "stat_list"]]
#line 60 "../metachop/decomp2.ch"
                                            */
#line 60 "../metachop/decomp2.ch"
                                            TheConstructor(-2,MakeString("stat_list"),META,1,metachop::DEFAULT,1,-3) ;
#line 60 "../metachop/decomp2.ch"
                                            output = PopTree ;
#line 60 "../metachop/decomp2.ch"
                                            }
#line 60 "../metachop/decomp2.ch"
#line 60 "../metachop/decomp2.ch"
#line 60 "../metachop/decomp2.ch"
                                     } else 
#line 61 "../metachop/decomp2.ch"
                        {
#line 61 "../metachop/decomp2.ch"
#line 62 "../metachop/decomp2.ch"
                            ((_inter = (PPTREE)cond,1) && 
#line 62 "../metachop/decomp2.ch"
                                (NumberTree(_inter) == metachop::AFF) &&
#line 62 "../metachop/decomp2.ch"
                                ((cond=SonTree(_inter,2)),1) &&
#line 62 "../metachop/decomp2.ch"
                                1);
#line 62 "../metachop/decomp2.ch"
                            ;
#line 62 "../metachop/decomp2.ch"
#line 63 "../metachop/decomp2.ch"
                            {
#line 63 "../metachop/decomp2.ch"
                                /* [ metachop::CASE
                                    [ META "cond"]
                                    [ META "stat_list"]
                                   ]
#line 63 "../metachop/decomp2.ch"
                                */
#line 63 "../metachop/decomp2.ch"
                                TheConstructor(-2,MakeString("cond"),META,1,-2,MakeString("stat_list"),META,1,metachop::CASE,2,-3) ;
#line 63 "../metachop/decomp2.ch"
                                output = PopTree ;
#line 63 "../metachop/decomp2.ch"
                                }
#line 63 "../metachop/decomp2.ch"
#line 63 "../metachop/decomp2.ch"
#line 64 "../metachop/decomp2.ch"
                            if ( ((_inter = (PPTREE)cond,1) && 
#line 64 "../metachop/decomp2.ch"
                                    (NumberTree(_inter) == metachop::NODE_LIST) &&
#line 64 "../metachop/decomp2.ch"
                                    1) ) {
#line 64 "../metachop/decomp2.ch"
#line 64 "../metachop/decomp2.ch"
                            _If0 : 
#line 64 "../metachop/decomp2.ch"
#line 64 "../metachop/decomp2.ch"
                                ;
#line 64 "../metachop/decomp2.ch"
#line 66 "../metachop/decomp2.ch"
                                {
#line 66 "../metachop/decomp2.ch"
                                    PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 66 "../metachop/decomp2.ch"
                                    _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 66 "../metachop/decomp2.ch"
                                    _ptTree0 = MakeString("LIST") ;
#line 66 "../metachop/decomp2.ch"
                                    ReplaceTree(_ptRes0, 1, _ptTree0);
#line 66 "../metachop/decomp2.ch"
                                    tree = _ptRes0;
#line 66 "../metachop/decomp2.ch"
                                }
#line 66 "../metachop/decomp2.ch"
#line 66 "../metachop/decomp2.ch"
#line 67 "../metachop/decomp2.ch"
                                metarep("cond", output, tree);
#line 67 "../metachop/decomp2.ch"
#line 67 "../metachop/decomp2.ch"
                            } else 
#line 69 "../metachop/decomp2.ch"
                            if ( ((_inter = (PPTREE)cond,1) && 
#line 69 "../metachop/decomp2.ch"
                                    (NumberTree(_inter) == metachop::NODE_TREE) &&
#line 69 "../metachop/decomp2.ch"
                                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 69 "../metachop/decomp2.ch"
                                        (NumberTree(_inter) == LIST) &&
#line 69 "../metachop/decomp2.ch"
                                        (_retVal[2]=((_storeVal[2]=_inter,_inter=SonTree(_inter,1),(tree=_inter),1) &&
#line 69 "../metachop/decomp2.ch"
                                            (NumberTree(_inter) == metachop::IDENT) &&
#line 69 "../metachop/decomp2.ch"
                                            1),
#line 69 "../metachop/decomp2.ch"
                                            (_inter=_storeVal[2],1),_retVal[2]) &&
#line 69 "../metachop/decomp2.ch"
                                        1),
#line 69 "../metachop/decomp2.ch"
                                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 69 "../metachop/decomp2.ch"
                                    1) ) {
#line 69 "../metachop/decomp2.ch"
#line 69 "../metachop/decomp2.ch"
                            _If1 : 
#line 69 "../metachop/decomp2.ch"
#line 69 "../metachop/decomp2.ch"
                                ;
#line 69 "../metachop/decomp2.ch"
#line 70 "../metachop/decomp2.ch"
                                if ( cplusGen ) 
#line 70 "../metachop/decomp2.ch"
#line 71 "../metachop/decomp2.ch"
                                    {
#line 71 "../metachop/decomp2.ch"
                                        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 71 "../metachop/decomp2.ch"
                                        _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 71 "../metachop/decomp2.ch"
                                        _ptTree0 = StoreRef(MakeString(NameOfNodePlus(Value(tree))));
#line 71 "../metachop/decomp2.ch"
                                        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 71 "../metachop/decomp2.ch"
                                        tree = _ptRes0;
#line 71 "../metachop/decomp2.ch"
                                    }
#line 71 "../metachop/decomp2.ch"
#line 71 "../metachop/decomp2.ch"
                                else 
#line 71 "../metachop/decomp2.ch"
#line 74 "../metachop/decomp2.ch"
                                    {
#line 74 "../metachop/decomp2.ch"
                                        PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 74 "../metachop/decomp2.ch"
                                        _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 74 "../metachop/decomp2.ch"
                                        _ptTree0 = StoreRef(MakeString(NameOfNode(Value(tree))));
#line 74 "../metachop/decomp2.ch"
                                        ReplaceTree(_ptRes0, 1, _ptTree0);
#line 74 "../metachop/decomp2.ch"
                                        tree = _ptRes0;
#line 74 "../metachop/decomp2.ch"
                                    }
#line 74 "../metachop/decomp2.ch"
#line 74 "../metachop/decomp2.ch"
#line 74 "../metachop/decomp2.ch"
#line 75 "../metachop/decomp2.ch"
                                metarep("cond", output, tree);
#line 75 "../metachop/decomp2.ch"
#line 75 "../metachop/decomp2.ch"
                            }
#line 75 "../metachop/decomp2.ch"
#line 75 "../metachop/decomp2.ch"
                        }
#line 75 "../metachop/decomp2.ch"
#line 79 "../metachop/decomp2.ch"
                        list_output = (PPTREE) 0 ;
#line 79 "../metachop/decomp2.ch"
#line 79 "../metachop/decomp2.ch"
#line 80 "../metachop/decomp2.ch"
                        ((_inter = (PPTREE)paramTree,1) && 
#line 80 "../metachop/decomp2.ch"
                            ((cond=SonTree(_inter,1)),1) &&
#line 80 "../metachop/decomp2.ch"
                            1);
#line 80 "../metachop/decomp2.ch"
                        ;
#line 80 "../metachop/decomp2.ch"
#line 81 "../metachop/decomp2.ch"
                        if ( (((_inter = (PPTREE)cond,1) && 
#line 81 "../metachop/decomp2.ch"
                                    (NumberTree(_inter) == metachop::IDENT) &&
#line 81 "../metachop/decomp2.ch"
                                    1)&& (ident = cond)) || ((_inter = (PPTREE)cond,1) && 
#line 81 "../metachop/decomp2.ch"
                                                                (NumberTree(_inter) == metachop::AFF) &&
#line 81 "../metachop/decomp2.ch"
                                                                ((ident=SonTree(_inter,1)),1) &&
#line 81 "../metachop/decomp2.ch"
                                                                ((cond=SonTree(_inter,2)),1) &&
#line 81 "../metachop/decomp2.ch"
                                                                1) ) {
#line 81 "../metachop/decomp2.ch"
#line 82 "../metachop/decomp2.ch"
                                                                        {
#line 82 "../metachop/decomp2.ch"
PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 82 "../metachop/decomp2.ch"
_ptRes0 = MakeTree(metachop::IDENT, 1);
#line 82 "../metachop/decomp2.ch"
_ptTree0 = StoreRef(MakeString(ptCase));
#line 82 "../metachop/decomp2.ch"
ReplaceTree(_ptRes0, 1, _ptTree0);
#line 82 "../metachop/decomp2.ch"
tree1 = _ptRes0;
#line 82 "../metachop/decomp2.ch"
                                                                        }
#line 82 "../metachop/decomp2.ch"
#line 82 "../metachop/decomp2.ch"
#line 83 "../metachop/decomp2.ch"
                                                                        {
#line 83 "../metachop/decomp2.ch"
PPTREE _ptTree0= (PPTREE) 0 ;
#line 83 "../metachop/decomp2.ch"
{
#line 83 "../metachop/decomp2.ch"
    PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 83 "../metachop/decomp2.ch"
    _ptRes1 = MakeTree(metachop::AFF, 2);
#line 83 "../metachop/decomp2.ch"
    ReplaceTree(_ptRes1, 1, ident);
#line 83 "../metachop/decomp2.ch"
    ReplaceTree(_ptRes1, 2, tree1);
#line 83 "../metachop/decomp2.ch"
    _ptTree0 = _ptRes1;
#line 83 "../metachop/decomp2.ch"
}
#line 83 "../metachop/decomp2.ch"
list_output =  AddList( list_output,_ptTree0);
#line 83 "../metachop/decomp2.ch"
                                                                        }
#line 83 "../metachop/decomp2.ch"
#line 83 "../metachop/decomp2.ch"
#line 83 "../metachop/decomp2.ch"
                                                                     }
#line 83 "../metachop/decomp2.ch"
#line 85 "../metachop/decomp2.ch"
                        if ( ((_inter = (PPTREE)cond,1) && 
#line 85 "../metachop/decomp2.ch"
                                (NumberTree(_inter) == metachop::NODE_TREE) &&
#line 85 "../metachop/decomp2.ch"
                                ((list=SonTree(_inter,1)),1) &&
#line 85 "../metachop/decomp2.ch"
                                1) && !((!list)) ) {
#line 85 "../metachop/decomp2.ch"
#line 86 "../metachop/decomp2.ch"
                                                        i = 1 ;
#line 86 "../metachop/decomp2.ch"
#line 87 "../metachop/decomp2.ch"
                                                        (list?list.Nextl():(PPTREE)0);
#line 87 "../metachop/decomp2.ch"
#line 88 "../metachop/decomp2.ch"
                                                        while ( !((!list)) ) {
#line 88 "../metachop/decomp2.ch"
#line 89 "../metachop/decomp2.ch"
if ( ((_inter = (PPTREE)list,1) && 
#line 89 "../metachop/decomp2.ch"
        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 89 "../metachop/decomp2.ch"
            (NumberTree(_inter) == metachop::AFF) &&
#line 89 "../metachop/decomp2.ch"
            ((ident=SonTree(_inter,1)),1) &&
#line 89 "../metachop/decomp2.ch"
            1),
#line 89 "../metachop/decomp2.ch"
            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 89 "../metachop/decomp2.ch"
        1) || ((_inter = (PPTREE)list,1) && 
#line 89 "../metachop/decomp2.ch"
                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),(ident=_inter),1) &&
#line 89 "../metachop/decomp2.ch"
                        (NumberTree(_inter) == metachop::IDENT) &&
#line 89 "../metachop/decomp2.ch"
                        1),
#line 89 "../metachop/decomp2.ch"
                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 89 "../metachop/decomp2.ch"
                    1) ) {
#line 89 "../metachop/decomp2.ch"
#line 90 "../metachop/decomp2.ch"
                            {
#line 90 "../metachop/decomp2.ch"
                                /* [ metachop::AFF
                                    [ META "aff1"]
                                    [ metachop::EXP_LIST
                                        [ metachop::IDENT "SonTree"]
                                        [ metachop::EXP_SEQ
                                            [ LIST 
                                                [ META "var1"]
                                                [ META "var2"]
                                            ]
                                        ]
                                    ]
                                   ]
#line 90 "../metachop/decomp2.ch"
                                */
#line 90 "../metachop/decomp2.ch"
                                TheConstructor(-2,MakeString("aff1"),META,1,-2,MakeString("SonTree"),metachop::IDENT,1,
#line 90 "../metachop/decomp2.ch"
                                    -2,MakeString("var1"),META,1,-2,MakeString("var2"),META,1,-4,LIST,2,LIST,2,metachop::EXP_SEQ,1,metachop::EXP_LIST,2,metachop::AFF,2,-3) ;
#line 90 "../metachop/decomp2.ch"
                                temporary = PopTree ;
#line 90 "../metachop/decomp2.ch"
                                }
#line 90 "../metachop/decomp2.ch"
#line 90 "../metachop/decomp2.ch"
#line 91 "../metachop/decomp2.ch"
                            metarep("aff1", temporary, ident);
#line 91 "../metachop/decomp2.ch"
#line 92 "../metachop/decomp2.ch"
                            {
#line 92 "../metachop/decomp2.ch"
                                PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 92 "../metachop/decomp2.ch"
                                _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 92 "../metachop/decomp2.ch"
                                _ptTree0 = StoreRef(MakeString(ptCase));
#line 92 "../metachop/decomp2.ch"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 92 "../metachop/decomp2.ch"
                                tree1 = _ptRes0;
#line 92 "../metachop/decomp2.ch"
                            }
#line 92 "../metachop/decomp2.ch"
#line 92 "../metachop/decomp2.ch"
#line 93 "../metachop/decomp2.ch"
                            metarep("var1", temporary, tree1);
#line 93 "../metachop/decomp2.ch"
#line 94 "../metachop/decomp2.ch"
                            itoa(i, stringNumb, 10);
#line 94 "../metachop/decomp2.ch"
#line 95 "../metachop/decomp2.ch"
                            {
#line 95 "../metachop/decomp2.ch"
                                PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 95 "../metachop/decomp2.ch"
                                _ptRes0 = MakeTree(metachop::INTEGER, 1);
#line 95 "../metachop/decomp2.ch"
                                _ptTree0 = StoreRef(MakeString(stringNumb));
#line 95 "../metachop/decomp2.ch"
                                ReplaceTree(_ptRes0, 1, _ptTree0);
#line 95 "../metachop/decomp2.ch"
                                tree1 = _ptRes0;
#line 95 "../metachop/decomp2.ch"
                            }
#line 95 "../metachop/decomp2.ch"
#line 95 "../metachop/decomp2.ch"
#line 96 "../metachop/decomp2.ch"
                            metarep("var2", temporary, tree1);
#line 96 "../metachop/decomp2.ch"
#line 97 "../metachop/decomp2.ch"
                            {
#line 97 "../metachop/decomp2.ch"
                                PPTREE _ptTree0= (PPTREE) 0 ;
#line 97 "../metachop/decomp2.ch"
                                list_output =  AddList( list_output,temporary);
#line 97 "../metachop/decomp2.ch"
                            }
#line 97 "../metachop/decomp2.ch"
#line 97 "../metachop/decomp2.ch"
#line 97 "../metachop/decomp2.ch"
                         }
#line 97 "../metachop/decomp2.ch"
#line 99 "../metachop/decomp2.ch"
i++ ;
#line 99 "../metachop/decomp2.ch"
#line 100 "../metachop/decomp2.ch"
(list?list.Nextl():(PPTREE)0);
#line 100 "../metachop/decomp2.ch"
#line 100 "../metachop/decomp2.ch"
                                                                               }
#line 100 "../metachop/decomp2.ch"
#line 100 "../metachop/decomp2.ch"
                                                     }
#line 100 "../metachop/decomp2.ch"
#line 103 "../metachop/decomp2.ch"
                        {
#line 103 "../metachop/decomp2.ch"
                            /* [ metachop::LABEL
                                [ META "label"]
                                [ metachop::STAT_VOID ]
                               ]
#line 103 "../metachop/decomp2.ch"
                            */
#line 103 "../metachop/decomp2.ch"
                            TheConstructor(-2,MakeString("label"),META,1,metachop::STAT_VOID,0,metachop::LABEL,2,-3) ;
#line 103 "../metachop/decomp2.ch"
                            temporary = PopTree ;
#line 103 "../metachop/decomp2.ch"
                            }
#line 103 "../metachop/decomp2.ch"
#line 103 "../metachop/decomp2.ch"
#line 104 "../metachop/decomp2.ch"
                        strcpy(stringNumb, "_Case");
#line 104 "../metachop/decomp2.ch"
#line 105 "../metachop/decomp2.ch"
                        itoa(nbLabel++, stringNumb + 5, 10);
#line 105 "../metachop/decomp2.ch"
#line 106 "../metachop/decomp2.ch"
                        {
#line 106 "../metachop/decomp2.ch"
                            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 106 "../metachop/decomp2.ch"
                            _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 106 "../metachop/decomp2.ch"
                            _ptTree0 = StoreRef(MakeString(stringNumb));
#line 106 "../metachop/decomp2.ch"
                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 106 "../metachop/decomp2.ch"
                            tree1 = _ptRes0;
#line 106 "../metachop/decomp2.ch"
                        }
#line 106 "../metachop/decomp2.ch"
#line 106 "../metachop/decomp2.ch"
#line 107 "../metachop/decomp2.ch"
                        metarep("label", temporary, tree1);
#line 107 "../metachop/decomp2.ch"
#line 108 "../metachop/decomp2.ch"
                        {
#line 108 "../metachop/decomp2.ch"
                            PPTREE _ptTree0= (PPTREE) 0 ;
#line 108 "../metachop/decomp2.ch"
                            list_output =  AddList( list_output,temporary);
#line 108 "../metachop/decomp2.ch"
                        }
#line 108 "../metachop/decomp2.ch"
#line 108 "../metachop/decomp2.ch"
#line 109 "../metachop/decomp2.ch"
                        son = (PPTREE) 0 ;
#line 109 "../metachop/decomp2.ch"
#line 109 "../metachop/decomp2.ch"
#line 110 "../metachop/decomp2.ch"
                        while ( !((!lstat)) ) {
#line 110 "../metachop/decomp2.ch"
#line 111 "../metachop/decomp2.ch"
                                                    (son=(lstat?lstat.Nextl():(PPTREE)0));
#line 111 "../metachop/decomp2.ch"
#line 111 "../metachop/decomp2.ch"
#line 112 "../metachop/decomp2.ch"
                                                    {
#line 112 "../metachop/decomp2.ch"
                                                        PPTREE _ptTree0= (PPTREE) 0 ;
#line 112 "../metachop/decomp2.ch"
                                                        list_output =  AddList( list_output,son);
#line 112 "../metachop/decomp2.ch"
                                                    }
#line 112 "../metachop/decomp2.ch"
#line 112 "../metachop/decomp2.ch"
#line 112 "../metachop/decomp2.ch"
                                                }
#line 112 "../metachop/decomp2.ch"
#line 114 "../metachop/decomp2.ch"
                        if ( !(((_inter = (PPTREE)son,1) && 
#line 114 "../metachop/decomp2.ch"
                                    (NumberTree(_inter) == metachop::BREAK) &&
#line 114 "../metachop/decomp2.ch"
                                    1)) && !last ) {
#line 114 "../metachop/decomp2.ch"
#line 115 "../metachop/decomp2.ch"
                                                        strcpy(stringNumb, "_Case");
#line 115 "../metachop/decomp2.ch"
#line 116 "../metachop/decomp2.ch"
                                                        itoa(nbLabel, stringNumb + 5, 10);
#line 116 "../metachop/decomp2.ch"
#line 117 "../metachop/decomp2.ch"
                                                        {
#line 117 "../metachop/decomp2.ch"
                                                            PPTREE _ptTree0= (PPTREE) 0 ;
#line 117 "../metachop/decomp2.ch"
                                                            {
#line 117 "../metachop/decomp2.ch"
                                                                PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 117 "../metachop/decomp2.ch"
                                                                _ptRes1 = MakeTree(metachop::GOTO, 1);
#line 117 "../metachop/decomp2.ch"
                                                                {
#line 117 "../metachop/decomp2.ch"
                                                                    PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 117 "../metachop/decomp2.ch"
                                                                    _ptRes2 = MakeTree(metachop::IDENT, 1);
#line 117 "../metachop/decomp2.ch"
                                                                    _ptTree2 = StoreRef(MakeString(stringNumb));
#line 117 "../metachop/decomp2.ch"
                                                                    ReplaceTree(_ptRes2, 1, _ptTree2);
#line 117 "../metachop/decomp2.ch"
                                                                    _ptTree1 = _ptRes2;
#line 117 "../metachop/decomp2.ch"
                                                                }
#line 117 "../metachop/decomp2.ch"
                                                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 117 "../metachop/decomp2.ch"
                                                                _ptTree0 = _ptRes1;
#line 117 "../metachop/decomp2.ch"
                                                            }
#line 117 "../metachop/decomp2.ch"
                                                            list_output =  AddList( list_output,_ptTree0);
#line 117 "../metachop/decomp2.ch"
                                                        }
#line 117 "../metachop/decomp2.ch"
#line 117 "../metachop/decomp2.ch"
#line 117 "../metachop/decomp2.ch"
                                                     }
#line 117 "../metachop/decomp2.ch"
#line 119 "../metachop/decomp2.ch"
                        metarep("stat_list", output, list_output);
#line 119 "../metachop/decomp2.ch"
#line 119 "../metachop/decomp2.ch"
                     } else 
#line 120 "../metachop/decomp2.ch"
    {
#line 120 "../metachop/decomp2.ch"
#line 121 "../metachop/decomp2.ch"
        list_output = (PPTREE) 0 ;
#line 121 "../metachop/decomp2.ch"
#line 121 "../metachop/decomp2.ch"
#line 122 "../metachop/decomp2.ch"
        {
#line 122 "../metachop/decomp2.ch"
            /* [ metachop::IF
                [ META "cond"]
                [ META "stat"]
                [ NIL ] 
               ]
#line 122 "../metachop/decomp2.ch"
            */
#line 122 "../metachop/decomp2.ch"
            TheConstructor(-2,MakeString("cond"),META,1,-2,MakeString("stat"),META,1,-4,metachop::IF,3,-3) ;
#line 122 "../metachop/decomp2.ch"
            output = PopTree ;
#line 122 "../metachop/decomp2.ch"
            }
#line 122 "../metachop/decomp2.ch"
#line 122 "../metachop/decomp2.ch"
#line 123 "../metachop/decomp2.ch"
        if ( ((_inter = (PPTREE)cond,1) && 
#line 123 "../metachop/decomp2.ch"
                (NumberTree(_inter) == metachop::IDENT) &&
#line 123 "../metachop/decomp2.ch"
                1) || ((_inter = (PPTREE)cond,1) && 
#line 123 "../metachop/decomp2.ch"
                            (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 123 "../metachop/decomp2.ch"
                            1) || ((_inter = (PPTREE)cond,1) && 
#line 123 "../metachop/decomp2.ch"
                                        (NumberTree(_inter) == metachop::AFF) &&
#line 123 "../metachop/decomp2.ch"
                                        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 123 "../metachop/decomp2.ch"
                                            (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 123 "../metachop/decomp2.ch"
                                            1),
#line 123 "../metachop/decomp2.ch"
                                            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 123 "../metachop/decomp2.ch"
                                        1) ) {
#line 123 "../metachop/decomp2.ch"
#line 126 "../metachop/decomp2.ch"
                                                {
#line 126 "../metachop/decomp2.ch"
                                                    /* [ metachop::INTEGER "1"]
#line 126 "../metachop/decomp2.ch"
                                                    */
#line 126 "../metachop/decomp2.ch"
                                                    TheConstructor(-2,MakeString("1"),metachop::INTEGER,1,-3) ;
#line 126 "../metachop/decomp2.ch"
                                                    temporary = PopTree ;
#line 126 "../metachop/decomp2.ch"
                                                    }
#line 126 "../metachop/decomp2.ch"
#line 126 "../metachop/decomp2.ch"
#line 127 "../metachop/decomp2.ch"
                                                metarep("cond", output, temporary);
#line 127 "../metachop/decomp2.ch"
#line 127 "../metachop/decomp2.ch"
                                             } else 
#line 128 "../metachop/decomp2.ch"
        {
#line 128 "../metachop/decomp2.ch"
#line 129 "../metachop/decomp2.ch"
            ((_inter = (PPTREE)cond,1) && 
#line 129 "../metachop/decomp2.ch"
                (NumberTree(_inter) == metachop::AFF) &&
#line 129 "../metachop/decomp2.ch"
                ((cond=SonTree(_inter,2)),1) &&
#line 129 "../metachop/decomp2.ch"
                1);
#line 129 "../metachop/decomp2.ch"
            ;
#line 129 "../metachop/decomp2.ch"
#line 130 "../metachop/decomp2.ch"
            metarep("cond", output, cond);
#line 130 "../metachop/decomp2.ch"
#line 131 "../metachop/decomp2.ch"
            condDesign = 0 ;
#line 131 "../metachop/decomp2.ch"
#line 131 "../metachop/decomp2.ch"
        }
#line 131 "../metachop/decomp2.ch"
#line 133 "../metachop/decomp2.ch"
        ((_inter = (PPTREE)paramTree,1) && 
#line 133 "../metachop/decomp2.ch"
            ((cond=SonTree(_inter,1)),1) &&
#line 133 "../metachop/decomp2.ch"
            1);
#line 133 "../metachop/decomp2.ch"
        ;
#line 133 "../metachop/decomp2.ch"
#line 134 "../metachop/decomp2.ch"
        if ( (((_inter = (PPTREE)cond,1) && 
#line 134 "../metachop/decomp2.ch"
                    (NumberTree(_inter) == metachop::IDENT) &&
#line 134 "../metachop/decomp2.ch"
                    1)&& (ident = cond)) || ((_inter = (PPTREE)cond,1) && 
#line 134 "../metachop/decomp2.ch"
                                                (NumberTree(_inter) == metachop::AFF) &&
#line 134 "../metachop/decomp2.ch"
                                                ((ident=SonTree(_inter,1)),1) &&
#line 134 "../metachop/decomp2.ch"
                                                1) ) {
#line 134 "../metachop/decomp2.ch"
#line 137 "../metachop/decomp2.ch"
                                                        {
#line 137 "../metachop/decomp2.ch"
                                                            /* [ metachop::AFF
                                                                [ META "ident"]
                                                                [ META "value"]
                                                               ]
#line 137 "../metachop/decomp2.ch"
                                                            */
#line 137 "../metachop/decomp2.ch"
                                                            TheConstructor(-2,MakeString("ident"),META,1,-2,MakeString("value"),META,1,metachop::AFF,2,-3) ;
#line 137 "../metachop/decomp2.ch"
                                                            temporary = PopTree ;
#line 137 "../metachop/decomp2.ch"
                                                            }
#line 137 "../metachop/decomp2.ch"
#line 137 "../metachop/decomp2.ch"
#line 138 "../metachop/decomp2.ch"
                                                        metarep("ident", temporary, ident);
#line 138 "../metachop/decomp2.ch"
#line 139 "../metachop/decomp2.ch"
                                                        {
#line 139 "../metachop/decomp2.ch"
                                                            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 139 "../metachop/decomp2.ch"
                                                            _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 139 "../metachop/decomp2.ch"
                                                            _ptTree0 = StoreRef(MakeString(ptCase));
#line 139 "../metachop/decomp2.ch"
                                                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 139 "../metachop/decomp2.ch"
                                                            ident = _ptRes0;
#line 139 "../metachop/decomp2.ch"
                                                        }
#line 139 "../metachop/decomp2.ch"
#line 139 "../metachop/decomp2.ch"
#line 140 "../metachop/decomp2.ch"
                                                        metarep("value", temporary, ident);
#line 140 "../metachop/decomp2.ch"
#line 141 "../metachop/decomp2.ch"
                                                        {
#line 141 "../metachop/decomp2.ch"
                                                            PPTREE _ptTree0= (PPTREE) 0 ;
#line 141 "../metachop/decomp2.ch"
                                                            list_output =  AddList( list_output,temporary);
#line 141 "../metachop/decomp2.ch"
                                                        }
#line 141 "../metachop/decomp2.ch"
#line 141 "../metachop/decomp2.ch"
#line 141 "../metachop/decomp2.ch"
                                                     }
#line 141 "../metachop/decomp2.ch"
#line 143 "../metachop/decomp2.ch"
        {
#line 143 "../metachop/decomp2.ch"
            /* [ metachop::LABEL
                [ META "label"]
                [ metachop::STAT_VOID ]
               ]
#line 143 "../metachop/decomp2.ch"
            */
#line 143 "../metachop/decomp2.ch"
            TheConstructor(-2,MakeString("label"),META,1,metachop::STAT_VOID,0,metachop::LABEL,2,-3) ;
#line 143 "../metachop/decomp2.ch"
            temporary = PopTree ;
#line 143 "../metachop/decomp2.ch"
            }
#line 143 "../metachop/decomp2.ch"
#line 143 "../metachop/decomp2.ch"
#line 144 "../metachop/decomp2.ch"
        strcpy(stringNumb, "_If");
#line 144 "../metachop/decomp2.ch"
#line 145 "../metachop/decomp2.ch"
        itoa(nbLabel++, stringNumb + 3, 10);
#line 145 "../metachop/decomp2.ch"
#line 146 "../metachop/decomp2.ch"
        {
#line 146 "../metachop/decomp2.ch"
            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 146 "../metachop/decomp2.ch"
            _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 146 "../metachop/decomp2.ch"
            _ptTree0 = StoreRef(MakeString(stringNumb));
#line 146 "../metachop/decomp2.ch"
            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 146 "../metachop/decomp2.ch"
            tree1 = _ptRes0;
#line 146 "../metachop/decomp2.ch"
        }
#line 146 "../metachop/decomp2.ch"
#line 146 "../metachop/decomp2.ch"
#line 147 "../metachop/decomp2.ch"
        metarep("label", temporary, tree1);
#line 147 "../metachop/decomp2.ch"
#line 148 "../metachop/decomp2.ch"
        {
#line 148 "../metachop/decomp2.ch"
            PPTREE _ptTree0= (PPTREE) 0 ;
#line 148 "../metachop/decomp2.ch"
            list_output =  AddList( list_output,temporary);
#line 148 "../metachop/decomp2.ch"
        }
#line 148 "../metachop/decomp2.ch"
#line 148 "../metachop/decomp2.ch"
#line 149 "../metachop/decomp2.ch"
        temporary = (PPTREE) 0 ;
#line 149 "../metachop/decomp2.ch"
#line 149 "../metachop/decomp2.ch"
#line 152 "../metachop/decomp2.ch"
        while ( !((!lstat)) ) {
#line 152 "../metachop/decomp2.ch"
#line 153 "../metachop/decomp2.ch"
                                    (temporary=(lstat?lstat.Nextl():(PPTREE)0));
#line 153 "../metachop/decomp2.ch"
#line 153 "../metachop/decomp2.ch"
#line 154 "../metachop/decomp2.ch"
                                    if ( !((!lstat)) ) 
#line 154 "../metachop/decomp2.ch"
#line 155 "../metachop/decomp2.ch"
                                        {
#line 155 "../metachop/decomp2.ch"
                                            PPTREE _ptTree0= (PPTREE) 0 ;
#line 155 "../metachop/decomp2.ch"
                                            list_output =  AddList( list_output,temporary);
#line 155 "../metachop/decomp2.ch"
                                        }
#line 155 "../metachop/decomp2.ch"
#line 155 "../metachop/decomp2.ch"
#line 155 "../metachop/decomp2.ch"
                                }
#line 155 "../metachop/decomp2.ch"
#line 159 "../metachop/decomp2.ch"
        if ( !(((_inter = (PPTREE)temporary,1) && 
#line 159 "../metachop/decomp2.ch"
                    (NumberTree(_inter) == metachop::BREAK) &&
#line 159 "../metachop/decomp2.ch"
                    1)) && !last ) {
#line 159 "../metachop/decomp2.ch"
#line 160 "../metachop/decomp2.ch"
                                        if ( temporary ) 
#line 160 "../metachop/decomp2.ch"
#line 161 "../metachop/decomp2.ch"
                                            {
#line 161 "../metachop/decomp2.ch"
                                                PPTREE _ptTree0= (PPTREE) 0 ;
#line 161 "../metachop/decomp2.ch"
                                                list_output =  AddList( list_output,temporary);
#line 161 "../metachop/decomp2.ch"
                                            }
#line 161 "../metachop/decomp2.ch"
#line 161 "../metachop/decomp2.ch"
#line 162 "../metachop/decomp2.ch"
                                        strcpy(stringNumb, "_If");
#line 162 "../metachop/decomp2.ch"
#line 163 "../metachop/decomp2.ch"
                                        itoa(nbLabel, stringNumb + 3, 10);
#line 163 "../metachop/decomp2.ch"
#line 164 "../metachop/decomp2.ch"
                                        {
#line 164 "../metachop/decomp2.ch"
                                            PPTREE _ptTree0= (PPTREE) 0 ;
#line 164 "../metachop/decomp2.ch"
                                            {
#line 164 "../metachop/decomp2.ch"
                                                PPTREE _ptTree1= (PPTREE) 0,_ptRes1= (PPTREE) 0;
#line 164 "../metachop/decomp2.ch"
                                                _ptRes1 = MakeTree(metachop::GOTO, 1);
#line 164 "../metachop/decomp2.ch"
                                                {
#line 164 "../metachop/decomp2.ch"
                                                    PPTREE _ptTree2= (PPTREE) 0,_ptRes2= (PPTREE) 0;
#line 164 "../metachop/decomp2.ch"
                                                    _ptRes2 = MakeTree(metachop::IDENT, 1);
#line 164 "../metachop/decomp2.ch"
                                                    _ptTree2 = StoreRef(MakeString(stringNumb));
#line 164 "../metachop/decomp2.ch"
                                                    ReplaceTree(_ptRes2, 1, _ptTree2);
#line 164 "../metachop/decomp2.ch"
                                                    _ptTree1 = _ptRes2;
#line 164 "../metachop/decomp2.ch"
                                                }
#line 164 "../metachop/decomp2.ch"
                                                ReplaceTree(_ptRes1, 1, _ptTree1);
#line 164 "../metachop/decomp2.ch"
                                                _ptTree0 = _ptRes1;
#line 164 "../metachop/decomp2.ch"
                                            }
#line 164 "../metachop/decomp2.ch"
                                            list_output =  AddList( list_output,_ptTree0);
#line 164 "../metachop/decomp2.ch"
                                        }
#line 164 "../metachop/decomp2.ch"
#line 164 "../metachop/decomp2.ch"
#line 164 "../metachop/decomp2.ch"
                                     } else 
#line 165 "../metachop/decomp2.ch"
        if ( !(((_inter = (PPTREE)temporary,1) && 
#line 165 "../metachop/decomp2.ch"
                    (NumberTree(_inter) == metachop::BREAK) &&
#line 165 "../metachop/decomp2.ch"
                    1)) ) 
#line 165 "../metachop/decomp2.ch"
#line 166 "../metachop/decomp2.ch"
            {
#line 166 "../metachop/decomp2.ch"
                PPTREE _ptTree0= (PPTREE) 0 ;
#line 166 "../metachop/decomp2.ch"
                list_output =  AddList( list_output,temporary);
#line 166 "../metachop/decomp2.ch"
            }
#line 166 "../metachop/decomp2.ch"
#line 166 "../metachop/decomp2.ch"
#line 169 "../metachop/decomp2.ch"
        {
#line 169 "../metachop/decomp2.ch"
            /* [ metachop::COMPOUND
                [ LIST 
                    [ metachop::STAT_VOID ]
                ]
               ]
#line 169 "../metachop/decomp2.ch"
            */
#line 169 "../metachop/decomp2.ch"
            TheConstructor(metachop::STAT_VOID,0,-4,LIST,2,metachop::COMPOUND,1,-3) ;
#line 169 "../metachop/decomp2.ch"
            temporary = PopTree ;
#line 169 "../metachop/decomp2.ch"
            }
#line 169 "../metachop/decomp2.ch"
#line 169 "../metachop/decomp2.ch"
#line 170 "../metachop/decomp2.ch"
        {
#line 170 "../metachop/decomp2.ch"
            PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 170 "../metachop/decomp2.ch"
            ReplaceTree(temporary, 1, list_output);
#line 170 "../metachop/decomp2.ch"
        }
#line 170 "../metachop/decomp2.ch"
#line 170 "../metachop/decomp2.ch"
#line 171 "../metachop/decomp2.ch"
        metarep("stat", output, temporary);
#line 171 "../metachop/decomp2.ch"
#line 171 "../metachop/decomp2.ch"
    }
#line 171 "../metachop/decomp2.ch"
#line 173 "../metachop/decomp2.ch"
    return (output);
#line 173 "../metachop/decomp2.ch"
#line 174 "../metachop/decomp2.ch"
}
#line 174 "../metachop/decomp2.ch"

#line 176 "../metachop/decomp2.ch"
#line 176 "../metachop/decomp2.ch"
PTREE switch_body ( PTREE paramTree )
#line 176 "../metachop/decomp2.ch"
{
#line 176 "../metachop/decomp2.ch"
    register PPTREE _inter ;
#line 176 "../metachop/decomp2.ch"
#line 176 "../metachop/decomp2.ch"
#line 178 "../metachop/decomp2.ch"
    PTREE   son, temporary, current, ident, tree ;
#line 178 "../metachop/decomp2.ch"
#line 178 "../metachop/decomp2.ch"
#line 179 "../metachop/decomp2.ch"
    int first = 1, last ;
#line 179 "../metachop/decomp2.ch"
#line 181 "../metachop/decomp2.ch"
    current = (PPTREE) 0 ;
#line 181 "../metachop/decomp2.ch"
#line 181 "../metachop/decomp2.ch"
#line 182 "../metachop/decomp2.ch"
    while ( !((!paramTree)) ) {
#line 182 "../metachop/decomp2.ch"
#line 183 "../metachop/decomp2.ch"
                                    (son=(paramTree?paramTree.Nextl():(PPTREE)0));
#line 183 "../metachop/decomp2.ch"
#line 183 "../metachop/decomp2.ch"
#line 184 "../metachop/decomp2.ch"
                                    last = (!paramTree) ? 1 : 0 ;
#line 184 "../metachop/decomp2.ch"
#line 185 "../metachop/decomp2.ch"
                                    (son=switch_el(son, last));
#line 185 "../metachop/decomp2.ch"
#line 185 "../metachop/decomp2.ch"
#line 186 "../metachop/decomp2.ch"
                                    if ( first ) {
#line 186 "../metachop/decomp2.ch"
#line 187 "../metachop/decomp2.ch"
                                                    if ( ifCase ) {
#line 187 "../metachop/decomp2.ch"
#line 188 "../metachop/decomp2.ch"
                                                                    (temporary=(current=son));
#line 188 "../metachop/decomp2.ch"
#line 188 "../metachop/decomp2.ch"
#line 188 "../metachop/decomp2.ch"
                                                                   } else 
#line 189 "../metachop/decomp2.ch"
                                                    {
#line 189 "../metachop/decomp2.ch"
#line 190 "../metachop/decomp2.ch"
                                                        {
#line 190 "../metachop/decomp2.ch"
                                                            /* [ metachop::SWITCH
                                                                [ metachop::EXP_LIST
                                                                    [ metachop::IDENT "NumberTree"]
                                                                    [ META "tree"]
                                                                ]
                                                                [ LIST 
                                                                    [ metachop::CASE
                                                                        [ META "cond"]
                                                                        [ META "stat"]
                                                                    ]
                                                                ]
                                                               ]
#line 190 "../metachop/decomp2.ch"
                                                            */
#line 190 "../metachop/decomp2.ch"
                                                            TheConstructor(-2,MakeString("NumberTree"),metachop::IDENT,1,-2,MakeString("tree"),META,1,metachop::EXP_LIST,2,
#line 190 "../metachop/decomp2.ch"
                                                                -2,MakeString("cond"),META,1,-2,MakeString("stat"),META,1,metachop::CASE,2,-4,LIST,2,metachop::SWITCH,2,-3) ;
#line 190 "../metachop/decomp2.ch"
                                                            temporary = PopTree ;
#line 190 "../metachop/decomp2.ch"
                                                            }
#line 190 "../metachop/decomp2.ch"
#line 190 "../metachop/decomp2.ch"
#line 194 "../metachop/decomp2.ch"
                                                        {
#line 194 "../metachop/decomp2.ch"
                                                            PPTREE _ptTree0= (PPTREE) 0,_ptRes0= (PPTREE) 0;
#line 194 "../metachop/decomp2.ch"
                                                            _ptRes0 = MakeTree(metachop::IDENT, 1);
#line 194 "../metachop/decomp2.ch"
                                                            _ptTree0 = StoreRef(MakeString(ptCase));
#line 194 "../metachop/decomp2.ch"
                                                            ReplaceTree(_ptRes0, 1, _ptTree0);
#line 194 "../metachop/decomp2.ch"
                                                            ident = _ptRes0;
#line 194 "../metachop/decomp2.ch"
                                                        }
#line 194 "../metachop/decomp2.ch"
#line 194 "../metachop/decomp2.ch"
#line 195 "../metachop/decomp2.ch"
                                                        metarep("tree", temporary, ident);
#line 195 "../metachop/decomp2.ch"
#line 196 "../metachop/decomp2.ch"
                                                        {
#line 196 "../metachop/decomp2.ch"
                                                            PPTREE _ptTree0= (PPTREE) 0 ;
#line 196 "../metachop/decomp2.ch"
                                                            current =  AddList( current,son);
#line 196 "../metachop/decomp2.ch"
                                                        }
#line 196 "../metachop/decomp2.ch"
#line 196 "../metachop/decomp2.ch"
#line 196 "../metachop/decomp2.ch"
                                                    }
#line 196 "../metachop/decomp2.ch"
#line 198 "../metachop/decomp2.ch"
                                                    first = 0 ;
#line 198 "../metachop/decomp2.ch"
#line 198 "../metachop/decomp2.ch"
                                                  } else 
#line 199 "../metachop/decomp2.ch"
                                    if ( ifCase ) {
#line 199 "../metachop/decomp2.ch"
#line 200 "../metachop/decomp2.ch"
                                                    {
#line 200 "../metachop/decomp2.ch"
                                                        PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 200 "../metachop/decomp2.ch"
                                                        ReplaceTree(current, 3, son);
#line 200 "../metachop/decomp2.ch"
                                                    }
#line 200 "../metachop/decomp2.ch"
#line 200 "../metachop/decomp2.ch"
#line 201 "../metachop/decomp2.ch"
                                                    (current=son);
#line 201 "../metachop/decomp2.ch"
#line 201 "../metachop/decomp2.ch"
#line 201 "../metachop/decomp2.ch"
                                                   } else 
#line 201 "../metachop/decomp2.ch"
#line 203 "../metachop/decomp2.ch"
                                        {
#line 203 "../metachop/decomp2.ch"
                                            PPTREE _ptTree0= (PPTREE) 0 ;
#line 203 "../metachop/decomp2.ch"
                                            current =  AddList( current,son);
#line 203 "../metachop/decomp2.ch"
                                        }
#line 203 "../metachop/decomp2.ch"
#line 203 "../metachop/decomp2.ch"
#line 203 "../metachop/decomp2.ch"
#line 203 "../metachop/decomp2.ch"
                                }
#line 203 "../metachop/decomp2.ch"
#line 205 "../metachop/decomp2.ch"
    if ( !ifCase ) {
#line 205 "../metachop/decomp2.ch"
#line 208 "../metachop/decomp2.ch"
                        {
#line 208 "../metachop/decomp2.ch"
                            PPTREE _ptTree0= (PPTREE) 0,_sonTree0= (PPTREE) 0 ;
#line 208 "../metachop/decomp2.ch"
                            ReplaceTree(temporary, 2, current);
#line 208 "../metachop/decomp2.ch"
                        }
#line 208 "../metachop/decomp2.ch"
#line 208 "../metachop/decomp2.ch"
#line 208 "../metachop/decomp2.ch"
                     }
#line 208 "../metachop/decomp2.ch"
#line 210 "../metachop/decomp2.ch"
    return (temporary);
#line 210 "../metachop/decomp2.ch"
#line 211 "../metachop/decomp2.ch"
}
#line 211 "../metachop/decomp2.ch"

#line 213 "../metachop/decomp2.ch"
#line 213 "../metachop/decomp2.ch"
void node ( PTREE paramTree )
#line 213 "../metachop/decomp2.ch"
{
#line 213 "../metachop/decomp2.ch"
#line 215 "../metachop/decomp2.ch"
    if ( equality ) 
#line 215 "../metachop/decomp2.ch"
#line 216 "../metachop/decomp2.ch"
        EqualTree(ptCond, ptEquality, 0, paramTree, 0);
#line 216 "../metachop/decomp2.ch"
    else 
#line 216 "../metachop/decomp2.ch"
#line 218 "../metachop/decomp2.ch"
        EqualTree(ptCond, (char *)0, 0, paramTree, 0);
#line 218 "../metachop/decomp2.ch"
#line 218 "../metachop/decomp2.ch"
#line 219 "../metachop/decomp2.ch"
}
#line 219 "../metachop/decomp2.ch"

#line 221 "../metachop/decomp2.ch"
#line 221 "../metachop/decomp2.ch"
int classify_case ( PTREE paramTree )
#line 221 "../metachop/decomp2.ch"
{
#line 221 "../metachop/decomp2.ch"
    register PPTREE _inter ;
#line 221 "../metachop/decomp2.ch"
#line 221 "../metachop/decomp2.ch"
#line 223 "../metachop/decomp2.ch"
    PTREE   list, cond, list1, temporary ;
#line 223 "../metachop/decomp2.ch"
#line 223 "../metachop/decomp2.ch"
#line 225 "../metachop/decomp2.ch"
    ((_inter = (PPTREE)paramTree,1) && 
#line 225 "../metachop/decomp2.ch"
        ((list=SonTree(_inter,2)),1) &&
#line 225 "../metachop/decomp2.ch"
        1);
#line 225 "../metachop/decomp2.ch"
    ;
#line 225 "../metachop/decomp2.ch"
#line 226 "../metachop/decomp2.ch"
    while ( !((!list)) ) {
#line 226 "../metachop/decomp2.ch"
#line 227 "../metachop/decomp2.ch"
                            if ( !(((_inter = (PPTREE)list,1) && 
#line 227 "../metachop/decomp2.ch"
                                        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 227 "../metachop/decomp2.ch"
                                            (NumberTree(_inter) == metachop::DEFAULT) &&
#line 227 "../metachop/decomp2.ch"
                                            1),
#line 227 "../metachop/decomp2.ch"
                                            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 227 "../metachop/decomp2.ch"
                                        1)) ) {
#line 227 "../metachop/decomp2.ch"
#line 228 "../metachop/decomp2.ch"
                                                ((_inter = (PPTREE)list,1) && 
#line 228 "../metachop/decomp2.ch"
                                                    (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 228 "../metachop/decomp2.ch"
                                                        ((cond=SonTree(_inter,1)),1) &&
#line 228 "../metachop/decomp2.ch"
                                                        1),
#line 228 "../metachop/decomp2.ch"
                                                        (_inter=_storeVal[1],1),_retVal[1]) &&
#line 228 "../metachop/decomp2.ch"
                                                    1);
#line 228 "../metachop/decomp2.ch"
                                                ;
#line 228 "../metachop/decomp2.ch"
#line 231 "../metachop/decomp2.ch"
                                                if ( !(((_inter = (PPTREE)cond,1) && 
#line 231 "../metachop/decomp2.ch"
                                                            (NumberTree(_inter) == metachop::IDENT) &&
#line 231 "../metachop/decomp2.ch"
                                                            1)) ) {
#line 231 "../metachop/decomp2.ch"
#line 232 "../metachop/decomp2.ch"
                                                                    ((_inter = (PPTREE)cond,1) && 
#line 232 "../metachop/decomp2.ch"
                                                                        (NumberTree(_inter) == metachop::AFF) &&
#line 232 "../metachop/decomp2.ch"
                                                                        ((cond=SonTree(_inter,2)),1) &&
#line 232 "../metachop/decomp2.ch"
                                                                        1);
#line 232 "../metachop/decomp2.ch"
                                                                    ;
#line 232 "../metachop/decomp2.ch"
#line 233 "../metachop/decomp2.ch"
                                                                    if ( ((_inter = (PPTREE)cond,1) && 
#line 233 "../metachop/decomp2.ch"
(NumberTree(_inter) == metachop::NODE_LIST) &&
#line 233 "../metachop/decomp2.ch"
(!SonTree(_inter,1)) &&
#line 233 "../metachop/decomp2.ch"
1)                                                                  ) {
#line 233 "../metachop/decomp2.ch"
#line 233 "../metachop/decomp2.ch"
                                                                    _If2 : 
#line 233 "../metachop/decomp2.ch"
#line 233 "../metachop/decomp2.ch"
                                                                        ;
#line 233 "../metachop/decomp2.ch"
#line 234 "../metachop/decomp2.ch"
                                                                        ;
#line 234 "../metachop/decomp2.ch"
#line 234 "../metachop/decomp2.ch"
                                                                        goto _If3 ;
#line 234 "../metachop/decomp2.ch"
#line 234 "../metachop/decomp2.ch"
                                                                    } else 
#line 235 "../metachop/decomp2.ch"
                                                                    if ( ((_inter = (PPTREE)cond,1) && 
#line 235 "../metachop/decomp2.ch"
(NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 235 "../metachop/decomp2.ch"
1)                                                                  ) {
#line 235 "../metachop/decomp2.ch"
#line 235 "../metachop/decomp2.ch"
                                                                    _If3 : 
#line 235 "../metachop/decomp2.ch"
#line 235 "../metachop/decomp2.ch"
                                                                        ;
#line 235 "../metachop/decomp2.ch"
#line 235 "../metachop/decomp2.ch"
                                                                    } else 
#line 236 "../metachop/decomp2.ch"
                                                                    if ( ((_inter = (PPTREE)cond,1) && 
#line 236 "../metachop/decomp2.ch"
(NumberTree(_inter) == metachop::NODE_TREE) &&
#line 236 "../metachop/decomp2.ch"
((list1=SonTree(_inter,1)),1) &&
#line 236 "../metachop/decomp2.ch"
1)                                                                  ) {
#line 236 "../metachop/decomp2.ch"
#line 236 "../metachop/decomp2.ch"
                                                                    _If4 : 
#line 236 "../metachop/decomp2.ch"
#line 236 "../metachop/decomp2.ch"
                                                                        ;
#line 236 "../metachop/decomp2.ch"
#line 237 "../metachop/decomp2.ch"
                                                                        if ( !(((_inter = (PPTREE)list1,1) && 
#line 237 "../metachop/decomp2.ch"
(_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,1),1) &&
#line 237 "../metachop/decomp2.ch"
    (NumberTree(_inter) == metachop::IDENT) &&
#line 237 "../metachop/decomp2.ch"
    1),
#line 237 "../metachop/decomp2.ch"
    (_inter=_storeVal[1],1),_retVal[1]) &&
#line 237 "../metachop/decomp2.ch"
1)                                                                           ) ) 
#line 237 "../metachop/decomp2.ch"
#line 238 "../metachop/decomp2.ch"
return 0 ;
#line 238 "../metachop/decomp2.ch"
#line 239 "../metachop/decomp2.ch"
                                                                        (list1?list1.Nextl():(PPTREE)0);
#line 239 "../metachop/decomp2.ch"
#line 240 "../metachop/decomp2.ch"
                                                                        while ( list1 ) {
#line 240 "../metachop/decomp2.ch"
#line 241 "../metachop/decomp2.ch"
(temporary=(list1?list1.Nextl():(PPTREE)0));
#line 241 "../metachop/decomp2.ch"
#line 241 "../metachop/decomp2.ch"
#line 242 "../metachop/decomp2.ch"
if ( ((_inter = (PPTREE)temporary,1) && 
#line 242 "../metachop/decomp2.ch"
        (NumberTree(_inter) == metachop::IDENT) &&
#line 242 "../metachop/decomp2.ch"
        1) ) {
#line 242 "../metachop/decomp2.ch"
#line 242 "../metachop/decomp2.ch"
_If6 : 
#line 242 "../metachop/decomp2.ch"
#line 242 "../metachop/decomp2.ch"
    ;
#line 242 "../metachop/decomp2.ch"
#line 242 "../metachop/decomp2.ch"
    goto _If7 ;
#line 242 "../metachop/decomp2.ch"
#line 242 "../metachop/decomp2.ch"
} else 
#line 244 "../metachop/decomp2.ch"
if ( ((_inter = (PPTREE)temporary,1) && 
#line 244 "../metachop/decomp2.ch"
        (NumberTree(_inter) == metachop::AFF) &&
#line 244 "../metachop/decomp2.ch"
        (_retVal[1]=((_storeVal[1]=_inter,_inter=SonTree(_inter,2),1) &&
#line 244 "../metachop/decomp2.ch"
            (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 244 "../metachop/decomp2.ch"
            1),
#line 244 "../metachop/decomp2.ch"
            (_inter=_storeVal[1],1),_retVal[1]) &&
#line 244 "../metachop/decomp2.ch"
        1) ) {
#line 244 "../metachop/decomp2.ch"
#line 244 "../metachop/decomp2.ch"
_If7 : 
#line 244 "../metachop/decomp2.ch"
#line 244 "../metachop/decomp2.ch"
    ;
#line 244 "../metachop/decomp2.ch"
#line 244 "../metachop/decomp2.ch"
    goto _If8 ;
#line 244 "../metachop/decomp2.ch"
#line 244 "../metachop/decomp2.ch"
} else 
#line 245 "../metachop/decomp2.ch"
if ( ((_inter = (PPTREE)temporary,1) && 
#line 245 "../metachop/decomp2.ch"
        (NumberTree(_inter) == metachop::DEF_IDENT) &&
#line 245 "../metachop/decomp2.ch"
        1) ) {
#line 245 "../metachop/decomp2.ch"
#line 245 "../metachop/decomp2.ch"
_If8 : 
#line 245 "../metachop/decomp2.ch"
#line 245 "../metachop/decomp2.ch"
    ;
#line 245 "../metachop/decomp2.ch"
#line 245 "../metachop/decomp2.ch"
    continue ;
#line 245 "../metachop/decomp2.ch"
#line 245 "../metachop/decomp2.ch"
    goto _If9 ;
#line 245 "../metachop/decomp2.ch"
#line 245 "../metachop/decomp2.ch"
} else 
#line 246 "../metachop/decomp2.ch"
if ( 1 ) {
#line 246 "../metachop/decomp2.ch"
#line 246 "../metachop/decomp2.ch"
_If9 : 
#line 246 "../metachop/decomp2.ch"
#line 246 "../metachop/decomp2.ch"
    ;
#line 246 "../metachop/decomp2.ch"
#line 246 "../metachop/decomp2.ch"
    return 0 ;
#line 246 "../metachop/decomp2.ch"
#line 246 "../metachop/decomp2.ch"
}
#line 246 "../metachop/decomp2.ch"
#line 246 "../metachop/decomp2.ch"
                                                                                         }
#line 246 "../metachop/decomp2.ch"
#line 246 "../metachop/decomp2.ch"
                                                                    } else 
#line 251 "../metachop/decomp2.ch"
                                                                    if ( 1 ) {
#line 251 "../metachop/decomp2.ch"
#line 251 "../metachop/decomp2.ch"
                                                                    _If5 : 
#line 251 "../metachop/decomp2.ch"
#line 251 "../metachop/decomp2.ch"
                                                                        ;
#line 251 "../metachop/decomp2.ch"
#line 251 "../metachop/decomp2.ch"
                                                                        return 0 ;
#line 251 "../metachop/decomp2.ch"
#line 251 "../metachop/decomp2.ch"
                                                                    }
#line 251 "../metachop/decomp2.ch"
#line 251 "../metachop/decomp2.ch"
                                                                  }
#line 251 "../metachop/decomp2.ch"
#line 251 "../metachop/decomp2.ch"
                                              }
#line 251 "../metachop/decomp2.ch"
#line 256 "../metachop/decomp2.ch"
                            (list?list.Nextl():(PPTREE)0);
#line 256 "../metachop/decomp2.ch"
#line 256 "../metachop/decomp2.ch"
                           }
#line 256 "../metachop/decomp2.ch"
#line 258 "../metachop/decomp2.ch"
    return 1 ;
#line 258 "../metachop/decomp2.ch"
#line 259 "../metachop/decomp2.ch"
}
#line 259 "../metachop/decomp2.ch"
/*Well done my boy */ 
#line 259 "../metachop/decomp2.ch"

