/* Generated by Nim Compiler v0.13.0 */
/*   (c) 2015 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
typedef struct Tsym214822 Tsym214822;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Cell47504 Cell47504;
typedef struct TNimType TNimType;
typedef struct Cellseq47520 Cellseq47520;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47516 Cellset47516;
typedef struct Pagedesc47512 Pagedesc47512;
typedef struct Memregion29687 Memregion29687;
typedef struct Smallchunk29639 Smallchunk29639;
typedef struct Llchunk29681 Llchunk29681;
typedef struct Bigchunk29641 Bigchunk29641;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29685 Avlnode29685;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Tnodeseq214784 Tnodeseq214784;
typedef struct Tnode214790 Tnode214790;
typedef struct Ttype214828 Ttype214828;
typedef struct Tlineinfo182337 Tlineinfo182337;
typedef struct Tident189012 Tident189012;
typedef struct Tidobj189006 Tidobj189006;
typedef struct TNimObject TNimObject;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq214824 Ttypeseq214824;
typedef struct Tscope214816 Tscope214816;
typedef struct TY214925 TY214925;
typedef struct Tstrtable214794 Tstrtable214794;
typedef struct Tsymseq214792 Tsymseq214792;
typedef struct Tloc214804 Tloc214804;
typedef struct Ropeobj169006 Ropeobj169006;
typedef struct Tlib214808 Tlib214808;
typedef struct TY244443 TY244443;
typedef struct TY88487 TY88487;
typedef struct Treplacements337745 Treplacements337745;
typedef struct TY337746 TY337746;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
typedef struct Tinstantiation214812 Tinstantiation214812;
typedef struct Tlistentry135010 Tlistentry135010;
typedef struct TY214913 TY214913;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Cell47504  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47520  {
NI len;
NI cap;
Cell47504** d;
};
struct  Cellset47516  {
NI counter;
NI max;
Pagedesc47512* head;
Pagedesc47512** data;
};
typedef Smallchunk29639* TY29702[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29687  {
NI minlargeobj;
NI maxlargeobj;
TY29702 freesmallchunks;
Llchunk29681* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29641* freechunkslist;
Intset29614 chunkstarts;
Avlnode29685* root;
Avlnode29685* deleted;
Avlnode29685* last;
Avlnode29685* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47520 zct;
Cellseq47520 decstack;
Cellset47516 cycleroots;
Cellseq47520 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
struct  Tlineinfo182337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tnode214790  {
Ttype214828* typ;
Tlineinfo182337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym214822* sym;
} S4;
struct {Tident189012* ident;
} S5;
struct {Tnodeseq214784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj189006  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable214794  {
NI counter;
Tsymseq214792* data;
};
struct  Tloc214804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype214828* t;
Ropeobj169006* r;
Ropeobj169006* heaproot;
};
struct  Tsym214822  {
  Tidobj189006 Sup;
NU8 kind;
union{
struct {Ttypeseq214824* typeinstcache;
Tscope214816* typscope;
} S1;
struct {TY214925* procinstcache;
Tsym214822* gcunsafetyreason;
} S2;
struct {TY214925* usedgenerics;
Tstrtable214794 tab;
} S3;
struct {Tsym214822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype214828* typ;
Tident189012* name;
Tlineinfo182337 info;
Tsym214822* owner;
NU32 flags;
Tnode214790* ast;
NU32 options;
NI position;
NI offset;
Tloc214804 loc;
Tlib214808* annex;
Tnode214790* constraint;
};
struct  Tident189012  {
  Tidobj189006 Sup;
NimStringDesc* s;
Tident189012* next;
NI h;
};
struct TY244443 {
NI Field0;
NI Field1;
};
struct TY88487 {
NimStringDesc* Field0;
NI Field1;
};
struct  Ttype214828  {
  Tidobj189006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq214824* sons;
Tnode214790* n;
Tsym214822* owner;
Tsym214822* sym;
Tsym214822* destructor;
Tsym214822* deepcopy;
Tsym214822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc214804 loc;
};
typedef NU8 TY460833[32];
struct TY337746 {
Tnode214790* Field0;
Tnode214790* Field1;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY29618[16];
struct  Pagedesc47512  {
Pagedesc47512* next;
NI key;
TY29618 bits;
};
struct  Basechunk29637  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29639  {
  Basechunk29637 Sup;
Smallchunk29639* next;
Smallchunk29639* prev;
Freecell29629* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29681  {
NI size;
NI acc;
Llchunk29681* next;
};
struct  Bigchunk29641  {
  Basechunk29637 Sup;
Bigchunk29641* next;
Bigchunk29641* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29618 bits;
};
typedef Avlnode29685* TY29692[2];
struct  Avlnode29685  {
TY29692 link;
NI key;
NI upperbound;
NI level;
};
struct  Tscope214816  {
NI depthlevel;
Tstrtable214794 symbols;
Tnodeseq214784* usingsyms;
Tscope214816* parent;
};
struct  Ropeobj169006  {
  TNimObject Sup;
Ropeobj169006* left;
Ropeobj169006* right;
NI length;
NimStringDesc* data;
};
struct  Tlistentry135010  {
  TNimObject Sup;
Tlistentry135010* prev;
Tlistentry135010* next;
};
struct  Tlib214808  {
  Tlistentry135010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj169006* name;
Tnode214790* path;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
struct  Tinstantiation214812  {
Tsym214822* sym;
Ttypeseq214824* concretetypes;
TY214913* usedby;
NI compilesid;
};
struct Tnodeseq214784 {
  TGenericSeq Sup;
  Tnode214790* data[SEQ_DECL_SIZE];
};
struct Treplacements337745 {
  TGenericSeq Sup;
  TY337746 data[SEQ_DECL_SIZE];
};
struct Ttypeseq214824 {
  TGenericSeq Sup;
  Ttype214828* data[SEQ_DECL_SIZE];
};
struct TY214925 {
  TGenericSeq Sup;
  Tinstantiation214812* data[SEQ_DECL_SIZE];
};
struct Tsymseq214792 {
  TGenericSeq Sup;
  Tsym214822* data[SEQ_DECL_SIZE];
};
struct TY214913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(Tsym214822*, createmagic_219600)(NimStringDesc* name, NU8 m);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell47504*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_53001)(Cell47504* c);
N_NOINLINE(void, addzct_51417)(Cellseq47520* s, Cell47504* c);
N_NIMCALL(NU8, doesimply_336838)(Tnodeseq214784* facts, Tnode214790* prop);
N_NIMCALL(NU8, factimplies_336794)(Tnode214790* fact, Tnode214790* prop);
N_NIMCALL(NU8, getmagic_239323)(Tnode214790* op);
N_NIMCALL(NU8, HEX7E_336790)(NU8 x);
N_NIMCALL(NU8, impliesisnil_336676)(Tnode214790* fact, Tnode214790* eq);
N_NIMCALL(NIM_BOOL, sametree_336245)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(Tsym214822*, canonopr_336240)(Tsym214822* opr);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NI, sonslen_217351)(Tnode214790* n);
N_NIMCALL(NU8, valueisnil_336652)(Tnode214790* n);
N_NIMCALL(Tnode214790*, skipconv_249082)(Tnode214790* n);
N_NIMCALL(void, internalerror_187100)(Tlineinfo182337 info, NimStringDesc* errmsg);
N_NIMCALL(NU8, implieseq_336453)(Tnode214790* fact, Tnode214790* eq);
N_NIMCALL(NIM_BOOL, islocation_335095)(Tnode214790* n);
N_NIMCALL(NIM_BOOL, isvalue_335080)(Tnode214790* n);
N_NIMCALL(NIM_BOOL, valuesunequal_336446)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(NIM_BOOL, samevalue_221189)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(NIM_BOOL, inset_260010)(Tnode214790* s, Tnode214790* elem);
N_NIMCALL(NU8, impliesle_336729)(Tnode214790* fact, Tnode214790* x, Tnode214790* c);
N_NIMCALL(NU8, impliesge_336694)(Tnode214790* fact, Tnode214790* x, Tnode214790* c);
N_NIMCALL(void, internalerror_187113)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_187183)(TY88487 x);
N_NIMCALL(NIM_BOOL, levalue_221233)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(Tnode214790*, pred_335647)(Tnode214790* n);
N_NIMCALL(Tnode214790*, copynode_218542)(Tnode214790* src);
N_NIMCALL(NU8, implieslt_336758)(Tnode214790* fact, Tnode214790* x, Tnode214790* c);
N_NIMCALL(NU8, impliesin_336623)(Tnode214790* fact, Tnode214790* loc, Tnode214790* aset);
N_NIMCALL(NU8, comparesets_336617)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(NIM_BOOL, equalsets_260046)(Tnode214790* a, Tnode214790* b);
static N_INLINE(NI, len_215059)(Tnode214790* n);
N_NIMCALL(Tnode214790*, intersectsets_260034)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(NU8, leimpliesin_336483)(Tnode214790* x, Tnode214790* c, Tnode214790* aset);
N_NIMCALL(Tnode214790*, newintnode_215660)(NU8 kind, NI64 intval);
N_NIMCALL(NI64, firstord_240001)(Ttype214828* t);
N_NIMCALL(NU8, geimpliesin_336550)(Tnode214790* x, Tnode214790* c, Tnode214790* aset);
N_NIMCALL(NI64, lastord_240004)(Ttype214828* t);
N_NIMCALL(Tnode214790*, neg_335257)(Tnode214790* n);
N_NIMCALL(Tnode214790*, swapargs_335247)(Tnode214790* fact, Tsym214822* newop);
N_NIMCALL(Tnode214790*, newnodei_216401)(NU8 kind, Tlineinfo182337 info, NI children);
N_NIMCALL(Tnode214790*, newsymnode_216234)(Tsym214822* sym);
N_NIMCALL(Ttype214828*, skiptypes_218113)(Ttype214828* t, NU64 kinds);
N_NIMCALL(Tnode214790*, newnodeit_216801)(NU8 kind, Tlineinfo182337 info, Ttype214828* typ);
N_NIMCALL(void, add_215114)(Tnode214790* father, Tnode214790* son);
N_NIMCALL(NI64, lengthord_240007)(Ttype214828* t);
N_NIMCALL(Tnode214790*, complement_260392)(Tnode214790* a);
N_NIMCALL(Tnode214790*, buildcall_335394)(Tsym214822* op, Tnode214790* a);
N_NIMCALL(Tnode214790*, buildproperfieldcheck_338734)(Tnode214790* access, Tnode214790* check);
N_NIMCALL(Tnode214790*, copytree_218822)(Tnode214790* src);
N_NIMCALL(void, message_187095)(Tlineinfo182337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_233044)(Tnode214790* n, NU8 renderflags);
N_NIMCALL(NIM_BOOL, hassubtree_336385)(Tnode214790* n, Tnode214790* x);
static N_INLINE(NI, safelen_215081)(Tnode214790* n);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NIM_BOOL, isletlocation_335200)(Tnode214790* m, NIM_BOOL isapprox);
N_NIMCALL(NIM_BOOL, isconstexpr_239336)(Tnode214790* n);
N_NIMCALL(NIM_BOOL, islet_335100)(Tnode214790* n);
N_NIMCALL(NIM_BOOL, isvar_335146)(Tnode214790* n);
N_NIMCALL(Tnode214790*, buildof_338423)(Tnode214790* it, Tnode214790* loc);
N_NIMCALL(Ttype214828*, settype_338419)(Tnode214790* n);
N_NIMCALL(Ttype214828*, newtype_217107)(NU8 kind, Tsym214822* owner);
N_NIMCALL(void, addsonskipintlit_258678)(Ttype214828* father, Ttype214828* son);
N_NIMCALL(Tnode214790*, buildelse_338454)(Tnode214790* n);
N_NIMCALL(Tnode214790*, usefulfact_335982)(Tnode214790* n);
static N_INLINE(Tnode214790*, HEX5BHEX5D_215238)(Tnode214790* n, NI i);
N_NIMCALL(Tnode214790*, lastson_217364)(Tnode214790* n);
N_NIMCALL(void, addfact_336193)(Tnodeseq214784** m, Tnode214790* nn);
N_NIMCALL(Tnode214790*, shallowcopy_218611)(Tnode214790* src);
N_NIMCALL(Tnode214790*, canon_335675)(Tnode214790* n);
N_NIMCALL(Tnode214790*, buildcall_335401)(Tsym214822* op, Tnode214790* a, Tnode214790* b);
N_NIMCALL(Tnode214790*, minusone_335555)(void);
N_NIMCALL(Tnode214790*, negate_335498)(Tnode214790* a, Tnode214790* b_335501, Tnode214790* res);
N_NIMCALL(NI64, HEX7CHEX2BHEX7C_274007)(NI64 a, NI64 b);
N_NIMCALL(Tnode214790*, reassociation_335611)(Tnode214790* n);
N_NIMCALL(Tnode214790*, HEX7CHEX2BHEX7C_335410)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(Tnode214790*, HEX7CHEX2AHEX7C_335454)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(NI64, HEX7CHEX2AHEX7C_274031)(NI64 a, NI64 b);
N_NIMCALL(Tnode214790*, zero_335549)(void);
N_NIMCALL(Tnode214790*, HEX7CHEX2DHEX7C_335432)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(NI64, HEX7CHEX2DHEX7C_274012)(NI64 a, NI64 b);
N_NIMCALL(NU8, ple_337162)(Tnodeseq214784* m, Tnode214790* a, Tnode214790* b);
N_NIMCALL(NIM_BOOL, isordinaltype_240057)(Ttype214828* t);
N_NIMCALL(Tnode214790*, one_335552)(void);
N_NIMCALL(Tnode214790*, HEX7CdivHEX7C_335476)(Tnode214790* a, Tnode214790* b);
N_NIMCALL(NIM_BOOL, isminusone_337141)(Tnode214790* n);
N_NIMCALL(NU8, pleviamodel_337157)(Tnodeseq214784* model, Tnode214790* aa, Tnode214790* bb);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP4278)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(Tnode214790*, applyreplacements_337775)(Tnode214790* n, Treplacements337745* rep);
N_NIMCALL(Tnode214790*, replacesubtree_337749)(Tnode214790* n, Tnode214790* x, Tnode214790* by);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_84004, TNimType* mt);
N_NIMCALL(NU8, pleviamodelrec_338010)(Tnodeseq214784** m, Tnode214790* a, Tnode214790* b);
STRING_LITERAL(TMP986, "<=", 2);
STRING_LITERAL(TMP987, "<", 1);
STRING_LITERAL(TMP988, "and", 3);
STRING_LITERAL(TMP989, "or", 2);
STRING_LITERAL(TMP990, "isnil", 5);
STRING_LITERAL(TMP991, "==", 2);
STRING_LITERAL(TMP992, "+", 1);
STRING_LITERAL(TMP993, "-", 1);
STRING_LITERAL(TMP994, "*", 1);
STRING_LITERAL(TMP995, "div", 3);
STRING_LITERAL(TMP996, "len", 3);
STRING_LITERAL(TMP3487, "impliesIsNil", 12);
NIM_CONST TY244443 TMP3488 = {((NI) 1),
((NI) 2)}
;
NIM_CONST TY244443 TMP3489 = {((NI) 2),
((NI) 1)}
;
STRING_LITERAL(TMP3490, "impliesEq", 9);
STRING_LITERAL(TMP3492, "compiler/guards.nim", 19);
NIM_CONST TY88487 TMP3491 = {((NimStringDesc*) &TMP3492),
((NI) 574)}
;
STRING_LITERAL(TMP3493, "impliesGe", 9);
STRING_LITERAL(TMP3494, "impliesLe", 9);
STRING_LITERAL(TMP3495, "impliesIn", 9);
static NIM_CONST TY460833 TMP4276 = {
0x00, 0x01, 0x00, 0x02, 0x3F, 0xF0, 0x7E, 0xF0,
0x20, 0x81, 0x24, 0x53, 0x00, 0x00, 0x00, 0x80,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
NIM_CONST TY460833 someadd_335017 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0A, 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}
;
NIM_CONST TY460833 somemul_335021 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 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}
;
static NIM_CONST TY460833 TMP4279 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x81, 0x24, 0x53, 0x00, 0x00, 0x00, 0x80,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY460833 TMP4280 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x2A, 0x49, 0x04, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
Tsym214822* ople_335236;
extern Gcheap49818 gch_49859;
Tsym214822* oplt_335237;
Tsym214822* opand_335238;
Tsym214822* opor_335239;
Tsym214822* opisnil_335240;
Tsym214822* opeq_335241;
Tsym214822* opadd_335242;
Tsym214822* opsub_335243;
Tsym214822* opmul_335244;
Tsym214822* opdiv_335245;
Tsym214822* oplen_335246;
extern Tsym214822* opnot_219606;
extern Tsym214822* opcontains_219607;
TNimType NTI337746; /* tuple[a: PNode, b: PNode] */
extern TNimType NTI214782; /* PNode */
TNimType NTI337745; /* TReplacements */
extern TNimType NTI214784; /* TNodeSeq */

static N_INLINE(Cell47504*, usrtocell_51440)(void* usr) {
	Cell47504* result;
	result = 0;
	result = ((Cell47504*) ((NI)((NU32)(((NI) (usr))) - (NU32)(((NI)sizeof(Cell47504))))));
	return result;
}

static N_INLINE(void, rtladdzct_53001)(Cell47504* c) {
	addzct_51417((&gch_49859.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell47504* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_51440(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell47504* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_51440((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_53001(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(NU8, HEX7E_336790)(NU8 x) {
	NU8 result;
	result = 0;
	switch (x) {
	case ((NU8) 0):
	{
		result = ((NU8) 0);
	}
	break;
	case ((NU8) 1):
	{
		result = ((NU8) 2);
	}
	break;
	case ((NU8) 2):
	{
		result = ((NU8) 1);
	}
	break;
	}
	return result;
}

N_NIMCALL(Tsym214822*, canonopr_336240)(Tsym214822* opr) {
	Tsym214822* result;
	result = 0;
	switch ((*opr).magic) {
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		result = opeq_335241;
	}
	break;
	case ((NU8) 70):
	case ((NU8) 73):
	case ((NU8) 75):
	case ((NU8) 77):
	case ((NU8) 80):
	case ((NU8) 83):
	case ((NU8) 86):
	case ((NU8) 90):
	case ((NU8) 128):
	{
		result = ople_335236;
	}
	break;
	case ((NU8) 71):
	case ((NU8) 74):
	case ((NU8) 76):
	case ((NU8) 78):
	case ((NU8) 81):
	case ((NU8) 84):
	case ((NU8) 87):
	case ((NU8) 91):
	case ((NU8) 129):
	{
		result = oplt_335237;
	}
	break;
	case ((NU8) 32):
	case ((NU8) 33):
	case ((NU8) 34):
	case ((NU8) 35):
	case ((NU8) 36):
	case ((NU8) 37):
	{
		result = oplen_335246;
	}
	break;
	case ((NU8) 44):
	case ((NU8) 51):
	case ((NU8) 49):
	{
		result = opadd_335242;
	}
	break;
	case ((NU8) 45):
	case ((NU8) 52):
	case ((NU8) 50):
	{
		result = opsub_335243;
	}
	break;
	case ((NU8) 46):
	case ((NU8) 53):
	{
		result = opmul_335244;
	}
	break;
	case ((NU8) 47):
	case ((NU8) 54):
	{
		result = opdiv_335245;
	}
	break;
	default:
	{
		result = opr;
	}
	break;
	}
	return result;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NIM_BOOL LOC11;
	int LOC13;
{	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = (a == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = 0;
	LOC11 = ((*a).Sup.len == (*b).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC13 = 0;
	LOC13 = memcmp(((NCSTRING) ((*a).data)), ((NCSTRING) ((*b).data)), (*a).Sup.len);
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametree_336245)(Tnode214790* a, Tnode214790* b) {
	NIM_BOOL result;
{	result = 0;
	result = NIM_FALSE;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = !((a == NIM_NIL));
		if (!(LOC7)) goto LA8;
		LOC7 = !((b == NIM_NIL));
		LA8: ;
		LOC6 = LOC7;
		if (!(LOC6)) goto LA9;
		LOC6 = ((*a).kind == (*b).kind);
		LA9: ;
		if (!LOC6) goto LA10;
		switch ((*a).kind) {
		case ((NU8) 3):
		{
			result = ((*a).kindU.S4.sym == (*b).kindU.S4.sym);
			{
				NIM_BOOL LOC15;
				NIM_BOOL LOC19;
				Tsym214822* LOC21;
				Tsym214822* LOC22;
				LOC15 = 0;
				LOC15 = !(result);
				if (!(LOC15)) goto LA16;
				LOC15 = !(((*(*a).kindU.S4.sym).magic == ((NU8) 0)));
				LA16: ;
				if (!LOC15) goto LA17;
				LOC19 = 0;
				LOC19 = ((*(*a).kindU.S4.sym).magic == (*(*b).kindU.S4.sym).magic);
				if (LOC19) goto LA20;
				LOC21 = 0;
				LOC21 = canonopr_336240((*a).kindU.S4.sym);
				LOC22 = 0;
				LOC22 = canonopr_336240((*b).kindU.S4.sym);
				LOC19 = (LOC21 == LOC22);
				LA20: ;
				result = LOC19;
			}
			LA17: ;
		}
		break;
		case ((NU8) 2):
		{
			result = ((*(*a).kindU.S5.ident).Sup.id == (*(*b).kindU.S5.ident).Sup.id);
		}
		break;
		case ((NU8) 5) ... ((NU8) 10):
		{
			result = ((*a).kindU.S1.intval == (*b).kindU.S1.intval);
		}
		break;
		case ((NU8) 16) ... ((NU8) 18):
		{
			result = ((*a).kindU.S2.floatval == (*b).kindU.S2.floatval);
		}
		break;
		case ((NU8) 20) ... ((NU8) 22):
		{
			result = eqStrings((*a).kindU.S3.strval, (*b).kindU.S3.strval);
		}
		break;
		case ((NU8) 4):
		{
			result = ((*a).typ == (*b).typ);
		}
		break;
		case ((NU8) 1):
		case ((NU8) 23):
		{
			result = NIM_TRUE;
		}
		break;
		default:
		{
			{
				NI LOC32;
				NI LOC33;
				LOC32 = 0;
				LOC32 = sonslen_217351(a);
				LOC33 = 0;
				LOC33 = sonslen_217351(b);
				if (!(LOC32 == LOC33)) goto LA34;
				{
					NI i_336374;
					NI HEX3Atmp_336378;
					NI LOC37;
					NI res_336381;
					i_336374 = 0;
					HEX3Atmp_336378 = 0;
					LOC37 = 0;
					LOC37 = sonslen_217351(a);
					HEX3Atmp_336378 = (NI)(LOC37 - ((NI) 1));
					res_336381 = ((NI) 0);
					{
						while (1) {
							if (!(res_336381 <= HEX3Atmp_336378)) goto LA39;
							i_336374 = res_336381;
							{
								NIM_BOOL LOC42;
								LOC42 = 0;
								LOC42 = sametree_336245((*a).kindU.S6.sons->data[i_336374], (*b).kindU.S6.sons->data[i_336374]);
								if (!!(LOC42)) goto LA43;
								goto BeforeRet;
							}
							LA43: ;
							res_336381 += ((NI) 1);
						} LA39: ;
					}
				}
				result = NIM_TRUE;
			}
			LA34: ;
		}
		break;
		}
	}
	goto LA1;
	LA10: ;
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, valueisnil_336652)(Tnode214790* n) {
	NU8 result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 23))) goto LA3;
		result = ((NU8) 2);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*n).kind >= ((NU8) 20) && (*n).kind <= ((NU8) 22) || (*n).kind == ((NU8) 41) || (*n).kind == ((NU8) 38))) goto LA6;
		result = ((NU8) 1);
	}
	goto LA1;
	LA6: ;
	{
		result = ((NU8) 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NU8, impliesisnil_336676)(Tnode214790* fact, Tnode214790* eq) {
	NU8 result;
	result = 0;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU8) 156):
	{
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[((NI) 1)]);
			if (!LOC4) goto LA5;
			result = ((NU8) 2);
		}
		LA5: ;
	}
	break;
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		{
			NIM_BOOL LOC10;
			Tnode214790* LOC13;
			LOC10 = 0;
			LOC10 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[((NI) 1)]);
			if (!LOC10) goto LA11;
			LOC13 = 0;
			LOC13 = skipconv_249082((*fact).kindU.S6.sons->data[((NI) 2)]);
			result = valueisnil_336652(LOC13);
		}
		goto LA8;
		LA11: ;
		{
			NIM_BOOL LOC15;
			Tnode214790* LOC18;
			LOC15 = 0;
			LOC15 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[((NI) 1)]);
			if (!LOC15) goto LA16;
			LOC18 = 0;
			LOC18 = skipconv_249082((*fact).kindU.S6.sons->data[((NI) 1)]);
			result = valueisnil_336652(LOC18);
		}
		goto LA8;
		LA16: ;
		LA8: ;
	}
	break;
	case ((NU8) 98):
	case ((NU8) 126):
	case ((NU8) 125):
	{
		internalerror_187100((*eq).info, ((NimStringDesc*) &TMP3487));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, isvalue_335080)(Tnode214790* n) {
	NIM_BOOL result;
	result = 0;
	result = ((*n).kind >= ((NU8) 5) && (*n).kind <= ((NU8) 23));
	return result;
}

N_NIMCALL(NIM_BOOL, islocation_335095)(Tnode214790* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = isvalue_335080(n);
	result = !(LOC1);
	return result;
}

N_NIMCALL(NIM_BOOL, valuesunequal_336446)(Tnode214790* a, Tnode214790* b) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC7;
		LOC3 = 0;
		LOC3 = isvalue_335080(a);
		if (!(LOC3)) goto LA4;
		LOC3 = isvalue_335080(b);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = samevalue_221189(a, b);
		result = !(LOC7);
	}
	LA5: ;
	return result;
}

N_NIMCALL(NU8, implieseq_336453)(Tnode214790* fact, Tnode214790* eq) {
	NU8 result;
	TY244443 LOC1;
	NI loc;
	NI val;
	result = 0;
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = islocation_335095((*eq).kindU.S6.sons->data[((NI) 1)]);
		if (!LOC4) goto LA5;
		LOC1 = TMP3488;
	}
	goto LA2;
	LA5: ;
	{
		LOC1 = TMP3489;
	}
	LA2: ;
	loc = LOC1.Field0;
	val = LOC1.Field1;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[loc]);
			if (!LOC11) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[val]);
				if (!LOC16) goto LA17;
				result = ((NU8) 2);
			}
			goto LA14;
			LA17: ;
			{
				NIM_BOOL LOC20;
				LOC20 = 0;
				LOC20 = valuesunequal_336446((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[val]);
				if (!LOC20) goto LA21;
				result = ((NU8) 1);
			}
			goto LA14;
			LA21: ;
			LA14: ;
		}
		goto LA9;
		LA12: ;
		{
			NIM_BOOL LOC24;
			LOC24 = 0;
			LOC24 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[loc]);
			if (!LOC24) goto LA25;
			{
				NIM_BOOL LOC29;
				LOC29 = 0;
				LOC29 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[val]);
				if (!LOC29) goto LA30;
				result = ((NU8) 2);
			}
			goto LA27;
			LA30: ;
			{
				NIM_BOOL LOC33;
				LOC33 = 0;
				LOC33 = valuesunequal_336446((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[val]);
				if (!LOC33) goto LA34;
				result = ((NU8) 1);
			}
			goto LA27;
			LA34: ;
			LA27: ;
		}
		goto LA9;
		LA25: ;
		LA9: ;
	}
	break;
	case ((NU8) 147):
	{
		{
			NIM_BOOL LOC39;
			LOC39 = 0;
			LOC39 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[loc]);
			if (!(LOC39)) goto LA40;
			LOC39 = isvalue_335080((*eq).kindU.S6.sons->data[val]);
			LA40: ;
			if (!LOC39) goto LA41;
			{
				NIM_BOOL LOC45;
				LOC45 = 0;
				LOC45 = inset_260010((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[val]);
				if (!LOC45) goto LA46;
				result = ((NU8) 2);
			}
			goto LA43;
			LA46: ;
			{
				result = ((NU8) 1);
			}
			LA43: ;
		}
		LA41: ;
	}
	break;
	case ((NU8) 98):
	case ((NU8) 126):
	case ((NU8) 125):
	{
		internalerror_187100((*eq).info, ((NimStringDesc*) &TMP3490));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode214790*, pred_335647)(Tnode214790* n) {
	Tnode214790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind >= ((NU8) 5) && (*n).kind <= ((NU8) 15));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*n).kindU.S1.intval == (IL64(-9223372036854775807) - IL64(1))));
		LA4: ;
		if (!LOC3) goto LA5;
		result = copynode_218542(n);
		(*result).kindU.S1.intval -= ((NI) 1);
	}
	goto LA1;
	LA5: ;
	{
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NU8, impliesge_336694)(Tnode214790* fact, Tnode214790* x, Tnode214790* c) {
	NU8 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = islocation_335095(x);
		if (!!(LOC3)) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_187183(TMP3491);
		internalerror_187113(LOC6);
	}
	LA4: ;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC10) goto LA11;
			{
				NIM_BOOL LOC15;
				LOC15 = 0;
				LOC15 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC15)) goto LA16;
				LOC15 = isvalue_335080(c);
				LA16: ;
				if (!LOC15) goto LA17;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = levalue_221233(c, (*fact).kindU.S6.sons->data[((NI) 2)]);
					if (!LOC21) goto LA22;
					result = ((NU8) 2);
				}
				goto LA19;
				LA22: ;
				{
					result = ((NU8) 1);
				}
				LA19: ;
			}
			LA17: ;
		}
		goto LA8;
		LA11: ;
		{
			NIM_BOOL LOC26;
			LOC26 = 0;
			LOC26 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC26) goto LA27;
			{
				NIM_BOOL LOC31;
				LOC31 = 0;
				LOC31 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC31)) goto LA32;
				LOC31 = isvalue_335080(c);
				LA32: ;
				if (!LOC31) goto LA33;
				{
					NIM_BOOL LOC37;
					LOC37 = 0;
					LOC37 = levalue_221233(c, (*fact).kindU.S6.sons->data[((NI) 1)]);
					if (!LOC37) goto LA38;
					result = ((NU8) 2);
				}
				goto LA35;
				LA38: ;
				{
					result = ((NU8) 1);
				}
				LA35: ;
			}
			LA33: ;
		}
		goto LA8;
		LA27: ;
		LA8: ;
	}
	break;
	case ((NU8) 71):
	case ((NU8) 74):
	case ((NU8) 76):
	case ((NU8) 78):
	case ((NU8) 81):
	case ((NU8) 84):
	case ((NU8) 87):
	case ((NU8) 91):
	case ((NU8) 129):
	{
		{
			NIM_BOOL LOC44;
			LOC44 = 0;
			LOC44 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC44) goto LA45;
			{
				NIM_BOOL LOC49;
				LOC49 = 0;
				LOC49 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC49)) goto LA50;
				LOC49 = isvalue_335080(c);
				LA50: ;
				if (!LOC49) goto LA51;
				{
					NIM_BOOL LOC55;
					LOC55 = 0;
					LOC55 = levalue_221233((*fact).kindU.S6.sons->data[((NI) 2)], c);
					if (!LOC55) goto LA56;
					result = ((NU8) 1);
				}
				LA56: ;
			}
			LA51: ;
		}
		goto LA42;
		LA45: ;
		{
			NIM_BOOL LOC59;
			LOC59 = 0;
			LOC59 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC59) goto LA60;
			{
				NIM_BOOL LOC64;
				LOC64 = 0;
				LOC64 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC64)) goto LA65;
				LOC64 = isvalue_335080(c);
				LA65: ;
				if (!LOC64) goto LA66;
				{
					Tnode214790* LOC70;
					NIM_BOOL LOC71;
					LOC70 = 0;
					LOC70 = pred_335647(c);
					LOC71 = 0;
					LOC71 = levalue_221233(LOC70, (*fact).kindU.S6.sons->data[((NI) 1)]);
					if (!LOC71) goto LA72;
					result = ((NU8) 2);
				}
				LA72: ;
			}
			LA66: ;
		}
		goto LA42;
		LA60: ;
		LA42: ;
	}
	break;
	case ((NU8) 70):
	case ((NU8) 73):
	case ((NU8) 75):
	case ((NU8) 77):
	case ((NU8) 80):
	case ((NU8) 83):
	case ((NU8) 86):
	case ((NU8) 90):
	case ((NU8) 128):
	{
		{
			NIM_BOOL LOC77;
			LOC77 = 0;
			LOC77 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC77) goto LA78;
			{
				NIM_BOOL LOC82;
				LOC82 = 0;
				LOC82 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC82)) goto LA83;
				LOC82 = isvalue_335080(c);
				LA83: ;
				if (!LOC82) goto LA84;
				{
					NIM_BOOL LOC88;
					LOC88 = 0;
					LOC88 = levalue_221233((*fact).kindU.S6.sons->data[((NI) 2)], c);
					if (!LOC88) goto LA89;
					result = ((NU8) 1);
				}
				LA89: ;
			}
			LA84: ;
		}
		goto LA75;
		LA78: ;
		{
			NIM_BOOL LOC92;
			LOC92 = 0;
			LOC92 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC92) goto LA93;
			{
				NIM_BOOL LOC97;
				LOC97 = 0;
				LOC97 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC97)) goto LA98;
				LOC97 = isvalue_335080(c);
				LA98: ;
				if (!LOC97) goto LA99;
				{
					NIM_BOOL LOC103;
					LOC103 = 0;
					LOC103 = levalue_221233(c, (*fact).kindU.S6.sons->data[((NI) 1)]);
					if (!LOC103) goto LA104;
					result = ((NU8) 2);
				}
				LA104: ;
			}
			LA99: ;
		}
		goto LA75;
		LA93: ;
		LA75: ;
	}
	break;
	case ((NU8) 98):
	case ((NU8) 126):
	case ((NU8) 125):
	{
		internalerror_187100((*x).info, ((NimStringDesc*) &TMP3493));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, impliesle_336729)(Tnode214790* fact, Tnode214790* x, Tnode214790* c) {
	NU8 result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = islocation_335095(x);
		if (!!(LOC3)) goto LA4;
		result = impliesge_336694(fact, c, x);
		goto BeforeRet;
	}
	LA4: ;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC9) goto LA10;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC14)) goto LA15;
				LOC14 = isvalue_335080(c);
				LA15: ;
				if (!LOC14) goto LA16;
				{
					NIM_BOOL LOC20;
					LOC20 = 0;
					LOC20 = levalue_221233((*fact).kindU.S6.sons->data[((NI) 2)], c);
					if (!LOC20) goto LA21;
					result = ((NU8) 2);
				}
				goto LA18;
				LA21: ;
				{
					result = ((NU8) 1);
				}
				LA18: ;
			}
			LA16: ;
		}
		goto LA7;
		LA10: ;
		{
			NIM_BOOL LOC25;
			LOC25 = 0;
			LOC25 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC25) goto LA26;
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC30)) goto LA31;
				LOC30 = isvalue_335080(c);
				LA31: ;
				if (!LOC30) goto LA32;
				{
					NIM_BOOL LOC36;
					LOC36 = 0;
					LOC36 = levalue_221233((*fact).kindU.S6.sons->data[((NI) 1)], c);
					if (!LOC36) goto LA37;
					result = ((NU8) 2);
				}
				goto LA34;
				LA37: ;
				{
					result = ((NU8) 1);
				}
				LA34: ;
			}
			LA32: ;
		}
		goto LA7;
		LA26: ;
		LA7: ;
	}
	break;
	case ((NU8) 71):
	case ((NU8) 74):
	case ((NU8) 76):
	case ((NU8) 78):
	case ((NU8) 81):
	case ((NU8) 84):
	case ((NU8) 87):
	case ((NU8) 91):
	case ((NU8) 129):
	{
		{
			NIM_BOOL LOC43;
			LOC43 = 0;
			LOC43 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC43) goto LA44;
			{
				NIM_BOOL LOC48;
				LOC48 = 0;
				LOC48 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC48)) goto LA49;
				LOC48 = isvalue_335080(c);
				LA49: ;
				if (!LOC48) goto LA50;
				{
					Tnode214790* LOC54;
					NIM_BOOL LOC55;
					LOC54 = 0;
					LOC54 = pred_335647(c);
					LOC55 = 0;
					LOC55 = levalue_221233((*fact).kindU.S6.sons->data[((NI) 2)], LOC54);
					if (!LOC55) goto LA56;
					result = ((NU8) 2);
				}
				LA56: ;
			}
			LA50: ;
		}
		goto LA41;
		LA44: ;
		{
			NIM_BOOL LOC59;
			LOC59 = 0;
			LOC59 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC59) goto LA60;
			{
				NIM_BOOL LOC64;
				LOC64 = 0;
				LOC64 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC64)) goto LA65;
				LOC64 = isvalue_335080(c);
				LA65: ;
				if (!LOC64) goto LA66;
				{
					NIM_BOOL LOC70;
					LOC70 = 0;
					LOC70 = levalue_221233(c, (*fact).kindU.S6.sons->data[((NI) 1)]);
					if (!LOC70) goto LA71;
					result = ((NU8) 1);
				}
				LA71: ;
			}
			LA66: ;
		}
		goto LA41;
		LA60: ;
		LA41: ;
	}
	break;
	case ((NU8) 70):
	case ((NU8) 73):
	case ((NU8) 75):
	case ((NU8) 77):
	case ((NU8) 80):
	case ((NU8) 83):
	case ((NU8) 86):
	case ((NU8) 90):
	case ((NU8) 128):
	{
		{
			NIM_BOOL LOC76;
			LOC76 = 0;
			LOC76 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC76) goto LA77;
			{
				NIM_BOOL LOC81;
				LOC81 = 0;
				LOC81 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC81)) goto LA82;
				LOC81 = isvalue_335080(c);
				LA82: ;
				if (!LOC81) goto LA83;
				{
					NIM_BOOL LOC87;
					LOC87 = 0;
					LOC87 = levalue_221233((*fact).kindU.S6.sons->data[((NI) 2)], c);
					if (!LOC87) goto LA88;
					result = ((NU8) 2);
				}
				LA88: ;
			}
			LA83: ;
		}
		goto LA74;
		LA77: ;
		{
			NIM_BOOL LOC91;
			LOC91 = 0;
			LOC91 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC91) goto LA92;
			{
				NIM_BOOL LOC96;
				LOC96 = 0;
				LOC96 = isvalue_335080((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC96)) goto LA97;
				LOC96 = isvalue_335080(c);
				LA97: ;
				if (!LOC96) goto LA98;
				{
					Tnode214790* LOC102;
					NIM_BOOL LOC103;
					LOC102 = 0;
					LOC102 = pred_335647((*fact).kindU.S6.sons->data[((NI) 1)]);
					LOC103 = 0;
					LOC103 = levalue_221233(c, LOC102);
					if (!LOC103) goto LA104;
					result = ((NU8) 1);
				}
				LA104: ;
			}
			LA98: ;
		}
		goto LA74;
		LA92: ;
		LA74: ;
	}
	break;
	case ((NU8) 98):
	case ((NU8) 126):
	case ((NU8) 125):
	{
		internalerror_187100((*x).info, ((NimStringDesc*) &TMP3494));
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, implieslt_336758)(Tnode214790* fact, Tnode214790* x, Tnode214790* c) {
	NU8 result;
	Tnode214790* p;
	result = 0;
	p = pred_335647(c);
	{
		if (!!((p == c))) goto LA3;
		result = impliesle_336729(fact, x, p);
	}
	goto LA1;
	LA3: ;
	{
		Tnode214790* q;
		q = pred_335647(x);
		{
			if (!!((q == x))) goto LA8;
			result = impliesle_336729(fact, q, c);
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, len_215059)(Tnode214790* n) {
	NI result;
	result = 0;
	{
		if (!(*n).kindU.S6.sons == 0) goto LA3;
		result = ((NI) 0);
	}
	goto LA1;
	LA3: ;
	{
		result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NU8, comparesets_336617)(Tnode214790* a, Tnode214790* b) {
	NU8 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = equalsets_260046(a, b);
		if (!LOC3) goto LA4;
		result = ((NU8) 2);
	}
	goto LA1;
	LA4: ;
	{
		Tnode214790* LOC7;
		NI LOC8;
		LOC7 = 0;
		LOC7 = intersectsets_260034(a, b);
		LOC8 = 0;
		LOC8 = len_215059(LOC7);
		if (!(LOC8 == ((NI) 0))) goto LA9;
		result = ((NU8) 1);
	}
	goto LA1;
	LA9: ;
	LA1: ;
	return result;
}

N_NIMCALL(NU8, leimpliesin_336483)(Tnode214790* x, Tnode214790* c, Tnode214790* aset) {
	NU8 result;
	result = 0;
	{
		Tnode214790* value;
		NI64 LOC5;
		if (!((*c).kind >= ((NU8) 5) && (*c).kind <= ((NU8) 15))) goto LA3;
		LOC5 = 0;
		LOC5 = firstord_240001((*x).typ);
		value = newintnode_215660((*c).kind, LOC5);
		{
			NI i;
			NI pos;
			NI neg;
			if (!((NI64)((*c).kindU.S1.intval - (*value).kindU.S1.intval) < IL64(1000))) goto LA8;
			i = 0;
			pos = 0;
			neg = 0;
			{
				while (1) {
					if (!((*value).kindU.S1.intval <= (*c).kindU.S1.intval)) goto LA11;
					{
						NIM_BOOL LOC14;
						LOC14 = 0;
						LOC14 = inset_260010(aset, value);
						if (!LOC14) goto LA15;
						pos += ((NI) 1);
					}
					goto LA12;
					LA15: ;
					{
						neg += ((NI) 1);
					}
					LA12: ;
					i += ((NI) 1);
					(*value).kindU.S1.intval += ((NI) 1);
				} LA11: ;
			}
			{
				if (!(pos == i)) goto LA20;
				result = ((NU8) 2);
			}
			goto LA18;
			LA20: ;
			{
				if (!(neg == i)) goto LA23;
				result = ((NU8) 1);
			}
			goto LA18;
			LA23: ;
			LA18: ;
		}
		LA8: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(NU8, geimpliesin_336550)(Tnode214790* x, Tnode214790* c, Tnode214790* aset) {
	NU8 result;
	result = 0;
	{
		Tnode214790* value;
		NI64 max;
		if (!((*c).kind >= ((NU8) 5) && (*c).kind <= ((NU8) 15))) goto LA3;
		value = newintnode_215660((*c).kind, (*c).kindU.S1.intval);
		max = lastord_240004((*x).typ);
		{
			NI i;
			NI pos;
			NI neg;
			if (!((NI64)(max - (*value).kindU.S1.intval) < IL64(1000))) goto LA7;
			i = 0;
			pos = 0;
			neg = 0;
			{
				while (1) {
					if (!((*value).kindU.S1.intval <= max)) goto LA10;
					{
						NIM_BOOL LOC13;
						LOC13 = 0;
						LOC13 = inset_260010(aset, value);
						if (!LOC13) goto LA14;
						pos += ((NI) 1);
					}
					goto LA11;
					LA14: ;
					{
						neg += ((NI) 1);
					}
					LA11: ;
					i += ((NI) 1);
					(*value).kindU.S1.intval += ((NI) 1);
				} LA10: ;
			}
			{
				if (!(pos == i)) goto LA19;
				result = ((NU8) 2);
			}
			goto LA17;
			LA19: ;
			{
				if (!(neg == i)) goto LA22;
				result = ((NU8) 1);
			}
			goto LA17;
			LA22: ;
			LA17: ;
		}
		LA7: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(NU8, impliesin_336623)(Tnode214790* fact, Tnode214790* loc, Tnode214790* aset) {
	NU8 result;
	result = 0;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], loc);
			if (!LOC4) goto LA5;
			{
				NIM_BOOL LOC9;
				LOC9 = 0;
				LOC9 = inset_260010(aset, (*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!LOC9) goto LA10;
				result = ((NU8) 2);
			}
			goto LA7;
			LA10: ;
			{
				result = ((NU8) 1);
			}
			LA7: ;
		}
		goto LA2;
		LA5: ;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC14) goto LA15;
			{
				NIM_BOOL LOC19;
				LOC19 = 0;
				LOC19 = inset_260010(aset, (*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!LOC19) goto LA20;
				result = ((NU8) 2);
			}
			goto LA17;
			LA20: ;
			{
				result = ((NU8) 1);
			}
			LA17: ;
		}
		goto LA2;
		LA15: ;
		LA2: ;
	}
	break;
	case ((NU8) 147):
	{
		{
			NIM_BOOL LOC26;
			LOC26 = 0;
			LOC26 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC26) goto LA27;
			result = comparesets_336617((*fact).kindU.S6.sons->data[((NI) 1)], aset);
		}
		LA27: ;
	}
	break;
	case ((NU8) 70):
	case ((NU8) 73):
	case ((NU8) 75):
	case ((NU8) 77):
	case ((NU8) 80):
	case ((NU8) 83):
	case ((NU8) 86):
	case ((NU8) 90):
	case ((NU8) 128):
	{
		{
			NIM_BOOL LOC32;
			LOC32 = 0;
			LOC32 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], loc);
			if (!LOC32) goto LA33;
			result = leimpliesin_336483((*fact).kindU.S6.sons->data[((NI) 1)], (*fact).kindU.S6.sons->data[((NI) 2)], aset);
		}
		goto LA30;
		LA33: ;
		{
			NIM_BOOL LOC36;
			LOC36 = 0;
			LOC36 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC36) goto LA37;
			result = geimpliesin_336550((*fact).kindU.S6.sons->data[((NI) 2)], (*fact).kindU.S6.sons->data[((NI) 1)], aset);
		}
		goto LA30;
		LA37: ;
		LA30: ;
	}
	break;
	case ((NU8) 71):
	case ((NU8) 74):
	case ((NU8) 76):
	case ((NU8) 78):
	case ((NU8) 81):
	case ((NU8) 84):
	case ((NU8) 87):
	case ((NU8) 91):
	case ((NU8) 129):
	{
		{
			NIM_BOOL LOC42;
			Tnode214790* LOC45;
			LOC42 = 0;
			LOC42 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 1)], loc);
			if (!LOC42) goto LA43;
			LOC45 = 0;
			LOC45 = pred_335647((*fact).kindU.S6.sons->data[((NI) 2)]);
			result = leimpliesin_336483((*fact).kindU.S6.sons->data[((NI) 1)], LOC45, aset);
		}
		goto LA40;
		LA43: ;
		{
			NIM_BOOL LOC47;
			Tnode214790* LOC50;
			LOC47 = 0;
			LOC47 = sametree_336245((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC47) goto LA48;
			LOC50 = 0;
			LOC50 = pred_335647((*fact).kindU.S6.sons->data[((NI) 1)]);
			result = geimpliesin_336550((*fact).kindU.S6.sons->data[((NI) 2)], LOC50, aset);
		}
		goto LA40;
		LA48: ;
		LA40: ;
	}
	break;
	case ((NU8) 98):
	case ((NU8) 126):
	case ((NU8) 125):
	{
		internalerror_187100((*loc).info, ((NimStringDesc*) &TMP3495));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, factimplies_336794)(Tnode214790* fact, Tnode214790* prop) {
	NU8 result;
	NU8 LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = getmagic_239323(fact);
	switch (LOC1) {
	case ((NU8) 98):
	{
		Tnode214790* arg;
		NU8 LOC3;
		arg = (*fact).kindU.S6.sons->data[((NI) 1)];
		LOC3 = 0;
		LOC3 = getmagic_239323(arg);
		switch (LOC3) {
		case ((NU8) 156):
		case ((NU8) 88):
		{
			NU8 LOC5;
			LOC5 = 0;
			LOC5 = factimplies_336794(arg, prop);
			result = HEX7E_336790(LOC5);
			goto BeforeRet;
		}
		break;
		case ((NU8) 125):
		{
			NU8 a;
			NU8 b;
			a = factimplies_336794((*arg).kindU.S6.sons->data[((NI) 1)], prop);
			b = factimplies_336794((*arg).kindU.S6.sons->data[((NI) 2)], prop);
			{
				if (!(a == b)) goto LA9;
				result = HEX7E_336790(a);
				goto BeforeRet;
			}
			LA9: ;
			result = ((NU8) 0);
			goto BeforeRet;
		}
		break;
		default:
		{
			result = ((NU8) 0);
			goto BeforeRet;
		}
		break;
		}
	}
	break;
	case ((NU8) 125):
	{
		result = factimplies_336794((*fact).kindU.S6.sons->data[((NI) 1)], prop);
		{
			if (!!((result == ((NU8) 0)))) goto LA15;
			goto BeforeRet;
		}
		LA15: ;
		result = factimplies_336794((*fact).kindU.S6.sons->data[((NI) 2)], prop);
		goto BeforeRet;
	}
	break;
	default:
	{
	}
	break;
	}
	switch ((*(*(*prop).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU8) 98):
	{
		NU8 LOC19;
		LOC19 = 0;
		LOC19 = factimplies_336794(fact, (*prop).kindU.S6.sons->data[((NI) 1)]);
		result = HEX7E_336790(LOC19);
	}
	break;
	case ((NU8) 156):
	{
		result = impliesisnil_336676(fact, prop);
	}
	break;
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		result = implieseq_336453(fact, prop);
	}
	break;
	case ((NU8) 70):
	case ((NU8) 73):
	case ((NU8) 75):
	case ((NU8) 77):
	case ((NU8) 80):
	case ((NU8) 83):
	case ((NU8) 86):
	case ((NU8) 90):
	case ((NU8) 128):
	{
		result = impliesle_336729(fact, (*prop).kindU.S6.sons->data[((NI) 1)], (*prop).kindU.S6.sons->data[((NI) 2)]);
	}
	break;
	case ((NU8) 71):
	case ((NU8) 74):
	case ((NU8) 76):
	case ((NU8) 78):
	case ((NU8) 81):
	case ((NU8) 84):
	case ((NU8) 87):
	case ((NU8) 91):
	case ((NU8) 129):
	{
		result = implieslt_336758(fact, (*prop).kindU.S6.sons->data[((NI) 1)], (*prop).kindU.S6.sons->data[((NI) 2)]);
	}
	break;
	case ((NU8) 147):
	{
		result = impliesin_336623(fact, (*prop).kindU.S6.sons->data[((NI) 2)], (*prop).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	default:
	{
		result = ((NU8) 0);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, doesimply_336838)(Tnodeseq214784* facts, Tnode214790* prop) {
	NU8 result;
{	result = 0;
	{
		Tnode214790* f_337009;
		NI i_337032;
		NI L_337034;
		f_337009 = 0;
		i_337032 = ((NI) 0);
		L_337034 = (facts ? facts->Sup.len : 0);
		{
			while (1) {
				if (!(i_337032 < L_337034)) goto LA3;
				f_337009 = facts->data[i_337032];
				{
					if (!!(f_337009 == 0)) goto LA6;
					result = factimplies_336794(f_337009, prop);
					{
						if (!!((result == ((NU8) 0)))) goto LA10;
						goto BeforeRet;
					}
					LA10: ;
				}
				LA6: ;
				i_337032 += ((NI) 1);
			} LA3: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode214790*, swapargs_335247)(Tnode214790* fact, Tsym214822* newop) {
	Tnode214790* result;
	result = 0;
	result = newnodei_216401(((NU8) 27), (*fact).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(newop));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), (*fact).kindU.S6.sons->data[((NI) 2)]);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), (*fact).kindU.S6.sons->data[((NI) 1)]);
	return result;
}

N_NIMCALL(Tnode214790*, neg_335257)(Tnode214790* n) {
	Tnode214790* result;
	NU8 LOC5;
{	result = 0;
	{
		if (!(n == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getmagic_239323(n);
	switch (LOC5) {
	case ((NU8) 98):
	{
		result = (*n).kindU.S6.sons->data[((NI) 1)];
	}
	break;
	case ((NU8) 71):
	case ((NU8) 74):
	case ((NU8) 76):
	case ((NU8) 78):
	case ((NU8) 81):
	case ((NU8) 84):
	case ((NU8) 87):
	case ((NU8) 91):
	case ((NU8) 129):
	{
		result = swapargs_335247(n, ople_335236);
	}
	break;
	case ((NU8) 70):
	case ((NU8) 73):
	case ((NU8) 75):
	case ((NU8) 77):
	case ((NU8) 80):
	case ((NU8) 83):
	case ((NU8) 86):
	case ((NU8) 90):
	case ((NU8) 128):
	{
		result = swapargs_335247(n, oplt_335237);
	}
	break;
	case ((NU8) 147):
	{
		Ttype214828* t;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 39)))) goto LA12;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA12: ;
		t = skiptypes_218113((*(*n).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106232576256));
		result = newnodei_216401(((NU8) 27), (*n).info, ((NI) 3));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), (*n).kindU.S6.sons->data[((NI) 0)]);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), (*n).kindU.S6.sons->data[((NI) 2)]);
		{
			Tnode214790* s;
			if (!((*t).kind == ((NU8) 14))) goto LA16;
			s = newnodeit_216801(((NU8) 39), (*n).info, (*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
			{
				Tnode214790* e_335302;
				Tnode214790* HEX3Atmp_335383;
				e_335302 = 0;
				HEX3Atmp_335383 = 0;
				HEX3Atmp_335383 = (*t).n;
				{
					NI i_335387;
					NI HEX3Atmp_335389;
					NI LOC20;
					NI res_335391;
					i_335387 = 0;
					HEX3Atmp_335389 = 0;
					LOC20 = 0;
					LOC20 = len_215059(HEX3Atmp_335383);
					HEX3Atmp_335389 = (LOC20 - 1);
					res_335391 = ((NI) 0);
					{
						while (1) {
							Tnode214790* easnode;
							if (!(res_335391 <= HEX3Atmp_335389)) goto LA22;
							i_335387 = res_335391;
							e_335302 = (*HEX3Atmp_335383).kindU.S6.sons->data[i_335387];
							easnode = newintnode_215660(((NU8) 6), ((NI64) ((*(*e_335302).kindU.S4.sym).position)));
							{
								NIM_BOOL LOC25;
								LOC25 = 0;
								LOC25 = inset_260010((*n).kindU.S6.sons->data[((NI) 1)], easnode);
								if (!!(LOC25)) goto LA26;
								add_215114(s, easnode);
							}
							LA26: ;
							res_335391 += ((NI) 1);
						} LA22: ;
					}
				}
			}
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), s);
		}
		goto LA14;
		LA16: ;
		{
			NIM_BOOL LOC29;
			NI64 LOC31;
			LOC29 = 0;
			LOC29 = !(((*t).kind == ((NU8) 28) || (*t).kind == ((NU8) 24)));
			if (!(LOC29)) goto LA30;
			LOC31 = 0;
			LOC31 = lengthord_240007(t);
			LOC29 = (LOC31 < IL64(1000));
			LA30: ;
			if (!LOC29) goto LA32;
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), complement_260392((*n).kindU.S6.sons->data[((NI) 1)]));
		}
		goto LA14;
		LA32: ;
		{
			result = NIM_NIL;
		}
		LA14: ;
	}
	break;
	case ((NU8) 126):
	{
		Tnode214790* a;
		Tnode214790* b;
		a = neg_335257((*n).kindU.S6.sons->data[((NI) 1)]);
		b = neg_335257((*n).kindU.S6.sons->data[((NI) 2)]);
		{
			NIM_BOOL LOC38;
			LOC38 = 0;
			LOC38 = !((a == NIM_NIL));
			if (!(LOC38)) goto LA39;
			LOC38 = !((b == NIM_NIL));
			LA39: ;
			if (!LOC38) goto LA40;
			result = newnodei_216401(((NU8) 27), (*n).info, ((NI) 3));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opand_335238));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), b);
		}
		goto LA36;
		LA40: ;
		{
			if (!!((a == NIM_NIL))) goto LA43;
			result = a;
		}
		goto LA36;
		LA43: ;
		{
			if (!!((b == NIM_NIL))) goto LA46;
			result = b;
		}
		goto LA36;
		LA46: ;
		LA36: ;
	}
	break;
	default:
	{
		result = newnodei_216401(((NU8) 27), (*n).info, ((NI) 2));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opnot_219606));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode214790*, buildcall_335394)(Tsym214822* op, Tnode214790* a) {
	Tnode214790* result;
	result = 0;
	result = newnodei_216401(((NU8) 27), (*a).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(op));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
	return result;
}

N_NIMCALL(NU8, impliesnotnil_337035)(Tnodeseq214784* facts, Tnode214790* arg) {
	NU8 result;
	Tnode214790* LOC1;
	Tnode214790* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = buildcall_335394(opisnil_335240, arg);
	LOC2 = 0;
	LOC2 = neg_335257(LOC1);
	result = doesimply_336838(facts, LOC2);
	return result;
}

N_NIMCALL(Tnode214790*, buildproperfieldcheck_338734)(Tnode214790* access, Tnode214790* check) {
	Tnode214790* result;
	result = 0;
	{
		if (!((*(*check).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 39))) goto LA3;
		result = copytree_218822(check);
		{
			Tnode214790* a;
			if (!((*access).kind == ((NU8) 45))) goto LA7;
			a = copytree_218822(access);
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), (*check).kindU.S6.sons->data[((NI) 2)]);
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), a);
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		Tnode214790* LOC10;
		LOC10 = 0;
		LOC10 = buildproperfieldcheck_338734(access, (*check).kindU.S6.sons->data[((NI) 1)]);
		result = neg_335257(LOC10);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, checkfieldaccess_338803)(Tnodeseq214784* m, Tnode214790* n) {
	{
		NI i_338817;
		NI HEX3Atmp_338844;
		NI LOC2;
		NI res_338847;
		i_338817 = 0;
		HEX3Atmp_338844 = 0;
		LOC2 = 0;
		LOC2 = len_215059(n);
		HEX3Atmp_338844 = (NI)(LOC2 - ((NI) 1));
		res_338847 = ((NI) 1);
		{
			while (1) {
				Tnode214790* check;
				if (!(res_338847 <= HEX3Atmp_338844)) goto LA4;
				i_338817 = res_338847;
				check = buildproperfieldcheck_338734((*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[i_338817]);
				{
					NIM_BOOL LOC7;
					NU8 LOC9;
					NimStringDesc* LOC12;
					LOC7 = 0;
					LOC7 = !((check == NIM_NIL));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = doesimply_336838(m, check);
					LOC7 = !((LOC9 == ((NU8) 2)));
					LA8: ;
					if (!LOC7) goto LA10;
					LOC12 = 0;
					LOC12 = rendertree_233044((*n).kindU.S6.sons->data[((NI) 0)], 0);
					message_187095((*n).info, ((NU16) 258), LOC12);
					goto LA1;
				}
				LA10: ;
				res_338847 += ((NI) 1);
			} LA4: ;
		}
	} LA1: ;
}

static N_INLINE(NI, safelen_215081)(Tnode214790* n) {
	NI result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind >= ((NU8) 0) && (*n).kind <= ((NU8) 23));
		if (LOC3) goto LA4;
		LOC3 = (*n).kindU.S6.sons == 0;
		LA4: ;
		if (!LOC3) goto LA5;
		result = ((NI) 0);
	}
	goto LA1;
	LA5: ;
	{
		result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, hassubtree_336385)(Tnode214790* n, Tnode214790* x) {
	NIM_BOOL result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametree_336245(n, x);
		if (!LOC3) goto LA4;
		result = NIM_TRUE;
	}
	goto LA1;
	LA4: ;
	{
		{
			NI i_336400;
			NI HEX3Atmp_336403;
			NI LOC8;
			NI res_336406;
			i_336400 = 0;
			HEX3Atmp_336403 = 0;
			LOC8 = 0;
			LOC8 = safelen_215081(n);
			HEX3Atmp_336403 = (NI)(LOC8 - ((NI) 1));
			res_336406 = ((NI) 0);
			{
				while (1) {
					if (!(res_336406 <= HEX3Atmp_336403)) goto LA10;
					i_336400 = res_336406;
					{
						NIM_BOOL LOC13;
						LOC13 = 0;
						LOC13 = hassubtree_336385((*n).kindU.S6.sons->data[i_336400], x);
						if (!LOC13) goto LA14;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA14: ;
					res_336406 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, invalidatefacts_336410)(Tnodeseq214784** m, Tnode214790* n) {
	{
		NI i_336424;
		NI HEX3Atmp_336439;
		NI res_336442;
		i_336424 = 0;
		HEX3Atmp_336439 = 0;
		HEX3Atmp_336439 = ((*m) ? ((*m)->Sup.len-1) : -1);
		res_336442 = ((NI) 0);
		{
			while (1) {
				if (!(res_336442 <= HEX3Atmp_336439)) goto LA3;
				i_336424 = res_336442;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = !(((*m)->data[i_336424] == NIM_NIL));
					if (!(LOC6)) goto LA7;
					LOC6 = hassubtree_336385((*m)->data[i_336424], n);
					LA7: ;
					if (!LOC6) goto LA8;
					asgnRefNoCycle((void**) (&(*m)->data[i_336424]), NIM_NIL);
				}
				LA8: ;
				res_336442 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(void, addasgnfact_338655)(Tnodeseq214784** m, Tnode214790* key, Tnode214790* value) {
	Tnode214790* fact;
	fact = newnodei_216401(((NU8) 27), (*key).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opeq_335241));
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 1)]), key);
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 2)]), value);
	(*m) = (Tnodeseq214784*) incrSeqV2(&((*m))->Sup, sizeof(Tnode214790*));
	asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len]), fact);
	++(*m)->Sup.len;
}

N_NIMCALL(NIM_BOOL, islet_335100)(Tnode214790* n) {
	NIM_BOOL result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		{
			if (!((1049120 &(1U<<((NU)((*(*n).kindU.S4.sym).kind)&31U)))!=0)) goto LA7;
			result = NIM_TRUE;
		}
		goto LA5;
		LA7: ;
		{
			NIM_BOOL LOC10;
			Ttype214828* LOC12;
			LOC10 = 0;
			LOC10 = ((*(*n).kindU.S4.sym).kind == ((NU8) 3));
			if (!(LOC10)) goto LA11;
			LOC12 = 0;
			LOC12 = skiptypes_218113((*(*n).kindU.S4.sym).typ, IL64(211106232576256));
			LOC10 = !(((*LOC12).kind == ((NU8) 23)));
			LA11: ;
			if (!LOC10) goto LA13;
			result = NIM_TRUE;
		}
		goto LA5;
		LA13: ;
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isvar_335146)(Tnode214790* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*n).kind == ((NU8) 3));
	if (!(LOC2)) goto LA3;
	LOC2 = ((2304 &(1U<<((NU)((*(*n).kindU.S4.sym).kind)&31U)))!=0);
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((32776 & (*(*n).kindU.S4.sym).flags) == 0);
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, isletlocation_335200)(Tnode214790* m, NIM_BOOL isapprox) {
	NIM_BOOL result;
	Tnode214790* n;
	NI derefs;
	NIM_BOOL LOC15;
{	result = 0;
	n = m;
	derefs = ((NI) 0);
	{
		while (1) {
			switch ((*n).kind) {
			case ((NU8) 45):
			case ((NU8) 46):
			case ((NU8) 67):
			case ((NU8) 66):
			{
				n = (*n).kindU.S6.sons->data[((NI) 0)];
			}
			break;
			case ((NU8) 47):
			case ((NU8) 65):
			{
				n = (*n).kindU.S6.sons->data[((NI) 0)];
				derefs += ((NI) 1);
			}
			break;
			case ((NU8) 42):
			{
				{
					NIM_BOOL LOC8;
					LOC8 = 0;
					LOC8 = isconstexpr_239336((*n).kindU.S6.sons->data[((NI) 1)]);
					if (LOC8) goto LA9;
					LOC8 = islet_335100((*n).kindU.S6.sons->data[((NI) 1)]);
					LA9: ;
					if (!LOC8) goto LA10;
					n = (*n).kindU.S6.sons->data[((NI) 0)];
				}
				goto LA6;
				LA10: ;
				{
					goto BeforeRet;
				}
				LA6: ;
			}
			break;
			case ((NU8) 58):
			case ((NU8) 59):
			case ((NU8) 60):
			{
				n = (*n).kindU.S6.sons->data[((NI) 1)];
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	LOC15 = 0;
	LOC15 = islet_335100(n);
	if (!(LOC15)) goto LA16;
	LOC15 = (derefs <= ((NI) (isapprox)));
	LA16: ;
	result = LOC15;
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = !(result);
		if (!(LOC19)) goto LA20;
		LOC19 = isapprox;
		LA20: ;
		if (!LOC19) goto LA21;
		result = isvar_335146(n);
	}
	LA21: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, interestingcaseexpr_335232)(Tnode214790* m) {
	NIM_BOOL result;
	result = 0;
	result = isletlocation_335200(m, NIM_TRUE);
	return result;
}

N_NIMCALL(Ttype214828*, settype_338419)(Tnode214790* n) {
	Ttype214828* result;
	result = 0;
	result = newtype_217107(((NU8) 19), (*(*n).typ).owner);
	addsonskipintlit_258678(result, (*n).typ);
	return result;
}

N_NIMCALL(Tnode214790*, buildof_338423)(Tnode214790* it, Tnode214790* loc) {
	Tnode214790* result;
	Tnode214790* s;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = len_215059(it);
	s = newnodei_216401(((NU8) 39), (*it).info, (NI)(LOC1 - ((NI) 1)));
	asgnRefNoCycle((void**) (&(*s).typ), settype_338419(loc));
	{
		NI i_338440;
		NI HEX3Atmp_338447;
		NI LOC3;
		NI res_338450;
		i_338440 = 0;
		HEX3Atmp_338447 = 0;
		LOC3 = 0;
		LOC3 = len_215059(it);
		HEX3Atmp_338447 = (NI)(LOC3 - ((NI) 2));
		res_338450 = ((NI) 0);
		{
			while (1) {
				if (!(res_338450 <= HEX3Atmp_338447)) goto LA5;
				i_338440 = res_338450;
				asgnRefNoCycle((void**) (&(*s).kindU.S6.sons->data[i_338440]), (*it).kindU.S6.sons->data[i_338440]);
				res_338450 += ((NI) 1);
			} LA5: ;
		}
	}
	result = newnodei_216401(((NU8) 27), (*it).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opcontains_219607));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), s);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), loc);
	return result;
}

N_NIMCALL(Tnode214790*, buildelse_338454)(Tnode214790* n) {
	Tnode214790* result;
	Tnode214790* s;
	Ttype214828* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = settype_338419((*n).kindU.S6.sons->data[((NI) 0)]);
	s = newnodeit_216801(((NU8) 39), (*n).info, LOC1);
	{
		NI i_338470;
		NI HEX3Atmp_338627;
		NI LOC3;
		NI res_338630;
		i_338470 = 0;
		HEX3Atmp_338627 = 0;
		LOC3 = 0;
		LOC3 = len_215059(n);
		HEX3Atmp_338627 = (NI)(LOC3 - ((NI) 2));
		res_338630 = ((NI) 1);
		{
			while (1) {
				Tnode214790* branch;
				if (!(res_338630 <= HEX3Atmp_338627)) goto LA5;
				i_338470 = res_338630;
				branch = (*n).kindU.S6.sons->data[i_338470];
				{
					NI j_338611;
					NI HEX3Atmp_338620;
					NI LOC7;
					NI res_338623;
					j_338611 = 0;
					HEX3Atmp_338620 = 0;
					LOC7 = 0;
					LOC7 = len_215059(branch);
					HEX3Atmp_338620 = (NI)(LOC7 - ((NI) 2));
					res_338623 = ((NI) 0);
					{
						while (1) {
							if (!(res_338623 <= HEX3Atmp_338620)) goto LA9;
							j_338611 = res_338623;
							add_215114(s, (*branch).kindU.S6.sons->data[j_338611]);
							res_338623 += ((NI) 1);
						} LA9: ;
					}
				}
				res_338630 += ((NI) 1);
			} LA5: ;
		}
	}
	result = newnodei_216401(((NU8) 27), (*n).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opcontains_219607));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), s);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), (*n).kindU.S6.sons->data[((NI) 0)]);
	return result;
}

N_NIMCALL(void, addcasebranchfacts_338694)(Tnodeseq214784** m, Tnode214790* n, NI i) {
	Tnode214790* branch;
	branch = (*n).kindU.S6.sons->data[i];
	{
		Tnode214790* LOC5;
		if (!((*branch).kind == ((NU8) 85))) goto LA3;
		LOC5 = 0;
		LOC5 = buildof_338423(branch, (*n).kindU.S6.sons->data[((NI) 0)]);
		(*m) = (Tnodeseq214784*) incrSeqV2(&((*m))->Sup, sizeof(Tnode214790*));
		asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len]), LOC5);
		++(*m)->Sup.len;
	}
	goto LA1;
	LA3: ;
	{
		Tnode214790* LOC7;
		Tnode214790* LOC8;
		LOC7 = 0;
		LOC7 = buildelse_338454(n);
		LOC8 = 0;
		LOC8 = neg_335257(LOC7);
		(*m) = (Tnodeseq214784*) incrSeqV2(&((*m))->Sup, sizeof(Tnode214790*));
		asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len]), LOC8);
		++(*m)->Sup.len;
	}
	LA1: ;
}

static N_INLINE(Tnode214790*, HEX5BHEX5D_215238)(Tnode214790* n, NI i) {
	Tnode214790* result;
	result = 0;
	result = (*n).kindU.S6.sons->data[i];
	return result;
}

N_NIMCALL(Tnode214790*, usefulfact_335982)(Tnode214790* n) {
	Tnode214790* result;
	NU8 LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getmagic_239323(n);
	switch (LOC1) {
	case ((NU8) 69):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	{
		{
			NIM_BOOL LOC5;
			Tnode214790* LOC6;
			NIM_BOOL LOC8;
			LOC5 = 0;
			LOC6 = 0;
			LOC6 = skipconv_249082((*n).kindU.S6.sons->data[((NI) 2)]);
			LOC5 = ((*LOC6).kind == ((NU8) 23));
			if (!(LOC5)) goto LA7;
			LOC8 = 0;
			LOC8 = isletlocation_335200((*n).kindU.S6.sons->data[((NI) 1)], NIM_FALSE);
			if (LOC8) goto LA9;
			LOC8 = isvar_335146((*n).kindU.S6.sons->data[((NI) 1)]);
			LA9: ;
			LOC5 = LOC8;
			LA7: ;
			if (!LOC5) goto LA10;
			result = buildcall_335394(opisnil_335240, (*n).kindU.S6.sons->data[((NI) 1)]);
		}
		goto LA3;
		LA10: ;
		{
			{
				NIM_BOOL LOC15;
				LOC15 = 0;
				LOC15 = isletlocation_335200((*n).kindU.S6.sons->data[((NI) 1)], NIM_TRUE);
				if (LOC15) goto LA16;
				LOC15 = isletlocation_335200((*n).kindU.S6.sons->data[((NI) 2)], NIM_TRUE);
				LA16: ;
				if (!LOC15) goto LA17;
				result = n;
			}
			LA17: ;
		}
		LA3: ;
	}
	break;
	case ((NU8) 70) ... ((NU8) 71):
	case ((NU8) 73) ... ((NU8) 78):
	case ((NU8) 80) ... ((NU8) 81):
	case ((NU8) 83) ... ((NU8) 84):
	case ((NU8) 86) ... ((NU8) 87):
	case ((NU8) 90) ... ((NU8) 91):
	case ((NU8) 128) ... ((NU8) 129):
	{
		{
			NIM_BOOL LOC22;
			LOC22 = 0;
			LOC22 = isletlocation_335200((*n).kindU.S6.sons->data[((NI) 1)], NIM_TRUE);
			if (LOC22) goto LA23;
			LOC22 = isletlocation_335200((*n).kindU.S6.sons->data[((NI) 2)], NIM_TRUE);
			LA23: ;
			if (!LOC22) goto LA24;
			result = n;
		}
		goto LA20;
		LA24: ;
		{
			NIM_BOOL LOC27;
			Tnode214790* LOC28;
			NU8 LOC29;
			Tnode214790* LOC31;
			NU8 LOC32;
			LOC27 = 0;
			LOC28 = 0;
			LOC28 = HEX5BHEX5D_215238(n, ((NI) 1));
			LOC29 = 0;
			LOC29 = getmagic_239323(LOC28);
			LOC27 = (LOC29 == ((NU8) 32) || LOC29 == ((NU8) 33) || LOC29 == ((NU8) 34) || LOC29 == ((NU8) 35) || LOC29 == ((NU8) 36) || LOC29 == ((NU8) 37));
			if (LOC27) goto LA30;
			LOC31 = 0;
			LOC31 = HEX5BHEX5D_215238(n, ((NI) 2));
			LOC32 = 0;
			LOC32 = getmagic_239323(LOC31);
			LOC27 = (LOC32 == ((NU8) 32) || LOC32 == ((NU8) 33) || LOC32 == ((NU8) 34) || LOC32 == ((NU8) 35) || LOC32 == ((NU8) 36) || LOC32 == ((NU8) 37));
			LA30: ;
			if (!LOC27) goto LA33;
			result = n;
		}
		goto LA20;
		LA33: ;
		LA20: ;
	}
	break;
	case ((NU8) 156):
	{
		{
			NIM_BOOL LOC38;
			LOC38 = 0;
			LOC38 = isletlocation_335200((*n).kindU.S6.sons->data[((NI) 1)], NIM_FALSE);
			if (LOC38) goto LA39;
			LOC38 = isvar_335146((*n).kindU.S6.sons->data[((NI) 1)]);
			LA39: ;
			if (!LOC38) goto LA40;
			result = n;
		}
		LA40: ;
	}
	break;
	case ((NU8) 146):
	case ((NU8) 147):
	{
		{
			NIM_BOOL LOC45;
			LOC45 = 0;
			LOC45 = isletlocation_335200((*n).kindU.S6.sons->data[((NI) 1)], NIM_TRUE);
			if (!LOC45) goto LA46;
			result = n;
		}
		LA46: ;
	}
	break;
	case ((NU8) 125):
	{
		Tnode214790* a;
		Tnode214790* b;
		a = usefulfact_335982((*n).kindU.S6.sons->data[((NI) 1)]);
		b = usefulfact_335982((*n).kindU.S6.sons->data[((NI) 2)]);
		{
			NIM_BOOL LOC51;
			LOC51 = 0;
			LOC51 = !((a == NIM_NIL));
			if (!(LOC51)) goto LA52;
			LOC51 = !((b == NIM_NIL));
			LA52: ;
			if (!LOC51) goto LA53;
			result = newnodei_216401(((NU8) 27), (*n).info, ((NI) 3));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opand_335238));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), b);
		}
		goto LA49;
		LA53: ;
		{
			if (!!((a == NIM_NIL))) goto LA56;
			result = a;
		}
		goto LA49;
		LA56: ;
		{
			if (!!((b == NIM_NIL))) goto LA59;
			result = b;
		}
		goto LA49;
		LA59: ;
		LA49: ;
	}
	break;
	case ((NU8) 98):
	{
		Tnode214790* a;
		a = usefulfact_335982((*n).kindU.S6.sons->data[((NI) 1)]);
		{
			if (!!((a == NIM_NIL))) goto LA64;
			result = neg_335257(a);
		}
		LA64: ;
	}
	break;
	case ((NU8) 126):
	{
		Tnode214790* a;
		Tnode214790* LOC67;
		Tnode214790* b;
		Tnode214790* LOC68;
		LOC67 = 0;
		LOC67 = usefulfact_335982((*n).kindU.S6.sons->data[((NI) 1)]);
		a = neg_335257(LOC67);
		LOC68 = 0;
		LOC68 = usefulfact_335982((*n).kindU.S6.sons->data[((NI) 2)]);
		b = neg_335257(LOC68);
		{
			NIM_BOOL LOC71;
			LOC71 = 0;
			LOC71 = !((a == NIM_NIL));
			if (!(LOC71)) goto LA72;
			LOC71 = !((b == NIM_NIL));
			LA72: ;
			if (!LOC71) goto LA73;
			result = newnodei_216401(((NU8) 27), (*n).info, ((NI) 3));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opand_335238));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), b);
			result = neg_335257(result);
		}
		LA73: ;
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC78;
			LOC78 = 0;
			LOC78 = ((*n).kind == ((NU8) 3));
			if (!(LOC78)) goto LA79;
			LOC78 = ((*(*n).kindU.S4.sym).kind == ((NU8) 9));
			LA79: ;
			if (!LOC78) goto LA80;
			{
				if (!!(((*(*n).kindU.S4.sym).ast == NIM_NIL))) goto LA84;
				result = usefulfact_335982((*(*n).kindU.S4.sym).ast);
			}
			LA84: ;
		}
		goto LA76;
		LA80: ;
		{
			Tnode214790* LOC89;
			if (!((*n).kind == ((NU8) 126))) goto LA87;
			LOC89 = 0;
			LOC89 = lastson_217364(n);
			result = usefulfact_335982(LOC89);
		}
		goto LA76;
		LA87: ;
		LA76: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(void, addfact_336193)(Tnodeseq214784** m, Tnode214790* nn) {
	Tnode214790* n;
	n = usefulfact_335982(nn);
	{
		if (!!((n == NIM_NIL))) goto LA3;
		(*m) = (Tnodeseq214784*) incrSeqV2(&((*m))->Sup, sizeof(Tnode214790*));
		asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len]), n);
		++(*m)->Sup.len;
	}
	LA3: ;
}

N_NIMCALL(void, addfactneg_336221)(Tnodeseq214784** m, Tnode214790* n_336225) {
	Tnode214790* n;
	n = neg_335257(n_336225);
	{
		if (!!((n == NIM_NIL))) goto LA3;
		addfact_336193(m, n);
	}
	LA3: ;
}

N_NIMCALL(void, adddiscriminantfact_338634)(Tnodeseq214784** m, Tnode214790* n) {
	Tnode214790* fact;
	fact = newnodei_216401(((NU8) 27), (*n).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(opeq_335241));
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 1)]), (*n).kindU.S6.sons->data[((NI) 0)]);
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 2)]), (*n).kindU.S6.sons->data[((NI) 1)]);
	(*m) = (Tnodeseq214784*) incrSeqV2(&((*m))->Sup, sizeof(Tnode214790*));
	asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len]), fact);
	++(*m)->Sup.len;
}

N_NIMCALL(Tnode214790*, buildcall_335401)(Tsym214822* op, Tnode214790* a, Tnode214790* b) {
	Tnode214790* result;
	result = 0;
	result = newnodei_216401(((NU8) 29), (*a).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(op));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), b);
	return result;
}

N_NIMCALL(Tnode214790*, minusone_335555)(void) {
	Tnode214790* result;
	result = 0;
	result = newintnode_215660(((NU8) 6), IL64(-1));
	return result;
}

N_NIMCALL(Tnode214790*, negate_335498)(Tnode214790* a, Tnode214790* b_335501, Tnode214790* res) {
	Tnode214790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode214790* b;
		LOC3 = 0;
		LOC3 = ((*b_335501).kind >= ((NU8) 5) && (*b_335501).kind <= ((NU8) 15));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*b_335501).kindU.S1.intval == (IL64(-9223372036854775807) - IL64(1))));
		LA4: ;
		if (!LOC3) goto LA5;
		b = copynode_218542(b_335501);
		(*b).kindU.S1.intval = -((*b).kindU.S1.intval);
		{
			if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA9;
			(*b).kindU.S1.intval = HEX7CHEX2BHEX7C_274007((*b).kindU.S1.intval, (*a).kindU.S1.intval);
			result = b;
		}
		goto LA7;
		LA9: ;
		{
			result = buildcall_335401(opadd_335242, a, b);
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		Tnode214790* b;
		if (!((*b_335501).kind >= ((NU8) 16) && (*b_335501).kind <= ((NU8) 18))) goto LA13;
		b = copynode_218542(b_335501);
		(*b).kindU.S2.floatval = -((*b).kindU.S2.floatval);
		result = buildcall_335401(opadd_335242, a, b);
	}
	goto LA1;
	LA13: ;
	{
		result = res;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode214790*, HEX7CHEX2BHEX7C_335410)(Tnode214790* a, Tnode214790* b) {
	Tnode214790* result;
	result = 0;
	result = copynode_218542(a);
	{
		if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA3;
		(*result).kindU.S1.intval = HEX7CHEX2BHEX7C_274007((*a).kindU.S1.intval, (*b).kindU.S1.intval);
	}
	goto LA1;
	LA3: ;
	{
		(*result).kindU.S2.floatval = ((NF)((*a).kindU.S2.floatval) + (NF)((*b).kindU.S2.floatval));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode214790*, HEX7CHEX2AHEX7C_335454)(Tnode214790* a, Tnode214790* b) {
	Tnode214790* result;
	result = 0;
	result = copynode_218542(a);
	{
		if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA3;
		(*result).kindU.S1.intval = HEX7CHEX2AHEX7C_274031((*a).kindU.S1.intval, (*b).kindU.S1.intval);
	}
	goto LA1;
	LA3: ;
	{
		(*result).kindU.S2.floatval = ((NF)((*a).kindU.S2.floatval) * (NF)((*b).kindU.S2.floatval));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode214790*, zero_335549)(void) {
	Tnode214790* result;
	result = 0;
	result = newintnode_215660(((NU8) 6), IL64(0));
	return result;
}

N_NIMCALL(Tnode214790*, reassociation_335611)(Tnode214790* n) {
	Tnode214790* result;
	NU8 LOC1;
	result = 0;
	result = n;
	LOC1 = 0;
	LOC1 = getmagic_239323(result);
	switch (LOC1) {
	case ((NU8) 44):
	case ((NU8) 51):
	case ((NU8) 49):
	{
		{
			NIM_BOOL LOC5;
			NIM_BOOL LOC6;
			Tnode214790* LOC7;
			Tnode214790* LOC9;
			NU8 LOC10;
			Tnode214790* LOC12;
			Tnode214790* LOC13;
			Tnode214790* LOC16;
			Tnode214790* LOC17;
			Tnode214790* LOC18;
			Tnode214790* LOC19;
			Tnode214790* LOC20;
			Tnode214790* LOC21;
			LOC5 = 0;
			LOC6 = 0;
			LOC7 = 0;
			LOC7 = HEX5BHEX5D_215238(result, ((NI) 2));
			LOC6 = isvalue_335080(LOC7);
			if (!(LOC6)) goto LA8;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC10 = 0;
			LOC10 = getmagic_239323(LOC9);
			LOC6 = (LOC10 == ((NU8) 44) || LOC10 == ((NU8) 51) || LOC10 == ((NU8) 49));
			LA8: ;
			LOC5 = LOC6;
			if (!(LOC5)) goto LA11;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_215238(LOC12, ((NI) 2));
			LOC5 = isvalue_335080(LOC13);
			LA11: ;
			if (!LOC5) goto LA14;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_215238(LOC16, ((NI) 1));
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC19 = 0;
			LOC19 = HEX5BHEX5D_215238(LOC18, ((NI) 2));
			LOC20 = 0;
			LOC20 = HEX5BHEX5D_215238(result, ((NI) 2));
			LOC21 = 0;
			LOC21 = HEX7CHEX2BHEX7C_335410(LOC19, LOC20);
			result = buildcall_335401(opadd_335242, LOC17, LOC21);
			{
				Tnode214790* LOC24;
				LOC24 = 0;
				LOC24 = HEX5BHEX5D_215238(result, ((NI) 2));
				if (!((*LOC24).kindU.S1.intval == IL64(0))) goto LA25;
				result = HEX5BHEX5D_215238(result, ((NI) 1));
			}
			LA25: ;
		}
		LA14: ;
	}
	break;
	case ((NU8) 46):
	case ((NU8) 53):
	{
		{
			NIM_BOOL LOC30;
			NIM_BOOL LOC31;
			Tnode214790* LOC32;
			Tnode214790* LOC34;
			NU8 LOC35;
			Tnode214790* LOC37;
			Tnode214790* LOC38;
			Tnode214790* LOC41;
			Tnode214790* LOC42;
			Tnode214790* LOC43;
			Tnode214790* LOC44;
			Tnode214790* LOC45;
			Tnode214790* LOC46;
			LOC30 = 0;
			LOC31 = 0;
			LOC32 = 0;
			LOC32 = HEX5BHEX5D_215238(result, ((NI) 2));
			LOC31 = isvalue_335080(LOC32);
			if (!(LOC31)) goto LA33;
			LOC34 = 0;
			LOC34 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC35 = 0;
			LOC35 = getmagic_239323(LOC34);
			LOC31 = (LOC35 == ((NU8) 46) || LOC35 == ((NU8) 53));
			LA33: ;
			LOC30 = LOC31;
			if (!(LOC30)) goto LA36;
			LOC37 = 0;
			LOC37 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC38 = 0;
			LOC38 = HEX5BHEX5D_215238(LOC37, ((NI) 2));
			LOC30 = isvalue_335080(LOC38);
			LA36: ;
			if (!LOC30) goto LA39;
			LOC41 = 0;
			LOC41 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC42 = 0;
			LOC42 = HEX5BHEX5D_215238(LOC41, ((NI) 1));
			LOC43 = 0;
			LOC43 = HEX5BHEX5D_215238(result, ((NI) 1));
			LOC44 = 0;
			LOC44 = HEX5BHEX5D_215238(LOC43, ((NI) 2));
			LOC45 = 0;
			LOC45 = HEX5BHEX5D_215238(result, ((NI) 2));
			LOC46 = 0;
			LOC46 = HEX7CHEX2AHEX7C_335454(LOC44, LOC45);
			result = buildcall_335401(opmul_335244, LOC42, LOC46);
			{
				Tnode214790* LOC49;
				LOC49 = 0;
				LOC49 = HEX5BHEX5D_215238(result, ((NI) 2));
				if (!((*LOC49).kindU.S1.intval == IL64(1))) goto LA50;
				result = HEX5BHEX5D_215238(result, ((NI) 1));
			}
			goto LA47;
			LA50: ;
			{
				Tnode214790* LOC53;
				LOC53 = 0;
				LOC53 = HEX5BHEX5D_215238(result, ((NI) 2));
				if (!((*LOC53).kindU.S1.intval == IL64(0))) goto LA54;
				result = zero_335549();
			}
			goto LA47;
			LA54: ;
			LA47: ;
		}
		LA39: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode214790*, HEX7CHEX2DHEX7C_335432)(Tnode214790* a, Tnode214790* b) {
	Tnode214790* result;
	result = 0;
	result = copynode_218542(a);
	{
		if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA3;
		(*result).kindU.S1.intval = HEX7CHEX2DHEX7C_274012((*a).kindU.S1.intval, (*b).kindU.S1.intval);
	}
	goto LA1;
	LA3: ;
	{
		(*result).kindU.S2.floatval = ((NF)((*a).kindU.S2.floatval) - (NF)((*b).kindU.S2.floatval));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode214790*, canon_335675)(Tnode214790* n) {
	Tnode214790* result;
	NU8 LOC19;
	NU8 LOC51;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = safelen_215081(n);
		if (!(((NI) 1) <= LOC3)) goto LA4;
		result = shallowcopy_218611(n);
		{
			NI i_335698;
			NI HEX3Atmp_335969;
			NI LOC7;
			NI res_335972;
			i_335698 = 0;
			HEX3Atmp_335969 = 0;
			LOC7 = 0;
			LOC7 = len_215059(n);
			HEX3Atmp_335969 = (LOC7 - 1);
			res_335972 = ((NI) 0);
			{
				while (1) {
					if (!(res_335972 <= HEX3Atmp_335969)) goto LA9;
					i_335698 = res_335972;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_335698]), canon_335675((*n).kindU.S6.sons->data[i_335698]));
					res_335972 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC11;
		NIM_BOOL LOC12;
		NU8 LOC15;
		LOC11 = 0;
		LOC12 = 0;
		LOC12 = ((*n).kind == ((NU8) 3));
		if (!(LOC12)) goto LA13;
		LOC12 = ((*(*n).kindU.S4.sym).kind == ((NU8) 9));
		LA13: ;
		LOC11 = LOC12;
		if (!(LOC11)) goto LA14;
		LOC15 = 0;
		LOC15 = getmagic_239323((*(*n).kindU.S4.sym).ast);
		LOC11 = ((TMP4276[(NU)(LOC15)>>3] &(1U<<((NU)(LOC15)&7U)))!=0);
		LA14: ;
		if (!LOC11) goto LA16;
		result = copytree_218822((*(*n).kindU.S4.sym).ast);
	}
	goto LA1;
	LA16: ;
	{
		result = n;
	}
	LA1: ;
	LOC19 = 0;
	LOC19 = getmagic_239323(result);
	switch (LOC19) {
	case ((NU8) 69):
	case ((NU8) 44):
	case ((NU8) 46):
	case ((NU8) 60):
	case ((NU8) 61):
	case ((NU8) 72):
	case ((NU8) 79):
	case ((NU8) 82):
	case ((NU8) 85):
	case ((NU8) 88):
	case ((NU8) 94):
	case ((NU8) 89):
	case ((NU8) 127):
	case ((NU8) 130):
	case ((NU8) 92):
	case ((NU8) 51):
	case ((NU8) 49):
	case ((NU8) 53):
	case ((NU8) 62):
	case ((NU8) 63):
	{
		{
			NIM_BOOL LOC23;
			NIM_BOOL LOC25;
			LOC23 = 0;
			LOC23 = isvalue_335080((*result).kindU.S6.sons->data[((NI) 1)]);
			if (!(LOC23)) goto LA24;
			LOC25 = 0;
			LOC25 = isvalue_335080((*result).kindU.S6.sons->data[((NI) 2)]);
			LOC23 = !(LOC25);
			LA24: ;
			if (!LOC23) goto LA26;
			result = swapargs_335247(result, (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		}
		LA26: ;
	}
	break;
	case ((NU8) 8):
	{
		Tnode214790* LOC29;
		Tnode214790* LOC30;
		Tnode214790* LOC31;
		LOC29 = 0;
		LOC29 = HEX5BHEX5D_215238(result, ((NI) 1));
		LOC30 = 0;
		LOC30 = buildcall_335394(oplen_335246, LOC29);
		LOC31 = 0;
		LOC31 = minusone_335555();
		result = buildcall_335401(opadd_335242, LOC30, LOC31);
	}
	break;
	case ((NU8) 25):
	{
		Tnode214790* LOC33;
		Tnode214790* LOC34;
		LOC33 = 0;
		LOC33 = HEX5BHEX5D_215238(result, ((NI) 1));
		LOC34 = 0;
		LOC34 = minusone_335555();
		result = buildcall_335401(opadd_335242, LOC33, LOC34);
	}
	break;
	case ((NU8) 45):
	case ((NU8) 52):
	case ((NU8) 50):
	{
		Tnode214790* LOC36;
		Tnode214790* LOC37;
		LOC36 = 0;
		LOC36 = HEX5BHEX5D_215238(result, ((NI) 1));
		LOC37 = 0;
		LOC37 = HEX5BHEX5D_215238(result, ((NI) 2));
		result = negate_335498(LOC36, LOC37, result);
	}
	break;
	case ((NU8) 32):
	case ((NU8) 33):
	case ((NU8) 34):
	case ((NU8) 35):
	case ((NU8) 36):
	case ((NU8) 37):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_216234(oplen_335246));
	}
	break;
	case ((NU8) 71):
	case ((NU8) 74):
	case ((NU8) 76):
	case ((NU8) 78):
	case ((NU8) 81):
	case ((NU8) 84):
	case ((NU8) 87):
	case ((NU8) 91):
	case ((NU8) 129):
	{
		Tnode214790* y;
		Tnode214790* LOC40;
		Tnode214790* p;
		Tnode214790* minus;
		Tnode214790* LOC48;
		Tnode214790* LOC49;
		LOC40 = 0;
		LOC40 = HEX5BHEX5D_215238(n, ((NI) 2));
		y = canon_335675(LOC40);
		p = pred_335647(y);
		{
			if (!!((p == y))) goto LA43;
			minus = p;
		}
		goto LA41;
		LA43: ;
		{
			Tnode214790* LOC46;
			Tnode214790* LOC47;
			LOC46 = 0;
			LOC46 = minusone_335555();
			LOC47 = 0;
			LOC47 = buildcall_335401(opadd_335242, y, LOC46);
			minus = canon_335675(LOC47);
		}
		LA41: ;
		LOC48 = 0;
		LOC48 = HEX5BHEX5D_215238(n, ((NI) 1));
		LOC49 = 0;
		LOC49 = canon_335675(LOC48);
		result = buildcall_335401(ople_335236, LOC49, minus);
	}
	break;
	default:
	{
	}
	break;
	}
	result = skipconv_249082(result);
	result = reassociation_335611(result);
	LOC51 = 0;
	LOC51 = getmagic_239323(result);
	switch (LOC51) {
	case ((NU8) 70):
	case ((NU8) 73):
	case ((NU8) 75):
	case ((NU8) 77):
	case ((NU8) 80):
	case ((NU8) 83):
	case ((NU8) 86):
	case ((NU8) 90):
	case ((NU8) 128):
	{
		Tnode214790* x;
		Tnode214790* y;
		x = HEX5BHEX5D_215238(result, ((NI) 1));
		y = HEX5BHEX5D_215238(result, ((NI) 2));
		{
			NIM_BOOL LOC55;
			NIM_BOOL LOC56;
			NIM_BOOL LOC57;
			NI LOC59;
			Tnode214790* LOC61;
			Tnode214790* LOC63;
			NU8 LOC66;
			LOC55 = 0;
			LOC56 = 0;
			LOC57 = 0;
			LOC57 = ((*x).kind == ((NU8) 27) || (*x).kind == ((NU8) 29) || (*x).kind == ((NU8) 30) || (*x).kind == ((NU8) 31) || (*x).kind == ((NU8) 26) || (*x).kind == ((NU8) 28) || (*x).kind == ((NU8) 32));
			if (!(LOC57)) goto LA58;
			LOC59 = 0;
			LOC59 = len_215059(x);
			LOC57 = (LOC59 == ((NI) 3));
			LA58: ;
			LOC56 = LOC57;
			if (!(LOC56)) goto LA60;
			LOC61 = 0;
			LOC61 = HEX5BHEX5D_215238(x, ((NI) 2));
			LOC56 = isvalue_335080(LOC61);
			LA60: ;
			LOC55 = LOC56;
			if (!(LOC55)) goto LA62;
			LOC63 = 0;
			LOC63 = HEX5BHEX5D_215238(x, ((NI) 1));
			LOC55 = isletlocation_335200(LOC63, NIM_TRUE);
			LA62: ;
			if (!LOC55) goto LA64;
			LOC66 = 0;
			LOC66 = getmagic_239323(x);
			switch (LOC66) {
			case ((NU8) 45):
			case ((NU8) 52):
			case ((NU8) 50):
			{
				Tnode214790* LOC68;
				Tnode214790* LOC69;
				Tnode214790* LOC70;
				Tnode214790* LOC71;
				Tnode214790* LOC72;
				LOC68 = 0;
				LOC68 = HEX5BHEX5D_215238(result, ((NI) 0));
				LOC69 = 0;
				LOC69 = HEX5BHEX5D_215238(x, ((NI) 1));
				LOC70 = 0;
				LOC70 = HEX5BHEX5D_215238(x, ((NI) 2));
				LOC71 = 0;
				LOC71 = buildcall_335401(opadd_335242, y, LOC70);
				LOC72 = 0;
				LOC72 = reassociation_335611(LOC71);
				result = buildcall_335401((*LOC68).kindU.S4.sym, LOC69, LOC72);
			}
			break;
			case ((NU8) 44):
			case ((NU8) 51):
			case ((NU8) 49):
			{
				Tnode214790* plus;
				Tnode214790* LOC74;
				Tnode214790* LOC75;
				LOC74 = 0;
				LOC74 = HEX5BHEX5D_215238(x, ((NI) 2));
				LOC75 = 0;
				LOC75 = negate_335498(y, LOC74, NIM_NIL);
				plus = reassociation_335611(LOC75);
				{
					Tnode214790* LOC80;
					Tnode214790* LOC81;
					if (!!((plus == NIM_NIL))) goto LA78;
					LOC80 = 0;
					LOC80 = HEX5BHEX5D_215238(result, ((NI) 0));
					LOC81 = 0;
					LOC81 = HEX5BHEX5D_215238(x, ((NI) 1));
					result = buildcall_335401((*LOC80).kindU.S4.sym, LOC81, plus);
				}
				LA78: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA53;
		LA64: ;
		{
			NIM_BOOL LOC84;
			NIM_BOOL LOC85;
			NIM_BOOL LOC86;
			NI LOC88;
			Tnode214790* LOC90;
			Tnode214790* LOC92;
			NU8 LOC95;
			LOC84 = 0;
			LOC85 = 0;
			LOC86 = 0;
			LOC86 = ((*y).kind == ((NU8) 27) || (*y).kind == ((NU8) 29) || (*y).kind == ((NU8) 30) || (*y).kind == ((NU8) 31) || (*y).kind == ((NU8) 26) || (*y).kind == ((NU8) 28) || (*y).kind == ((NU8) 32));
			if (!(LOC86)) goto LA87;
			LOC88 = 0;
			LOC88 = len_215059(y);
			LOC86 = (LOC88 == ((NI) 3));
			LA87: ;
			LOC85 = LOC86;
			if (!(LOC85)) goto LA89;
			LOC90 = 0;
			LOC90 = HEX5BHEX5D_215238(y, ((NI) 2));
			LOC85 = isvalue_335080(LOC90);
			LA89: ;
			LOC84 = LOC85;
			if (!(LOC84)) goto LA91;
			LOC92 = 0;
			LOC92 = HEX5BHEX5D_215238(y, ((NI) 1));
			LOC84 = isletlocation_335200(LOC92, NIM_TRUE);
			LA91: ;
			if (!LOC84) goto LA93;
			LOC95 = 0;
			LOC95 = getmagic_239323(y);
			switch (LOC95) {
			case ((NU8) 45):
			case ((NU8) 52):
			case ((NU8) 50):
			{
				Tnode214790* LOC97;
				Tnode214790* LOC98;
				Tnode214790* LOC99;
				Tnode214790* LOC100;
				Tnode214790* LOC101;
				LOC97 = 0;
				LOC97 = HEX5BHEX5D_215238(result, ((NI) 0));
				LOC98 = 0;
				LOC98 = HEX5BHEX5D_215238(y, ((NI) 1));
				LOC99 = 0;
				LOC99 = HEX5BHEX5D_215238(y, ((NI) 2));
				LOC100 = 0;
				LOC100 = buildcall_335401(opadd_335242, x, LOC99);
				LOC101 = 0;
				LOC101 = reassociation_335611(LOC100);
				result = buildcall_335401((*LOC97).kindU.S4.sym, LOC98, LOC101);
			}
			break;
			case ((NU8) 44):
			case ((NU8) 51):
			case ((NU8) 49):
			{
				Tnode214790* plus;
				Tnode214790* LOC103;
				Tnode214790* LOC104;
				LOC103 = 0;
				LOC103 = HEX5BHEX5D_215238(y, ((NI) 2));
				LOC104 = 0;
				LOC104 = negate_335498(x, LOC103, NIM_NIL);
				plus = reassociation_335611(LOC104);
				{
					NIM_BOOL LOC107;
					NIM_BOOL LOC109;
					Tnode214790* LOC112;
					Tnode214790* LOC113;
					LOC107 = 0;
					LOC107 = !((plus == NIM_NIL));
					if (!(LOC107)) goto LA108;
					LOC109 = 0;
					LOC109 = isletlocation_335200(x, NIM_TRUE);
					LOC107 = !(LOC109);
					LA108: ;
					if (!LOC107) goto LA110;
					LOC112 = 0;
					LOC112 = HEX5BHEX5D_215238(result, ((NI) 0));
					LOC113 = 0;
					LOC113 = HEX5BHEX5D_215238(y, ((NI) 1));
					result = buildcall_335401((*LOC112).kindU.S4.sym, plus, LOC113);
				}
				LA110: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA53;
		LA93: ;
		{
			NIM_BOOL LOC116;
			NIM_BOOL LOC117;
			NU8 LOC119;
			Tnode214790* LOC121;
			Tnode214790* LOC124;
			LOC116 = 0;
			LOC117 = 0;
			LOC117 = isvalue_335080(x);
			if (!(LOC117)) goto LA118;
			LOC119 = 0;
			LOC119 = getmagic_239323(y);
			LOC117 = (LOC119 == ((NU8) 44) || LOC119 == ((NU8) 51) || LOC119 == ((NU8) 49));
			LA118: ;
			LOC116 = LOC117;
			if (!(LOC116)) goto LA120;
			LOC121 = 0;
			LOC121 = HEX5BHEX5D_215238(y, ((NI) 2));
			LOC116 = isvalue_335080(LOC121);
			LA120: ;
			if (!LOC116) goto LA122;
			LOC124 = 0;
			LOC124 = HEX5BHEX5D_215238(y, ((NI) 2));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), HEX7CHEX2DHEX7C_335432(x, LOC124));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), HEX5BHEX5D_215238(y, ((NI) 1)));
		}
		goto LA53;
		LA122: ;
		{
			NIM_BOOL LOC126;
			NIM_BOOL LOC127;
			NU8 LOC129;
			Tnode214790* LOC131;
			Tnode214790* LOC134;
			LOC126 = 0;
			LOC127 = 0;
			LOC127 = isvalue_335080(x);
			if (!(LOC127)) goto LA128;
			LOC129 = 0;
			LOC129 = getmagic_239323(y);
			LOC127 = (LOC129 == ((NU8) 45) || LOC129 == ((NU8) 52) || LOC129 == ((NU8) 50));
			LA128: ;
			LOC126 = LOC127;
			if (!(LOC126)) goto LA130;
			LOC131 = 0;
			LOC131 = HEX5BHEX5D_215238(y, ((NI) 2));
			LOC126 = isvalue_335080(LOC131);
			LA130: ;
			if (!LOC126) goto LA132;
			LOC134 = 0;
			LOC134 = HEX5BHEX5D_215238(y, ((NI) 2));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), HEX7CHEX2BHEX7C_335410(x, LOC134));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), HEX5BHEX5D_215238(y, ((NI) 1)));
		}
		goto LA53;
		LA132: ;
		LA53: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(void, addfactle_338402)(Tnodeseq214784** m, Tnode214790* a, Tnode214790* b) {
	Tnode214790* LOC1;
	Tnode214790* LOC2;
	LOC1 = 0;
	LOC1 = buildcall_335401(ople_335236, a, b);
	LOC2 = 0;
	LOC2 = canon_335675(LOC1);
	(*m) = (Tnodeseq214784*) incrSeqV2(&((*m))->Sup, sizeof(Tnode214790*));
	asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len]), LOC2);
	++(*m)->Sup.len;
}

N_NIMCALL(Tnode214790*, one_335552)(void) {
	Tnode214790* result;
	result = 0;
	result = newintnode_215660(((NU8) 6), IL64(1));
	return result;
}

N_NIMCALL(Tnode214790*, HEX7CdivHEX7C_335476)(Tnode214790* a, Tnode214790* b) {
	Tnode214790* result;
	result = 0;
	result = copynode_218542(a);
	{
		if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA3;
		(*result).kindU.S1.intval = (NI64)((*a).kindU.S1.intval / (*b).kindU.S1.intval);
	}
	goto LA1;
	LA3: ;
	{
		(*result).kindU.S2.floatval = ((NF)((*a).kindU.S2.floatval) / (NF)((*b).kindU.S2.floatval));
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isminusone_337141)(Tnode214790* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*n).kind >= ((NU8) 5) && (*n).kind <= ((NU8) 15));
	if (!(LOC1)) goto LA2;
	LOC1 = ((*n).kindU.S1.intval == IL64(-1));
	LA2: ;
	result = LOC1;
	return result;
}
N_NIMCALL(void, TMP4278)(void* p, NI op) {
	Treplacements337745* a;
	NI LOC1;
	a = (Treplacements337745*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].Field0, op);
	nimGCvisit((void*)a->data[LOC1].Field1, op);
	}
}

N_NIMCALL(Tnode214790*, replacesubtree_337749)(Tnode214790* n, Tnode214790* x, Tnode214790* by) {
	Tnode214790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametree_336245(n, x);
		if (!LOC3) goto LA4;
		result = by;
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = hassubtree_336385(n, x);
		if (!LOC7) goto LA8;
		result = shallowcopy_218611(n);
		{
			NI i_337764;
			NI HEX3Atmp_337768;
			NI LOC11;
			NI res_337771;
			i_337764 = 0;
			HEX3Atmp_337768 = 0;
			LOC11 = 0;
			LOC11 = safelen_215081(n);
			HEX3Atmp_337768 = (NI)(LOC11 - ((NI) 1));
			res_337771 = ((NI) 0);
			{
				while (1) {
					if (!(res_337771 <= HEX3Atmp_337768)) goto LA13;
					i_337764 = res_337771;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_337764]), replacesubtree_337749((*n).kindU.S6.sons->data[i_337764], x, by));
					res_337771 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	goto LA1;
	LA8: ;
	{
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode214790*, applyreplacements_337775)(Tnode214790* n, Treplacements337745* rep) {
	Tnode214790* result;
	result = 0;
	result = n;
	{
		TY337746 x_338002;
		NI i_338007;
		NI L_338009;
		memset((void*)(&x_338002), 0, sizeof(x_338002));
		i_338007 = ((NI) 0);
		L_338009 = (rep ? rep->Sup.len : 0);
		{
			while (1) {
				if (!(i_338007 < L_338009)) goto LA3;
				x_338002.Field0 = rep->data[i_338007].Field0;
				x_338002.Field1 = rep->data[i_338007].Field1;
				result = replacesubtree_337749(result, x_338002.Field0, x_338002.Field1);
				i_338007 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(NU8, pleviamodelrec_338010)(Tnodeseq214784** m, Tnode214790* a, Tnode214790* b) {
	NU8 result;
{	result = 0;
	{
		NI i_338026;
		NI HEX3Atmp_338202;
		NI res_338205;
		i_338026 = 0;
		HEX3Atmp_338202 = 0;
		HEX3Atmp_338202 = ((*m) ? ((*m)->Sup.len-1) : -1);
		res_338205 = ((NI) 0);
		{
			while (1) {
				Tnode214790* fact;
				if (!(res_338205 <= HEX3Atmp_338202)) goto LA3;
				i_338026 = res_338205;
				fact = (*m)->data[i_338026];
				{
					NIM_BOOL LOC6;
					NU8 LOC8;
					Tnode214790* x;
					Tnode214790* y;
					LOC6 = 0;
					LOC6 = !((fact == NIM_NIL));
					if (!(LOC6)) goto LA7;
					LOC8 = 0;
					LOC8 = getmagic_239323(fact);
					LOC6 = ((TMP4280[(NU)(LOC8)>>3] &(1U<<((NU)(LOC8)&7U)))!=0);
					LA7: ;
					if (!LOC6) goto LA9;
					asgnRefNoCycle((void**) (&(*m)->data[i_338026]), NIM_NIL);
					x = HEX5BHEX5D_215238(fact, ((NI) 1));
					y = HEX5BHEX5D_215238(fact, ((NI) 2));
					{
						NIM_BOOL LOC13;
						NIM_BOOL LOC14;
						NIM_BOOL LOC15;
						NU8 LOC17;
						NU8 LOC19;
						Tnode214790* LOC21;
						Tnode214790* LOC22;
						LOC13 = 0;
						LOC14 = 0;
						LOC15 = 0;
						LOC15 = sametree_336245(x, a);
						if (!(LOC15)) goto LA16;
						LOC17 = 0;
						LOC17 = getmagic_239323(y);
						LOC15 = (LOC17 == ((NU8) 44) || LOC17 == ((NU8) 51) || LOC17 == ((NU8) 49));
						LA16: ;
						LOC14 = LOC15;
						if (!(LOC14)) goto LA18;
						LOC19 = 0;
						LOC19 = getmagic_239323(b);
						LOC14 = (LOC19 == ((NU8) 44) || LOC19 == ((NU8) 51) || LOC19 == ((NU8) 49));
						LA18: ;
						LOC13 = LOC14;
						if (!(LOC13)) goto LA20;
						LOC21 = 0;
						LOC21 = HEX5BHEX5D_215238(y, ((NI) 1));
						LOC22 = 0;
						LOC22 = HEX5BHEX5D_215238(b, ((NI) 1));
						LOC13 = sametree_336245(LOC21, LOC22);
						LA20: ;
						if (!LOC13) goto LA23;
						{
							Tnode214790* LOC27;
							Tnode214790* LOC28;
							NU8 LOC29;
							LOC27 = 0;
							LOC27 = HEX5BHEX5D_215238(b, ((NI) 2));
							LOC28 = 0;
							LOC28 = HEX5BHEX5D_215238(y, ((NI) 2));
							LOC29 = 0;
							LOC29 = ple_337162((*m), LOC27, LOC28);
							if (!(LOC29 == ((NU8) 2))) goto LA30;
							result = ((NU8) 2);
							goto BeforeRet;
						}
						LA30: ;
					}
					LA23: ;
					{
						NU8 LOC34;
						LOC34 = 0;
						LOC34 = ple_337162((*m), a, x);
						if (!(LOC34 == ((NU8) 2))) goto LA35;
						{
							NU8 LOC39;
							LOC39 = 0;
							LOC39 = ple_337162((*m), y, b);
							if (!(LOC39 == ((NU8) 2))) goto LA40;
							result = ((NU8) 2);
							goto BeforeRet;
						}
						LA40: ;
					}
					LA35: ;
					result = impliesle_336729(fact, a, b);
					{
						if (!!((result == ((NU8) 0)))) goto LA44;
						goto BeforeRet;
					}
					LA44: ;
				}
				LA9: ;
				res_338205 += ((NI) 1);
			} LA3: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, pleviamodel_337157)(Tnodeseq214784* model, Tnode214790* aa, Tnode214790* bb) {
	NU8 result;
	Treplacements337745* replacements;
	Tnodeseq214784* m;
	Tnode214790* a;
	Tnode214790* b;
	result = 0;
	replacements = (Treplacements337745*) newSeq((&NTI337745), 0);
	{
		Tnode214790* fact_338240;
		NI i_338372;
		NI L_338374;
		fact_338240 = 0;
		i_338372 = ((NI) 0);
		L_338374 = (model ? model->Sup.len : 0);
		{
			while (1) {
				if (!(i_338372 < L_338374)) goto LA3;
				fact_338240 = model->data[i_338372];
				{
					NIM_BOOL LOC6;
					NU8 LOC8;
					Tnode214790* a;
					Tnode214790* b;
					LOC6 = 0;
					LOC6 = !((fact_338240 == NIM_NIL));
					if (!(LOC6)) goto LA7;
					LOC8 = 0;
					LOC8 = getmagic_239323(fact_338240);
					LOC6 = ((TMP4279[(NU)(LOC8)>>3] &(1U<<((NU)(LOC8)&7U)))!=0);
					LA7: ;
					if (!LOC6) goto LA9;
					a = HEX5BHEX5D_215238(fact_338240, ((NI) 1));
					b = HEX5BHEX5D_215238(fact_338240, ((NI) 2));
					{
						TY337746 LOC15;
						if (!((*a).kind == ((NU8) 3))) goto LA13;
						memset((void*)(&LOC15), 0, sizeof(LOC15));
						LOC15.Field0 = a;
						LOC15.Field1 = b;
						replacements = (Treplacements337745*) incrSeqV2(&(replacements)->Sup, sizeof(TY337746));
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len].Field0), LOC15.Field0);
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len].Field1), LOC15.Field1);
						++replacements->Sup.len;
					}
					goto LA11;
					LA13: ;
					{
						TY337746 LOC17;
						memset((void*)(&LOC17), 0, sizeof(LOC17));
						LOC17.Field0 = b;
						LOC17.Field1 = a;
						replacements = (Treplacements337745*) incrSeqV2(&(replacements)->Sup, sizeof(TY337746));
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len].Field0), LOC17.Field0);
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len].Field1), LOC17.Field1);
						++replacements->Sup.len;
					}
					LA11: ;
				}
				LA9: ;
				i_338372 += ((NI) 1);
			} LA3: ;
		}
	}
	m = 0;
	a = aa;
	b = bb;
	{
		if (!(((NI) 0) < (replacements ? replacements->Sup.len : 0))) goto LA20;
		m = (Tnodeseq214784*) newSeq((&NTI214784), 0);
		{
			Tnode214790* fact_338332;
			NI i_338379;
			NI L_338381;
			fact_338332 = 0;
			i_338379 = ((NI) 0);
			L_338381 = (model ? model->Sup.len : 0);
			{
				while (1) {
					if (!(i_338379 < L_338381)) goto LA24;
					fact_338332 = model->data[i_338379];
					{
						NIM_BOOL LOC27;
						NU8 LOC29;
						Tnode214790* LOC32;
						Tnode214790* LOC33;
						LOC27 = 0;
						LOC27 = !((fact_338332 == NIM_NIL));
						if (!(LOC27)) goto LA28;
						LOC29 = 0;
						LOC29 = getmagic_239323(fact_338332);
						LOC27 = !(((TMP4279[(NU)(LOC29)>>3] &(1U<<((NU)(LOC29)&7U)))!=0));
						LA28: ;
						if (!LOC27) goto LA30;
						LOC32 = 0;
						LOC32 = applyreplacements_337775(fact_338332, replacements);
						LOC33 = 0;
						LOC33 = canon_335675(LOC32);
						m = (Tnodeseq214784*) incrSeqV2(&(m)->Sup, sizeof(Tnode214790*));
						asgnRefNoCycle((void**) (&m->data[m->Sup.len]), LOC33);
						++m->Sup.len;
					}
					LA30: ;
					i_338379 += ((NI) 1);
				} LA24: ;
			}
		}
		a = applyreplacements_337775(aa, replacements);
		b = applyreplacements_337775(bb, replacements);
	}
	goto LA18;
	LA20: ;
	{
		genericSeqAssign((&m), model, (&NTI214784));
	}
	LA18: ;
	result = pleviamodelrec_338010((&m), a, b);
	return result;
}

N_NIMCALL(NU8, ple_337162)(Tnodeseq214784* m, Tnode214790* a, Tnode214790* b) {
	NU8 result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isvalue_335080(a);
		if (!(LOC3)) goto LA4;
		LOC3 = isvalue_335080(b);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = levalue_221233(a, b);
			if (!LOC9) goto LA10;
			result = ((NU8) 2);
		}
		goto LA7;
		LA10: ;
		{
			result = ((NU8) 1);
		}
		LA7: ;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC15;
		NIM_BOOL LOC16;
		LOC15 = 0;
		LOC16 = 0;
		LOC16 = isvalue_335080(b);
		if (!(LOC16)) goto LA17;
		LOC16 = !(((*a).typ == NIM_NIL));
		LA17: ;
		LOC15 = LOC16;
		if (!(LOC15)) goto LA18;
		LOC15 = isordinaltype_240057((*a).typ);
		LA18: ;
		if (!LOC15) goto LA19;
		{
			NI64 LOC23;
			LOC23 = 0;
			LOC23 = lastord_240004((*a).typ);
			if (!(LOC23 <= (*b).kindU.S1.intval)) goto LA24;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA24: ;
	}
	LA19: ;
	{
		NIM_BOOL LOC28;
		NIM_BOOL LOC29;
		LOC28 = 0;
		LOC29 = 0;
		LOC29 = isvalue_335080(a);
		if (!(LOC29)) goto LA30;
		LOC29 = !(((*b).typ == NIM_NIL));
		LA30: ;
		LOC28 = LOC29;
		if (!(LOC28)) goto LA31;
		LOC28 = isordinaltype_240057((*b).typ);
		LA31: ;
		if (!LOC28) goto LA32;
		{
			NI64 LOC36;
			LOC36 = 0;
			LOC36 = firstord_240001((*b).typ);
			if (!(LOC36 <= (*a).kindU.S1.intval)) goto LA37;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA37: ;
	}
	LA32: ;
	{
		NIM_BOOL LOC41;
		LOC41 = 0;
		LOC41 = sametree_336245(a, b);
		if (!LOC41) goto LA42;
		result = ((NU8) 2);
		goto BeforeRet;
	}
	LA42: ;
	{
		NIM_BOOL LOC46;
		NU8 LOC47;
		LOC46 = 0;
		LOC47 = 0;
		LOC47 = getmagic_239323(b);
		LOC46 = (LOC47 == ((NU8) 32) || LOC47 == ((NU8) 33) || LOC47 == ((NU8) 34) || LOC47 == ((NU8) 35) || LOC47 == ((NU8) 36) || LOC47 == ((NU8) 37));
		if (!(LOC46)) goto LA48;
		LOC46 = isvalue_335080(a);
		LA48: ;
		if (!LOC46) goto LA49;
		{
			if (!((*a).kindU.S1.intval <= IL64(0))) goto LA53;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA53: ;
	}
	LA49: ;
	{
		NIM_BOOL LOC57;
		NIM_BOOL LOC58;
		NU8 LOC59;
		Tnode214790* LOC61;
		Tnode214790* LOC62;
		NU8 LOC63;
		Tnode214790* LOC65;
		NU8 LOC66;
		LOC57 = 0;
		LOC58 = 0;
		LOC59 = 0;
		LOC59 = getmagic_239323(b);
		LOC58 = (LOC59 == ((NU8) 44) || LOC59 == ((NU8) 51) || LOC59 == ((NU8) 49));
		if (!(LOC58)) goto LA60;
		LOC61 = 0;
		LOC61 = zero_335549();
		LOC62 = 0;
		LOC62 = HEX5BHEX5D_215238(b, ((NI) 2));
		LOC63 = 0;
		LOC63 = ple_337162(m, LOC61, LOC62);
		LOC58 = (LOC63 == ((NU8) 2));
		LA60: ;
		LOC57 = LOC58;
		if (!(LOC57)) goto LA64;
		LOC65 = 0;
		LOC65 = HEX5BHEX5D_215238(b, ((NI) 1));
		LOC66 = 0;
		LOC66 = ple_337162(m, a, LOC65);
		LOC57 = (LOC66 == ((NU8) 2));
		LA64: ;
		if (!LOC57) goto LA67;
		result = ((NU8) 2);
		goto BeforeRet;
	}
	LA67: ;
	{
		NIM_BOOL LOC71;
		NIM_BOOL LOC72;
		NU8 LOC73;
		Tnode214790* LOC75;
		Tnode214790* LOC76;
		NU8 LOC77;
		Tnode214790* LOC79;
		NU8 LOC80;
		LOC71 = 0;
		LOC72 = 0;
		LOC73 = 0;
		LOC73 = getmagic_239323(a);
		LOC72 = (LOC73 == ((NU8) 44) || LOC73 == ((NU8) 51) || LOC73 == ((NU8) 49));
		if (!(LOC72)) goto LA74;
		LOC75 = 0;
		LOC75 = HEX5BHEX5D_215238(a, ((NI) 2));
		LOC76 = 0;
		LOC76 = zero_335549();
		LOC77 = 0;
		LOC77 = ple_337162(m, LOC75, LOC76);
		LOC72 = (LOC77 == ((NU8) 2));
		LA74: ;
		LOC71 = LOC72;
		if (!(LOC71)) goto LA78;
		LOC79 = 0;
		LOC79 = HEX5BHEX5D_215238(a, ((NI) 1));
		LOC80 = 0;
		LOC80 = ple_337162(m, LOC79, b);
		LOC71 = (LOC80 == ((NU8) 2));
		LA78: ;
		if (!LOC71) goto LA81;
		result = ((NU8) 2);
		goto BeforeRet;
	}
	LA81: ;
	{
		NU8 LOC85;
		LOC85 = 0;
		LOC85 = getmagic_239323(b);
		if (!(LOC85 == ((NU8) 46) || LOC85 == ((NU8) 53))) goto LA86;
		{
			NIM_BOOL LOC90;
			NIM_BOOL LOC91;
			Tnode214790* LOC92;
			NU8 LOC93;
			Tnode214790* LOC95;
			Tnode214790* LOC96;
			NU8 LOC97;
			Tnode214790* LOC99;
			Tnode214790* LOC100;
			NU8 LOC101;
			LOC90 = 0;
			LOC91 = 0;
			LOC92 = 0;
			LOC92 = HEX5BHEX5D_215238(b, ((NI) 1));
			LOC93 = 0;
			LOC93 = ple_337162(m, a, LOC92);
			LOC91 = (LOC93 == ((NU8) 2));
			if (!(LOC91)) goto LA94;
			LOC95 = 0;
			LOC95 = one_335552();
			LOC96 = 0;
			LOC96 = HEX5BHEX5D_215238(b, ((NI) 2));
			LOC97 = 0;
			LOC97 = ple_337162(m, LOC95, LOC96);
			LOC91 = (LOC97 == ((NU8) 2));
			LA94: ;
			LOC90 = LOC91;
			if (!(LOC90)) goto LA98;
			LOC99 = 0;
			LOC99 = zero_335549();
			LOC100 = 0;
			LOC100 = HEX5BHEX5D_215238(b, ((NI) 1));
			LOC101 = 0;
			LOC101 = ple_337162(m, LOC99, LOC100);
			LOC90 = (LOC101 == ((NU8) 2));
			LA98: ;
			if (!LOC90) goto LA102;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA102: ;
	}
	LA86: ;
	{
		NIM_BOOL LOC106;
		NIM_BOOL LOC107;
		NIM_BOOL LOC108;
		NU8 LOC109;
		Tnode214790* LOC111;
		Tnode214790* LOC113;
		NU8 LOC114;
		Tnode214790* LOC116;
		Tnode214790* LOC117;
		LOC106 = 0;
		LOC107 = 0;
		LOC108 = 0;
		LOC109 = 0;
		LOC109 = getmagic_239323(a);
		LOC108 = (LOC109 == ((NU8) 46) || LOC109 == ((NU8) 53));
		if (!(LOC108)) goto LA110;
		LOC111 = 0;
		LOC111 = HEX5BHEX5D_215238(a, ((NI) 2));
		LOC108 = isvalue_335080(LOC111);
		LA110: ;
		LOC107 = LOC108;
		if (!(LOC107)) goto LA112;
		LOC113 = 0;
		LOC113 = HEX5BHEX5D_215238(a, ((NI) 1));
		LOC114 = 0;
		LOC114 = getmagic_239323(LOC113);
		LOC107 = (LOC114 == ((NU8) 47) || LOC114 == ((NU8) 54));
		LA112: ;
		LOC106 = LOC107;
		if (!(LOC106)) goto LA115;
		LOC116 = 0;
		LOC116 = HEX5BHEX5D_215238(a, ((NI) 1));
		LOC117 = 0;
		LOC117 = HEX5BHEX5D_215238(LOC116, ((NI) 2));
		LOC106 = isvalue_335080(LOC117);
		LA115: ;
		if (!LOC106) goto LA118;
		{
			Tnode214790* LOC122;
			Tnode214790* LOC123;
			Tnode214790* LOC124;
			Tnode214790* LOC125;
			Tnode214790* LOC126;
			Tnode214790* LOC127;
			Tnode214790* LOC128;
			NU8 LOC129;
			LOC122 = 0;
			LOC122 = HEX5BHEX5D_215238(a, ((NI) 1));
			LOC123 = 0;
			LOC123 = HEX5BHEX5D_215238(LOC122, ((NI) 1));
			LOC124 = 0;
			LOC124 = HEX5BHEX5D_215238(a, ((NI) 1));
			LOC125 = 0;
			LOC125 = HEX5BHEX5D_215238(LOC124, ((NI) 2));
			LOC126 = 0;
			LOC126 = HEX5BHEX5D_215238(a, ((NI) 2));
			LOC127 = 0;
			LOC127 = HEX7CdivHEX7C_335476(LOC125, LOC126);
			LOC128 = 0;
			LOC128 = buildcall_335401(opdiv_335245, LOC123, LOC127);
			LOC129 = 0;
			LOC129 = ple_337162(m, LOC128, b);
			if (!(LOC129 == ((NU8) 2))) goto LA130;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA130: ;
	}
	LA118: ;
	{
		NIM_BOOL LOC134;
		NIM_BOOL LOC135;
		NU8 LOC136;
		NIM_BOOL LOC138;
		Tnode214790* LOC139;
		NU8 LOC140;
		NIM_BOOL LOC142;
		Tnode214790* x;
		Tnode214790* LOC143;
		NIM_BOOL LOC145;
		Tnode214790* dc;
		Tnode214790* LOC146;
		Tnode214790* y;
		NIM_BOOL LOC149;
		NU8 LOC150;
		NIM_BOOL LOC152;
		Tnode214790* x2;
		Tnode214790* ec;
		LOC134 = 0;
		LOC135 = 0;
		LOC136 = 0;
		LOC136 = getmagic_239323(a);
		LOC135 = ((someadd_335017[(NU)(LOC136)>>3] &(1U<<((NU)(LOC136)&7U)))!=0);
		if (!(LOC135)) goto LA137;
		LOC138 = 0;
		LOC139 = 0;
		LOC139 = HEX5BHEX5D_215238(a, ((NI) 1));
		LOC140 = 0;
		LOC140 = getmagic_239323(LOC139);
		LOC138 = ((somemul_335021[(NU)(LOC140)>>3] &(1U<<((NU)(LOC140)&7U)))!=0);
		if (!(LOC138)) goto LA141;
		LOC142 = 0;
		LOC143 = 0;
		LOC143 = HEX5BHEX5D_215238(a, ((NI) 1));
		x = HEX5BHEX5D_215238(LOC143, ((NI) 1));
		LOC142 = NIM_TRUE;
		if (!(LOC142)) goto LA144;
		LOC145 = 0;
		LOC146 = 0;
		LOC146 = HEX5BHEX5D_215238(a, ((NI) 1));
		dc = HEX5BHEX5D_215238(LOC146, ((NI) 2));
		LOC145 = ((*dc).kind >= ((NU8) 5) && (*dc).kind <= ((NU8) 15));
		if (!(LOC145)) goto LA147;
		y = HEX5BHEX5D_215238(a, ((NI) 2));
		LOC145 = NIM_TRUE;
		LA147: ;
		LOC142 = LOC145;
		LA144: ;
		LOC138 = LOC142;
		LA141: ;
		LOC135 = LOC138;
		LA137: ;
		LOC134 = LOC135;
		if (!(LOC134)) goto LA148;
		LOC149 = 0;
		LOC150 = 0;
		LOC150 = getmagic_239323(b);
		LOC149 = ((somemul_335021[(NU)(LOC150)>>3] &(1U<<((NU)(LOC150)&7U)))!=0);
		if (!(LOC149)) goto LA151;
		LOC152 = 0;
		x2 = HEX5BHEX5D_215238(b, ((NI) 1));
		LOC152 = NIM_TRUE;
		if (!(LOC152)) goto LA153;
		ec = HEX5BHEX5D_215238(b, ((NI) 2));
		LOC152 = ((*ec).kind >= ((NU8) 5) && (*ec).kind <= ((NU8) 15));
		LA153: ;
		LOC149 = LOC152;
		LA151: ;
		LOC134 = LOC149;
		LA148: ;
		if (!LOC134) goto LA154;
		{
			NIM_BOOL LOC158;
			Tnode214790* ec1;
			Tnode214790* LOC161;
			LOC158 = 0;
			LOC158 = sametree_336245(x, x2);
			if (!LOC158) goto LA159;
			LOC161 = 0;
			LOC161 = minusone_335555();
			ec1 = buildcall_335401(opadd_335242, ec, LOC161);
			{
				NIM_BOOL LOC164;
				NIM_BOOL LOC165;
				NIM_BOOL LOC166;
				NIM_BOOL LOC167;
				Tnode214790* LOC168;
				NU8 LOC169;
				Tnode214790* LOC171;
				NU8 LOC172;
				Tnode214790* LOC174;
				NU8 LOC175;
				NU8 LOC177;
				NU8 LOC179;
				LOC164 = 0;
				LOC165 = 0;
				LOC166 = 0;
				LOC167 = 0;
				LOC168 = 0;
				LOC168 = newintnode_215660(((NU8) 6), IL64(1));
				LOC169 = 0;
				LOC169 = ple_337162(m, LOC168, x);
				LOC167 = (LOC169 == ((NU8) 2));
				if (!(LOC167)) goto LA170;
				LOC171 = 0;
				LOC171 = newintnode_215660(((NU8) 6), IL64(1));
				LOC172 = 0;
				LOC172 = ple_337162(m, LOC171, ec);
				LOC167 = (LOC172 == ((NU8) 2));
				LA170: ;
				LOC166 = LOC167;
				if (!(LOC166)) goto LA173;
				LOC174 = 0;
				LOC174 = newintnode_215660(((NU8) 6), IL64(1));
				LOC175 = 0;
				LOC175 = ple_337162(m, LOC174, dc);
				LOC166 = (LOC175 == ((NU8) 2));
				LA173: ;
				LOC165 = LOC166;
				if (!(LOC165)) goto LA176;
				LOC177 = 0;
				LOC177 = ple_337162(m, dc, ec1);
				LOC165 = (LOC177 == ((NU8) 2));
				LA176: ;
				LOC164 = LOC165;
				if (!(LOC164)) goto LA178;
				LOC179 = 0;
				LOC179 = ple_337162(m, y, x);
				LOC164 = (LOC179 == ((NU8) 2));
				LA178: ;
				if (!LOC164) goto LA180;
				result = ((NU8) 2);
				goto BeforeRet;
			}
			LA180: ;
		}
		LA159: ;
	}
	goto LA132;
	LA154: ;
	{
		NIM_BOOL LOC183;
		NIM_BOOL LOC184;
		NU8 LOC185;
		NIM_BOOL LOC187;
		Tnode214790* x;
		Tnode214790* dc;
		NIM_BOOL LOC190;
		NU8 LOC191;
		NIM_BOOL LOC193;
		Tnode214790* LOC194;
		NU8 LOC195;
		NIM_BOOL LOC197;
		Tnode214790* x2;
		Tnode214790* LOC198;
		NIM_BOOL LOC200;
		Tnode214790* ec;
		Tnode214790* LOC201;
		Tnode214790* y;
		LOC183 = 0;
		LOC184 = 0;
		LOC185 = 0;
		LOC185 = getmagic_239323(a);
		LOC184 = ((somemul_335021[(NU)(LOC185)>>3] &(1U<<((NU)(LOC185)&7U)))!=0);
		if (!(LOC184)) goto LA186;
		LOC187 = 0;
		x = HEX5BHEX5D_215238(a, ((NI) 1));
		LOC187 = NIM_TRUE;
		if (!(LOC187)) goto LA188;
		dc = HEX5BHEX5D_215238(a, ((NI) 2));
		LOC187 = ((*dc).kind >= ((NU8) 5) && (*dc).kind <= ((NU8) 15));
		LA188: ;
		LOC184 = LOC187;
		LA186: ;
		LOC183 = LOC184;
		if (!(LOC183)) goto LA189;
		LOC190 = 0;
		LOC191 = 0;
		LOC191 = getmagic_239323(b);
		LOC190 = ((someadd_335017[(NU)(LOC191)>>3] &(1U<<((NU)(LOC191)&7U)))!=0);
		if (!(LOC190)) goto LA192;
		LOC193 = 0;
		LOC194 = 0;
		LOC194 = HEX5BHEX5D_215238(b, ((NI) 1));
		LOC195 = 0;
		LOC195 = getmagic_239323(LOC194);
		LOC193 = ((somemul_335021[(NU)(LOC195)>>3] &(1U<<((NU)(LOC195)&7U)))!=0);
		if (!(LOC193)) goto LA196;
		LOC197 = 0;
		LOC198 = 0;
		LOC198 = HEX5BHEX5D_215238(b, ((NI) 1));
		x2 = HEX5BHEX5D_215238(LOC198, ((NI) 1));
		LOC197 = NIM_TRUE;
		if (!(LOC197)) goto LA199;
		LOC200 = 0;
		LOC201 = 0;
		LOC201 = HEX5BHEX5D_215238(b, ((NI) 1));
		ec = HEX5BHEX5D_215238(LOC201, ((NI) 2));
		LOC200 = ((*ec).kind >= ((NU8) 5) && (*ec).kind <= ((NU8) 15));
		if (!(LOC200)) goto LA202;
		y = HEX5BHEX5D_215238(b, ((NI) 2));
		LOC200 = NIM_TRUE;
		LA202: ;
		LOC197 = LOC200;
		LA199: ;
		LOC193 = LOC197;
		LA196: ;
		LOC190 = LOC193;
		LA192: ;
		LOC183 = LOC190;
		LA189: ;
		if (!LOC183) goto LA203;
		{
			NIM_BOOL LOC207;
			Tnode214790* ec1;
			Tnode214790* LOC210;
			LOC207 = 0;
			LOC207 = sametree_336245(x, x2);
			if (!LOC207) goto LA208;
			LOC210 = 0;
			LOC210 = minusone_335555();
			ec1 = buildcall_335401(opadd_335242, ec, LOC210);
			{
				NIM_BOOL LOC213;
				NIM_BOOL LOC214;
				NIM_BOOL LOC215;
				NIM_BOOL LOC216;
				Tnode214790* LOC217;
				NU8 LOC218;
				Tnode214790* LOC220;
				NU8 LOC221;
				Tnode214790* LOC223;
				NU8 LOC224;
				NU8 LOC226;
				Tnode214790* LOC228;
				NU8 LOC229;
				LOC213 = 0;
				LOC214 = 0;
				LOC215 = 0;
				LOC216 = 0;
				LOC217 = 0;
				LOC217 = newintnode_215660(((NU8) 6), IL64(1));
				LOC218 = 0;
				LOC218 = ple_337162(m, LOC217, x);
				LOC216 = (LOC218 == ((NU8) 2));
				if (!(LOC216)) goto LA219;
				LOC220 = 0;
				LOC220 = newintnode_215660(((NU8) 6), IL64(1));
				LOC221 = 0;
				LOC221 = ple_337162(m, LOC220, ec);
				LOC216 = (LOC221 == ((NU8) 2));
				LA219: ;
				LOC215 = LOC216;
				if (!(LOC215)) goto LA222;
				LOC223 = 0;
				LOC223 = newintnode_215660(((NU8) 6), IL64(1));
				LOC224 = 0;
				LOC224 = ple_337162(m, LOC223, dc);
				LOC215 = (LOC224 == ((NU8) 2));
				LA222: ;
				LOC214 = LOC215;
				if (!(LOC214)) goto LA225;
				LOC226 = 0;
				LOC226 = ple_337162(m, dc, ec1);
				LOC214 = (LOC226 == ((NU8) 2));
				LA225: ;
				LOC213 = LOC214;
				if (!(LOC213)) goto LA227;
				LOC228 = 0;
				LOC228 = zero_335549();
				LOC229 = 0;
				LOC229 = ple_337162(m, y, LOC228);
				LOC213 = (LOC229 == ((NU8) 2));
				LA227: ;
				if (!LOC213) goto LA230;
				result = ((NU8) 2);
				goto BeforeRet;
			}
			LA230: ;
		}
		LA208: ;
	}
	goto LA132;
	LA203: ;
	LA132: ;
	{
		NIM_BOOL LOC234;
		NU8 LOC235;
		NU8 LOC237;
		NU8 LOC238;
		LOC234 = 0;
		LOC235 = 0;
		LOC235 = getmagic_239323(a);
		LOC234 = (LOC235 >= ((NU8) 44) && LOC235 <= ((NU8) 46) || LOC235 >= ((NU8) 49) && LOC235 <= ((NU8) 53) || LOC235 >= ((NU8) 60) && LOC235 <= ((NU8) 63));
		if (!(LOC234)) goto LA236;
		LOC237 = 0;
		LOC237 = getmagic_239323(a);
		LOC238 = 0;
		LOC238 = getmagic_239323(b);
		LOC234 = (LOC237 == LOC238);
		LA236: ;
		if (!LOC234) goto LA239;
		{
			NIM_BOOL LOC243;
			Tnode214790* LOC244;
			Tnode214790* LOC245;
			Tnode214790* LOC247;
			Tnode214790* LOC248;
			NU8 LOC249;
			LOC243 = 0;
			LOC244 = 0;
			LOC244 = HEX5BHEX5D_215238(a, ((NI) 1));
			LOC245 = 0;
			LOC245 = HEX5BHEX5D_215238(b, ((NI) 1));
			LOC243 = sametree_336245(LOC244, LOC245);
			if (!(LOC243)) goto LA246;
			LOC247 = 0;
			LOC247 = HEX5BHEX5D_215238(a, ((NI) 2));
			LOC248 = 0;
			LOC248 = HEX5BHEX5D_215238(b, ((NI) 2));
			LOC249 = 0;
			LOC249 = ple_337162(m, LOC247, LOC248);
			LOC243 = (LOC249 == ((NU8) 2));
			LA246: ;
			if (!LOC243) goto LA250;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		goto LA241;
		LA250: ;
		{
			NIM_BOOL LOC253;
			Tnode214790* LOC254;
			Tnode214790* LOC255;
			Tnode214790* LOC257;
			Tnode214790* LOC258;
			NU8 LOC259;
			LOC253 = 0;
			LOC254 = 0;
			LOC254 = HEX5BHEX5D_215238(a, ((NI) 2));
			LOC255 = 0;
			LOC255 = HEX5BHEX5D_215238(b, ((NI) 2));
			LOC253 = sametree_336245(LOC254, LOC255);
			if (!(LOC253)) goto LA256;
			LOC257 = 0;
			LOC257 = HEX5BHEX5D_215238(a, ((NI) 1));
			LOC258 = 0;
			LOC258 = HEX5BHEX5D_215238(b, ((NI) 1));
			LOC259 = 0;
			LOC259 = ple_337162(m, LOC257, LOC258);
			LOC253 = (LOC259 == ((NU8) 2));
			LA256: ;
			if (!LOC253) goto LA260;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		goto LA241;
		LA260: ;
		LA241: ;
	}
	LA239: ;
	{
		NU8 LOC264;
		LOC264 = 0;
		LOC264 = getmagic_239323(a);
		if (!(LOC264 == ((NU8) 47) || LOC264 == ((NU8) 54))) goto LA265;
		{
			NIM_BOOL LOC269;
			NIM_BOOL LOC270;
			Tnode214790* LOC271;
			Tnode214790* LOC272;
			NU8 LOC273;
			Tnode214790* LOC275;
			NU8 LOC276;
			Tnode214790* LOC278;
			NU8 LOC279;
			LOC269 = 0;
			LOC270 = 0;
			LOC271 = 0;
			LOC271 = one_335552();
			LOC272 = 0;
			LOC272 = HEX5BHEX5D_215238(a, ((NI) 2));
			LOC273 = 0;
			LOC273 = ple_337162(m, LOC271, LOC272);
			LOC270 = (LOC273 == ((NU8) 2));
			if (!(LOC270)) goto LA274;
			LOC275 = 0;
			LOC275 = zero_335549();
			LOC276 = 0;
			LOC276 = ple_337162(m, LOC275, b);
			LOC270 = (LOC276 == ((NU8) 2));
			LA274: ;
			LOC269 = LOC270;
			if (!(LOC269)) goto LA277;
			LOC278 = 0;
			LOC278 = HEX5BHEX5D_215238(a, ((NI) 1));
			LOC279 = 0;
			LOC279 = ple_337162(m, LOC278, b);
			LOC269 = (LOC279 == ((NU8) 2));
			LA277: ;
			if (!LOC269) goto LA280;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA280: ;
		{
			NU8 LOC284;
			LOC284 = 0;
			LOC284 = getmagic_239323(b);
			if (!(LOC284 == ((NU8) 47) || LOC284 == ((NU8) 54))) goto LA285;
			{
				NIM_BOOL LOC289;
				Tnode214790* LOC290;
				Tnode214790* LOC291;
				Tnode214790* LOC293;
				Tnode214790* LOC294;
				NU8 LOC295;
				LOC289 = 0;
				LOC290 = 0;
				LOC290 = HEX5BHEX5D_215238(a, ((NI) 1));
				LOC291 = 0;
				LOC291 = HEX5BHEX5D_215238(b, ((NI) 1));
				LOC289 = sametree_336245(LOC290, LOC291);
				if (!(LOC289)) goto LA292;
				LOC293 = 0;
				LOC293 = HEX5BHEX5D_215238(b, ((NI) 2));
				LOC294 = 0;
				LOC294 = HEX5BHEX5D_215238(a, ((NI) 2));
				LOC295 = 0;
				LOC295 = ple_337162(m, LOC293, LOC294);
				LOC289 = (LOC295 == ((NU8) 2));
				LA292: ;
				if (!LOC289) goto LA296;
				result = ((NU8) 2);
				goto BeforeRet;
			}
			LA296: ;
		}
		LA285: ;
		{
			NIM_BOOL LOC300;
			NIM_BOOL LOC301;
			Tnode214790* LOC302;
			NU8 LOC304;
			Tnode214790* LOC306;
			LOC300 = 0;
			LOC301 = 0;
			LOC302 = 0;
			LOC302 = HEX5BHEX5D_215238(a, ((NI) 2));
			LOC301 = isvalue_335080(LOC302);
			if (!(LOC301)) goto LA303;
			LOC304 = 0;
			LOC304 = getmagic_239323(b);
			LOC301 = (LOC304 == ((NU8) 44) || LOC304 == ((NU8) 51) || LOC304 == ((NU8) 49));
			LA303: ;
			LOC300 = LOC301;
			if (!(LOC300)) goto LA305;
			LOC306 = 0;
			LOC306 = HEX5BHEX5D_215238(b, ((NI) 2));
			LOC300 = isminusone_337141(LOC306);
			LA305: ;
			if (!LOC300) goto LA307;
			{
				NIM_BOOL LOC311;
				Tnode214790* LOC312;
				Tnode214790* LOC313;
				NU8 LOC314;
				Tnode214790* LOC316;
				Tnode214790* LOC317;
				LOC311 = 0;
				LOC312 = 0;
				LOC312 = HEX5BHEX5D_215238(a, ((NI) 2));
				LOC313 = 0;
				LOC313 = HEX5BHEX5D_215238(a, ((NI) 1));
				LOC314 = 0;
				LOC314 = ple_337162(m, LOC312, LOC313);
				LOC311 = (LOC314 == ((NU8) 2));
				if (!(LOC311)) goto LA315;
				LOC316 = 0;
				LOC316 = HEX5BHEX5D_215238(a, ((NI) 1));
				LOC317 = 0;
				LOC317 = HEX5BHEX5D_215238(b, ((NI) 1));
				LOC311 = sametree_336245(LOC316, LOC317);
				LA315: ;
				if (!LOC311) goto LA318;
				result = ((NU8) 2);
				goto BeforeRet;
			}
			LA318: ;
		}
		LA307: ;
	}
	LA265: ;
	{
		NU8 LOC322;
		LOC322 = 0;
		LOC322 = getmagic_239323(b);
		if (!(LOC322 == ((NU8) 61) || LOC322 == ((NU8) 63))) goto LA323;
		{
			NIM_BOOL LOC327;
			Tnode214790* LOC328;
			NU8 LOC329;
			Tnode214790* LOC331;
			NU8 LOC332;
			LOC327 = 0;
			LOC328 = 0;
			LOC328 = HEX5BHEX5D_215238(b, ((NI) 1));
			LOC329 = 0;
			LOC329 = ple_337162(m, a, LOC328);
			LOC327 = (LOC329 == ((NU8) 2));
			if (LOC327) goto LA330;
			LOC331 = 0;
			LOC331 = HEX5BHEX5D_215238(b, ((NI) 2));
			LOC332 = 0;
			LOC332 = ple_337162(m, a, LOC331);
			LOC327 = (LOC332 == ((NU8) 2));
			LA330: ;
			if (!LOC327) goto LA333;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA333: ;
	}
	LA323: ;
	{
		NU8 LOC337;
		LOC337 = 0;
		LOC337 = getmagic_239323(a);
		if (!(LOC337 == ((NU8) 60) || LOC337 == ((NU8) 62))) goto LA338;
		{
			NIM_BOOL LOC342;
			Tnode214790* LOC343;
			NU8 LOC344;
			Tnode214790* LOC346;
			NU8 LOC347;
			LOC342 = 0;
			LOC343 = 0;
			LOC343 = HEX5BHEX5D_215238(a, ((NI) 1));
			LOC344 = 0;
			LOC344 = ple_337162(m, LOC343, b);
			LOC342 = (LOC344 == ((NU8) 2));
			if (LOC342) goto LA345;
			LOC346 = 0;
			LOC346 = HEX5BHEX5D_215238(a, ((NI) 2));
			LOC347 = 0;
			LOC347 = ple_337162(m, LOC346, b);
			LOC342 = (LOC347 == ((NU8) 2));
			LA345: ;
			if (!LOC342) goto LA348;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA348: ;
	}
	LA338: ;
	result = pleviamodel_337157(m, a, b);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, provele_338382)(Tnodeseq214784* m, Tnode214790* a, Tnode214790* b) {
	NU8 result;
	Tnode214790* x;
	Tnode214790* LOC1;
	Tnode214790* LOC2;
	Tnode214790* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = buildcall_335401(ople_335236, a, b);
	x = canon_335675(LOC1);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_215238(x, ((NI) 1));
	LOC3 = 0;
	LOC3 = HEX5BHEX5D_215238(x, ((NI) 2));
	result = ple_337162(m, LOC2, LOC3);
	{
		Tnode214790* y;
		Tnode214790* LOC8;
		Tnode214790* LOC9;
		Tnode214790* LOC10;
		Tnode214790* LOC11;
		Tnode214790* LOC12;
		NU8 LOC13;
		if (!(result == ((NU8) 0))) goto LA6;
		LOC8 = 0;
		LOC8 = one_335552();
		LOC9 = 0;
		LOC9 = buildcall_335401(opadd_335242, b, LOC8);
		LOC10 = 0;
		LOC10 = buildcall_335401(ople_335236, LOC9, a);
		y = canon_335675(LOC10);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_215238(y, ((NI) 1));
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_215238(y, ((NI) 2));
		LOC13 = 0;
		LOC13 = ple_337162(m, LOC11, LOC12);
		result = HEX7E_336790(LOC13);
	}
	LA6: ;
	return result;
}

N_NIMCALL(Tnode214790*, lowbound_335558)(Tnode214790* x) {
	Tnode214790* result;
	NI64 LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = firstord_240001((*x).typ);
	result = newintnode_215660(((NU8) 6), LOC1);
	(*result).info = (*x).info;
	return result;
}

N_NIMCALL(Tnode214790*, highbound_335562)(Tnode214790* x) {
	Tnode214790* result;
	Ttype214828* typ;
	result = 0;
	typ = skiptypes_218113((*x).typ, IL64(211106232576256));
	{
		NI64 LOC5;
		if (!((*typ).kind == ((NU8) 4) || (*typ).kind == ((NU8) 16))) goto LA3;
		LOC5 = 0;
		LOC5 = lastord_240004(typ);
		result = newintnode_215660(((NU8) 6), LOC5);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC7;
		NIM_BOOL LOC8;
		NI LOC13;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = ((*typ).kind == ((NU8) 24));
		if (!(LOC8)) goto LA9;
		LOC8 = ((*x).kind == ((NU8) 3));
		LA9: ;
		LOC7 = LOC8;
		if (!(LOC7)) goto LA10;
		LOC7 = ((*(*x).kindU.S4.sym).kind == ((NU8) 10));
		LA10: ;
		if (!LOC7) goto LA11;
		LOC13 = 0;
		LOC13 = len_215059((*(*x).kindU.S4.sym).ast);
		result = newintnode_215660(((NU8) 6), ((NI64) ((NI)(LOC13 - ((NI) 1)))));
	}
	goto LA1;
	LA11: ;
	{
		Tnode214790* LOC15;
		Tnode214790* LOC16;
		LOC15 = 0;
		LOC15 = buildcall_335394(oplen_335246, x);
		LOC16 = 0;
		LOC16 = minusone_335555();
		result = buildcall_335401(opadd_335242, LOC15, LOC16);
	}
	LA1: ;
	(*result).info = (*x).info;
	return result;
}

N_NIMCALL(Tnode214790*, HEX2BHEX40_335976)(Tnode214790* a, NI64 b) {
	Tnode214790* result;
	Tnode214790* LOC1;
	result = 0;
	LOC1 = 0;
	{
		Tnode214790* LOC6;
		if (!!((b == IL64(0)))) goto LA4;
		LOC6 = 0;
		LOC6 = newintnode_215660(((NU8) 6), b);
		LOC1 = buildcall_335401(opadd_335242, a, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		LOC1 = a;
	}
	LA2: ;
	result = canon_335675(LOC1);
	return result;
}

N_NIMCALL(NI64, simpleslice_337042)(Tnode214790* a, Tnode214790* b) {
	NI64 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametree_336245(a, b);
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			NU8 LOC9;
			Tnode214790* LOC11;
			Tnode214790* LOC14;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = getmagic_239323(a);
			LOC8 = (LOC9 == ((NU8) 44) || LOC9 == ((NU8) 51) || LOC9 == ((NU8) 49));
			if (!(LOC8)) goto LA10;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_215238(a, ((NI) 2));
			LOC8 = ((*LOC11).kind >= ((NU8) 5) && (*LOC11).kind <= ((NU8) 15));
			LA10: ;
			if (!LOC8) goto LA12;
			LOC14 = 0;
			LOC14 = HEX5BHEX5D_215238(a, ((NI) 2));
			result = (*LOC14).kindU.S1.intval;
		}
		goto LA6;
		LA12: ;
		{
			result = IL64(0);
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		result = IL64(-1);
	}
	LA1: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_guardsInit000)(void) {
	asgnRefNoCycle((void**) (&ople_335236), createmagic_219600(((NimStringDesc*) &TMP986), ((NU8) 70)));
	asgnRefNoCycle((void**) (&oplt_335237), createmagic_219600(((NimStringDesc*) &TMP987), ((NU8) 71)));
	asgnRefNoCycle((void**) (&opand_335238), createmagic_219600(((NimStringDesc*) &TMP988), ((NU8) 125)));
	asgnRefNoCycle((void**) (&opor_335239), createmagic_219600(((NimStringDesc*) &TMP989), ((NU8) 126)));
	asgnRefNoCycle((void**) (&opisnil_335240), createmagic_219600(((NimStringDesc*) &TMP990), ((NU8) 156)));
	asgnRefNoCycle((void**) (&opeq_335241), createmagic_219600(((NimStringDesc*) &TMP991), ((NU8) 69)));
	asgnRefNoCycle((void**) (&opadd_335242), createmagic_219600(((NimStringDesc*) &TMP992), ((NU8) 44)));
	asgnRefNoCycle((void**) (&opsub_335243), createmagic_219600(((NimStringDesc*) &TMP993), ((NU8) 45)));
	asgnRefNoCycle((void**) (&opmul_335244), createmagic_219600(((NimStringDesc*) &TMP994), ((NU8) 46)));
	asgnRefNoCycle((void**) (&opdiv_335245), createmagic_219600(((NimStringDesc*) &TMP995), ((NU8) 47)));
	asgnRefNoCycle((void**) (&oplen_335246), createmagic_219600(((NimStringDesc*) &TMP996), ((NU8) 35)));
}

NIM_EXTERNC N_NOINLINE(void, compiler_guardsDatInit000)(void) {
static TNimNode* TMP4277[2];
static TNimNode TMP984[3];
NTI337746.size = sizeof(TY337746);
NTI337746.kind = 18;
NTI337746.base = 0;
NTI337746.flags = 2;
TMP4277[0] = &TMP984[1];
TMP984[1].kind = 1;
TMP984[1].offset = offsetof(TY337746, Field0);
TMP984[1].typ = (&NTI214782);
TMP984[1].name = "Field0";
TMP4277[1] = &TMP984[2];
TMP984[2].kind = 1;
TMP984[2].offset = offsetof(TY337746, Field1);
TMP984[2].typ = (&NTI214782);
TMP984[2].name = "Field1";
TMP984[0].len = 2; TMP984[0].kind = 2; TMP984[0].sons = &TMP4277[0];
NTI337746.node = &TMP984[0];
NTI337745.size = sizeof(Treplacements337745*);
NTI337745.kind = 24;
NTI337745.base = (&NTI337746);
NTI337745.flags = 2;
NTI337745.marker = TMP4278;
}

