/* Generated by Nim Compiler v1.2.4 */
/*   (c) 2020 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 64
#define NIM_EmulateOverflowChecks

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ;
typedef struct tyObject_Operators__apNm0zcYroUpNRird62c9aQ tyObject_Operators__apNm0zcYroUpNRird62c9aQ;
typedef struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__Ef05srmQTDulnBdXR4Ja6Q tySequence__Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA tySequence__DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA;
typedef struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ tySequence__DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
typedef struct tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q;
typedef struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw;
typedef struct tyObject_Int128__9a9axPfb75jdWY25AamJewkA tyObject_Int128__9a9axPfb75jdWY25AamJewkA;
typedef struct tySequence__MvZmat48bhe9b6x9aUD58D5Q tySequence__MvZmat48bhe9b6x9aUD58D5Q;
typedef struct tySequence__nw2ozGiJbajPUc4Cj4vzYw tySequence__nw2ozGiJbajPUc4Cj4vzYw;
typedef struct tyTuple__EFqgCXJ4d8PgqOdFJmldsQ tyTuple__EFqgCXJ4d8PgqOdFJmldsQ;
typedef struct tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyTuple__zwpS6d6iewrdlBSTNFoyVA tyTuple__zwpS6d6iewrdlBSTNFoyVA;
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
typedef NU8 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU16 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg;
struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU64 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
typedef NU8 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg;
typedef NU8 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw;
typedef NU16 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA;
struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA {
tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg k;
tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw storage;
tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA flags;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* lode;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* r;
};
struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {tySequence__Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
} _kind_1;
struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* transformedBody;
} _kind_2;
struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tab;
} _kind_3;
struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
NI alignment;
} _kind_4;
};
tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg magic;
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* name;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner;
tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw flags;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ast;
tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
NI position;
NI offset;
tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA* annex;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* constraint;
};
struct tyObject_Operators__apNm0zcYroUpNRird62c9aQ {
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opNot;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opContains;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opLe;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opLt;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opAnd;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opOr;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opIsNil;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opEq;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opAdd;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opSub;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opMul;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opDiv;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* opLen;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q {
tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* s;
tyObject_Operators__apNm0zcYroUpNRird62c9aQ o;
NIM_BOOL beSmart;
};
typedef NU32 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw;
struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw {
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg flags;
tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intVal;
} _kind_1;
struct {NF floatVal;
} _kind_2;
struct {NimStringDesc* strVal;
} _kind_3;
struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
} _kind_4;
struct {tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* ident;
} _kind_5;
struct {tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} _kind_6;
};
NimStringDesc* comment;
};
typedef NU8 tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw[21];
typedef NU8 tySet_tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg[34];
struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SiRwrEKZdLgxqz9a9aoVBglg[512];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SiRwrEKZdLgxqz9a9aoVBglg freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef NU8 tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA;
struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
NI Field0;
NI Field1;
};
typedef NU32 tyArray__FleBT9cC2nxhgiXmSYYnEKA[4];
struct tyObject_Int128__9a9axPfb75jdWY25AamJewkA {
tyArray__FleBT9cC2nxhgiXmSYYnEKA udata;
};
typedef NU64 tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* tyArray__PsPyPA45AAjHu4uDGHNjTg[6];
struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind;
tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA callConv;
tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw flags;
tySequence__Ef05srmQTDulnBdXR4Ja6Q* sons;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
tyArray__PsPyPA45AAjHu4uDGHNjTg attachedOps;
tySequence__MvZmat48bhe9b6x9aUD58D5Q* methods;
NI64 size;
NI16 align;
NI16 paddingAtEnd;
NI16 lockLevel;
tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
NI uniqueId;
};
struct tyTuple__EFqgCXJ4d8PgqOdFJmldsQ {
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* Field0;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* Field1;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef NU8 tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w;
typedef NU8 tySet_tyEnum_TRenderFlag__wrPgUo1ExBlHvFnXN2nSHw;
struct tyTuple__zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tySequence__nw2ozGiJbajPUc4Cj4vzYw {
  TGenericSeq Sup;
  tyTuple__EFqgCXJ4d8PgqOdFJmldsQ data[SEQ_DECL_SIZE];
};
struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence__Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
};
struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence__MvZmat48bhe9b6x9aUD58D5Q {
  TGenericSeq Sup;
  tyTuple__zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*, createMagic__MzNJxZ0htpjW89c9b2wBN5rQ)(tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* g, NimStringDesc* name, tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg m);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasSubTree__MsjoJ819bWzwqrafMUbvZUQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTree__Uv9a9aANFtV79cIvUP5jEeyVA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NOINLINE(void, raiseFieldError)(NimStringDesc* f);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameOpr__PxH8Zivvp3Un9ckV9c1ofpBA)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* b);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NIM_BOOL, equalMem__9bGgqEk7RXXl6eqM9c1HdELAsystem)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, nimAddInt)(NI a, NI b, NI* res);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(NI, safeLen__P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, nimSubInt)(NI a, NI b, NI* res);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, doesImply__TghwFZPkC6wzh9bOuwSr8jQ)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* facts, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* prop);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, factImplies__ag9bsj603QsRYxrYUB8C9cMQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* prop);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg, getMagic__4W1ZJaFiusqlhViRx9cbM9bw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* op);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, tilde___nnERY7FtzBMOEK1oaVzB1g)(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA x);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesIsNil__t9c54XcpWxP4FFmaGo7UFXw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* eq);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, valueIsNil__toR49cyD1VaoDQ1st9avzzXw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, skipConv__BH9abOhPX8pH0DnEWlRxmlw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesEq__t9c54XcpWxP4FFmaGo7UFXw_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* eq);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isLocation__MH3XlBsw9ahhEwy5cK9cHBHA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, valuesUnequal__Uv9a9aANFtV79cIvUP5jEeyVA_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameValue__uOYuOsiCZAbEPMGwBL8r8g)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, inSet__b4nxsJCvqXRlyalSWskgNA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* s, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* elem);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesLe__zW7m5VCjU13sae0oFr8Uww)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, leValue__uOYuOsiCZAbEPMGwBL8r8g_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesGe__zW7m5VCjU13sae0oFr8Uww_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, pred__sCNrMHnQvxnk67uE0fPE6w)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, copyNode__Dsjo9bte8vGxzhtcSrsTyiQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* src);
static N_INLINE(NIM_BOOL, nimSubInt64)(NI64 a, NI64 b, NI64* res);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesLt__zW7m5VCjU13sae0oFr8Uww_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesIn__HL9bcwSOMkA5y4aYejstDyA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* loc, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aSet);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, compareSets__uX14XLtbeJxCxyMrK1w8tQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, equalSets__Jr5d2PbcnAZ0pFa4Ny88lg_2)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, intersectSets__DJXyM0ZYUUgI9bAP6orixDA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, leImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aSet);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newIntNode__4YOyxaxo739b3eaIho5QEcA)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_Int128__9a9axPfb75jdWY25AamJewkA intVal);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, firstOrd__hjogdnp59cMX1rwmjikBhqw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
static N_INLINE(NIM_BOOL, nimAddInt64)(NI64 a, NI64 b, NI64* res);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, geImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aSet);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newIntNode__zcNs9blLGYB6i9aGKob9bpzRw)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, lastOrd__hjogdnp59cMX1rwmjikBhqw_2)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___7c5Zw7H31uJfWmmhZe9aEqw_3)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, tyObject_Int128__9a9axPfb75jdWY25AamJewkA b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, minus___Sp7OcCEIFoBYolB6PB1fAg_2)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, tyObject_Int128__9a9axPfb75jdWY25AamJewkA b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, getInt__Ml9bTZ5dXYSLBfnGRkErokw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, toInt128__161i7kexvUAISxPtGBRWYw)(NI arg);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___xL5gyZrjbGMarSdRAXOo9ag)(NI64 a, tyObject_Int128__9a9axPfb75jdWY25AamJewkA b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, neg__Jdq9bmYnl9bApH9aGfXEZQN8Q)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, swapArgs__HwkqKTJeHjmJRQe2q847cg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* newOp);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NI children);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newSymNode__I2DV2TmmOysY1ZEGW19b9bRg)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kinds);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg)(tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, add__P8dDSotTW25BkfbyspojGg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildCall__rQdL9bdBvS9aqkRykTzQFSAw)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, shallowCopy__Dsjo9bte8vGxzhtcSrsTyiQ_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, astdef__PBkjYIaAGbtrZ8DiUArHcw)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildCall__bzqLNgd7GiDpqZUsYKdenA)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, minusOne__FWKgXUNtQfE7EUZKj6yRDQ)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, negate__ozAjEhyMPuZLnzTVOjeVwA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* res, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(NI64, barplusbar___AMT0epkRpHisEnmPCWqESg)(NI64 a, NI64 b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, reassociation__Jdq9bmYnl9bApH9aGfXEZQN8Q_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, barplusbar___9aW9bU7lixsz3Yv9aqmOB2BFg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, barstarbar___9aW9bU7lixsz3Yv9aqmOB2BFg_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NI64, barstarbar___AMT0epkRpHisEnmPCWqESg_2)(NI64 a, NI64 b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, zero__FWKgXUNtQfE7EUZKj6yRDQ_2)(void);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* m, NIM_BOOL isApprox);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isConstExpr__9cP6JNeOKqczaXCI4Zo4SBQ_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isLet__MH3XlBsw9ahhEwy5cK9cHBHA_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isVar__MH3XlBsw9ahhEwy5cK9cHBHA_4)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, barminusbar___9aW9bU7lixsz3Yv9aqmOB2BFg_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NI64, barminusbar___AMT0epkRpHisEnmPCWqESg_3)(NI64 a, NI64 b);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, ple__gquZ4TuLCn9anC5O4OWI4Og_2)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isOrdinalType__6euCPZwUsyXzP1vAm4IthA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, NIM_BOOL allowEnumWithHoles);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___nr9cP9b0OL9cabygV9bo19cJgZA)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, NI64 b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, one__FWKgXUNtQfE7EUZKj6yRDQ_3)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, bardivbar___9aW9bU7lixsz3Yv9aqmOB2BFg_4)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NOINLINE(void, raiseDivByZero)(void);
static N_INLINE(NIM_BOOL, nimDivInt64)(NI64 a, NI64 b, NI64* res);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isMinusOne__MH3XlBsw9ahhEwy5cK9cHBHA_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, pleViaModel__G9bUxQOJUHpRPU6xPkealOw)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* model, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aa, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* bb);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tySequence__nw2ozGiJbajPUc4Cj4vzYw)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, applyReplacements__b6iA67SQaAf7h31PeZXmQQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tySequence__nw2ozGiJbajPUc4Cj4vzYw* rep);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, replaceSubTree__L5ySkEBBMvbFl1v5oW7tYg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* by);
N_LIB_PRIVATE N_NIMCALL(void, genericSeqAssign)(void* dest, void* src, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, pleViaModelRec__BXeoQpkXTRCPZ40rIGcsCA)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildProperFieldCheck__9czJQa7AVwwBTDjddykusKg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* access, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* check, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(void, message__mMj7lrOf3zBP9bl69amiKu5g)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, renderTree__ppjdh9aQ5L0SGPF8yz1gZ9cA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TRenderFlag__wrPgUo1ExBlHvFnXN2nSHw renderFlags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildOf__MGKHwffiWyEzWzB6rWIB9ag)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* it, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* loc, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, settype__nWHoIj7eHK9ad9brJqEijt9ag)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType__SNqpa06pdVCLFFBR28119aQ)(tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(void, addSonSkipIntLit__2IwAMgUJgjdjR7Qyvt9bjCQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildElse__Jdq9bmYnl9bApH9aGfXEZQN8Q_4)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, lastSon__UPSW0jLTX5qJL51YMUAHgw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addFact__ybuIey7mglQLm61kxh9aaLg)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* nn);
N_LIB_PRIVATE N_NIMCALL(void, addFactLe__i9aAoMzJNp9aw6KruJgPZ0Ng)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_2, "<=", 2);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_3, "<", 1);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_4, "and", 3);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_5, "or", 2);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_6, "isnil", 5);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_7, "==", 2);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_8, "+", 1);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_9, "-", 1);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_10, "*", 1);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_11, "div", 3);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_12, "len", 3);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_13, "not", 3);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_14, "contains", 8);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__6PEpSVg5zYQiUPcMieikwQ_15 = {
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_16, "\'sym\' is not accessible using discriminant \'kind\' of type \'TNod"
"e\'", 65);
static NIM_CONST tySet_tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg TM__6PEpSVg5zYQiUPcMieikwQ_17 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x21, 0x49, 0x0c, 0x00, 0x00, 0x48, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__6PEpSVg5zYQiUPcMieikwQ_18 = {
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_19, "\'ident\' is not accessible using discriminant \'kind\' of type \'TN"
"ode\'", 67);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__6PEpSVg5zYQiUPcMieikwQ_20 = {
0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_21, "\'intVal\' is not accessible using discriminant \'kind\' of type \'T"
"Node\'", 68);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__6PEpSVg5zYQiUPcMieikwQ_22 = {
0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_23, "\'floatVal\' is not accessible using discriminant \'kind\' of type "
"\'TNode\'", 70);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__6PEpSVg5zYQiUPcMieikwQ_24 = {
0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_25, "\'strVal\' is not accessible using discriminant \'kind\' of type \'T"
"Node\'", 68);
static NIM_CONST tySet_tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw TM__6PEpSVg5zYQiUPcMieikwQ_26 = {
0xec, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_27, "\'sons\' is not accessible using discriminant \'kind\' of type \'TNo"
"de\'", 66);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_32, "guards.nim(732, 10) `prop.kind in nkCallKinds` ", 47);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_33, "guards.nim(590, 29) `false` impliesIsNil", 40);
static NIM_CONST tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ TM__6PEpSVg5zYQiUPcMieikwQ_34 = {((NI) 1),
((NI) 2)}
;
static NIM_CONST tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ TM__6PEpSVg5zYQiUPcMieikwQ_35 = {((NI) 2),
((NI) 1)}
;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_36, "guards.nim(509, 29) `false` impliesEq", 37);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_37, "guards.nim(594, 10) `isLocation(x)` ", 36);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_39, "guards.nim(626, 29) `false` impliesGe", 37);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_40, "guards.nim(669, 29) `false` impliesLe", 37);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_50, "guards.nim(572, 29) `false` impliesIn", 37);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_52, "iterators.nim(189, 11) `len(a) == L` the length of the seq chan"
"ged while iterating over it", 90);
static NIM_CONST tySet_tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg TM__6PEpSVg5zYQiUPcMieikwQ_55 = {
0x00, 0x01, 0x00, 0x00, 0x78, 0xe0, 0xfd, 0xc0,
0x20, 0x21, 0x49, 0x0c, 0x00, 0x00, 0x48, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
N_LIB_PRIVATE NIM_CONST tySet_tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg someAdd__zsb09bV9aQEXvpjZmyMwZvKA = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
N_LIB_PRIVATE NIM_CONST tySet_tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg someMul__SEELPgz9b0o9c1cvwttwifGg = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
N_LIB_PRIVATE TNimType NTI__EFqgCXJ4d8PgqOdFJmldsQ_;
extern TNimType NTI__fKfcLzXYiz5jNu3NH3Tv8Q_;
N_LIB_PRIVATE TNimType NTI__nw2ozGiJbajPUc4Cj4vzYw_;
N_LIB_PRIVATE TNimType NTI__apNm0zcYroUpNRird62c9aQ_;
extern TNimType NTI__K9bspPztfoWajecnwjyHuYQ_;
extern TNimType NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_;
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_67, "guards.nim(1066, 12) `check.getMagic == mNot` ", 46);
STRING_LITERAL(TM__6PEpSVg5zYQiUPcMieikwQ_73, "guards.nim(1009, 12) `branch.kind != nkElse` ", 45);
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;
N_LIB_PRIVATE N_NIMCALL(void, initOperators__3Mq69aIkPINTsOZ4I5g1jZA)(tyObject_ModuleGraphcolonObjectType___RZI3hCs0FTPYx8StfC81qQ* g, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* Result) {
	chckNil((void*)Result);
	unsureAsgnRef((void**)&(*Result).opNot, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opContains, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opLe, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opLt, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opAnd, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opOr, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opIsNil, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opEq, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opAdd, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opSub, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opMul, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opDiv, NIM_NIL);
	unsureAsgnRef((void**)&(*Result).opLen, NIM_NIL);
	unsureAsgnRef((void**) (&(*Result).opLe), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_2), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70)));
	unsureAsgnRef((void**) (&(*Result).opLt), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_3), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71)));
	unsureAsgnRef((void**) (&(*Result).opAnd), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_4), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108)));
	unsureAsgnRef((void**) (&(*Result).opOr), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_5), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109)));
	unsureAsgnRef((void**) (&(*Result).opIsNil), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_6), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 142)));
	unsureAsgnRef((void**) (&(*Result).opEq), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_7), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69)));
	unsureAsgnRef((void**) (&(*Result).opAdd), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_8), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45)));
	unsureAsgnRef((void**) (&(*Result).opSub), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_9), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 46)));
	unsureAsgnRef((void**) (&(*Result).opMul), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_10), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47)));
	unsureAsgnRef((void**) (&(*Result).opDiv), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_11), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 48)));
	unsureAsgnRef((void**) (&(*Result).opLen), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_12), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38)));
	unsureAsgnRef((void**) (&(*Result).opNot), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_13), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95)));
	unsureAsgnRef((void**) (&(*Result).opContains), createMagic__MzNJxZ0htpjW89c9b2wBN5rQ(g, ((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_14), ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 133)));
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameOpr__PxH8Zivvp3Un9ckV9c1ofpBA)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	switch ((*a).magic) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		result = ((TM__6PEpSVg5zYQiUPcMieikwQ_17[(NU)((*b).magic)>>3] &(1U<<((NU)((*b).magic)&7U)))!=0);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116):
	{
		result = ((*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116));
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 74):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		result = ((*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 74) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117));
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38):
	{
		result = ((*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 36) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 37) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38));
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52):
	{
		result = ((*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 46):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 51):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 53):
	{
		result = ((*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 46) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 53) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 51));
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54):
	{
		result = ((*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54));
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 48):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 55):
	{
		result = ((*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 48) || (*b).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 55));
	}
	break;
	default:
	{
		result = (a == b);
	}
	break;
	}
	return result;
}
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
	int result;
	result = (int)0;
	result = memcmp(a, b, ((size_t) (size)));
	return result;
}
static N_INLINE(NIM_BOOL, equalMem__9bGgqEk7RXXl6eqM9c1HdELAsystem)(void* a, void* b, NI size) {
	NIM_BOOL result;
	int T1_;
	result = (NIM_BOOL)0;
	T1_ = (int)0;
	T1_ = nimCmpMem(a, b, size);
	result = (T1_ == ((NI32) 0));
	return result;
}
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NI alen;
	NI blen;
{	result = (NIM_BOOL)0;
	alen = (a ? a->Sup.len : 0);
	blen = (b ? b->Sup.len : 0);
	{
		if (!(alen == blen)) goto LA3_;
		{
			if (!(alen == ((NI) 0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA7_: ;
		result = equalMem__9bGgqEk7RXXl6eqM9c1HdELAsystem(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
		goto BeforeRet_;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	T1_ = ((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0);
	result = T1_;
	return result;
}
static N_INLINE(NIM_BOOL, nimAddInt)(NI a, NI b, NI* res) {
	NIM_BOOL result;
	NI r;
	result = (NIM_BOOL)0;
	r = ((NI) ((NU)((NU64)(((NU) (a))) + (NU64)(((NU) (b))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(r ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(r ^ b));
		LA4_: ;
		if (!T3_) goto LA5_;
		(*res) = r;
	}
	goto LA1_;
	LA5_: ;
	{
		result = NIM_TRUE;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTree__Uv9a9aANFtV79cIvUP5jEeyVA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	result = NIM_FALSE;
	{
		if (!(a == b)) goto LA3_;
		result = NIM_TRUE;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T6_;
		NIM_BOOL T7_;
		T6_ = (NIM_BOOL)0;
		T7_ = (NIM_BOOL)0;
		T7_ = !((a == NIM_NIL));
		if (!(T7_)) goto LA8_;
		T7_ = !((b == NIM_NIL));
		LA8_: ;
		T6_ = T7_;
		if (!(T6_)) goto LA9_;
		T6_ = ((*a).kind == (*b).kind);
		LA9_: ;
		if (!T6_) goto LA10_;
		switch ((*a).kind) {
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
		{
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
			result = ((*a)._kind_4.sym == (*b)._kind_4.sym);
			{
				NIM_BOOL T15_;
				NIM_BOOL T19_;
				T15_ = (NIM_BOOL)0;
				T15_ = !(result);
				if (!(T15_)) goto LA16_;
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				T15_ = !(((*(*a)._kind_4.sym).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 0)));
				LA16_: ;
				if (!T15_) goto LA17_;
				T19_ = (NIM_BOOL)0;
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				T19_ = ((*(*a)._kind_4.sym).magic == (*(*b)._kind_4.sym).magic);
				if (T19_) goto LA20_;
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				T19_ = sameOpr__PxH8Zivvp3Un9ckV9c1ofpBA((*a)._kind_4.sym, (*b)._kind_4.sym);
				LA20_: ;
				result = T19_;
			}
			LA17_: ;
		}
		break;
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
		{
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_18[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_19)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_18[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_19)); }
			result = ((*(*a)._kind_5.ident).Sup.id == (*(*b)._kind_5.ident).Sup.id);
		}
		break;
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15):
		{
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			result = ((*a)._kind_1.intVal == (*b)._kind_1.intVal);
		}
		break;
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 18):
		{
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
			result = ((*a)._kind_2.floatVal == (*b)._kind_2.floatVal);
		}
		break;
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22):
		{
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_24[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_25)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_24[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_25)); }
			result = eqStrings((*a)._kind_3.strVal, (*b)._kind_3.strVal);
		}
		break;
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4):
		{
			result = ((*a).typ == (*b).typ);
		}
		break;
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1):
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
		{
			result = NIM_TRUE;
		}
		break;
		default:
		{
			{
				NI T30_;
				NI T31_;
				T30_ = (NI)0;
				T30_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
				T31_ = (NI)0;
				T31_ = len__P89cqdlERShb9alU3iC0yj8wast(b);
				if (!(T30_ == T31_)) goto LA32_;
				{
					NI i;
					NI colontmp_;
					NI i_2;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
					i_2 = ((NI) 0);
					{
						while (1) {
							NI TM__6PEpSVg5zYQiUPcMieikwQ_28;
							if (!(i_2 < colontmp_)) goto LA36;
							i = i_2;
							{
								NIM_BOOL T39_;
								if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
								if ((NU)(i) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
								if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
								if ((NU)(i) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
								T39_ = (NIM_BOOL)0;
								T39_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*a)._kind_6.sons->data[i], (*b)._kind_6.sons->data[i]);
								if (!!(T39_)) goto LA40_;
								goto BeforeRet_;
							}
							LA40_: ;
							if (nimAddInt(i_2, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_28)) { raiseOverflow(); };
							i_2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_28);
						} LA36: ;
					}
				}
				result = NIM_TRUE;
			}
			LA32_: ;
		}
		break;
		}
	}
	goto LA1_;
	LA10_: ;
	LA1_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, safeLen__P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	result = (NI)0;
	{
		if (!((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA3_;
		result = ((NI) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		result = len__P89cqdlERShb9alU3iC0yj8wast(n);
	}
	LA1_: ;
	return result;
}
static N_INLINE(NIM_BOOL, nimSubInt)(NI a, NI b, NI* res) {
	NIM_BOOL result;
	NI r;
	result = (NIM_BOOL)0;
	r = ((NI) ((NU)((NU64)(((NU) (a))) - (NU64)(((NU) (b))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(r ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(r ^ (NI)((NU64) ~(b))));
		LA4_: ;
		if (!T3_) goto LA5_;
		(*res) = r;
	}
	goto LA1_;
	LA5_: ;
	{
		result = NIM_TRUE;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasSubTree__MsjoJ819bWzwqrafMUbvZUQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA(n, x);
		if (!T3_) goto LA4_;
		result = NIM_TRUE;
	}
	goto LA1_;
	LA4_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI T8_;
			NI TM__6PEpSVg5zYQiUPcMieikwQ_29;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T8_ = (NI)0;
			T8_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
			if (nimSubInt(T8_, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_29)) { raiseOverflow(); };
			colontmp_ = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_29);
			res = ((NI) 0);
			{
				while (1) {
					NI TM__6PEpSVg5zYQiUPcMieikwQ_30;
					if (!(res <= colontmp_)) goto LA10;
					i = res;
					{
						NIM_BOOL T13_;
						if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
						if ((NU)(i) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
						T13_ = (NIM_BOOL)0;
						T13_ = hasSubTree__MsjoJ819bWzwqrafMUbvZUQ((*n)._kind_6.sons->data[i], x);
						if (!T13_) goto LA14_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
					LA14_: ;
					if (nimAddInt(res, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_30)) { raiseOverflow(); };
					res = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_30);
				} LA10: ;
			}
		}
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	return result;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
}
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system(c);
	}
	LA4_: ;
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef__AT1eRuflKWyTTBdLjEDZbg_3system(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef__AT1eRuflKWyTTBdLjEDZbgsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}
N_LIB_PRIVATE N_NIMCALL(void, invalidateFacts__no3iuruVlFxE0wQ8HA9b4ZA)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (((*m).s ? (*m).s->Sup.len : 0)-1);
		colontmp_ = T2_;
		res = ((NI) 0);
		{
			while (1) {
				NI TM__6PEpSVg5zYQiUPcMieikwQ_31;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					NIM_BOOL T7_;
					T7_ = (NIM_BOOL)0;
					if ((NU)(i) >= (NU)((*m).s ? (*m).s->Sup.len : 0)){ raiseIndexError2(i,((*m).s ? (*m).s->Sup.len : 0)-1); }
					T7_ = !(((*m).s->data[i] == NIM_NIL));
					if (!(T7_)) goto LA8_;
					if ((NU)(i) >= (NU)((*m).s ? (*m).s->Sup.len : 0)){ raiseIndexError2(i,((*m).s ? (*m).s->Sup.len : 0)-1); }
					T7_ = hasSubTree__MsjoJ819bWzwqrafMUbvZUQ((*m).s->data[i], n);
					LA8_: ;
					if (!T7_) goto LA9_;
					if ((NU)(i) >= (NU)((*m).s ? (*m).s->Sup.len : 0)){ raiseIndexError2(i,((*m).s ? (*m).s->Sup.len : 0)-1); }
					asgnRef((void**) (&(*m).s->data[i]), NIM_NIL);
				}
				LA9_: ;
				if (nimAddInt(res, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_31)) { raiseOverflow(); };
				res = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_31);
			} LA4: ;
		}
	}
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, tilde___nnERY7FtzBMOEK1oaVzB1g)(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA x) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	switch (x) {
	case ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0):
	{
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0);
	}
	break;
	case ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1):
	{
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
	}
	break;
	case ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2):
	{
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, valueIsNil__toR49cyD1VaoDQ1st9avzzXw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA3_;
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 41) || (*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 38))) goto LA6_;
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
	}
	goto LA1_;
	LA6_: ;
	{
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesIsNil__t9c54XcpWxP4FFmaGo7UFXw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* eq) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	switch ((*(*(*fact)._kind_6.sons->data[((NI) 0)])._kind_4.sym).magic) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 142):
	{
		{
			NIM_BOOL T4_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
			T4_ = (NIM_BOOL)0;
			T4_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], (*eq)._kind_6.sons->data[((NI) 1)]);
			if (!T4_) goto LA5_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
		}
		LA5_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		{
			NIM_BOOL T10_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T13_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
			T10_ = (NIM_BOOL)0;
			T10_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], (*eq)._kind_6.sons->data[((NI) 1)]);
			if (!T10_) goto LA11_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T13_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T13_ = skipConv__BH9abOhPX8pH0DnEWlRxmlw((*fact)._kind_6.sons->data[((NI) 2)]);
			result = valueIsNil__toR49cyD1VaoDQ1st9avzzXw(T13_);
		}
		goto LA8_;
		LA11_: ;
		{
			NIM_BOOL T15_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T18_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
			T15_ = (NIM_BOOL)0;
			T15_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], (*eq)._kind_6.sons->data[((NI) 1)]);
			if (!T15_) goto LA16_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T18_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T18_ = skipConv__BH9abOhPX8pH0DnEWlRxmlw((*fact)._kind_6.sons->data[((NI) 1)]);
			result = valueIsNil__toR49cyD1VaoDQ1st9avzzXw(T18_);
		}
		goto LA8_;
		LA16_: ;
		LA8_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
	{
		{
			if (!NIM_TRUE) goto LA22_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_33));
		}
		LA22_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isLocation__MH3XlBsw9ahhEwy5cK9cHBHA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(n);
	result = !(T1_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, valuesUnequal__Uv9a9aANFtV79cIvUP5jEeyVA_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(a);
		if (!(T3_)) goto LA4_;
		T3_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(b);
		LA4_: ;
		if (!T3_) goto LA5_;
		T7_ = (NIM_BOOL)0;
		T7_ = sameValue__uOYuOsiCZAbEPMGwBL8r8g(a, b);
		result = !(T7_);
	}
	LA5_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesEq__t9c54XcpWxP4FFmaGo7UFXw_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* eq) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ T1_;
	NI loc;
	NI val;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		NIM_BOOL T4_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
		T4_ = (NIM_BOOL)0;
		T4_ = isLocation__MH3XlBsw9ahhEwy5cK9cHBHA((*eq)._kind_6.sons->data[((NI) 1)]);
		if (!T4_) goto LA5_;
		T1_ = TM__6PEpSVg5zYQiUPcMieikwQ_34;
	}
	goto LA2_;
	LA5_: ;
	{
		T1_ = TM__6PEpSVg5zYQiUPcMieikwQ_35;
	}
	LA2_: ;
	loc = T1_.Field0;
	val = T1_.Field1;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	switch ((*(*(*fact)._kind_6.sons->data[((NI) 0)])._kind_4.sym).magic) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		{
			NIM_BOOL T11_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(loc) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(loc,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
			T11_ = (NIM_BOOL)0;
			T11_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], (*eq)._kind_6.sons->data[loc]);
			if (!T11_) goto LA12_;
			{
				NIM_BOOL T16_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(val) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(val,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
				T16_ = (NIM_BOOL)0;
				T16_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], (*eq)._kind_6.sons->data[val]);
				if (!T16_) goto LA17_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			}
			goto LA14_;
			LA17_: ;
			{
				NIM_BOOL T20_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(val) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(val,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
				T20_ = (NIM_BOOL)0;
				T20_ = valuesUnequal__Uv9a9aANFtV79cIvUP5jEeyVA_2((*fact)._kind_6.sons->data[((NI) 2)], (*eq)._kind_6.sons->data[val]);
				if (!T20_) goto LA21_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
			}
			goto LA14_;
			LA21_: ;
			LA14_: ;
		}
		goto LA9_;
		LA12_: ;
		{
			NIM_BOOL T24_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(loc) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(loc,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
			T24_ = (NIM_BOOL)0;
			T24_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], (*eq)._kind_6.sons->data[loc]);
			if (!T24_) goto LA25_;
			{
				NIM_BOOL T29_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(val) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(val,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
				T29_ = (NIM_BOOL)0;
				T29_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], (*eq)._kind_6.sons->data[val]);
				if (!T29_) goto LA30_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			}
			goto LA27_;
			LA30_: ;
			{
				NIM_BOOL T33_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(val) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(val,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
				T33_ = (NIM_BOOL)0;
				T33_ = valuesUnequal__Uv9a9aANFtV79cIvUP5jEeyVA_2((*fact)._kind_6.sons->data[((NI) 1)], (*eq)._kind_6.sons->data[val]);
				if (!T33_) goto LA34_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
			}
			goto LA27_;
			LA34_: ;
			LA27_: ;
		}
		goto LA9_;
		LA25_: ;
		LA9_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 133):
	{
		{
			NIM_BOOL T39_;
			T39_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(loc) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(loc,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
			T39_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], (*eq)._kind_6.sons->data[loc]);
			if (!(T39_)) goto LA40_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(val) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(val,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
			T39_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*eq)._kind_6.sons->data[val]);
			LA40_: ;
			if (!T39_) goto LA41_;
			{
				NIM_BOOL T45_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*eq).kind)>>3] &(1U<<((NU)((*eq).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(val) >= (NU)((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(val,((*eq)._kind_6.sons ? (*eq)._kind_6.sons->Sup.len : 0)-1); }
				T45_ = (NIM_BOOL)0;
				T45_ = inSet__b4nxsJCvqXRlyalSWskgNA((*fact)._kind_6.sons->data[((NI) 1)], (*eq)._kind_6.sons->data[val]);
				if (!T45_) goto LA46_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			}
			goto LA43_;
			LA46_: ;
			{
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
			}
			LA43_: ;
		}
		LA41_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
	{
		{
			if (!NIM_TRUE) goto LA52_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_36));
		}
		LA52_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
static N_INLINE(NIM_BOOL, nimSubInt64)(NI64 a, NI64 b, NI64* res) {
	NIM_BOOL result;
	NI64 r;
	result = (NIM_BOOL)0;
	r = ((NI64) ((NU64)((NU64)(((NU64) (a))) - (NU64)(((NU64) (b))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (IL64(0) <= (NI64)(r ^ a));
		if (T3_) goto LA4_;
		T3_ = (IL64(0) <= (NI64)(r ^ (NI64)((NU64) ~(b))));
		LA4_: ;
		if (!T3_) goto LA5_;
		(*res) = r;
	}
	goto LA1_;
	LA5_: ;
	{
		result = NIM_TRUE;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, pred__sCNrMHnQvxnk67uE0fPE6w)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		NI64 TM__6PEpSVg5zYQiUPcMieikwQ_38;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
		if (!(T3_)) goto LA4_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		T3_ = !(((*n)._kind_1.intVal == (IL64(-9223372036854775807) - IL64(1))));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(n);
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (nimSubInt64((*result)._kind_1.intVal, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_38)) { raiseOverflow(); };
		(*result)._kind_1.intVal = (NI64)(TM__6PEpSVg5zYQiUPcMieikwQ_38);
	}
	goto LA1_;
	LA5_: ;
	{
		result = n;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesGe__zW7m5VCjU13sae0oFr8Uww_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isLocation__MH3XlBsw9ahhEwy5cK9cHBHA(x);
		if (!!(T3_)) goto LA4_;
		failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_37));
	}
	LA4_: ;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	switch ((*(*(*fact)._kind_6.sons->data[((NI) 0)])._kind_4.sym).magic) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		{
			NIM_BOOL T9_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T9_ = (NIM_BOOL)0;
			T9_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], x);
			if (!T9_) goto LA10_;
			{
				NIM_BOOL T14_;
				T14_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T14_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 2)]);
				if (!(T14_)) goto LA15_;
				T14_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA15_: ;
				if (!T14_) goto LA16_;
				{
					NIM_BOOL T20_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T20_ = (NIM_BOOL)0;
					T20_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(c, (*fact)._kind_6.sons->data[((NI) 2)]);
					if (!T20_) goto LA21_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				goto LA18_;
				LA21_: ;
				{
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA18_: ;
			}
			LA16_: ;
		}
		goto LA7_;
		LA10_: ;
		{
			NIM_BOOL T25_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T25_ = (NIM_BOOL)0;
			T25_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], x);
			if (!T25_) goto LA26_;
			{
				NIM_BOOL T30_;
				T30_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T30_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 1)]);
				if (!(T30_)) goto LA31_;
				T30_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA31_: ;
				if (!T30_) goto LA32_;
				{
					NIM_BOOL T36_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T36_ = (NIM_BOOL)0;
					T36_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(c, (*fact)._kind_6.sons->data[((NI) 1)]);
					if (!T36_) goto LA37_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				goto LA34_;
				LA37_: ;
				{
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA34_: ;
			}
			LA32_: ;
		}
		goto LA7_;
		LA26_: ;
		LA7_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 74):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		{
			NIM_BOOL T43_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T43_ = (NIM_BOOL)0;
			T43_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], x);
			if (!T43_) goto LA44_;
			{
				NIM_BOOL T48_;
				T48_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T48_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 2)]);
				if (!(T48_)) goto LA49_;
				T48_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA49_: ;
				if (!T48_) goto LA50_;
				{
					NIM_BOOL T54_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T54_ = (NIM_BOOL)0;
					T54_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2((*fact)._kind_6.sons->data[((NI) 2)], c);
					if (!T54_) goto LA55_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA55_: ;
			}
			LA50_: ;
		}
		goto LA41_;
		LA44_: ;
		{
			NIM_BOOL T58_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T58_ = (NIM_BOOL)0;
			T58_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], x);
			if (!T58_) goto LA59_;
			{
				NIM_BOOL T63_;
				T63_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T63_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 1)]);
				if (!(T63_)) goto LA64_;
				T63_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA64_: ;
				if (!T63_) goto LA65_;
				{
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T69_;
					NIM_BOOL T70_;
					T69_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T69_ = pred__sCNrMHnQvxnk67uE0fPE6w(c);
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T70_ = (NIM_BOOL)0;
					T70_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(T69_, (*fact)._kind_6.sons->data[((NI) 1)]);
					if (!T70_) goto LA71_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				LA71_: ;
			}
			LA65_: ;
		}
		goto LA41_;
		LA59_: ;
		LA41_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116):
	{
		{
			NIM_BOOL T76_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T76_ = (NIM_BOOL)0;
			T76_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], x);
			if (!T76_) goto LA77_;
			{
				NIM_BOOL T81_;
				T81_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T81_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 2)]);
				if (!(T81_)) goto LA82_;
				T81_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA82_: ;
				if (!T81_) goto LA83_;
				{
					NIM_BOOL T87_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T87_ = (NIM_BOOL)0;
					T87_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2((*fact)._kind_6.sons->data[((NI) 2)], c);
					if (!T87_) goto LA88_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA88_: ;
			}
			LA83_: ;
		}
		goto LA74_;
		LA77_: ;
		{
			NIM_BOOL T91_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T91_ = (NIM_BOOL)0;
			T91_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], x);
			if (!T91_) goto LA92_;
			{
				NIM_BOOL T96_;
				T96_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T96_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 1)]);
				if (!(T96_)) goto LA97_;
				T96_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA97_: ;
				if (!T96_) goto LA98_;
				{
					NIM_BOOL T102_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T102_ = (NIM_BOOL)0;
					T102_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(c, (*fact)._kind_6.sons->data[((NI) 1)]);
					if (!T102_) goto LA103_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				LA103_: ;
			}
			LA98_: ;
		}
		goto LA74_;
		LA92_: ;
		LA74_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
	{
		{
			if (!NIM_TRUE) goto LA108_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_39));
		}
		LA108_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesLe__zW7m5VCjU13sae0oFr8Uww)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
{	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isLocation__MH3XlBsw9ahhEwy5cK9cHBHA(x);
		if (!!(T3_)) goto LA4_;
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
			if (!T8_) goto LA9_;
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(x, x);
				if (!T13_) goto LA14_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				goto BeforeRet_;
			}
			goto LA11_;
			LA14_: ;
			{
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				goto BeforeRet_;
			}
			LA11_: ;
		}
		LA9_: ;
		result = impliesGe__zW7m5VCjU13sae0oFr8Uww_2(fact, c, x);
		goto BeforeRet_;
	}
	LA4_: ;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	switch ((*(*(*fact)._kind_6.sons->data[((NI) 0)])._kind_4.sym).magic) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		{
			NIM_BOOL T20_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T20_ = (NIM_BOOL)0;
			T20_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], x);
			if (!T20_) goto LA21_;
			{
				NIM_BOOL T25_;
				T25_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T25_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 2)]);
				if (!(T25_)) goto LA26_;
				T25_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA26_: ;
				if (!T25_) goto LA27_;
				{
					NIM_BOOL T31_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T31_ = (NIM_BOOL)0;
					T31_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2((*fact)._kind_6.sons->data[((NI) 2)], c);
					if (!T31_) goto LA32_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				goto LA29_;
				LA32_: ;
				{
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA29_: ;
			}
			LA27_: ;
		}
		goto LA18_;
		LA21_: ;
		{
			NIM_BOOL T36_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T36_ = (NIM_BOOL)0;
			T36_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], x);
			if (!T36_) goto LA37_;
			{
				NIM_BOOL T41_;
				T41_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T41_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 1)]);
				if (!(T41_)) goto LA42_;
				T41_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA42_: ;
				if (!T41_) goto LA43_;
				{
					NIM_BOOL T47_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T47_ = (NIM_BOOL)0;
					T47_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2((*fact)._kind_6.sons->data[((NI) 1)], c);
					if (!T47_) goto LA48_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				goto LA45_;
				LA48_: ;
				{
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA45_: ;
			}
			LA43_: ;
		}
		goto LA18_;
		LA37_: ;
		LA18_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 74):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		{
			NIM_BOOL T54_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T54_ = (NIM_BOOL)0;
			T54_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], x);
			if (!T54_) goto LA55_;
			{
				NIM_BOOL T59_;
				T59_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T59_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 2)]);
				if (!(T59_)) goto LA60_;
				T59_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA60_: ;
				if (!T59_) goto LA61_;
				{
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T65_;
					NIM_BOOL T66_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T65_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T65_ = pred__sCNrMHnQvxnk67uE0fPE6w(c);
					T66_ = (NIM_BOOL)0;
					T66_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2((*fact)._kind_6.sons->data[((NI) 2)], T65_);
					if (!T66_) goto LA67_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				LA67_: ;
			}
			LA61_: ;
		}
		goto LA52_;
		LA55_: ;
		{
			NIM_BOOL T70_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T70_ = (NIM_BOOL)0;
			T70_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], x);
			if (!T70_) goto LA71_;
			{
				NIM_BOOL T75_;
				T75_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T75_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 1)]);
				if (!(T75_)) goto LA76_;
				T75_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA76_: ;
				if (!T75_) goto LA77_;
				{
					NIM_BOOL T81_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T81_ = (NIM_BOOL)0;
					T81_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(c, (*fact)._kind_6.sons->data[((NI) 1)]);
					if (!T81_) goto LA82_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA82_: ;
			}
			LA77_: ;
		}
		goto LA52_;
		LA71_: ;
		LA52_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116):
	{
		{
			NIM_BOOL T87_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T87_ = (NIM_BOOL)0;
			T87_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], x);
			if (!T87_) goto LA88_;
			{
				NIM_BOOL T92_;
				T92_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T92_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 2)]);
				if (!(T92_)) goto LA93_;
				T92_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA93_: ;
				if (!T92_) goto LA94_;
				{
					NIM_BOOL T98_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T98_ = (NIM_BOOL)0;
					T98_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2((*fact)._kind_6.sons->data[((NI) 2)], c);
					if (!T98_) goto LA99_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				}
				LA99_: ;
			}
			LA94_: ;
		}
		goto LA85_;
		LA88_: ;
		{
			NIM_BOOL T102_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T102_ = (NIM_BOOL)0;
			T102_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], x);
			if (!T102_) goto LA103_;
			{
				NIM_BOOL T107_;
				T107_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T107_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*fact)._kind_6.sons->data[((NI) 1)]);
				if (!(T107_)) goto LA108_;
				T107_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(c);
				LA108_: ;
				if (!T107_) goto LA109_;
				{
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T113_;
					NIM_BOOL T114_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					T113_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T113_ = pred__sCNrMHnQvxnk67uE0fPE6w((*fact)._kind_6.sons->data[((NI) 1)]);
					T114_ = (NIM_BOOL)0;
					T114_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(c, T113_);
					if (!T114_) goto LA115_;
					result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
				}
				LA115_: ;
			}
			LA109_: ;
		}
		goto LA85_;
		LA103_: ;
		LA85_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
	{
		{
			if (!NIM_TRUE) goto LA120_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_40));
		}
		LA120_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesLt__zW7m5VCjU13sae0oFr8Uww_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* p;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	p = pred__sCNrMHnQvxnk67uE0fPE6w(c);
	{
		if (!!((p == c))) goto LA3_;
		result = impliesLe__zW7m5VCjU13sae0oFr8Uww(fact, x, p);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* q;
		q = pred__sCNrMHnQvxnk67uE0fPE6w(x);
		{
			if (!!((q == x))) goto LA8_;
			result = impliesLe__zW7m5VCjU13sae0oFr8Uww(fact, q, c);
		}
		LA8_: ;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, compareSets__uX14XLtbeJxCxyMrK1w8tQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = equalSets__Jr5d2PbcnAZ0pFa4Ny88lg_2(NIM_NIL, a, b);
		if (!T3_) goto LA4_;
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T7_;
		NI T8_;
		T7_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T7_ = intersectSets__DJXyM0ZYUUgI9bAP6orixDA(NIM_NIL, a, b);
		T8_ = (NI)0;
		T8_ = len__P89cqdlERShb9alU3iC0yj8wast(T7_);
		if (!(T8_ == ((NI) 0))) goto LA9_;
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
	}
	goto LA1_;
	LA9_: ;
	LA1_: ;
	return result;
}
static N_INLINE(NIM_BOOL, nimAddInt64)(NI64 a, NI64 b, NI64* res) {
	NIM_BOOL result;
	NI64 r;
	result = (NIM_BOOL)0;
	r = ((NI64) ((NU64)((NU64)(((NU64) (a))) + (NU64)(((NU64) (b))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (IL64(0) <= (NI64)(r ^ a));
		if (T3_) goto LA4_;
		T3_ = (IL64(0) <= (NI64)(r ^ b));
		LA4_: ;
		if (!T3_) goto LA5_;
		(*res) = r;
	}
	goto LA1_;
	LA5_: ;
	{
		result = NIM_TRUE;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, leImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aSet) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* value;
		tyObject_Int128__9a9axPfb75jdWY25AamJewkA T5_;
		if (!((*c).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*c).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA3_;
		T5_ = firstOrd__hjogdnp59cMX1rwmjikBhqw(NIM_NIL, (*x).typ);
		value = newIntNode__4YOyxaxo739b3eaIho5QEcA((*c).kind, T5_);
		{
			NI64 TM__6PEpSVg5zYQiUPcMieikwQ_41;
			NI i;
			NI pos;
			NI neg;
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*c).kind)>>3] &(1U<<((NU)((*c).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*value).kind)>>3] &(1U<<((NU)((*value).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			if (nimSubInt64((*c)._kind_1.intVal, (*value)._kind_1.intVal, &TM__6PEpSVg5zYQiUPcMieikwQ_41)) { raiseOverflow(); };
			if (!((NI64)(TM__6PEpSVg5zYQiUPcMieikwQ_41) < IL64(1000))) goto LA8_;
			i = (NI)0;
			pos = (NI)0;
			neg = (NI)0;
			{
				while (1) {
					NI TM__6PEpSVg5zYQiUPcMieikwQ_44;
					NI64 TM__6PEpSVg5zYQiUPcMieikwQ_45;
					if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*value).kind)>>3] &(1U<<((NU)((*value).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
					if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*c).kind)>>3] &(1U<<((NU)((*c).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
					if (!((*value)._kind_1.intVal <= (*c)._kind_1.intVal)) goto LA11;
					{
						NIM_BOOL T14_;
						NI TM__6PEpSVg5zYQiUPcMieikwQ_42;
						T14_ = (NIM_BOOL)0;
						T14_ = inSet__b4nxsJCvqXRlyalSWskgNA(aSet, value);
						if (!T14_) goto LA15_;
						if (nimAddInt(pos, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_42)) { raiseOverflow(); };
						pos = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_42);
					}
					goto LA12_;
					LA15_: ;
					{
						NI TM__6PEpSVg5zYQiUPcMieikwQ_43;
						if (nimAddInt(neg, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_43)) { raiseOverflow(); };
						neg = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_43);
					}
					LA12_: ;
					if (nimAddInt(i, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_44)) { raiseOverflow(); };
					i = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_44);
					if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*value).kind)>>3] &(1U<<((NU)((*value).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
					if (nimAddInt64((*value)._kind_1.intVal, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_45)) { raiseOverflow(); };
					(*value)._kind_1.intVal = (NI64)(TM__6PEpSVg5zYQiUPcMieikwQ_45);
				} LA11: ;
			}
			{
				if (!(pos == i)) goto LA20_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			}
			goto LA18_;
			LA20_: ;
			{
				if (!(neg == i)) goto LA23_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
			}
			goto LA18_;
			LA23_: ;
			LA18_: ;
		}
		LA8_: ;
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, geImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aSet) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* value;
		tyObject_Int128__9a9axPfb75jdWY25AamJewkA max;
		if (!((*c).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*c).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA3_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*c).kind)>>3] &(1U<<((NU)((*c).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		value = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw((*c).kind, (*c)._kind_1.intVal);
		max = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(NIM_NIL, (*x).typ);
		{
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T7_;
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T8_;
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T9_;
			NIM_BOOL T10_;
			NI i;
			NI pos;
			NI neg;
			T7_ = getInt__Ml9bTZ5dXYSLBfnGRkErokw(value);
			T8_ = minus___Sp7OcCEIFoBYolB6PB1fAg_2(max, T7_);
			T9_ = toInt128__161i7kexvUAISxPtGBRWYw(((NI) 1000));
			T10_ = (NIM_BOOL)0;
			T10_ = lt___7c5Zw7H31uJfWmmhZe9aEqw_3(T8_, T9_);
			if (!T10_) goto LA11_;
			i = (NI)0;
			pos = (NI)0;
			neg = (NI)0;
			{
				while (1) {
					NIM_BOOL T15_;
					NI TM__6PEpSVg5zYQiUPcMieikwQ_48;
					NI64 TM__6PEpSVg5zYQiUPcMieikwQ_49;
					if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*value).kind)>>3] &(1U<<((NU)((*value).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
					T15_ = (NIM_BOOL)0;
					T15_ = lteq___xL5gyZrjbGMarSdRAXOo9ag((*value)._kind_1.intVal, max);
					if (!T15_) goto LA14;
					{
						NIM_BOOL T18_;
						NI TM__6PEpSVg5zYQiUPcMieikwQ_46;
						T18_ = (NIM_BOOL)0;
						T18_ = inSet__b4nxsJCvqXRlyalSWskgNA(aSet, value);
						if (!T18_) goto LA19_;
						if (nimAddInt(pos, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_46)) { raiseOverflow(); };
						pos = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_46);
					}
					goto LA16_;
					LA19_: ;
					{
						NI TM__6PEpSVg5zYQiUPcMieikwQ_47;
						if (nimAddInt(neg, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_47)) { raiseOverflow(); };
						neg = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_47);
					}
					LA16_: ;
					if (nimAddInt(i, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_48)) { raiseOverflow(); };
					i = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_48);
					if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*value).kind)>>3] &(1U<<((NU)((*value).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
					if (nimAddInt64((*value)._kind_1.intVal, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_49)) { raiseOverflow(); };
					(*value)._kind_1.intVal = (NI64)(TM__6PEpSVg5zYQiUPcMieikwQ_49);
				} LA14: ;
			}
			{
				if (!(pos == i)) goto LA24_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			}
			goto LA22_;
			LA24_: ;
			{
				if (!(neg == i)) goto LA27_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
			}
			goto LA22_;
			LA27_: ;
			LA22_: ;
		}
		LA11_: ;
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesIn__HL9bcwSOMkA5y4aYejstDyA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* loc, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aSet) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*fact)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	switch ((*(*(*fact)._kind_6.sons->data[((NI) 0)])._kind_4.sym).magic) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		{
			NIM_BOOL T4_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T4_ = (NIM_BOOL)0;
			T4_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], loc);
			if (!T4_) goto LA5_;
			{
				NIM_BOOL T9_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T9_ = (NIM_BOOL)0;
				T9_ = inSet__b4nxsJCvqXRlyalSWskgNA(aSet, (*fact)._kind_6.sons->data[((NI) 2)]);
				if (!T9_) goto LA10_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			}
			goto LA7_;
			LA10_: ;
			{
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
			}
			LA7_: ;
		}
		goto LA2_;
		LA5_: ;
		{
			NIM_BOOL T14_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T14_ = (NIM_BOOL)0;
			T14_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], loc);
			if (!T14_) goto LA15_;
			{
				NIM_BOOL T19_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
				T19_ = (NIM_BOOL)0;
				T19_ = inSet__b4nxsJCvqXRlyalSWskgNA(aSet, (*fact)._kind_6.sons->data[((NI) 1)]);
				if (!T19_) goto LA20_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			}
			goto LA17_;
			LA20_: ;
			{
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
			}
			LA17_: ;
		}
		goto LA2_;
		LA15_: ;
		LA2_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 133):
	{
		{
			NIM_BOOL T26_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T26_ = (NIM_BOOL)0;
			T26_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], loc);
			if (!T26_) goto LA27_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			result = compareSets__uX14XLtbeJxCxyMrK1w8tQ((*fact)._kind_6.sons->data[((NI) 1)], aSet);
		}
		LA27_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116):
	{
		{
			NIM_BOOL T32_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T32_ = (NIM_BOOL)0;
			T32_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], loc);
			if (!T32_) goto LA33_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			result = leImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA((*fact)._kind_6.sons->data[((NI) 1)], (*fact)._kind_6.sons->data[((NI) 2)], aSet);
		}
		goto LA30_;
		LA33_: ;
		{
			NIM_BOOL T36_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T36_ = (NIM_BOOL)0;
			T36_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], loc);
			if (!T36_) goto LA37_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			result = geImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA_2((*fact)._kind_6.sons->data[((NI) 2)], (*fact)._kind_6.sons->data[((NI) 1)], aSet);
		}
		goto LA30_;
		LA37_: ;
		LA30_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 74):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		{
			NIM_BOOL T42_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T45_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T42_ = (NIM_BOOL)0;
			T42_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 1)], loc);
			if (!T42_) goto LA43_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T45_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T45_ = pred__sCNrMHnQvxnk67uE0fPE6w((*fact)._kind_6.sons->data[((NI) 2)]);
			result = leImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA((*fact)._kind_6.sons->data[((NI) 1)], T45_, aSet);
		}
		goto LA40_;
		LA43_: ;
		{
			NIM_BOOL T47_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T50_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T47_ = (NIM_BOOL)0;
			T47_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*fact)._kind_6.sons->data[((NI) 2)], loc);
			if (!T47_) goto LA48_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
			T50_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T50_ = pred__sCNrMHnQvxnk67uE0fPE6w((*fact)._kind_6.sons->data[((NI) 1)]);
			result = geImpliesIn__xO9bWO9cPcOzr2p3b8EOf5lA_2((*fact)._kind_6.sons->data[((NI) 2)], T50_, aSet);
		}
		goto LA40_;
		LA48_: ;
		LA40_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
	{
		{
			if (!NIM_TRUE) goto LA54_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_50));
		}
		LA54_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, factImplies__ag9bsj603QsRYxrYUB8C9cMQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* prop) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T1_;
{	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	T1_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
	T1_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(fact);
	switch (T1_) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* arg;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T3_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
		arg = (*fact)._kind_6.sons->data[((NI) 1)];
		T3_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T3_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(arg);
		switch (T3_) {
		case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 142):
		case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
		{
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T5_;
			T5_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T5_ = factImplies__ag9bsj603QsRYxrYUB8C9cMQ(arg, prop);
			result = tilde___nnERY7FtzBMOEK1oaVzB1g(T5_);
			goto BeforeRet_;
		}
		break;
		case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
		{
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA a;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA b;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*arg).kind)>>3] &(1U<<((NU)((*arg).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*arg)._kind_6.sons ? (*arg)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*arg)._kind_6.sons ? (*arg)._kind_6.sons->Sup.len : 0)-1); }
			a = factImplies__ag9bsj603QsRYxrYUB8C9cMQ((*arg)._kind_6.sons->data[((NI) 1)], prop);
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*arg).kind)>>3] &(1U<<((NU)((*arg).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*arg)._kind_6.sons ? (*arg)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*arg)._kind_6.sons ? (*arg)._kind_6.sons->Sup.len : 0)-1); }
			b = factImplies__ag9bsj603QsRYxrYUB8C9cMQ((*arg)._kind_6.sons->data[((NI) 2)], prop);
			{
				if (!(a == b)) goto LA9_;
				result = tilde___nnERY7FtzBMOEK1oaVzB1g(a);
				goto BeforeRet_;
			}
			LA9_: ;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0);
			goto BeforeRet_;
		}
		break;
		default:
		{
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0);
			goto BeforeRet_;
		}
		break;
		}
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
		result = factImplies__ag9bsj603QsRYxrYUB8C9cMQ((*fact)._kind_6.sons->data[((NI) 1)], prop);
		{
			if (!!((result == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0)))) goto LA15_;
			goto BeforeRet_;
		}
		LA15_: ;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
		result = factImplies__ag9bsj603QsRYxrYUB8C9cMQ((*fact)._kind_6.sons->data[((NI) 2)], prop);
		goto BeforeRet_;
	}
	break;
	default:
	{
	}
	break;
	}
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*prop)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*prop)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	switch ((*(*(*prop)._kind_6.sons->data[((NI) 0)])._kind_4.sym).magic) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	{
		tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T19_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
		T19_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
		T19_ = factImplies__ag9bsj603QsRYxrYUB8C9cMQ(fact, (*prop)._kind_6.sons->data[((NI) 1)]);
		result = tilde___nnERY7FtzBMOEK1oaVzB1g(T19_);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 142):
	{
		result = impliesIsNil__t9c54XcpWxP4FFmaGo7UFXw(fact, prop);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		result = impliesEq__t9c54XcpWxP4FFmaGo7UFXw_2(fact, prop);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116):
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
		result = impliesLe__zW7m5VCjU13sae0oFr8Uww(fact, (*prop)._kind_6.sons->data[((NI) 1)], (*prop)._kind_6.sons->data[((NI) 2)]);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 74):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
		result = impliesLt__zW7m5VCjU13sae0oFr8Uww_3(fact, (*prop)._kind_6.sons->data[((NI) 1)], (*prop)._kind_6.sons->data[((NI) 2)]);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 133):
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*prop).kind)>>3] &(1U<<((NU)((*prop).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*prop)._kind_6.sons ? (*prop)._kind_6.sons->Sup.len : 0)-1); }
		result = impliesIn__HL9bcwSOMkA5y4aYejstDyA(fact, (*prop)._kind_6.sons->data[((NI) 2)], (*prop)._kind_6.sons->data[((NI) 1)]);
	}
	break;
	default:
	{
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0);
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, doesImply__TghwFZPkC6wzh9bOuwSr8jQ)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* facts, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* prop) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
{	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		if (!!(((*prop).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*prop).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*prop).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*prop).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*prop).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*prop).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*prop).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 32)))) goto LA3_;
		failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_32));
	}
	LA3_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* f;
		NI i;
		NI L;
		NI T6_;
		f = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		i = ((NI) 0);
		T6_ = ((*facts).s ? (*facts).s->Sup.len : 0);
		L = T6_;
		{
			while (1) {
				NI TM__6PEpSVg5zYQiUPcMieikwQ_51;
				if (!(i < L)) goto LA8;
				if ((NU)(i) >= (NU)((*facts).s ? (*facts).s->Sup.len : 0)){ raiseIndexError2(i,((*facts).s ? (*facts).s->Sup.len : 0)-1); }
				f = (*facts).s->data[i];
				{
					if (!!((f == 0))) goto LA11_;
					result = factImplies__ag9bsj603QsRYxrYUB8C9cMQ(f, prop);
					{
						if (!!((result == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0)))) goto LA15_;
						goto BeforeRet_;
					}
					LA15_: ;
				}
				LA11_: ;
				if (nimAddInt(i, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_51)) { raiseOverflow(); };
				i = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_51);
				{
					NI T19_;
					T19_ = ((*facts).s ? (*facts).s->Sup.len : 0);
					if (!!((T19_ == L))) goto LA20_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_52));
				}
				LA20_: ;
			} LA8: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, swapArgs__HwkqKTJeHjmJRQe2q847cg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* newOp) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*fact).info, ((NI) 3));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg(newOp));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), (*fact)._kind_6.sons->data[((NI) 2)]);
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), (*fact)._kind_6.sons->data[((NI) 1)]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, neg__Jdq9bmYnl9bApH9aGfXEZQN8Q)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T5_;
{	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!(n == NIM_NIL)) goto LA3_;
		result = NIM_NIL;
		goto BeforeRet_;
	}
	LA3_: ;
	T5_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
	T5_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(n);
	switch (T5_) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		result = (*n)._kind_6.sons->data[((NI) 1)];
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 74):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		result = swapArgs__HwkqKTJeHjmJRQe2q847cg(n, (*o).opLe);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116):
	{
		result = swapArgs__HwkqKTJeHjmJRQe2q847cg(n, (*o).opLt);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 133):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
		{
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			if (!!(((*(*n)._kind_6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 39)))) goto LA12_;
			result = NIM_NIL;
			goto BeforeRet_;
		}
		LA12_: ;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		t = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*(*n)._kind_6.sons->data[((NI) 2)]).typ, IL64(36134350135273744));
		result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, ((NI) 3));
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), (*n)._kind_6.sons->data[((NI) 0)]);
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), (*n)._kind_6.sons->data[((NI) 2)]);
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* s;
			if (!((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14))) goto LA16_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			s = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 39), (*n).info, (*(*n)._kind_6.sons->data[((NI) 1)]).typ);
			{
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* e;
				e = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				{
					NI i;
					NI colontmp_;
					NI i_2;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast((*t).n);
					i_2 = ((NI) 0);
					{
						while (1) {
							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* eAsNode;
							NI TM__6PEpSVg5zYQiUPcMieikwQ_53;
							if (!(i_2 < colontmp_)) goto LA21;
							i = i_2;
							if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*t).n).kind)>>3] &(1U<<((NU)((*(*t).n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
							if ((NU)(i) >= (NU)((*(*t).n)._kind_6.sons ? (*(*t).n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*(*t).n)._kind_6.sons ? (*(*t).n)._kind_6.sons->Sup.len : 0)-1); }
							e = (*(*t).n)._kind_6.sons->data[i];
							if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*e).kind)>>3] &(1U<<((NU)((*e).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
							eAsNode = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) ((*(*e)._kind_4.sym).position)));
							{
								NIM_BOOL T24_;
								if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
								if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
								T24_ = (NIM_BOOL)0;
								T24_ = inSet__b4nxsJCvqXRlyalSWskgNA((*n)._kind_6.sons->data[((NI) 1)], eAsNode);
								if (!!(T24_)) goto LA25_;
								add__P8dDSotTW25BkfbyspojGg(s, eAsNode);
							}
							LA25_: ;
							if (nimAddInt(i_2, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_53)) { raiseOverflow(); };
							i_2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_53);
						} LA21: ;
					}
				}
			}
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), s);
		}
		goto LA14_;
		LA16_: ;
		{
			result = NIM_NIL;
		}
		LA14_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		a = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q((*n)._kind_6.sons->data[((NI) 1)], o);
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		b = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q((*n)._kind_6.sons->data[((NI) 2)], o);
		{
			NIM_BOOL T31_;
			T31_ = (NIM_BOOL)0;
			T31_ = !((a == NIM_NIL));
			if (!(T31_)) goto LA32_;
			T31_ = !((b == NIM_NIL));
			LA32_: ;
			if (!T31_) goto LA33_;
			result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, ((NI) 3));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*o).opAnd));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), a);
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), b);
		}
		goto LA29_;
		LA33_: ;
		{
			if (!!((a == NIM_NIL))) goto LA36_;
			result = a;
		}
		goto LA29_;
		LA36_: ;
		{
			if (!!((b == NIM_NIL))) goto LA39_;
			result = b;
		}
		goto LA29_;
		LA39_: ;
		LA29_: ;
	}
	break;
	default:
	{
		result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, ((NI) 2));
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*o).opNot));
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), n);
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildCall__rQdL9bdBvS9aqkRykTzQFSAw)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*a).info, ((NI) 2));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg(op));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), a);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, impliesNotNil__x6MUw3H3bS3WZ5DYhXX61Q)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* arg) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T2_;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	T1_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = buildCall__rQdL9bdBvS9aqkRykTzQFSAw((*m).o.opIsNil, arg);
	T2_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(T1_, (&(*m).o));
	result = doesImply__TghwFZPkC6wzh9bOuwSr8jQ(m, T2_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildCall__bzqLNgd7GiDpqZUsYKdenA)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* op, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29), (*a).info, ((NI) 3));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg(op));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), a);
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), b);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, minusOne__FWKgXUNtQfE7EUZKj6yRDQ)(void) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(-1));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, negate__ozAjEhyMPuZLnzTVOjeVwA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* res, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b_2;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*b).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*b).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
		if (!(T3_)) goto LA4_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		T3_ = !(((*b)._kind_1.intVal == (IL64(-9223372036854775807) - IL64(1))));
		LA4_: ;
		if (!T3_) goto LA5_;
		b_2 = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(b);
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b_2).kind)>>3] &(1U<<((NU)((*b_2).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b_2).kind)>>3] &(1U<<((NU)((*b_2).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if ((*b_2)._kind_1.intVal == (IL64(-9223372036854775807) - IL64(1))){ raiseOverflow(); }
		(*b_2)._kind_1.intVal = -((*b_2)._kind_1.intVal);
		{
			if (!((*a).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*a).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA9_;
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b_2).kind)>>3] &(1U<<((NU)((*b_2).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b_2).kind)>>3] &(1U<<((NU)((*b_2).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			(*b_2)._kind_1.intVal = barplusbar___AMT0epkRpHisEnmPCWqESg((*b_2)._kind_1.intVal, (*a)._kind_1.intVal);
			result = b_2;
		}
		goto LA7_;
		LA9_: ;
		{
			result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, a, b_2);
		}
		LA7_: ;
	}
	goto LA1_;
	LA5_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b_3;
		if (!((*b).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) && (*b).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 18))) goto LA13_;
		b_3 = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(b);
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*b_3).kind)>>3] &(1U<<((NU)((*b_3).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*b_3).kind)>>3] &(1U<<((NU)((*b_3).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		(*b_3)._kind_2.floatVal = -((*b_3)._kind_2.floatVal);
		result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, a, b_3);
	}
	goto LA1_;
	LA13_: ;
	{
		result = res;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, barplusbar___9aW9bU7lixsz3Yv9aqmOB2BFg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(a);
	{
		if (!((*a).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*a).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA3_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		(*result)._kind_1.intVal = barplusbar___AMT0epkRpHisEnmPCWqESg((*a)._kind_1.intVal, (*b)._kind_1.intVal);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		(*result)._kind_2.floatVal = ((NF)((*a)._kind_2.floatVal) + (NF)((*b)._kind_2.floatVal));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, barstarbar___9aW9bU7lixsz3Yv9aqmOB2BFg_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(a);
	{
		if (!((*a).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*a).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA3_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		(*result)._kind_1.intVal = barstarbar___AMT0epkRpHisEnmPCWqESg_2((*a)._kind_1.intVal, (*b)._kind_1.intVal);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		(*result)._kind_2.floatVal = ((NF)((*a)._kind_2.floatVal) * (NF)((*b)._kind_2.floatVal));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, zero__FWKgXUNtQfE7EUZKj6yRDQ_2)(void) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, reassociation__Jdq9bmYnl9bApH9aGfXEZQN8Q_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T1_;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	T1_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
	T1_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(result);
	switch (T1_) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52):
	{
		{
			NIM_BOOL T5_;
			NIM_BOOL T6_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T8_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T12_;
			T5_ = (NIM_BOOL)0;
			T6_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T6_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*result)._kind_6.sons->data[((NI) 2)]);
			if (!(T6_)) goto LA7_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T8_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T8_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*result)._kind_6.sons->data[((NI) 1)]);
			T6_ = (T8_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T8_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T8_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
			LA7_: ;
			T5_ = T6_;
			if (!(T5_)) goto LA9_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			T5_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)]);
			LA9_: ;
			if (!T5_) goto LA10_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T12_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T12_ = barplusbar___9aW9bU7lixsz3Yv9aqmOB2BFg((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)], (*result)._kind_6.sons->data[((NI) 2)]);
			result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 1)], T12_);
			{
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*(*result)._kind_6.sons->data[((NI) 2)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 2)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
				if (!((*(*result)._kind_6.sons->data[((NI) 2)])._kind_1.intVal == IL64(0))) goto LA15_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
				result = (*result)._kind_6.sons->data[((NI) 1)];
			}
			LA15_: ;
		}
		LA10_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54):
	{
		{
			NIM_BOOL T20_;
			NIM_BOOL T21_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T23_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T27_;
			T20_ = (NIM_BOOL)0;
			T21_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T21_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*result)._kind_6.sons->data[((NI) 2)]);
			if (!(T21_)) goto LA22_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T23_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T23_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*result)._kind_6.sons->data[((NI) 1)]);
			T21_ = (T23_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47) || T23_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54));
			LA22_: ;
			T20_ = T21_;
			if (!(T20_)) goto LA24_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			T20_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)]);
			LA24_: ;
			if (!T20_) goto LA25_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T27_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T27_ = barstarbar___9aW9bU7lixsz3Yv9aqmOB2BFg_2((*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)], (*result)._kind_6.sons->data[((NI) 2)]);
			result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opMul, (*(*result)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 1)], T27_);
			{
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*(*result)._kind_6.sons->data[((NI) 2)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 2)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
				if (!((*(*result)._kind_6.sons->data[((NI) 2)])._kind_1.intVal == IL64(1))) goto LA30_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
				result = (*result)._kind_6.sons->data[((NI) 1)];
			}
			goto LA28_;
			LA30_: ;
			{
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*(*result)._kind_6.sons->data[((NI) 2)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 2)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
				if (!((*(*result)._kind_6.sons->data[((NI) 2)])._kind_1.intVal == IL64(0))) goto LA33_;
				result = zero__FWKgXUNtQfE7EUZKj6yRDQ_2();
			}
			goto LA28_;
			LA33_: ;
			LA28_: ;
		}
		LA25_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isLet__MH3XlBsw9ahhEwy5cK9cHBHA_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		if (!((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		{
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
			if (!((2097696 &(1U<<((NU)((*(*n)._kind_4.sym).kind)&31U)))!=0)) goto LA7_;
			result = NIM_TRUE;
		}
		goto LA5_;
		LA7_: ;
		{
			NIM_BOOL T10_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T12_;
			T10_ = (NIM_BOOL)0;
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
			T10_ = ((*(*n)._kind_4.sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 3));
			if (!(T10_)) goto LA11_;
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
			T12_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T12_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*(*n)._kind_4.sym).typ, IL64(36134350135273744));
			T10_ = !(((*T12_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23)));
			LA11_: ;
			if (!T10_) goto LA13_;
			result = NIM_TRUE;
		}
		goto LA5_;
		LA13_: ;
		LA5_: ;
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isVar__MH3XlBsw9ahhEwy5cK9cHBHA_4)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T2_ = ((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
	if (!(T2_)) goto LA3_;
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	T2_ = ((2304 &(1U<<((NU)((*(*n)._kind_4.sym).kind)&31U)))!=0);
	LA3_: ;
	T1_ = T2_;
	if (!(T1_)) goto LA4_;
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
	T1_ = ((131072 & (*(*n)._kind_4.sym).flags) == 0);
	LA4_: ;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* m, NIM_BOOL isApprox) {
	NIM_BOOL result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
	NI derefs;
	NIM_BOOL T18_;
{	result = (NIM_BOOL)0;
	n = m;
	derefs = ((NI) 0);
	{
		while (1) {
			switch ((*n).kind) {
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 45):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 46):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 67):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 66):
			{
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				n = (*n)._kind_6.sons->data[((NI) 0)];
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 47):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 65):
			{
				NI TM__6PEpSVg5zYQiUPcMieikwQ_56;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				n = (*n)._kind_6.sons->data[((NI) 0)];
				if (nimAddInt(derefs, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_56)) { raiseOverflow(); };
				derefs = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_56);
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 42):
			{
				{
					NIM_BOOL T8_;
					NIM_BOOL T9_;
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T12_;
					T8_ = (NIM_BOOL)0;
					T9_ = (NIM_BOOL)0;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
					T9_ = isConstExpr__9cP6JNeOKqczaXCI4Zo4SBQ_2((*n)._kind_6.sons->data[((NI) 1)]);
					if (T9_) goto LA10_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
					T9_ = isLet__MH3XlBsw9ahhEwy5cK9cHBHA_3((*n)._kind_6.sons->data[((NI) 1)]);
					LA10_: ;
					T8_ = T9_;
					if (T8_) goto LA11_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
					T12_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
					T12_ = skipConv__BH9abOhPX8pH0DnEWlRxmlw((*n)._kind_6.sons->data[((NI) 1)]);
					T8_ = isConstExpr__9cP6JNeOKqczaXCI4Zo4SBQ_2(T12_);
					LA11_: ;
					if (!T8_) goto LA13_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
					n = (*n)._kind_6.sons->data[((NI) 0)];
				}
				goto LA6_;
				LA13_: ;
				{
					goto BeforeRet_;
				}
				LA6_: ;
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 58):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 59):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 60):
			{
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				n = (*n)._kind_6.sons->data[((NI) 1)];
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	T18_ = (NIM_BOOL)0;
	T18_ = isLet__MH3XlBsw9ahhEwy5cK9cHBHA_3(n);
	if (!(T18_)) goto LA19_;
	T18_ = (derefs <= isApprox);
	LA19_: ;
	result = T18_;
	{
		NIM_BOOL T22_;
		T22_ = (NIM_BOOL)0;
		T22_ = !(result);
		if (!(T22_)) goto LA23_;
		T22_ = isApprox;
		LA23_: ;
		if (!T22_) goto LA24_;
		result = isVar__MH3XlBsw9ahhEwy5cK9cHBHA_4(n);
	}
	LA24_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, barminusbar___9aW9bU7lixsz3Yv9aqmOB2BFg_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(a);
	{
		if (!((*a).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*a).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA3_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		(*result)._kind_1.intVal = barminusbar___AMT0epkRpHisEnmPCWqESg_3((*a)._kind_1.intVal, (*b)._kind_1.intVal);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		(*result)._kind_2.floatVal = ((NF)((*a)._kind_2.floatVal) - (NF)((*b)._kind_2.floatVal));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T20_;
	tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T44_;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
		if (!(((NI) 1) <= T3_)) goto LA4_;
		result = shallowCopy__Dsjo9bte8vGxzhtcSrsTyiQ_3(n);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					NI TM__6PEpSVg5zYQiUPcMieikwQ_54;
					if (!(i_2 < colontmp_)) goto LA8;
					i = i_2;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(i) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(i) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
					asgnRef((void**) (&(*result)._kind_6.sons->data[i]), canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2((*n)._kind_6.sons->data[i], o));
					if (nimAddInt(i_2, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_54)) { raiseOverflow(); };
					i_2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_54);
				} LA8: ;
			}
		}
	}
	goto LA1_;
	LA4_: ;
	{
		NIM_BOOL T10_;
		NIM_BOOL T11_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T14_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T15_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T18_;
		T10_ = (NIM_BOOL)0;
		T11_ = (NIM_BOOL)0;
		T11_ = ((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T11_)) goto LA12_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
		T11_ = ((*(*n)._kind_4.sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 9));
		LA12_: ;
		T10_ = T11_;
		if (!(T10_)) goto LA13_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
		T14_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T14_ = astdef__PBkjYIaAGbtrZ8DiUArHcw((*n)._kind_4.sym);
		T15_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T15_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(T14_);
		T10_ = ((TM__6PEpSVg5zYQiUPcMieikwQ_55[(NU)(T15_)>>3] &(1U<<((NU)(T15_)&7U)))!=0);
		LA13_: ;
		if (!T10_) goto LA16_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
		T18_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T18_ = astdef__PBkjYIaAGbtrZ8DiUArHcw((*n)._kind_4.sym);
		result = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2(T18_);
	}
	goto LA1_;
	LA16_: ;
	{
		result = n;
	}
	LA1_: ;
	T20_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
	T20_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(result);
	switch (T20_) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 62):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 63):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54):
	{
		{
			NIM_BOOL T24_;
			NIM_BOOL T26_;
			T24_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T24_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*result)._kind_6.sons->data[((NI) 1)]);
			if (!(T24_)) goto LA25_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			T26_ = (NIM_BOOL)0;
			T26_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*result)._kind_6.sons->data[((NI) 2)]);
			T24_ = !(T26_);
			LA25_: ;
			if (!T24_) goto LA27_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
			result = swapArgs__HwkqKTJeHjmJRQe2q847cg(result, (*(*result)._kind_6.sons->data[((NI) 0)])._kind_4.sym);
		}
		LA27_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 8):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T30_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T31_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		T30_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T30_ = buildCall__rQdL9bdBvS9aqkRykTzQFSAw((*o).opLen, (*result)._kind_6.sons->data[((NI) 1)]);
		T31_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T31_ = minusOne__FWKgXUNtQfE7EUZKj6yRDQ();
		result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, T30_, T31_);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 46):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 51):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 53):
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		result = negate__ozAjEhyMPuZLnzTVOjeVwA((*result)._kind_6.sons->data[((NI) 1)], (*result)._kind_6.sons->data[((NI) 2)], result, o);
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38):
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*o).opLen));
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* y;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* p;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* minus;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T42_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		y = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2((*n)._kind_6.sons->data[((NI) 2)], o);
		p = pred__sCNrMHnQvxnk67uE0fPE6w(y);
		{
			if (!!((p == y))) goto LA37_;
			minus = p;
		}
		goto LA35_;
		LA37_: ;
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T40_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T41_;
			T40_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T40_ = minusOne__FWKgXUNtQfE7EUZKj6yRDQ();
			T41_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T41_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, y, T40_);
			minus = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(T41_, o);
		}
		LA35_: ;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		T42_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T42_ = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2((*n)._kind_6.sons->data[((NI) 1)], o);
		result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opLe, T42_, minus);
	}
	break;
	default:
	{
	}
	break;
	}
	result = skipConv__BH9abOhPX8pH0DnEWlRxmlw(result);
	result = reassociation__Jdq9bmYnl9bApH9aGfXEZQN8Q_3(result, o);
	T44_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
	T44_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(result);
	switch (T44_) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* y_2;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		x = (*result)._kind_6.sons->data[((NI) 1)];
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
		y_2 = (*result)._kind_6.sons->data[((NI) 2)];
		{
			NIM_BOOL T48_;
			NIM_BOOL T49_;
			NIM_BOOL T50_;
			NI T52_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T57_;
			T48_ = (NIM_BOOL)0;
			T49_ = (NIM_BOOL)0;
			T50_ = (NIM_BOOL)0;
			T50_ = ((*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 32));
			if (!(T50_)) goto LA51_;
			T52_ = (NI)0;
			T52_ = len__P89cqdlERShb9alU3iC0yj8wast(x);
			T50_ = (T52_ == ((NI) 3));
			LA51_: ;
			T49_ = T50_;
			if (!(T49_)) goto LA53_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
			T49_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*x)._kind_6.sons->data[((NI) 2)]);
			LA53_: ;
			T48_ = T49_;
			if (!(T48_)) goto LA54_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
			T48_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*x)._kind_6.sons->data[((NI) 1)], NIM_TRUE);
			LA54_: ;
			if (!T48_) goto LA55_;
			T57_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T57_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(x);
			switch (T57_) {
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 46):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 51):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 53):
			{
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T59_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T60_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
				T59_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T59_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, y_2, (*x)._kind_6.sons->data[((NI) 2)]);
				T60_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T60_ = reassociation__Jdq9bmYnl9bApH9aGfXEZQN8Q_3(T59_, o);
				result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*(*result)._kind_6.sons->data[((NI) 0)])._kind_4.sym, (*x)._kind_6.sons->data[((NI) 1)], T60_);
			}
			break;
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52):
			{
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* plus;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T62_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
				T62_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T62_ = negate__ozAjEhyMPuZLnzTVOjeVwA(y_2, (*x)._kind_6.sons->data[((NI) 2)], NIM_NIL, o);
				plus = reassociation__Jdq9bmYnl9bApH9aGfXEZQN8Q_3(T62_, o);
				{
					if (!!((plus == NIM_NIL))) goto LA65_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
					if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
					result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*(*result)._kind_6.sons->data[((NI) 0)])._kind_4.sym, (*x)._kind_6.sons->data[((NI) 1)], plus);
				}
				LA65_: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA46_;
		LA55_: ;
		{
			NIM_BOOL T69_;
			NIM_BOOL T70_;
			NIM_BOOL T71_;
			NI T73_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T78_;
			T69_ = (NIM_BOOL)0;
			T70_ = (NIM_BOOL)0;
			T71_ = (NIM_BOOL)0;
			T71_ = ((*y_2).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*y_2).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*y_2).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*y_2).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*y_2).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*y_2).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*y_2).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 32));
			if (!(T71_)) goto LA72_;
			T73_ = (NI)0;
			T73_ = len__P89cqdlERShb9alU3iC0yj8wast(y_2);
			T71_ = (T73_ == ((NI) 3));
			LA72_: ;
			T70_ = T71_;
			if (!(T70_)) goto LA74_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			T70_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*y_2)._kind_6.sons->data[((NI) 2)]);
			LA74_: ;
			T69_ = T70_;
			if (!(T69_)) goto LA75_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			T69_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*y_2)._kind_6.sons->data[((NI) 1)], NIM_TRUE);
			LA75_: ;
			if (!T69_) goto LA76_;
			T78_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T78_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(y_2);
			switch (T78_) {
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 46):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 51):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 53):
			{
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T80_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T81_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
				T80_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T80_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, x, (*y_2)._kind_6.sons->data[((NI) 2)]);
				T81_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T81_ = reassociation__Jdq9bmYnl9bApH9aGfXEZQN8Q_3(T80_, o);
				result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*(*result)._kind_6.sons->data[((NI) 0)])._kind_4.sym, (*y_2)._kind_6.sons->data[((NI) 1)], T81_);
			}
			break;
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50):
			case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52):
			{
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* plus_2;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T83_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
				T83_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T83_ = negate__ozAjEhyMPuZLnzTVOjeVwA(x, (*y_2)._kind_6.sons->data[((NI) 2)], NIM_NIL, o);
				plus_2 = reassociation__Jdq9bmYnl9bApH9aGfXEZQN8Q_3(T83_, o);
				{
					NIM_BOOL T86_;
					NIM_BOOL T88_;
					T86_ = (NIM_BOOL)0;
					T86_ = !((plus_2 == NIM_NIL));
					if (!(T86_)) goto LA87_;
					T88_ = (NIM_BOOL)0;
					T88_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA(x, NIM_TRUE);
					T86_ = !(T88_);
					LA87_: ;
					if (!T86_) goto LA89_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
					if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*result)._kind_6.sons->data[((NI) 0)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
					result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*(*result)._kind_6.sons->data[((NI) 0)])._kind_4.sym, plus_2, (*y_2)._kind_6.sons->data[((NI) 1)]);
				}
				LA89_: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA46_;
		LA76_: ;
		{
			NIM_BOOL T93_;
			NIM_BOOL T94_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T96_;
			T93_ = (NIM_BOOL)0;
			T94_ = (NIM_BOOL)0;
			T94_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(x);
			if (!(T94_)) goto LA95_;
			T96_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T96_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(y_2);
			T94_ = (T96_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T96_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T96_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
			LA95_: ;
			T93_ = T94_;
			if (!(T93_)) goto LA97_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			T93_ = ((*(*y_2)._kind_6.sons->data[((NI) 2)]).kind == (*x).kind);
			LA97_: ;
			if (!T93_) goto LA98_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), barminusbar___9aW9bU7lixsz3Yv9aqmOB2BFg_3(x, (*y_2)._kind_6.sons->data[((NI) 2)]));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), (*y_2)._kind_6.sons->data[((NI) 1)]);
		}
		goto LA46_;
		LA98_: ;
		{
			NIM_BOOL T101_;
			NIM_BOOL T102_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T104_;
			T101_ = (NIM_BOOL)0;
			T102_ = (NIM_BOOL)0;
			T102_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(x);
			if (!(T102_)) goto LA103_;
			T104_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T104_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(y_2);
			T102_ = (T104_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 46) || T104_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 53) || T104_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 51));
			LA103_: ;
			T101_ = T102_;
			if (!(T101_)) goto LA105_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			T101_ = ((*(*y_2)._kind_6.sons->data[((NI) 2)]).kind == (*x).kind);
			LA105_: ;
			if (!T101_) goto LA106_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), barplusbar___9aW9bU7lixsz3Yv9aqmOB2BFg(x, (*y_2)._kind_6.sons->data[((NI) 2)]));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y_2).kind)>>3] &(1U<<((NU)((*y_2).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*y_2)._kind_6.sons ? (*y_2)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), (*y_2)._kind_6.sons->data[((NI) 1)]);
		}
		goto LA46_;
		LA106_: ;
		LA46_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, one__FWKgXUNtQfE7EUZKj6yRDQ_3)(void) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
	return result;
}
static N_INLINE(NIM_BOOL, nimDivInt64)(NI64 a, NI64 b, NI64* res) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (a == (IL64(-9223372036854775807) - IL64(1)));
		if (!(T3_)) goto LA4_;
		T3_ = (b == IL64(-1));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = NIM_TRUE;
	}
	goto LA1_;
	LA5_: ;
	{
		(*res) = (NI64)(a / b);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, bardivbar___9aW9bU7lixsz3Yv9aqmOB2BFg_4)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = copyNode__Dsjo9bte8vGxzhtcSrsTyiQ(a);
	{
		NI64 TM__6PEpSVg5zYQiUPcMieikwQ_57;
		if (!((*a).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*a).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15))) goto LA3_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
		if ((*b)._kind_1.intVal == 0){ raiseDivByZero(); }
		if (nimDivInt64((*a)._kind_1.intVal, (*b)._kind_1.intVal, &TM__6PEpSVg5zYQiUPcMieikwQ_57)) { raiseOverflow(); };
		(*result)._kind_1.intVal = (NI64)(TM__6PEpSVg5zYQiUPcMieikwQ_57);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_22[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_23)); }
		(*result)._kind_2.floatVal = ((NF)((*a)._kind_2.floatVal) / (NF)((*b)._kind_2.floatVal));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isMinusOne__MH3XlBsw9ahhEwy5cK9cHBHA_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
	if (!(T1_)) goto LA2_;
	if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
	T1_ = ((*n)._kind_1.intVal == IL64(-1));
	LA2_: ;
	result = T1_;
	return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_NIMCALL(void, Marker_tySequence__nw2ozGiJbajPUc4Cj4vzYw)(void* p, NI op) {
	tySequence__nw2ozGiJbajPUc4Cj4vzYw* a;
	NI T1_;
	a = (tySequence__nw2ozGiJbajPUc4Cj4vzYw*)p;
	T1_ = (NI)0;
	for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
	nimGCvisit((void*)a->data[T1_].Field0, op);
	nimGCvisit((void*)a->data[T1_].Field1, op);
	}
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, replaceSubTree__L5ySkEBBMvbFl1v5oW7tYg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* by) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA(n, x);
		if (!T3_) goto LA4_;
		result = by;
	}
	goto LA1_;
	LA4_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = hasSubTree__MsjoJ819bWzwqrafMUbvZUQ(n, x);
		if (!T7_) goto LA8_;
		result = shallowCopy__Dsjo9bte8vGxzhtcSrsTyiQ_3(n);
		{
			NI i;
			NI colontmp_;
			NI T11_;
			NI TM__6PEpSVg5zYQiUPcMieikwQ_61;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T11_ = (NI)0;
			T11_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
			if (nimSubInt(T11_, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_61)) { raiseOverflow(); };
			colontmp_ = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_61);
			res = ((NI) 0);
			{
				while (1) {
					NI TM__6PEpSVg5zYQiUPcMieikwQ_62;
					if (!(res <= colontmp_)) goto LA13;
					i = res;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(i) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(i) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
					asgnRef((void**) (&(*result)._kind_6.sons->data[i]), replaceSubTree__L5ySkEBBMvbFl1v5oW7tYg((*n)._kind_6.sons->data[i], x, by));
					if (nimAddInt(res, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_62)) { raiseOverflow(); };
					res = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_62);
				} LA13: ;
			}
		}
	}
	goto LA1_;
	LA8_: ;
	{
		result = n;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, applyReplacements__b6iA67SQaAf7h31PeZXmQQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tySequence__nw2ozGiJbajPUc4Cj4vzYw* rep) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		tyTuple__EFqgCXJ4d8PgqOdFJmldsQ x;
		NI i;
		NI L;
		NI T2_;
		nimZeroMem((void*)(&x), sizeof(tyTuple__EFqgCXJ4d8PgqOdFJmldsQ));
		i = ((NI) 0);
		T2_ = (rep ? rep->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				NI TM__6PEpSVg5zYQiUPcMieikwQ_63;
				if (!(i < L)) goto LA4;
				if ((NU)(i) >= (NU)(rep ? rep->Sup.len : 0)){ raiseIndexError2(i,(rep ? rep->Sup.len : 0)-1); }
				x.Field0 = rep->data[i].Field0;
				x.Field1 = rep->data[i].Field1;
				result = replaceSubTree__L5ySkEBBMvbFl1v5oW7tYg(result, x.Field0, x.Field1);
				if (nimAddInt(i, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_63)) { raiseOverflow(); };
				i = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_63);
				{
					NI T7_;
					T7_ = (rep ? rep->Sup.len : 0);
					if (!!((T7_ == L))) goto LA8_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_52));
				}
				LA8_: ;
			} LA4: ;
		}
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, pleViaModelRec__BXeoQpkXTRCPZ40rIGcsCA)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
{	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (((*m).s ? (*m).s->Sup.len : 0)-1);
		colontmp_ = T2_;
		res = ((NI) 0);
		{
			while (1) {
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact;
				NI TM__6PEpSVg5zYQiUPcMieikwQ_65;
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				if ((NU)(i) >= (NU)((*m).s ? (*m).s->Sup.len : 0)){ raiseIndexError2(i,((*m).s ? (*m).s->Sup.len : 0)-1); }
				fact = (*m).s->data[i];
				{
					NIM_BOOL T7_;
					tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T9_;
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x;
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* y;
					T7_ = (NIM_BOOL)0;
					T7_ = !((fact == NIM_NIL));
					if (!(T7_)) goto LA8_;
					T9_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
					T9_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(fact);
					T7_ = (T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 75) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116));
					LA8_: ;
					if (!T7_) goto LA10_;
					if ((NU)(i) >= (NU)((*m).s ? (*m).s->Sup.len : 0)){ raiseIndexError2(i,((*m).s ? (*m).s->Sup.len : 0)-1); }
					asgnRef((void**) (&(*m).s->data[i]), NIM_NIL);
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					x = (*fact)._kind_6.sons->data[((NI) 1)];
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					y = (*fact)._kind_6.sons->data[((NI) 2)];
					{
						NIM_BOOL T14_;
						T14_ = (NIM_BOOL)0;
						T14_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA(x, a);
						if (!T14_) goto LA15_;
						{
							tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T19_;
							T19_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
							T19_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2((&(*m)), y, b);
							if (!(T19_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2))) goto LA20_;
							result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
							goto BeforeRet_;
						}
						LA20_: ;
						{
							NIM_BOOL T24_;
							NIM_BOOL T25_;
							tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T26_;
							tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T28_;
							T24_ = (NIM_BOOL)0;
							T25_ = (NIM_BOOL)0;
							T26_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
							T26_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(y);
							T25_ = (T26_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T26_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T26_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
							if (!(T25_)) goto LA27_;
							T28_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
							T28_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
							T25_ = (T28_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T28_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T28_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
							LA27_: ;
							T24_ = T25_;
							if (!(T24_)) goto LA29_;
							if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y).kind)>>3] &(1U<<((NU)((*y).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
							if ((NU)(((NI) 1)) >= (NU)((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)-1); }
							if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
							if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
							T24_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*y)._kind_6.sons->data[((NI) 1)], (*b)._kind_6.sons->data[((NI) 1)]);
							LA29_: ;
							if (!T24_) goto LA30_;
							{
								tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T34_;
								if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
								if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
								if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y).kind)>>3] &(1U<<((NU)((*y).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
								if ((NU)(((NI) 2)) >= (NU)((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)-1); }
								T34_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
								T34_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2((&(*m)), (*b)._kind_6.sons->data[((NI) 2)], (*y)._kind_6.sons->data[((NI) 2)]);
								if (!(T34_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2))) goto LA35_;
								result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
								goto BeforeRet_;
							}
							LA35_: ;
						}
						LA30_: ;
					}
					LA15_: ;
					{
						tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T39_;
						T39_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
						T39_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2((&(*m)), a, x);
						if (!(T39_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2))) goto LA40_;
						{
							tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T44_;
							T44_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
							T44_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2((&(*m)), y, b);
							if (!(T44_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2))) goto LA45_;
							result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
							goto BeforeRet_;
						}
						LA45_: ;
					}
					LA40_: ;
					result = impliesLe__zW7m5VCjU13sae0oFr8Uww(fact, a, b);
					{
						if (!!((result == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0)))) goto LA49_;
						goto BeforeRet_;
					}
					LA49_: ;
				}
				LA10_: ;
				if (nimAddInt(res, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_65)) { raiseOverflow(); };
				res = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_65);
			} LA4: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, pleViaModel__G9bUxQOJUHpRPU6xPkealOw)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* model, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* aa, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* bb) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	tySequence__nw2ozGiJbajPUc4Cj4vzYw* replacements;
	tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q m;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a_2;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b_2;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	replacements = NIM_NIL;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact;
		NI i;
		NI L;
		NI T2_;
		fact = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		i = ((NI) 0);
		T2_ = ((*model).s ? (*model).s->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				NI TM__6PEpSVg5zYQiUPcMieikwQ_59;
				if (!(i < L)) goto LA4;
				if ((NU)(i) >= (NU)((*model).s ? (*model).s->Sup.len : 0)){ raiseIndexError2(i,((*model).s ? (*model).s->Sup.len : 0)-1); }
				fact = (*model).s->data[i];
				{
					NIM_BOOL T7_;
					tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T9_;
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a;
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b;
					T7_ = (NIM_BOOL)0;
					T7_ = !((fact == NIM_NIL));
					if (!(T7_)) goto LA8_;
					T9_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
					T9_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(fact);
					T7_ = ((TM__6PEpSVg5zYQiUPcMieikwQ_17[(NU)(T9_)>>3] &(1U<<((NU)(T9_)&7U)))!=0);
					LA8_: ;
					if (!T7_) goto LA10_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					a = (*fact)._kind_6.sons->data[((NI) 1)];
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
					b = (*fact)._kind_6.sons->data[((NI) 2)];
					{
						tyTuple__EFqgCXJ4d8PgqOdFJmldsQ T16_;
						NI T17_;
						if (!((*a).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA14_;
						nimZeroMem((void*)(&T16_), sizeof(tyTuple__EFqgCXJ4d8PgqOdFJmldsQ));
						T16_.Field0 = a;
						T16_.Field1 = b;
						replacements = (tySequence__nw2ozGiJbajPUc4Cj4vzYw*) incrSeqV3((TGenericSeq*)(replacements), (&NTI__nw2ozGiJbajPUc4Cj4vzYw_));
						T17_ = replacements->Sup.len++;
						asgnRef((void**) (&replacements->data[T17_].Field0), T16_.Field0);
						asgnRef((void**) (&replacements->data[T17_].Field1), T16_.Field1);
					}
					goto LA12_;
					LA14_: ;
					{
						tyTuple__EFqgCXJ4d8PgqOdFJmldsQ T19_;
						NI T20_;
						nimZeroMem((void*)(&T19_), sizeof(tyTuple__EFqgCXJ4d8PgqOdFJmldsQ));
						T19_.Field0 = b;
						T19_.Field1 = a;
						replacements = (tySequence__nw2ozGiJbajPUc4Cj4vzYw*) incrSeqV3((TGenericSeq*)(replacements), (&NTI__nw2ozGiJbajPUc4Cj4vzYw_));
						T20_ = replacements->Sup.len++;
						asgnRef((void**) (&replacements->data[T20_].Field0), T19_.Field0);
						asgnRef((void**) (&replacements->data[T20_].Field1), T19_.Field1);
					}
					LA12_: ;
				}
				LA10_: ;
				if (nimAddInt(i, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_59)) { raiseOverflow(); };
				i = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_59);
				{
					NI T23_;
					T23_ = ((*model).s ? (*model).s->Sup.len : 0);
					if (!!((T23_ == L))) goto LA24_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_52));
				}
				LA24_: ;
			} LA4: ;
		}
	}
	nimZeroMem((void*)(&m), sizeof(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q));
	a_2 = aa;
	b_2 = bb;
	{
		NI T28_;
		T28_ = (replacements ? replacements->Sup.len : 0);
		if (!(((NI) 0) < T28_)) goto LA29_;
		m.s = NIM_NIL;
		genericAssign((void*)(&m.o), (void*)(&(*model).o), (&NTI__apNm0zcYroUpNRird62c9aQ_));
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact_2;
			NI i_2;
			NI L_2;
			NI T32_;
			fact_2 = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			i_2 = ((NI) 0);
			T32_ = ((*model).s ? (*model).s->Sup.len : 0);
			L_2 = T32_;
			{
				while (1) {
					NI TM__6PEpSVg5zYQiUPcMieikwQ_64;
					if (!(i_2 < L_2)) goto LA34;
					if ((NU)(i_2) >= (NU)((*model).s ? (*model).s->Sup.len : 0)){ raiseIndexError2(i_2,((*model).s ? (*model).s->Sup.len : 0)-1); }
					fact_2 = (*model).s->data[i_2];
					{
						NIM_BOOL T37_;
						tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T39_;
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T42_;
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T43_;
						NI T44_;
						T37_ = (NIM_BOOL)0;
						T37_ = !((fact_2 == NIM_NIL));
						if (!(T37_)) goto LA38_;
						T39_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
						T39_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(fact_2);
						T37_ = !(((TM__6PEpSVg5zYQiUPcMieikwQ_17[(NU)(T39_)>>3] &(1U<<((NU)(T39_)&7U)))!=0));
						LA38_: ;
						if (!T37_) goto LA40_;
						T42_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
						T42_ = applyReplacements__b6iA67SQaAf7h31PeZXmQQ(fact_2, replacements);
						T43_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
						T43_ = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(T42_, (&m.o));
						m.s = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)(m.s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_));
						T44_ = m.s->Sup.len++;
						asgnRef((void**) (&m.s->data[T44_]), T43_);
					}
					LA40_: ;
					if (nimAddInt(i_2, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_64)) { raiseOverflow(); };
					i_2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_64);
					{
						NI T47_;
						T47_ = ((*model).s ? (*model).s->Sup.len : 0);
						if (!!((T47_ == L_2))) goto LA48_;
						failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_52));
					}
					LA48_: ;
				} LA34: ;
			}
		}
		a_2 = applyReplacements__b6iA67SQaAf7h31PeZXmQQ(aa, replacements);
		b_2 = applyReplacements__b6iA67SQaAf7h31PeZXmQQ(bb, replacements);
	}
	goto LA26_;
	LA29_: ;
	{
		genericSeqAssign((&m.s), (*model).s, (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_));
		genericAssign((void*)(&m.o), (void*)(&(*model).o), (&NTI__apNm0zcYroUpNRird62c9aQ_));
		m.beSmart = (*model).beSmart;
	}
	LA26_: ;
	result = pleViaModelRec__BXeoQpkXTRCPZ40rIGcsCA((&m), a_2, b_2);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, ple__gquZ4TuLCn9anC5O4OWI4Og_2)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
{	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(a);
		if (!(T3_)) goto LA4_;
		T3_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(b);
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			NIM_BOOL T9_;
			T9_ = (NIM_BOOL)0;
			T9_ = leValue__uOYuOsiCZAbEPMGwBL8r8g_2(a, b);
			if (!T9_) goto LA10_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
		}
		goto LA7_;
		LA10_: ;
		{
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 1);
		}
		LA7_: ;
		goto BeforeRet_;
	}
	LA5_: ;
	{
		NIM_BOOL T15_;
		NIM_BOOL T16_;
		T15_ = (NIM_BOOL)0;
		T16_ = (NIM_BOOL)0;
		T16_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(b);
		if (!(T16_)) goto LA17_;
		T16_ = !(((*a).typ == NIM_NIL));
		LA17_: ;
		T15_ = T16_;
		if (!(T15_)) goto LA18_;
		T15_ = isOrdinalType__6euCPZwUsyXzP1vAm4IthA((*a).typ, NIM_FALSE);
		LA18_: ;
		if (!T15_) goto LA19_;
		{
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T23_;
			NIM_BOOL T24_;
			T23_ = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(NIM_NIL, (*a).typ);
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			T24_ = (NIM_BOOL)0;
			T24_ = lteq___nr9cP9b0OL9cabygV9bo19cJgZA(T23_, (*b)._kind_1.intVal);
			if (!T24_) goto LA25_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA25_: ;
	}
	LA19_: ;
	{
		NIM_BOOL T29_;
		NIM_BOOL T30_;
		T29_ = (NIM_BOOL)0;
		T30_ = (NIM_BOOL)0;
		T30_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(a);
		if (!(T30_)) goto LA31_;
		T30_ = !(((*b).typ == NIM_NIL));
		LA31_: ;
		T29_ = T30_;
		if (!(T29_)) goto LA32_;
		T29_ = isOrdinalType__6euCPZwUsyXzP1vAm4IthA((*b).typ, NIM_FALSE);
		LA32_: ;
		if (!T29_) goto LA33_;
		{
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T37_;
			NIM_BOOL T38_;
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			T37_ = firstOrd__hjogdnp59cMX1rwmjikBhqw(NIM_NIL, (*b).typ);
			T38_ = (NIM_BOOL)0;
			T38_ = lteq___xL5gyZrjbGMarSdRAXOo9ag((*a)._kind_1.intVal, T37_);
			if (!T38_) goto LA39_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA39_: ;
	}
	LA33_: ;
	{
		NIM_BOOL T43_;
		T43_ = (NIM_BOOL)0;
		T43_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA(a, b);
		if (!T43_) goto LA44_;
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
		goto BeforeRet_;
	}
	LA44_: ;
	{
		NIM_BOOL T48_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T49_;
		T48_ = (NIM_BOOL)0;
		T49_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T49_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
		T48_ = (T49_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) || T49_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 36) || T49_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 37) || T49_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38));
		if (!(T48_)) goto LA50_;
		T48_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2(a);
		LA50_: ;
		if (!T48_) goto LA51_;
		{
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			if (!((*a)._kind_1.intVal <= IL64(0))) goto LA55_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA55_: ;
	}
	LA51_: ;
	{
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T59_;
		T59_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T59_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
		if (!(T59_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T59_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T59_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50))) goto LA60_;
		{
			NIM_BOOL T64_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T65_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T66_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T68_;
			T64_ = (NIM_BOOL)0;
			T65_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T65_ = zero__FWKgXUNtQfE7EUZKj6yRDQ_2();
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T66_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T66_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T65_, (*b)._kind_6.sons->data[((NI) 2)]);
			T64_ = (T66_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			if (!(T64_)) goto LA67_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T68_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T68_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, a, (*b)._kind_6.sons->data[((NI) 1)]);
			T64_ = (T68_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA67_: ;
			if (!T64_) goto LA69_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA69_: ;
		{
			NIM_BOOL T73_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T74_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T75_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T77_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T78_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T79_;
			T73_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T74_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T74_ = zero__FWKgXUNtQfE7EUZKj6yRDQ_2();
			T75_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T75_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*b)._kind_6.sons->data[((NI) 2)], T74_);
			T73_ = (T75_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			if (!(T73_)) goto LA76_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T77_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T77_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opSub, a, (*b)._kind_6.sons->data[((NI) 2)]);
			T78_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T78_ = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(T77_, (&(*m).o));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T79_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T79_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T78_, (*b)._kind_6.sons->data[((NI) 1)]);
			T73_ = (T79_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA76_: ;
			if (!T73_) goto LA80_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA80_: ;
	}
	LA60_: ;
	{
		NIM_BOOL T84_;
		NIM_BOOL T85_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T86_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T88_;
		tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T89_;
		tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T91_;
		T84_ = (NIM_BOOL)0;
		T85_ = (NIM_BOOL)0;
		T86_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T86_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		T85_ = (T86_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T86_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T86_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
		if (!(T85_)) goto LA87_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		T88_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T88_ = zero__FWKgXUNtQfE7EUZKj6yRDQ_2();
		T89_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
		T89_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 2)], T88_);
		T85_ = (T89_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
		LA87_: ;
		T84_ = T85_;
		if (!(T84_)) goto LA90_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		T91_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
		T91_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 1)], b);
		T84_ = (T91_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
		LA90_: ;
		if (!T84_) goto LA92_;
		result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
		goto BeforeRet_;
	}
	LA92_: ;
	{
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T96_;
		T96_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T96_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
		if (!(T96_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47) || T96_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54))) goto LA97_;
		{
			NIM_BOOL T101_;
			NIM_BOOL T102_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T103_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T105_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T106_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T108_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T109_;
			T101_ = (NIM_BOOL)0;
			T102_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T103_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T103_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, a, (*b)._kind_6.sons->data[((NI) 1)]);
			T102_ = (T103_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			if (!(T102_)) goto LA104_;
			T105_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T105_ = one__FWKgXUNtQfE7EUZKj6yRDQ_3();
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T106_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T106_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T105_, (*b)._kind_6.sons->data[((NI) 2)]);
			T102_ = (T106_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA104_: ;
			T101_ = T102_;
			if (!(T101_)) goto LA107_;
			T108_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T108_ = zero__FWKgXUNtQfE7EUZKj6yRDQ_2();
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T109_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T109_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T108_, (*b)._kind_6.sons->data[((NI) 1)]);
			T101_ = (T109_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA107_: ;
			if (!T101_) goto LA110_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA110_: ;
	}
	LA97_: ;
	{
		NIM_BOOL T114_;
		NIM_BOOL T115_;
		NIM_BOOL T116_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T117_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T120_;
		T114_ = (NIM_BOOL)0;
		T115_ = (NIM_BOOL)0;
		T116_ = (NIM_BOOL)0;
		T117_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T117_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		T116_ = (T117_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47) || T117_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54));
		if (!(T116_)) goto LA118_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		T116_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*a)._kind_6.sons->data[((NI) 2)]);
		LA118_: ;
		T115_ = T116_;
		if (!(T115_)) goto LA119_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		T120_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T120_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*a)._kind_6.sons->data[((NI) 1)]);
		T115_ = (T120_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 48) || T120_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 55));
		LA119_: ;
		T114_ = T115_;
		if (!(T114_)) goto LA121_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
		T114_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)]);
		LA121_: ;
		if (!T114_) goto LA122_;
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T126_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T127_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T128_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			T126_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T126_ = bardivbar___9aW9bU7lixsz3Yv9aqmOB2BFg_4((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)], (*a)._kind_6.sons->data[((NI) 2)]);
			T127_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T127_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opDiv, (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 1)], T126_);
			T128_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T128_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T127_, b);
			if (!(T128_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2))) goto LA129_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA129_: ;
	}
	LA122_: ;
	{
		NIM_BOOL T133_;
		NIM_BOOL T134_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T135_;
		NIM_BOOL T137_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T138_;
		NIM_BOOL T140_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x;
		NIM_BOOL T142_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* dc;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* y;
		NIM_BOOL T145_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T146_;
		NIM_BOOL T148_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x2;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ec;
		T133_ = (NIM_BOOL)0;
		T134_ = (NIM_BOOL)0;
		T135_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T135_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		T134_ = ((someAdd__zsb09bV9aQEXvpjZmyMwZvKA[(NU)(T135_)>>3] &(1U<<((NU)(T135_)&7U)))!=0);
		if (!(T134_)) goto LA136_;
		T137_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		T138_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T138_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*a)._kind_6.sons->data[((NI) 1)]);
		T137_ = ((someMul__SEELPgz9b0o9c1cvwttwifGg[(NU)(T138_)>>3] &(1U<<((NU)(T138_)&7U)))!=0);
		if (!(T137_)) goto LA139_;
		T140_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
		x = (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 1)];
		T140_ = NIM_TRUE;
		if (!(T140_)) goto LA141_;
		T142_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
		dc = (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)];
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*a)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
		T142_ = ((*(*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*(*(*a)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
		if (!(T142_)) goto LA143_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		y = (*a)._kind_6.sons->data[((NI) 2)];
		T142_ = NIM_TRUE;
		LA143_: ;
		T140_ = T142_;
		LA141_: ;
		T137_ = T140_;
		LA139_: ;
		T134_ = T137_;
		LA136_: ;
		T133_ = T134_;
		if (!(T133_)) goto LA144_;
		T145_ = (NIM_BOOL)0;
		T146_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T146_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
		T145_ = ((someMul__SEELPgz9b0o9c1cvwttwifGg[(NU)(T146_)>>3] &(1U<<((NU)(T146_)&7U)))!=0);
		if (!(T145_)) goto LA147_;
		T148_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		x2 = (*b)._kind_6.sons->data[((NI) 1)];
		T148_ = NIM_TRUE;
		if (!(T148_)) goto LA149_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		ec = (*b)._kind_6.sons->data[((NI) 2)];
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		T148_ = ((*(*b)._kind_6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*(*b)._kind_6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
		LA149_: ;
		T145_ = T148_;
		LA147_: ;
		T133_ = T145_;
		LA144_: ;
		if (!T133_) goto LA150_;
		{
			NIM_BOOL T154_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ec1;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T157_;
			T154_ = (NIM_BOOL)0;
			T154_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA(x, x2);
			if (!T154_) goto LA155_;
			T157_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T157_ = minusOne__FWKgXUNtQfE7EUZKj6yRDQ();
			ec1 = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opAdd, ec, T157_);
			{
				NIM_BOOL T160_;
				NIM_BOOL T161_;
				NIM_BOOL T162_;
				NIM_BOOL T163_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T164_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T165_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T167_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T168_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T170_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T171_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T173_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T175_;
				T160_ = (NIM_BOOL)0;
				T161_ = (NIM_BOOL)0;
				T162_ = (NIM_BOOL)0;
				T163_ = (NIM_BOOL)0;
				T164_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T164_ = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
				T165_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T165_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T164_, x);
				T163_ = (T165_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				if (!(T163_)) goto LA166_;
				T167_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T167_ = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
				T168_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T168_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T167_, ec);
				T163_ = (T168_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA166_: ;
				T162_ = T163_;
				if (!(T162_)) goto LA169_;
				T170_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T170_ = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
				T171_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T171_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T170_, dc);
				T162_ = (T171_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA169_: ;
				T161_ = T162_;
				if (!(T161_)) goto LA172_;
				T173_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T173_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, dc, ec1);
				T161_ = (T173_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA172_: ;
				T160_ = T161_;
				if (!(T160_)) goto LA174_;
				T175_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T175_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, y, x);
				T160_ = (T175_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA174_: ;
				if (!T160_) goto LA176_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				goto BeforeRet_;
			}
			LA176_: ;
		}
		LA155_: ;
	}
	goto LA131_;
	LA150_: ;
	{
		NIM_BOOL T179_;
		NIM_BOOL T180_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T181_;
		NIM_BOOL T183_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x_2;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* dc_2;
		NIM_BOOL T186_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T187_;
		NIM_BOOL T189_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T190_;
		NIM_BOOL T192_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x2_2;
		NIM_BOOL T194_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ec_2;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* y_2;
		T179_ = (NIM_BOOL)0;
		T180_ = (NIM_BOOL)0;
		T181_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T181_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		T180_ = ((someMul__SEELPgz9b0o9c1cvwttwifGg[(NU)(T181_)>>3] &(1U<<((NU)(T181_)&7U)))!=0);
		if (!(T180_)) goto LA182_;
		T183_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		x_2 = (*a)._kind_6.sons->data[((NI) 1)];
		T183_ = NIM_TRUE;
		if (!(T183_)) goto LA184_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		dc_2 = (*a)._kind_6.sons->data[((NI) 2)];
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
		T183_ = ((*(*a)._kind_6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*(*a)._kind_6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
		LA184_: ;
		T180_ = T183_;
		LA182_: ;
		T179_ = T180_;
		if (!(T179_)) goto LA185_;
		T186_ = (NIM_BOOL)0;
		T187_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T187_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
		T186_ = ((someAdd__zsb09bV9aQEXvpjZmyMwZvKA[(NU)(T187_)>>3] &(1U<<((NU)(T187_)&7U)))!=0);
		if (!(T186_)) goto LA188_;
		T189_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		T190_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T190_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*b)._kind_6.sons->data[((NI) 1)]);
		T189_ = ((someMul__SEELPgz9b0o9c1cvwttwifGg[(NU)(T190_)>>3] &(1U<<((NU)(T190_)&7U)))!=0);
		if (!(T189_)) goto LA191_;
		T192_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*b)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*b)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
		x2_2 = (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 1)];
		T192_ = NIM_TRUE;
		if (!(T192_)) goto LA193_;
		T194_ = (NIM_BOOL)0;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*b)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*b)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
		ec_2 = (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)];
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*(*b)._kind_6.sons->data[((NI) 1)]).kind)>>3] &(1U<<((NU)((*(*b)._kind_6.sons->data[((NI) 1)]).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons ? (*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->Sup.len : 0)-1); }
		T194_ = ((*(*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*(*(*b)._kind_6.sons->data[((NI) 1)])._kind_6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
		if (!(T194_)) goto LA195_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
		y_2 = (*b)._kind_6.sons->data[((NI) 2)];
		T194_ = NIM_TRUE;
		LA195_: ;
		T192_ = T194_;
		LA193_: ;
		T189_ = T192_;
		LA191_: ;
		T186_ = T189_;
		LA188_: ;
		T179_ = T186_;
		LA185_: ;
		if (!T179_) goto LA196_;
		{
			NIM_BOOL T200_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ec1_2;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T203_;
			T200_ = (NIM_BOOL)0;
			T200_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA(x_2, x2_2);
			if (!T200_) goto LA201_;
			T203_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T203_ = minusOne__FWKgXUNtQfE7EUZKj6yRDQ();
			ec1_2 = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opAdd, ec_2, T203_);
			{
				NIM_BOOL T206_;
				NIM_BOOL T207_;
				NIM_BOOL T208_;
				NIM_BOOL T209_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T210_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T211_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T213_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T214_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T216_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T217_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T219_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T221_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T222_;
				T206_ = (NIM_BOOL)0;
				T207_ = (NIM_BOOL)0;
				T208_ = (NIM_BOOL)0;
				T209_ = (NIM_BOOL)0;
				T210_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T210_ = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
				T211_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T211_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T210_, x_2);
				T209_ = (T211_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				if (!(T209_)) goto LA212_;
				T213_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T213_ = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
				T214_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T214_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T213_, ec_2);
				T209_ = (T214_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA212_: ;
				T208_ = T209_;
				if (!(T208_)) goto LA215_;
				T216_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T216_ = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1));
				T217_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T217_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T216_, dc_2);
				T208_ = (T217_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA215_: ;
				T207_ = T208_;
				if (!(T207_)) goto LA218_;
				T219_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T219_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, dc_2, ec1_2);
				T207_ = (T219_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA218_: ;
				T206_ = T207_;
				if (!(T206_)) goto LA220_;
				T221_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T221_ = zero__FWKgXUNtQfE7EUZKj6yRDQ_2();
				T222_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T222_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, y_2, T221_);
				T206_ = (T222_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA220_: ;
				if (!T206_) goto LA223_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				goto BeforeRet_;
			}
			LA223_: ;
		}
		LA201_: ;
	}
	goto LA131_;
	LA196_: ;
	LA131_: ;
	{
		NIM_BOOL T227_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T228_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T230_;
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T231_;
		T227_ = (NIM_BOOL)0;
		T228_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T228_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		T227_ = (T228_ >= ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) && T228_ <= ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 47) || T228_ >= ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50) && T228_ <= ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 54) || T228_ >= ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 62) && T228_ <= ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 63));
		if (!(T227_)) goto LA229_;
		T230_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T230_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		T231_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T231_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
		T227_ = (T230_ == T231_);
		LA229_: ;
		if (!T227_) goto LA232_;
		{
			NIM_BOOL T236_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T238_;
			T236_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T236_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*a)._kind_6.sons->data[((NI) 1)], (*b)._kind_6.sons->data[((NI) 1)]);
			if (!(T236_)) goto LA237_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T238_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T238_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 2)], (*b)._kind_6.sons->data[((NI) 2)]);
			T236_ = (T238_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA237_: ;
			if (!T236_) goto LA239_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		goto LA234_;
		LA239_: ;
		{
			NIM_BOOL T242_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T244_;
			T242_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T242_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*a)._kind_6.sons->data[((NI) 2)], (*b)._kind_6.sons->data[((NI) 2)]);
			if (!(T242_)) goto LA243_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T244_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T244_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 1)], (*b)._kind_6.sons->data[((NI) 1)]);
			T242_ = (T244_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA243_: ;
			if (!T242_) goto LA245_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		goto LA234_;
		LA245_: ;
		LA234_: ;
	}
	LA232_: ;
	{
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T249_;
		T249_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T249_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		if (!(T249_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 48) || T249_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 55))) goto LA250_;
		{
			NIM_BOOL T254_;
			NIM_BOOL T255_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T256_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T257_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T259_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T260_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T262_;
			T254_ = (NIM_BOOL)0;
			T255_ = (NIM_BOOL)0;
			T256_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T256_ = one__FWKgXUNtQfE7EUZKj6yRDQ_3();
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			T257_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T257_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T256_, (*a)._kind_6.sons->data[((NI) 2)]);
			T255_ = (T257_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			if (!(T255_)) goto LA258_;
			T259_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T259_ = zero__FWKgXUNtQfE7EUZKj6yRDQ_2();
			T260_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T260_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, T259_, b);
			T255_ = (T260_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA258_: ;
			T254_ = T255_;
			if (!(T254_)) goto LA261_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			T262_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T262_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 1)], b);
			T254_ = (T262_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA261_: ;
			if (!T254_) goto LA263_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA263_: ;
		{
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T267_;
			T267_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T267_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
			if (!(T267_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 48) || T267_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 55))) goto LA268_;
			{
				NIM_BOOL T272_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T274_;
				T272_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
				T272_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*a)._kind_6.sons->data[((NI) 1)], (*b)._kind_6.sons->data[((NI) 1)]);
				if (!(T272_)) goto LA273_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
				T274_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T274_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*b)._kind_6.sons->data[((NI) 2)], (*a)._kind_6.sons->data[((NI) 2)]);
				T272_ = (T274_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				LA273_: ;
				if (!T272_) goto LA275_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				goto BeforeRet_;
			}
			LA275_: ;
		}
		LA268_: ;
		{
			NIM_BOOL T279_;
			NIM_BOOL T280_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T282_;
			T279_ = (NIM_BOOL)0;
			T280_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			T280_ = isValue__MH3XlBsw9ahhEwy5cK9cHBHA_2((*a)._kind_6.sons->data[((NI) 2)]);
			if (!(T280_)) goto LA281_;
			T282_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T282_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
			T280_ = (T282_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T282_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T282_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
			LA281_: ;
			T279_ = T280_;
			if (!(T279_)) goto LA283_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T279_ = isMinusOne__MH3XlBsw9ahhEwy5cK9cHBHA_5((*b)._kind_6.sons->data[((NI) 2)]);
			LA283_: ;
			if (!T279_) goto LA284_;
			{
				NIM_BOOL T288_;
				tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T289_;
				T288_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
				T289_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
				T289_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 2)], (*a)._kind_6.sons->data[((NI) 1)]);
				T288_ = (T289_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
				if (!(T288_)) goto LA290_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
				T288_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA((*a)._kind_6.sons->data[((NI) 1)], (*b)._kind_6.sons->data[((NI) 1)]);
				LA290_: ;
				if (!T288_) goto LA291_;
				result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
				goto BeforeRet_;
			}
			LA291_: ;
		}
		LA284_: ;
	}
	LA250_: ;
	{
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T295_;
		T295_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T295_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(b);
		if (!(T295_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 63))) goto LA296_;
		{
			NIM_BOOL T300_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T301_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T303_;
			T300_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T301_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T301_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, a, (*b)._kind_6.sons->data[((NI) 1)]);
			T300_ = (T301_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			if (T300_) goto LA302_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*b).kind)>>3] &(1U<<((NU)((*b).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*b)._kind_6.sons ? (*b)._kind_6.sons->Sup.len : 0)-1); }
			T303_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T303_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, a, (*b)._kind_6.sons->data[((NI) 2)]);
			T300_ = (T303_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA302_: ;
			if (!T300_) goto LA304_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA304_: ;
	}
	LA296_: ;
	{
		tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T308_;
		T308_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
		T308_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
		if (!(T308_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 62))) goto LA309_;
		{
			NIM_BOOL T313_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T314_;
			tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T316_;
			T313_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			T314_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T314_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 1)], b);
			T313_ = (T314_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			if (T313_) goto LA315_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			T316_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
			T316_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*a)._kind_6.sons->data[((NI) 2)], b);
			T313_ = (T316_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2));
			LA315_: ;
			if (!T313_) goto LA317_;
			result = ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2);
			goto BeforeRet_;
		}
		LA317_: ;
	}
	LA309_: ;
	result = pleViaModel__G9bUxQOJUHpRPU6xPkealOw(m, a, b);
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA, proveLe__gquZ4TuLCn9anC5O4OWI4Og)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
	T1_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opLe, a, b);
	x = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(T1_, (&(*m).o));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*x)._kind_6.sons ? (*x)._kind_6.sons->Sup.len : 0)-1); }
	result = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*x)._kind_6.sons->data[((NI) 1)], (*x)._kind_6.sons->data[((NI) 2)]);
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* y;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T6_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T7_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T8_;
		tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T9_;
		if (!(result == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 0))) goto LA4_;
		T6_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = one__FWKgXUNtQfE7EUZKj6yRDQ_3();
		T7_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T7_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opAdd, b, T6_);
		T8_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opLe, T7_, a);
		y = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(T8_, (&(*m).o));
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y).kind)>>3] &(1U<<((NU)((*y).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)-1); }
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*y).kind)>>3] &(1U<<((NU)((*y).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*y)._kind_6.sons ? (*y)._kind_6.sons->Sup.len : 0)-1); }
		T9_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
		T9_ = ple__gquZ4TuLCn9anC5O4OWI4Og_2(m, (*y)._kind_6.sons->data[((NI) 1)], (*y)._kind_6.sons->data[((NI) 2)]);
		result = tilde___nnERY7FtzBMOEK1oaVzB1g(T9_);
	}
	LA4_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, lowBound__Esza4n69a5U9bzlDTK04VArg)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_Int128__9a9axPfb75jdWY25AamJewkA T1_;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, (*x).typ);
	result = newIntNode__4YOyxaxo739b3eaIho5QEcA(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), T1_);
	(*result).info = (*x).info;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, highBound__9cbEq5HLZRHFpEqTjJwMYDA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* x, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	typ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*x).typ, IL64(36134350135273744));
	{
		tyObject_Int128__9a9axPfb75jdWY25AamJewkA T5_;
		if (!((*typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16))) goto LA3_;
		T5_ = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(conf, typ);
		result = newIntNode__4YOyxaxo739b3eaIho5QEcA(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T7_;
		NIM_BOOL T8_;
		NI T13_;
		NI TM__6PEpSVg5zYQiUPcMieikwQ_66;
		T7_ = (NIM_BOOL)0;
		T8_ = (NIM_BOOL)0;
		T8_ = ((*typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24));
		if (!(T8_)) goto LA9_;
		T8_ = ((*x).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
		LA9_: ;
		T7_ = T8_;
		if (!(T7_)) goto LA10_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
		T7_ = ((*(*x)._kind_4.sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 10));
		LA10_: ;
		if (!T7_) goto LA11_;
		if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*x).kind)>>3] &(1U<<((NU)((*x).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
		T13_ = (NI)0;
		T13_ = len__P89cqdlERShb9alU3iC0yj8wast((*(*x)._kind_4.sym).ast);
		if (nimSubInt(T13_, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_66)) { raiseOverflow(); };
		result = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) ((NI)(TM__6PEpSVg5zYQiUPcMieikwQ_66))));
	}
	goto LA1_;
	LA11_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T15_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T16_;
		T15_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T15_ = buildCall__rQdL9bdBvS9aqkRykTzQFSAw((*o).opLen, x);
		T16_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T16_ = minusOne__FWKgXUNtQfE7EUZKj6yRDQ();
		result = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, T15_, T16_);
	}
	LA1_: ;
	(*result).info = (*x).info;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildProperFieldCheck__9czJQa7AVwwBTDjddykusKg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* access, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* check, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*check).kind)>>3] &(1U<<((NU)((*check).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*check)._kind_6.sons ? (*check)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*check)._kind_6.sons ? (*check)._kind_6.sons->Sup.len : 0)-1); }
		if (!((*(*check)._kind_6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 39))) goto LA3_;
		result = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2(check);
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a;
			if (!((*access).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 45))) goto LA7_;
			a = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ_2(access);
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*check).kind)>>3] &(1U<<((NU)((*check).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*check)._kind_6.sons ? (*check)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*check)._kind_6.sons ? (*check)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*a)._kind_6.sons->data[((NI) 1)]), (*check)._kind_6.sons->data[((NI) 2)]);
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), a);
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T15_;
		{
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T12_;
			T12_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T12_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(check);
			if (!!((T12_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95)))) goto LA13_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_67));
		}
		LA13_: ;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*check).kind)>>3] &(1U<<((NU)((*check).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*check)._kind_6.sons ? (*check)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*check)._kind_6.sons ? (*check)._kind_6.sons->Sup.len : 0)-1); }
		T15_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T15_ = buildProperFieldCheck__9czJQa7AVwwBTDjddykusKg(access, (*check)._kind_6.sons->data[((NI) 1)], o);
		result = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(T15_, o);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, checkFieldAccess__gGwSETIBbm3kg36plDGFGg)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf) {
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* check;
				NI TM__6PEpSVg5zYQiUPcMieikwQ_68;
				if (!(i_2 < colontmp_)) goto LA3;
				i = i_2;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(i) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				check = buildProperFieldCheck__9czJQa7AVwwBTDjddykusKg((*n)._kind_6.sons->data[((NI) 0)], (*n)._kind_6.sons->data[i], (&(*m).o));
				{
					NIM_BOOL T6_;
					tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA T8_;
					NimStringDesc* T11_;
					T6_ = (NIM_BOOL)0;
					T6_ = !((check == NIM_NIL));
					if (!(T6_)) goto LA7_;
					T8_ = (tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA)0;
					T8_ = doesImply__TghwFZPkC6wzh9bOuwSr8jQ(m, check);
					T6_ = !((T8_ == ((tyEnum_TImplication__t4F29a8ejY1DFQTYTML9c9byA) 2)));
					LA7_: ;
					if (!T6_) goto LA9_;
					if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
					if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
					T11_ = (NimStringDesc*)0;
					T11_ = renderTree__ppjdh9aQ5L0SGPF8yz1gZ9cA((*n)._kind_6.sons->data[((NI) 0)], 0);
					message__mMj7lrOf3zBP9bl69amiKu5g(conf, (*n).info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 35), T11_);
					goto LA1;
				}
				LA9_: ;
				if (nimAddInt(i_2, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_68)) { raiseOverflow(); };
				i_2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_68);
			} LA3: ;
		}
	} LA1: ;
}
N_LIB_PRIVATE N_NIMCALL(void, addAsgnFact__0CHSuARDyWZ57Xrosqy78w)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* value) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact;
	NI T1_;
	fact = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*key).info, ((NI) 3));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*fact)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*m).o.opEq));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*fact)._kind_6.sons->data[((NI) 1)]), key);
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*fact)._kind_6.sons->data[((NI) 2)]), value);
	unsureAsgnRef((void**) (&(*m).s), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)((*m).s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
	T1_ = (*m).s->Sup.len++;
	asgnRef((void**) (&(*m).s->data[T1_]), fact);
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, interestingCaseExpr__Cjb9am4YBBe69cf2PXGW7teQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* m) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA(m, NIM_TRUE);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, settype__nWHoIj7eHK9ad9brJqEijt9ag)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newType__SNqpa06pdVCLFFBR28119aQ(((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19), (*(*n).typ).owner);
	addSonSkipIntLit__2IwAMgUJgjdjR7Qyvt9bjCQ(result, (*n).typ);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildOf__MGKHwffiWyEzWzB6rWIB9ag)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* it, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* loc, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* s;
	NI T1_;
	NI TM__6PEpSVg5zYQiUPcMieikwQ_69;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (NI)0;
	T1_ = len__P89cqdlERShb9alU3iC0yj8wast(it);
	if (nimSubInt(T1_, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_69)) { raiseOverflow(); };
	s = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 39), (*it).info, (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_69));
	asgnRef((void**) (&(*s).typ), settype__nWHoIj7eHK9ad9brJqEijt9ag(loc));
	{
		NI i;
		NI colontmp_;
		NI T3_;
		NI TM__6PEpSVg5zYQiUPcMieikwQ_70;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		T3_ = (NI)0;
		T3_ = len__P89cqdlERShb9alU3iC0yj8wast(it);
		if (nimSubInt(T3_, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_70)) { raiseOverflow(); };
		colontmp_ = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_70);
		i_2 = ((NI) 0);
		{
			while (1) {
				NI TM__6PEpSVg5zYQiUPcMieikwQ_71;
				if (!(i_2 < colontmp_)) goto LA5;
				i = i_2;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*s).kind)>>3] &(1U<<((NU)((*s).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(i) >= (NU)((*s)._kind_6.sons ? (*s)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*s)._kind_6.sons ? (*s)._kind_6.sons->Sup.len : 0)-1); }
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(i) >= (NU)((*it)._kind_6.sons ? (*it)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*it)._kind_6.sons ? (*it)._kind_6.sons->Sup.len : 0)-1); }
				asgnRef((void**) (&(*s)._kind_6.sons->data[i]), (*it)._kind_6.sons->data[i]);
				if (nimAddInt(i_2, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_71)) { raiseOverflow(); };
				i_2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_71);
			} LA5: ;
		}
	}
	result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*it).info, ((NI) 3));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*o).opContains));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), s);
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), loc);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildElse__Jdq9bmYnl9bApH9aGfXEZQN8Q_4)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* s;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
	T1_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = settype__nWHoIj7eHK9ad9brJqEijt9ag((*n)._kind_6.sons->data[((NI) 0)]);
	s = newNodeIT__2kgyckjaq2XB9bxBo5ZeIbg(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 39), (*n).info, T1_);
	{
		NI i;
		NI colontmp_;
		NI T3_;
		NI TM__6PEpSVg5zYQiUPcMieikwQ_72;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		T3_ = (NI)0;
		T3_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
		if (nimSubInt(T3_, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_72)) { raiseOverflow(); };
		colontmp_ = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_72);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* branch;
				NI TM__6PEpSVg5zYQiUPcMieikwQ_76;
				if (!(i_2 < colontmp_)) goto LA5;
				i = i_2;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(i) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				branch = (*n)._kind_6.sons->data[i];
				{
					if (!!(!(((*branch).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88))))) goto LA8_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_73));
				}
				LA8_: ;
				{
					if (!((*branch).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 85))) goto LA12_;
					{
						NI j;
						NI colontmp__2;
						NI T15_;
						NI TM__6PEpSVg5zYQiUPcMieikwQ_74;
						NI i_3;
						j = (NI)0;
						colontmp__2 = (NI)0;
						T15_ = (NI)0;
						T15_ = len__P89cqdlERShb9alU3iC0yj8wast(branch);
						if (nimSubInt(T15_, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_74)) { raiseOverflow(); };
						colontmp__2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_74);
						i_3 = ((NI) 0);
						{
							while (1) {
								NI TM__6PEpSVg5zYQiUPcMieikwQ_75;
								if (!(i_3 < colontmp__2)) goto LA17;
								j = i_3;
								if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*branch).kind)>>3] &(1U<<((NU)((*branch).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
								if ((NU)(j) >= (NU)((*branch)._kind_6.sons ? (*branch)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(j,((*branch)._kind_6.sons ? (*branch)._kind_6.sons->Sup.len : 0)-1); }
								add__P8dDSotTW25BkfbyspojGg(s, (*branch)._kind_6.sons->data[j]);
								if (nimAddInt(i_3, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_75)) { raiseOverflow(); };
								i_3 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_75);
							} LA17: ;
						}
					}
				}
				LA12_: ;
				if (nimAddInt(i_2, ((NI) 1), &TM__6PEpSVg5zYQiUPcMieikwQ_76)) { raiseOverflow(); };
				i_2 = (NI)(TM__6PEpSVg5zYQiUPcMieikwQ_76);
			} LA5: ;
		}
	}
	result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, ((NI) 3));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*o).opContains));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), s);
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), (*n)._kind_6.sons->data[((NI) 0)]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addCaseBranchFacts__c6dE6J2nt777cGY9brPJUJA)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NI i) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* branch;
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(i) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(i,((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
	branch = (*n)._kind_6.sons->data[i];
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T5_;
		NI T6_;
		if (!((*branch).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 85))) goto LA3_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		T5_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = buildOf__MGKHwffiWyEzWzB6rWIB9ag(branch, (*n)._kind_6.sons->data[((NI) 0)], (&(*m).o));
		unsureAsgnRef((void**) (&(*m).s), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)((*m).s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
		T6_ = (*m).s->Sup.len++;
		asgnRef((void**) (&(*m).s->data[T6_]), T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T8_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T9_;
		NI T10_;
		T8_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = buildElse__Jdq9bmYnl9bApH9aGfXEZQN8Q_4(n, (&(*m).o));
		T9_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T9_ = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(T8_, (&(*m).o));
		unsureAsgnRef((void**) (&(*m).s), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)((*m).s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
		T10_ = (*m).s->Sup.len++;
		asgnRef((void**) (&(*m).s->data[T10_]), T9_);
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T1_;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
	T1_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(n);
	switch (T1_) {
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 69):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 72):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 77):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 80):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 83):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 86):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 90) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 91):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 115):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 118):
	{
		{
			NIM_BOOL T5_;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T6_;
			NIM_BOOL T8_;
			T5_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T6_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T6_ = skipConv__BH9abOhPX8pH0DnEWlRxmlw((*n)._kind_6.sons->data[((NI) 2)]);
			T5_ = ((*T6_).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23));
			if (!(T5_)) goto LA7_;
			T8_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T8_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*n)._kind_6.sons->data[((NI) 1)], NIM_FALSE);
			if (T8_) goto LA9_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T8_ = isVar__MH3XlBsw9ahhEwy5cK9cHBHA_4((*n)._kind_6.sons->data[((NI) 1)]);
			LA9_: ;
			T5_ = T8_;
			LA7_: ;
			if (!T5_) goto LA10_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			result = buildCall__rQdL9bdBvS9aqkRykTzQFSAw((*o).opIsNil, (*n)._kind_6.sons->data[((NI) 1)]);
		}
		goto LA3_;
		LA10_: ;
		{
			{
				NIM_BOOL T15_;
				T15_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				T15_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*n)._kind_6.sons->data[((NI) 1)], NIM_TRUE);
				if (T15_) goto LA16_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				T15_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*n)._kind_6.sons->data[((NI) 2)], NIM_TRUE);
				LA16_: ;
				if (!T15_) goto LA17_;
				result = n;
			}
			goto LA13_;
			LA17_: ;
			{
				NIM_BOOL T20_;
				tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T21_;
				tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T23_;
				T20_ = (NIM_BOOL)0;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				T21_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
				T21_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*n)._kind_6.sons->data[((NI) 1)]);
				T20_ = (T21_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) || T21_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 36) || T21_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 37) || T21_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38));
				if (T20_) goto LA22_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
				T23_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
				T23_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*n)._kind_6.sons->data[((NI) 2)]);
				T20_ = (T23_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) || T23_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 36) || T23_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 37) || T23_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38));
				LA22_: ;
				if (!T20_) goto LA24_;
				result = n;
			}
			goto LA13_;
			LA24_: ;
			LA13_: ;
		}
		LA3_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 70) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 71):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 73) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 76):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 78) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 79):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 81) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 82):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 84) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 85):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 87) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 88):
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 116) ... ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 117):
	{
		{
			NIM_BOOL T29_;
			T29_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T29_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*n)._kind_6.sons->data[((NI) 1)], NIM_TRUE);
			if (T29_) goto LA30_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T29_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*n)._kind_6.sons->data[((NI) 2)], NIM_TRUE);
			LA30_: ;
			if (!T29_) goto LA31_;
			result = n;
		}
		goto LA27_;
		LA31_: ;
		{
			NIM_BOOL T34_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T35_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T37_;
			T34_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T35_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T35_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*n)._kind_6.sons->data[((NI) 1)]);
			T34_ = (T35_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) || T35_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 36) || T35_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 37) || T35_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38));
			if (T34_) goto LA36_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T37_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T37_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw((*n)._kind_6.sons->data[((NI) 2)]);
			T34_ = (T37_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 35) || T37_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 36) || T37_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 37) || T37_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 38));
			LA36_: ;
			if (!T34_) goto LA38_;
			result = n;
		}
		goto LA27_;
		LA38_: ;
		LA27_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 142):
	{
		{
			NIM_BOOL T43_;
			T43_ = (NIM_BOOL)0;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T43_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*n)._kind_6.sons->data[((NI) 1)], NIM_FALSE);
			if (T43_) goto LA44_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T43_ = isVar__MH3XlBsw9ahhEwy5cK9cHBHA_4((*n)._kind_6.sons->data[((NI) 1)]);
			LA44_: ;
			if (!T43_) goto LA45_;
			result = n;
		}
		LA45_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 133):
	{
		{
			NIM_BOOL T50_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
			T50_ = (NIM_BOOL)0;
			T50_ = isLetLocation__k0CAmeGJ0QkU2k18EA9c3PA((*n)._kind_6.sons->data[((NI) 1)], NIM_TRUE);
			if (!T50_) goto LA51_;
			result = n;
		}
		LA51_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		a = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5((*n)._kind_6.sons->data[((NI) 1)], o);
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		b = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5((*n)._kind_6.sons->data[((NI) 2)], o);
		{
			NIM_BOOL T56_;
			T56_ = (NIM_BOOL)0;
			T56_ = !((a == NIM_NIL));
			if (!(T56_)) goto LA57_;
			T56_ = !((b == NIM_NIL));
			LA57_: ;
			if (!T56_) goto LA58_;
			result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, ((NI) 3));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*o).opAnd));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), a);
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), b);
		}
		goto LA54_;
		LA58_: ;
		{
			if (!!((a == NIM_NIL))) goto LA61_;
			result = a;
		}
		goto LA54_;
		LA61_: ;
		{
			if (!!((b == NIM_NIL))) goto LA64_;
			result = b;
		}
		goto LA54_;
		LA64_: ;
		LA54_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 95):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a_2;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		a_2 = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5((*n)._kind_6.sons->data[((NI) 1)], o);
		{
			if (!!((a_2 == NIM_NIL))) goto LA69_;
			result = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(a_2, o);
		}
		LA69_: ;
	}
	break;
	case ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 109):
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a_3;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T72_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b_2;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T73_;
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		T72_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T72_ = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5((*n)._kind_6.sons->data[((NI) 1)], o);
		a_3 = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(T72_, o);
		if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
		if ((NU)(((NI) 2)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
		T73_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T73_ = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5((*n)._kind_6.sons->data[((NI) 2)], o);
		b_2 = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(T73_, o);
		{
			NIM_BOOL T76_;
			T76_ = (NIM_BOOL)0;
			T76_ = !((a_3 == NIM_NIL));
			if (!(T76_)) goto LA77_;
			T76_ = !((b_2 == NIM_NIL));
			LA77_: ;
			if (!T76_) goto LA78_;
			result = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, ((NI) 3));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 0)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*o).opAnd));
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 1)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 1)]), a_3);
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*result)._kind_6.sons ? (*result)._kind_6.sons->Sup.len : 0)-1); }
			asgnRef((void**) (&(*result)._kind_6.sons->data[((NI) 2)]), b_2);
			result = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(result, o);
		}
		LA78_: ;
	}
	break;
	default:
	{
		{
			NIM_BOOL T83_;
			T83_ = (NIM_BOOL)0;
			T83_ = ((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
			if (!(T83_)) goto LA84_;
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
			T83_ = ((*(*n)._kind_4.sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 9));
			LA84_: ;
			if (!T83_) goto LA85_;
			{
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T89_;
				tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T92_;
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				T89_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T89_ = astdef__PBkjYIaAGbtrZ8DiUArHcw((*n)._kind_4.sym);
				if (!!((T89_ == NIM_NIL))) goto LA90_;
				if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_15[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_16)); }
				T92_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
				T92_ = astdef__PBkjYIaAGbtrZ8DiUArHcw((*n)._kind_4.sym);
				result = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5(T92_, o);
			}
			LA90_: ;
		}
		goto LA81_;
		LA85_: ;
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T96_;
			if (!((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA94_;
			T96_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			T96_ = lastSon__UPSW0jLTX5qJL51YMUAHgw(n);
			result = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5(T96_, o);
		}
		goto LA81_;
		LA94_: ;
		LA81_: ;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addFact__ybuIey7mglQLm61kxh9aaLg)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* nn) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
	n = usefulFact__Jdq9bmYnl9bApH9aGfXEZQN8Q_5(nn, (&(*m).o));
	{
		if (!!((n == NIM_NIL))) goto LA3_;
		{
			NI T9_;
			if (!!((*m).beSmart)) goto LA7_;
			unsureAsgnRef((void**) (&(*m).s), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)((*m).s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
			T9_ = (*m).s->Sup.len++;
			asgnRef((void**) (&(*m).s->data[T9_]), n);
		}
		goto LA5_;
		LA7_: ;
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* c;
			c = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(n, (&(*m).o));
			{
				tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T13_;
				T13_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
				T13_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(c);
				if (!(T13_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 108))) goto LA14_;
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*c).kind)>>3] &(1U<<((NU)((*c).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 1)) >= (NU)((*c)._kind_6.sons ? (*c)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*c)._kind_6.sons ? (*c)._kind_6.sons->Sup.len : 0)-1); }
				addFact__ybuIey7mglQLm61kxh9aaLg(m, (*c)._kind_6.sons->data[((NI) 1)]);
				if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*c).kind)>>3] &(1U<<((NU)((*c).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
				if ((NU)(((NI) 2)) >= (NU)((*c)._kind_6.sons ? (*c)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*c)._kind_6.sons ? (*c)._kind_6.sons->Sup.len : 0)-1); }
				addFact__ybuIey7mglQLm61kxh9aaLg(m, (*c)._kind_6.sons->data[((NI) 2)]);
			}
			goto LA11_;
			LA14_: ;
			{
				NI T17_;
				unsureAsgnRef((void**) (&(*m).s), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)((*m).s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
				T17_ = (*m).s->Sup.len++;
				asgnRef((void**) (&(*m).s->data[T17_]), c);
			}
			LA11_: ;
		}
		LA5_: ;
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, addFactNeg__no3iuruVlFxE0wQ8HA9b4ZA_2)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n_2;
	n_2 = neg__Jdq9bmYnl9bApH9aGfXEZQN8Q(n, (&(*m).o));
	{
		if (!!((n_2 == NIM_NIL))) goto LA3_;
		addFact__ybuIey7mglQLm61kxh9aaLg(m, n_2);
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, addFactLe__i9aAoMzJNp9aw6KruJgPZ0Ng)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T2_;
	NI T3_;
	T1_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opLe, a, b);
	T2_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(T1_, (&(*m).o));
	unsureAsgnRef((void**) (&(*m).s), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)((*m).s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
	T3_ = (*m).s->Sup.len++;
	asgnRef((void**) (&(*m).s->data[T3_]), T2_);
}
N_LIB_PRIVATE N_NIMCALL(void, addFactLt__i9aAoMzJNp9aw6KruJgPZ0Ng_2)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* bb;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T1_;
	T1_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = minusOne__FWKgXUNtQfE7EUZKj6yRDQ();
	bb = buildCall__bzqLNgd7GiDpqZUsYKdenA((*m).o.opAdd, b, T1_);
	addFactLe__i9aAoMzJNp9aw6KruJgPZ0Ng(m, a, bb);
}
N_LIB_PRIVATE N_NIMCALL(void, addDiscriminantFact__no3iuruVlFxE0wQ8HA9b4ZA_3)(tyObject_TModel__yUzvq5GhzqHyDCdSXqIv1Q* m, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* fact;
	NI T1_;
	fact = newNodeI__UY1ElYk2XqXDzuz9cGLG1Kw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 27), (*n).info, ((NI) 3));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*fact)._kind_6.sons->data[((NI) 0)]), newSymNode__I2DV2TmmOysY1ZEGW19b9bRg((*m).o.opEq));
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 0)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 0),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*fact)._kind_6.sons->data[((NI) 1)]), (*n)._kind_6.sons->data[((NI) 0)]);
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*fact).kind)>>3] &(1U<<((NU)((*fact).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 2)) >= (NU)((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*fact)._kind_6.sons ? (*fact)._kind_6.sons->Sup.len : 0)-1); }
	if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
	if ((NU)(((NI) 1)) >= (NU)((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 1),((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0)-1); }
	asgnRef((void**) (&(*fact)._kind_6.sons->data[((NI) 2)]), (*n)._kind_6.sons->data[((NI) 1)]);
	unsureAsgnRef((void**) (&(*m).s), (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3((TGenericSeq*)((*m).s), (&NTI__ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
	T1_ = (*m).s->Sup.len++;
	asgnRef((void**) (&(*m).s->data[T1_]), fact);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, buildAdd__jGtL4PYHin0Ec4iHpFgCdA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, NI64 b, tyObject_Operators__apNm0zcYroUpNRird62c9aQ* o) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T6_;
		if (!!((b == IL64(0)))) goto LA4_;
		T6_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = newIntNode__zcNs9blLGYB6i9aGKob9bpzRw(((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6), b);
		T1_ = buildCall__bzqLNgd7GiDpqZUsYKdenA((*o).opAdd, a, T6_);
	}
	goto LA2_;
	LA4_: ;
	{
		T1_ = a;
	}
	LA2_: ;
	result = canon__Jdq9bmYnl9bApH9aGfXEZQN8Q_2(T1_, o);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, simpleSlice__VGfXCY3TCP9cSnuVXj9a9a8nQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	NI64 result;
	result = (NI64)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameTree__Uv9a9aANFtV79cIvUP5jEeyVA(a, b);
		if (!T3_) goto LA4_;
		{
			NIM_BOOL T8_;
			tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg T9_;
			T8_ = (NIM_BOOL)0;
			T9_ = (tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg)0;
			T9_ = getMagic__4W1ZJaFiusqlhViRx9cbM9bw(a);
			T8_ = (T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 45) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 52) || T9_ == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 50));
			if (!(T8_)) goto LA10_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			T8_ = ((*(*a)._kind_6.sons->data[((NI) 2)]).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) && (*(*a)._kind_6.sons->data[((NI) 2)]).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15));
			LA10_: ;
			if (!T8_) goto LA11_;
			if (((TM__6PEpSVg5zYQiUPcMieikwQ_26[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_27)); }
			if ((NU)(((NI) 2)) >= (NU)((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)){ raiseIndexError2(((NI) 2),((*a)._kind_6.sons ? (*a)._kind_6.sons->Sup.len : 0)-1); }
			if (!(((TM__6PEpSVg5zYQiUPcMieikwQ_20[(NU)((*(*a)._kind_6.sons->data[((NI) 2)]).kind)>>3] &(1U<<((NU)((*(*a)._kind_6.sons->data[((NI) 2)]).kind)&7U)))!=0))){ raiseFieldError(((NimStringDesc*) &TM__6PEpSVg5zYQiUPcMieikwQ_21)); }
			result = (*(*a)._kind_6.sons->data[((NI) 2)])._kind_1.intVal;
		}
		goto LA6_;
		LA11_: ;
		{
			result = IL64(0);
		}
		LA6_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		result = IL64(-1);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_guardsDatInit000)(void) {
static TNimNode* TM__6PEpSVg5zYQiUPcMieikwQ_58_2[2];
static TNimNode* TM__6PEpSVg5zYQiUPcMieikwQ_60_13[13];
static TNimNode TM__6PEpSVg5zYQiUPcMieikwQ_0[17];
NTI__EFqgCXJ4d8PgqOdFJmldsQ_.size = sizeof(tyTuple__EFqgCXJ4d8PgqOdFJmldsQ);
NTI__EFqgCXJ4d8PgqOdFJmldsQ_.kind = 18;
NTI__EFqgCXJ4d8PgqOdFJmldsQ_.base = 0;
NTI__EFqgCXJ4d8PgqOdFJmldsQ_.flags = 2;
TM__6PEpSVg5zYQiUPcMieikwQ_58_2[0] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[1];
TM__6PEpSVg5zYQiUPcMieikwQ_0[1].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[1].offset = offsetof(tyTuple__EFqgCXJ4d8PgqOdFJmldsQ, Field0);
TM__6PEpSVg5zYQiUPcMieikwQ_0[1].typ = (&NTI__fKfcLzXYiz5jNu3NH3Tv8Q_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[1].name = "Field0";
TM__6PEpSVg5zYQiUPcMieikwQ_58_2[1] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[2];
TM__6PEpSVg5zYQiUPcMieikwQ_0[2].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[2].offset = offsetof(tyTuple__EFqgCXJ4d8PgqOdFJmldsQ, Field1);
TM__6PEpSVg5zYQiUPcMieikwQ_0[2].typ = (&NTI__fKfcLzXYiz5jNu3NH3Tv8Q_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[2].name = "Field1";
TM__6PEpSVg5zYQiUPcMieikwQ_0[0].len = 2; TM__6PEpSVg5zYQiUPcMieikwQ_0[0].kind = 2; TM__6PEpSVg5zYQiUPcMieikwQ_0[0].sons = &TM__6PEpSVg5zYQiUPcMieikwQ_58_2[0];
NTI__EFqgCXJ4d8PgqOdFJmldsQ_.node = &TM__6PEpSVg5zYQiUPcMieikwQ_0[0];
NTI__nw2ozGiJbajPUc4Cj4vzYw_.size = sizeof(tySequence__nw2ozGiJbajPUc4Cj4vzYw*);
NTI__nw2ozGiJbajPUc4Cj4vzYw_.kind = 24;
NTI__nw2ozGiJbajPUc4Cj4vzYw_.base = (&NTI__EFqgCXJ4d8PgqOdFJmldsQ_);
NTI__nw2ozGiJbajPUc4Cj4vzYw_.flags = 2;
NTI__nw2ozGiJbajPUc4Cj4vzYw_.marker = Marker_tySequence__nw2ozGiJbajPUc4Cj4vzYw;
NTI__apNm0zcYroUpNRird62c9aQ_.size = sizeof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ);
NTI__apNm0zcYroUpNRird62c9aQ_.kind = 18;
NTI__apNm0zcYroUpNRird62c9aQ_.base = 0;
NTI__apNm0zcYroUpNRird62c9aQ_.flags = 2;
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[0] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[4];
TM__6PEpSVg5zYQiUPcMieikwQ_0[4].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[4].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opNot);
TM__6PEpSVg5zYQiUPcMieikwQ_0[4].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[4].name = "opNot";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[1] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[5];
TM__6PEpSVg5zYQiUPcMieikwQ_0[5].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[5].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opContains);
TM__6PEpSVg5zYQiUPcMieikwQ_0[5].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[5].name = "opContains";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[2] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[6];
TM__6PEpSVg5zYQiUPcMieikwQ_0[6].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[6].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opLe);
TM__6PEpSVg5zYQiUPcMieikwQ_0[6].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[6].name = "opLe";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[3] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[7];
TM__6PEpSVg5zYQiUPcMieikwQ_0[7].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[7].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opLt);
TM__6PEpSVg5zYQiUPcMieikwQ_0[7].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[7].name = "opLt";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[4] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[8];
TM__6PEpSVg5zYQiUPcMieikwQ_0[8].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[8].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opAnd);
TM__6PEpSVg5zYQiUPcMieikwQ_0[8].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[8].name = "opAnd";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[5] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[9];
TM__6PEpSVg5zYQiUPcMieikwQ_0[9].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[9].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opOr);
TM__6PEpSVg5zYQiUPcMieikwQ_0[9].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[9].name = "opOr";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[6] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[10];
TM__6PEpSVg5zYQiUPcMieikwQ_0[10].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[10].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opIsNil);
TM__6PEpSVg5zYQiUPcMieikwQ_0[10].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[10].name = "opIsNil";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[7] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[11];
TM__6PEpSVg5zYQiUPcMieikwQ_0[11].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[11].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opEq);
TM__6PEpSVg5zYQiUPcMieikwQ_0[11].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[11].name = "opEq";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[8] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[12];
TM__6PEpSVg5zYQiUPcMieikwQ_0[12].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[12].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opAdd);
TM__6PEpSVg5zYQiUPcMieikwQ_0[12].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[12].name = "opAdd";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[9] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[13];
TM__6PEpSVg5zYQiUPcMieikwQ_0[13].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[13].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opSub);
TM__6PEpSVg5zYQiUPcMieikwQ_0[13].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[13].name = "opSub";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[10] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[14];
TM__6PEpSVg5zYQiUPcMieikwQ_0[14].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[14].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opMul);
TM__6PEpSVg5zYQiUPcMieikwQ_0[14].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[14].name = "opMul";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[11] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[15];
TM__6PEpSVg5zYQiUPcMieikwQ_0[15].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[15].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opDiv);
TM__6PEpSVg5zYQiUPcMieikwQ_0[15].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[15].name = "opDiv";
TM__6PEpSVg5zYQiUPcMieikwQ_60_13[12] = &TM__6PEpSVg5zYQiUPcMieikwQ_0[16];
TM__6PEpSVg5zYQiUPcMieikwQ_0[16].kind = 1;
TM__6PEpSVg5zYQiUPcMieikwQ_0[16].offset = offsetof(tyObject_Operators__apNm0zcYroUpNRird62c9aQ, opLen);
TM__6PEpSVg5zYQiUPcMieikwQ_0[16].typ = (&NTI__K9bspPztfoWajecnwjyHuYQ_);
TM__6PEpSVg5zYQiUPcMieikwQ_0[16].name = "opLen";
TM__6PEpSVg5zYQiUPcMieikwQ_0[3].len = 13; TM__6PEpSVg5zYQiUPcMieikwQ_0[3].kind = 2; TM__6PEpSVg5zYQiUPcMieikwQ_0[3].sons = &TM__6PEpSVg5zYQiUPcMieikwQ_60_13[0];
NTI__apNm0zcYroUpNRird62c9aQ_.node = &TM__6PEpSVg5zYQiUPcMieikwQ_0[3];
}

