/* Generated by Nim Compiler v0.11.2 */
/*   (c) 2015 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 64
#include "nimbase.h"

#include <string.h>
typedef struct Tsym190843 Tsym190843;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tcell46347 Tcell46347;
typedef struct TNimType TNimType;
typedef struct Tcellseq46363 Tcellseq46363;
typedef struct Tgcheap48216 Tgcheap48216;
typedef struct Tcellset46359 Tcellset46359;
typedef struct Tpagedesc46355 Tpagedesc46355;
typedef struct Tmemregion28210 Tmemregion28210;
typedef struct Tsmallchunk27440 Tsmallchunk27440;
typedef struct Tllchunk28204 Tllchunk28204;
typedef struct Tbigchunk27442 Tbigchunk27442;
typedef struct Tintset27417 Tintset27417;
typedef struct Ttrunk27413 Ttrunk27413;
typedef struct Tavlnode28208 Tavlnode28208;
typedef struct Tgcstat48214 Tgcstat48214;
typedef struct Tnodeseq190807 Tnodeseq190807;
typedef struct Tnode190813 Tnode190813;
typedef struct Ttype190849 Ttype190849;
typedef struct Tlineinfo163338 Tlineinfo163338;
typedef struct Tident167021 Tident167021;
typedef struct Tidobj167015 Tidobj167015;
typedef struct TNimObject TNimObject;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq190845 Ttypeseq190845;
typedef struct Tscope190837 Tscope190837;
typedef struct TY190944 TY190944;
typedef struct Tstrtable190817 Tstrtable190817;
typedef struct Tsymseq190815 Tsymseq190815;
typedef struct Tloc190827 Tloc190827;
typedef struct Ropeobj161009 Ropeobj161009;
typedef struct Tlib190831 Tlib190831;
typedef struct TY224855 TY224855;
typedef struct TY86345 TY86345;
typedef struct Treplacements322560 Treplacements322560;
typedef struct TY432269 TY432269;
typedef struct Tbasechunk27438 Tbasechunk27438;
typedef struct Tfreecell27430 Tfreecell27430;
typedef struct Tinstantiation190833 Tinstantiation190833;
typedef struct Tlistentry130022 Tlistentry130022;
typedef struct TY190933 TY190933;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tcell46347  {
NI refcount;
TNimType* typ;
};
struct  Tcellseq46363  {
NI len;
NI cap;
Tcell46347** d;
};
struct  Tcellset46359  {
NI counter;
NI max;
Tpagedesc46355* head;
Tpagedesc46355** data;
};
typedef Tsmallchunk27440* TY28222[512];
typedef Ttrunk27413* Ttrunkbuckets27415[256];
struct  Tintset27417  {
Ttrunkbuckets27415 data;
};
struct  Tmemregion28210  {
NI minlargeobj;
NI maxlargeobj;
TY28222 freesmallchunks;
Tllchunk28204* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Tbigchunk27442* freechunkslist;
Tintset27417 chunkstarts;
Tavlnode28208* root;
Tavlnode28208* deleted;
Tavlnode28208* last;
Tavlnode28208* freeavlnodes;
};
struct  Tgcstat48214  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Tgcheap48216  {
void* stackbottom;
NI cyclethreshold;
Tcellseq46363 zct;
Tcellseq46363 decstack;
Tcellset46359 cycleroots;
Tcellseq46363 tempstack;
NI recgclock;
Tmemregion28210 region;
Tgcstat48214 stat;
};
struct  Tlineinfo163338  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tnode190813  {
Ttype190849* typ;
Tlineinfo163338 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym190843* sym;
} S4;
struct {Tident167021* ident;
} S5;
struct {Tnodeseq190807* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef N_NIMCALL_PTR(void, TY3289) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3294) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3289 marker;
TY3294 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj167015  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable190817  {
NI counter;
Tsymseq190815* data;
};
struct  Tloc190827  {
NU8 k;
NU8 s;
NU16 flags;
Ttype190849* t;
Ropeobj161009* r;
Ropeobj161009* heaproot;
};
struct  Tsym190843  {
  Tidobj167015 Sup;
NU8 kind;
union{
struct {Ttypeseq190845* typeinstcache;
Tscope190837* typscope;
} S1;
struct {TY190944* procinstcache;
Tsym190843* gcunsafetyreason;
} S2;
struct {TY190944* usedgenerics;
Tstrtable190817 tab;
} S3;
struct {Tsym190843* guard;
} S4;
} kindU;
NU16 magic;
Ttype190849* typ;
Tident167021* name;
Tlineinfo163338 info;
Tsym190843* owner;
NU32 flags;
Tnode190813* ast;
NU32 options;
NI position;
NI offset;
Tloc190827 loc;
Tlib190831* annex;
Tnode190813* constraint;
};
struct  Tident167021  {
  Tidobj167015 Sup;
NimStringDesc* s;
Tident167021* next;
NI h;
};
struct TY224855 {
NI Field0;
NI Field1;
};
struct TY86345 {
NimStringDesc* Field0;
NI Field1;
};
struct  Ttype190849  {
  Tidobj167015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq190845* sons;
Tnode190813* n;
Tsym190843* owner;
Tsym190843* sym;
Tsym190843* destructor;
Tsym190843* deepcopy;
Tsym190843* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc190827 loc;
};
typedef NU8 TY443856[33];
struct TY432269 {
Tnode190813* Field0;
Tnode190813* Field1;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef NI TY27420[8];
struct  Tpagedesc46355  {
Tpagedesc46355* next;
NI key;
TY27420 bits;
};
struct  Tbasechunk27438  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Tsmallchunk27440  {
  Tbasechunk27438 Sup;
Tsmallchunk27440* next;
Tsmallchunk27440* prev;
Tfreecell27430* freelist;
NI free;
NI acc;
NF data;
};
struct  Tllchunk28204  {
NI size;
NI acc;
Tllchunk28204* next;
};
struct  Tbigchunk27442  {
  Tbasechunk27438 Sup;
Tbigchunk27442* next;
Tbigchunk27442* prev;
NI align;
NF data;
};
struct  Ttrunk27413  {
Ttrunk27413* next;
NI key;
TY27420 bits;
};
typedef Tavlnode28208* TY28214[2];
struct  Tavlnode28208  {
TY28214 link;
NI key;
NI upperbound;
NI level;
};
struct  Tscope190837  {
NI depthlevel;
Tstrtable190817 symbols;
Tnodeseq190807* usingsyms;
Tscope190837* parent;
};
struct  Ropeobj161009  {
  TNimObject Sup;
Ropeobj161009* left;
Ropeobj161009* right;
NI length;
NimStringDesc* data;
};
struct  Tlistentry130022  {
  TNimObject Sup;
Tlistentry130022* prev;
Tlistentry130022* next;
};
struct  Tlib190831  {
  Tlistentry130022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj161009* name;
Tnode190813* path;
};
struct  Tfreecell27430  {
Tfreecell27430* next;
NI zerofield;
};
struct  Tinstantiation190833  {
Tsym190843* sym;
Ttypeseq190845* concretetypes;
TY190933* usedby;
};
struct Tnodeseq190807 {
  TGenericSeq Sup;
  Tnode190813* data[SEQ_DECL_SIZE];
};
struct Treplacements322560 {
  TGenericSeq Sup;
  TY432269 data[SEQ_DECL_SIZE];
};
struct Ttypeseq190845 {
  TGenericSeq Sup;
  Ttype190849* data[SEQ_DECL_SIZE];
};
struct TY190944 {
  TGenericSeq Sup;
  Tinstantiation190833* data[SEQ_DECL_SIZE];
};
struct Tsymseq190815 {
  TGenericSeq Sup;
  Tsym190843* data[SEQ_DECL_SIZE];
};
struct TY190933 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(Tsym190843*, createmagic_195987)(NimStringDesc* name, NU16 m);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Tcell46347*, usrtocell_49846)(void* usr);
static N_INLINE(void, rtladdzct_51404)(Tcell46347* c);
N_NOINLINE(void, addzct_49817)(Tcellseq46363* s, Tcell46347* c);
N_NIMCALL(NU8, doesimply_322021)(Tnodeseq190807* facts, Tnode190813* prop);
N_NIMCALL(NU8, factimplies_321971)(Tnode190813* fact, Tnode190813* prop);
N_NIMCALL(NU16, getmagic_219403)(Tnode190813* op);
N_NIMCALL(NU8, HEX7E_321961)(NU8 x);
N_NIMCALL(NU8, impliesisnil_321823)(Tnode190813* fact, Tnode190813* eq);
N_NIMCALL(NIM_BOOL, sametree_321290)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tsym190843*, canonopr_321279)(Tsym190843* opr);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NI, sonslen_193403)(Tnode190813* n);
N_NIMCALL(NU8, valueisnil_321793)(Tnode190813* n);
N_NIMCALL(Tnode190813*, skipconv_229935)(Tnode190813* n);
N_NIMCALL(void, internalerror_165199)(Tlineinfo163338 info, NimStringDesc* errmsg);
N_NIMCALL(NU8, implieseq_321552)(Tnode190813* fact, Tnode190813* eq);
N_NIMCALL(NIM_BOOL, islocation_320067)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, isvalue_320046)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, valuesunequal_321539)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NIM_BOOL, samevalue_198324)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NIM_BOOL, inset_240019)(Tnode190813* s, Tnode190813* elem);
N_NIMCALL(NU8, impliesle_321888)(Tnode190813* fact, Tnode190813* x, Tnode190813* c);
N_NIMCALL(NU8, impliesge_321847)(Tnode190813* fact, Tnode190813* x, Tnode190813* c);
N_NIMCALL(void, internalerror_165218)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_165306)(TY86345 x);
N_NIMCALL(NIM_BOOL, levalue_198374)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tnode190813*, pred_320701)(Tnode190813* n);
N_NIMCALL(Tnode190813*, copynode_194640)(Tnode190813* src);
N_NIMCALL(NU8, implieslt_321923)(Tnode190813* fact, Tnode190813* x, Tnode190813* c);
N_NIMCALL(NU8, impliesin_321758)(Tnode190813* fact, Tnode190813* loc, Tnode190813* aset);
N_NIMCALL(NU8, comparesets_321746)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NIM_BOOL, equalsets_240082)(Tnode190813* a, Tnode190813* b);
static N_INLINE(NI, len_191097)(Tnode190813* n);
N_NIMCALL(Tnode190813*, intersectsets_240061)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NU8, leimpliesin_321588)(Tnode190813* x, Tnode190813* c, Tnode190813* aset);
N_NIMCALL(Tnode190813*, newintnode_191607)(NU8 kind, NI64 intval);
N_NIMCALL(NI64, firstord_220004)(Ttype190849* t);
N_NIMCALL(NU8, geimpliesin_321667)(Tnode190813* x, Tnode190813* c, Tnode190813* aset);
N_NIMCALL(NI64, lastord_220010)(Ttype190849* t);
N_NIMCALL(Tnode190813*, neg_320274)(Tnode190813* n);
N_NIMCALL(Tnode190813*, swapargs_320258)(Tnode190813* fact, Tsym190843* newop);
N_NIMCALL(Tnode190813*, newnodei_192407)(NU8 kind, Tlineinfo163338 info, NI children);
N_NIMCALL(Tnode190813*, newsymnode_192325)(Tsym190843* sym);
N_NIMCALL(Ttype190849*, skiptypes_194167)(Ttype190849* t, NU64 kinds);
N_NIMCALL(Tnode190813*, newnodeit_192807)(NU8 kind, Tlineinfo163338 info, Ttype190849* typ);
N_NIMCALL(void, add_191164)(Tnode190813* father, Tnode190813* son);
N_NIMCALL(NI64, lengthord_220016)(Ttype190849* t);
N_NIMCALL(Tnode190813*, complement_240550)(Tnode190813* a);
N_NIMCALL(Tnode190813*, buildcall_320429)(Tsym190843* op, Tnode190813* a);
N_NIMCALL(Tnode190813*, buildproperfieldcheck_323583)(Tnode190813* access, Tnode190813* check);
N_NIMCALL(Tnode190813*, copytree_195028)(Tnode190813* src);
N_NIMCALL(void, message_165188)(Tlineinfo163338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_212058)(Tnode190813* n, NU8 renderflags);
N_NIMCALL(NIM_BOOL, hassubtree_321446)(Tnode190813* n, Tnode190813* x);
static N_INLINE(NI, safelen_191125)(Tnode190813* n);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NIM_BOOL, isletlocation_320190)(Tnode190813* m, NIM_BOOL isapprox);
N_NIMCALL(NIM_BOOL, isconstexpr_219428)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, islet_320078)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, isvar_320130)(Tnode190813* n);
N_NIMCALL(Tnode190813*, buildof_323282)(Tnode190813* it, Tnode190813* loc);
N_NIMCALL(Ttype190849*, settype_323272)(Tnode190813* n);
N_NIMCALL(Ttype190849*, newtype_193140)(NU8 kind, Tsym190843* owner);
N_NIMCALL(void, addsonskipintlit_238731)(Ttype190849* father, Ttype190849* son);
N_NIMCALL(Tnode190813*, buildelse_323329)(Tnode190813* n);
N_NIMCALL(Tnode190813*, usefulfact_321022)(Tnode190813* n);
N_NIMCALL(Tnode190813*, lastson_193431)(Tnode190813* n);
N_NIMCALL(void, addfact_321220)(Tnodeseq190807** m, Tnode190813* n_321224);
N_NIMCALL(Tnode190813*, shallowcopy_194817)(Tnode190813* src);
N_NIMCALL(Tnode190813*, canon_320735)(Tnode190813* n);
N_NIMCALL(Tnode190813*, buildcall_320442)(Tsym190843* op, Tnode190813* a, Tnode190813* b);
static N_INLINE(Tnode190813*, HEX5BHEX5D_191244)(Tnode190813* n, NI i);
N_NIMCALL(Tnode190813*, minusone_320588)(void);
N_NIMCALL(Tnode190813*, negate_320513)(Tnode190813* a, Tnode190813* b_320516, Tnode190813* res);
N_NIMCALL(NI64, HEX7CHEX2BHEX7C_255019)(NI64 a, NI64 b);
N_NIMCALL(Tnode190813*, reassociation_320662)(Tnode190813* n);
N_NIMCALL(Tnode190813*, HEX7CHEX2BHEX7C_320457)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tnode190813*, HEX7CHEX2AHEX7C_320485)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NI64, HEX7CHEX2AHEX7C_255073)(NI64 a, NI64 b);
N_NIMCALL(NU8, ple_322306)(Tnodeseq190807* m, Tnode190813* a, Tnode190813* b);
N_NIMCALL(NIM_BOOL, isordinaltype_220093)(Ttype190849* t);
N_NIMCALL(Tnode190813*, zero_320570)(void);
N_NIMCALL(Tnode190813*, one_320579)(void);
N_NIMCALL(NU8, pleviamodel_322298)(Tnodeseq190807* model, Tnode190813* aa, Tnode190813* bb);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP4009)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(Tnode190813*, applyreplacements_322609)(Tnode190813* n, Treplacements322560* rep);
N_NIMCALL(Tnode190813*, replacesubtree_322567)(Tnode190813* n, Tnode190813* x, Tnode190813* by);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_81204, TNimType* mt);
N_NIMCALL(NU8, pleviamodelrec_322834)(Tnodeseq190807** m, Tnode190813* a, Tnode190813* b);
STRING_LITERAL(TMP903, "<=", 2);
STRING_LITERAL(TMP904, "<", 1);
STRING_LITERAL(TMP905, "and", 3);
STRING_LITERAL(TMP906, "or", 2);
STRING_LITERAL(TMP907, "isnil", 5);
STRING_LITERAL(TMP908, "==", 2);
STRING_LITERAL(TMP909, "+", 1);
STRING_LITERAL(TMP910, "-", 1);
STRING_LITERAL(TMP911, "*", 1);
STRING_LITERAL(TMP912, "div", 3);
STRING_LITERAL(TMP913, "len", 3);
STRING_LITERAL(TMP3324, "impliesIsNil", 12);
NIM_CONST TY224855 TMP3325 = {((NI) 1),
((NI) 2)}
;
NIM_CONST TY224855 TMP3326 = {((NI) 2),
((NI) 1)}
;
STRING_LITERAL(TMP3327, "impliesEq", 9);
STRING_LITERAL(TMP3329, "guards.nim", 10);
NIM_CONST TY86345 TMP3328 = {((NimStringDesc*) &TMP3329),
((NI) 544)}
;
STRING_LITERAL(TMP3330, "impliesGe", 9);
STRING_LITERAL(TMP3331, "impliesLe", 9);
STRING_LITERAL(TMP3332, "impliesIn", 9);
static NIM_CONST TY443856 TMP4007 = {
0x20, 0x00, 0x40, 0xE0, 0x07, 0xCE, 0xF9, 0xC0,
0x60, 0x90, 0x04, 0x92, 0x4C, 0x01, 0x00, 0x00,
0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
static NIM_CONST TY443856 TMP4010 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x90, 0x04, 0x92, 0x4C, 0x01, 0x00, 0x00,
0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
static NIM_CONST TY443856 TMP4011 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x20, 0xA9, 0x24, 0x11, 0x00, 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
Tsym190843* ople_320244;
extern Tgcheap48216 gch_48244;
Tsym190843* oplt_320245;
Tsym190843* opand_320246;
Tsym190843* opor_320247;
Tsym190843* opisnil_320248;
Tsym190843* opeq_320249;
Tsym190843* opadd_320250;
Tsym190843* opsub_320251;
Tsym190843* opmul_320252;
Tsym190843* opdiv_320253;
Tsym190843* oplen_320254;
extern Tsym190843* opnot_195999;
extern Tsym190843* opcontains_196000;
extern TNimType NTI432269; /* tuple[outer: PNode, inner: PNode] */
TNimType NTI322560; /* TReplacements */
extern TNimType NTI190807; /* TNodeSeq */

static N_INLINE(Tcell46347*, usrtocell_49846)(void* usr) {
	Tcell46347* result;
	result = 0;
	result = ((Tcell46347*) ((NI)((NU64)(((NI) (usr))) - (NU64)(((NI)sizeof(Tcell46347))))));
	return result;
}

static N_INLINE(void, rtladdzct_51404)(Tcell46347* c) {
	addzct_49817((&gch_48244.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Tcell46347* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_49846(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Tcell46347* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_49846((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA11;
			rtladdzct_51404(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(NU8, HEX7E_321961)(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(Tsym190843*, canonopr_321279)(Tsym190843* opr) {
	Tsym190843* result;
	result = 0;
	switch ((*opr).magic) {
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		result = opeq_320249;
	}
	break;
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 83):
	case ((NU16) 85):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	case ((NU16) 96):
	case ((NU16) 100):
	case ((NU16) 140):
	{
		result = ople_320244;
	}
	break;
	case ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 84):
	case ((NU16) 86):
	case ((NU16) 88):
	case ((NU16) 91):
	case ((NU16) 94):
	case ((NU16) 97):
	case ((NU16) 101):
	case ((NU16) 141):
	{
		result = oplt_320245;
	}
	break;
	case ((NU16) 29):
	case ((NU16) 30):
	case ((NU16) 31):
	case ((NU16) 32):
	case ((NU16) 33):
	case ((NU16) 34):
	{
		result = oplen_320254;
	}
	break;
	case ((NU16) 41):
	case ((NU16) 46):
	case ((NU16) 53):
	case ((NU16) 51):
	{
		result = opadd_320250;
	}
	break;
	case ((NU16) 42):
	case ((NU16) 47):
	case ((NU16) 54):
	case ((NU16) 52):
	{
		result = opsub_320251;
	}
	break;
	case ((NU16) 43):
	case ((NU16) 48):
	case ((NU16) 55):
	{
		result = opmul_320252;
	}
	break;
	case ((NU16) 44):
	case ((NU16) 49):
	case ((NU16) 56):
	{
		result = opdiv_320253;
	}
	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_321290)(Tnode190813* a, Tnode190813* 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;
				Tsym190843* LOC21;
				Tsym190843* LOC22;
				LOC15 = 0;
				LOC15 = !(result);
				if (!(LOC15)) goto LA16;
				LOC15 = !(((*(*a).kindU.S4.sym).magic == ((NU16) 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_321279((*a).kindU.S4.sym);
				LOC22 = 0;
				LOC22 = canonopr_321279((*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_193403(a);
				LOC33 = 0;
				LOC33 = sonslen_193403(b);
				if (!(LOC32 == LOC33)) goto LA34;
				{
					NI i_321420;
					NI HEX3Atmp_321424;
					NI LOC37;
					NI res_321427;
					i_321420 = 0;
					HEX3Atmp_321424 = 0;
					LOC37 = 0;
					LOC37 = sonslen_193403(a);
					HEX3Atmp_321424 = (NI)(LOC37 - ((NI) 1));
					res_321427 = ((NI) 0);
					{
						while (1) {
							if (!(res_321427 <= HEX3Atmp_321424)) goto LA39;
							i_321420 = res_321427;
							{
								NIM_BOOL LOC42;
								LOC42 = 0;
								LOC42 = sametree_321290((*a).kindU.S6.sons->data[i_321420], (*b).kindU.S6.sons->data[i_321420]);
								if (!!(LOC42)) goto LA43;
								goto BeforeRet;
							}
							LA43: ;
							res_321427 += ((NI) 1);
						} LA39: ;
					}
				}
				result = NIM_TRUE;
			}
			LA34: ;
		}
		break;
		}
	}
	goto LA1;
	LA10: ;
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, valueisnil_321793)(Tnode190813* 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_321823)(Tnode190813* fact, Tnode190813* eq) {
	NU8 result;
	result = 0;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU16) 168):
	{
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[((NI) 1)]);
			if (!LOC4) goto LA5;
			result = ((NU8) 2);
		}
		LA5: ;
	}
	break;
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		{
			NIM_BOOL LOC10;
			Tnode190813* LOC13;
			LOC10 = 0;
			LOC10 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[((NI) 1)]);
			if (!LOC10) goto LA11;
			LOC13 = 0;
			LOC13 = skipconv_229935((*fact).kindU.S6.sons->data[((NI) 2)]);
			result = valueisnil_321793(LOC13);
		}
		goto LA8;
		LA11: ;
		{
			NIM_BOOL LOC15;
			Tnode190813* LOC18;
			LOC15 = 0;
			LOC15 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[((NI) 1)]);
			if (!LOC15) goto LA16;
			LOC18 = 0;
			LOC18 = skipconv_229935((*fact).kindU.S6.sons->data[((NI) 1)]);
			result = valueisnil_321793(LOC18);
		}
		goto LA8;
		LA16: ;
		LA8: ;
	}
	break;
	case ((NU16) 109):
	case ((NU16) 138):
	case ((NU16) 137):
	{
		internalerror_165199((*eq).info, ((NimStringDesc*) &TMP3324));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

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

N_NIMCALL(NIM_BOOL, islocation_320067)(Tnode190813* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = isvalue_320046(n);
	result = !(LOC1);
	return result;
}

N_NIMCALL(NIM_BOOL, valuesunequal_321539)(Tnode190813* a, Tnode190813* b) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC7;
		LOC3 = 0;
		LOC3 = isvalue_320046(a);
		if (!(LOC3)) goto LA4;
		LOC3 = isvalue_320046(b);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = samevalue_198324(a, b);
		result = !(LOC7);
	}
	LA5: ;
	return result;
}

N_NIMCALL(NU8, implieseq_321552)(Tnode190813* fact, Tnode190813* eq) {
	NU8 result;
	TY224855 LOC1;
	NI loc;
	NI val;
	result = 0;
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = islocation_320067((*eq).kindU.S6.sons->data[((NI) 1)]);
		if (!LOC4) goto LA5;
		LOC1 = TMP3325;
	}
	goto LA2;
	LA5: ;
	{
		LOC1 = TMP3326;
	}
	LA2: ;
	loc = LOC1.Field0;
	val = LOC1.Field1;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], (*eq).kindU.S6.sons->data[loc]);
			if (!LOC11) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = sametree_321290((*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_321539((*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_321290((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[loc]);
			if (!LOC24) goto LA25;
			{
				NIM_BOOL LOC29;
				LOC29 = 0;
				LOC29 = sametree_321290((*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_321539((*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 ((NU16) 159):
	{
		{
			NIM_BOOL LOC39;
			LOC39 = 0;
			LOC39 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 2)], (*eq).kindU.S6.sons->data[loc]);
			if (!(LOC39)) goto LA40;
			LOC39 = isvalue_320046((*eq).kindU.S6.sons->data[val]);
			LA40: ;
			if (!LOC39) goto LA41;
			{
				NIM_BOOL LOC45;
				LOC45 = 0;
				LOC45 = inset_240019((*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 ((NU16) 109):
	case ((NU16) 138):
	case ((NU16) 137):
	{
		internalerror_165199((*eq).info, ((NimStringDesc*) &TMP3327));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, pred_320701)(Tnode190813* n) {
	Tnode190813* 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_194640(n);
		(*result).kindU.S1.intval -= ((NI) 1);
	}
	goto LA1;
	LA5: ;
	{
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NU8, impliesge_321847)(Tnode190813* fact, Tnode190813* x, Tnode190813* c) {
	NU8 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = islocation_320067(x);
		if (!!(LOC3)) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_165306(TMP3328);
		internalerror_165218(LOC6);
	}
	LA4: ;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC10) goto LA11;
			{
				NIM_BOOL LOC15;
				LOC15 = 0;
				LOC15 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC15)) goto LA16;
				LOC15 = isvalue_320046(c);
				LA16: ;
				if (!LOC15) goto LA17;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = levalue_198374(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_321290((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC26) goto LA27;
			{
				NIM_BOOL LOC31;
				LOC31 = 0;
				LOC31 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC31)) goto LA32;
				LOC31 = isvalue_320046(c);
				LA32: ;
				if (!LOC31) goto LA33;
				{
					NIM_BOOL LOC37;
					LOC37 = 0;
					LOC37 = levalue_198374(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 ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 84):
	case ((NU16) 86):
	case ((NU16) 88):
	case ((NU16) 91):
	case ((NU16) 94):
	case ((NU16) 97):
	case ((NU16) 101):
	case ((NU16) 141):
	{
		{
			NIM_BOOL LOC44;
			LOC44 = 0;
			LOC44 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC44) goto LA45;
			{
				NIM_BOOL LOC49;
				LOC49 = 0;
				LOC49 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC49)) goto LA50;
				LOC49 = isvalue_320046(c);
				LA50: ;
				if (!LOC49) goto LA51;
				{
					NIM_BOOL LOC55;
					LOC55 = 0;
					LOC55 = levalue_198374((*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_321290((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC59) goto LA60;
			{
				NIM_BOOL LOC64;
				LOC64 = 0;
				LOC64 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC64)) goto LA65;
				LOC64 = isvalue_320046(c);
				LA65: ;
				if (!LOC64) goto LA66;
				{
					Tnode190813* LOC70;
					NIM_BOOL LOC71;
					LOC70 = 0;
					LOC70 = pred_320701(c);
					LOC71 = 0;
					LOC71 = levalue_198374(LOC70, (*fact).kindU.S6.sons->data[((NI) 1)]);
					if (!LOC71) goto LA72;
					result = ((NU8) 2);
				}
				LA72: ;
			}
			LA66: ;
		}
		goto LA42;
		LA60: ;
		LA42: ;
	}
	break;
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 83):
	case ((NU16) 85):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	case ((NU16) 96):
	case ((NU16) 100):
	case ((NU16) 140):
	{
		{
			NIM_BOOL LOC77;
			LOC77 = 0;
			LOC77 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC77) goto LA78;
			{
				NIM_BOOL LOC82;
				LOC82 = 0;
				LOC82 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC82)) goto LA83;
				LOC82 = isvalue_320046(c);
				LA83: ;
				if (!LOC82) goto LA84;
				{
					NIM_BOOL LOC88;
					LOC88 = 0;
					LOC88 = levalue_198374((*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_321290((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC92) goto LA93;
			{
				NIM_BOOL LOC97;
				LOC97 = 0;
				LOC97 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC97)) goto LA98;
				LOC97 = isvalue_320046(c);
				LA98: ;
				if (!LOC97) goto LA99;
				{
					NIM_BOOL LOC103;
					LOC103 = 0;
					LOC103 = levalue_198374(c, (*fact).kindU.S6.sons->data[((NI) 1)]);
					if (!LOC103) goto LA104;
					result = ((NU8) 2);
				}
				LA104: ;
			}
			LA99: ;
		}
		goto LA75;
		LA93: ;
		LA75: ;
	}
	break;
	case ((NU16) 109):
	case ((NU16) 138):
	case ((NU16) 137):
	{
		internalerror_165199((*x).info, ((NimStringDesc*) &TMP3330));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, impliesle_321888)(Tnode190813* fact, Tnode190813* x, Tnode190813* c) {
	NU8 result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = islocation_320067(x);
		if (!!(LOC3)) goto LA4;
		result = impliesge_321847(fact, c, x);
		goto BeforeRet;
	}
	LA4: ;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC9) goto LA10;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC14)) goto LA15;
				LOC14 = isvalue_320046(c);
				LA15: ;
				if (!LOC14) goto LA16;
				{
					NIM_BOOL LOC20;
					LOC20 = 0;
					LOC20 = levalue_198374((*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_321290((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC25) goto LA26;
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC30)) goto LA31;
				LOC30 = isvalue_320046(c);
				LA31: ;
				if (!LOC30) goto LA32;
				{
					NIM_BOOL LOC36;
					LOC36 = 0;
					LOC36 = levalue_198374((*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 ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 84):
	case ((NU16) 86):
	case ((NU16) 88):
	case ((NU16) 91):
	case ((NU16) 94):
	case ((NU16) 97):
	case ((NU16) 101):
	case ((NU16) 141):
	{
		{
			NIM_BOOL LOC43;
			LOC43 = 0;
			LOC43 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC43) goto LA44;
			{
				NIM_BOOL LOC48;
				LOC48 = 0;
				LOC48 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC48)) goto LA49;
				LOC48 = isvalue_320046(c);
				LA49: ;
				if (!LOC48) goto LA50;
				{
					Tnode190813* LOC54;
					NIM_BOOL LOC55;
					LOC54 = 0;
					LOC54 = pred_320701(c);
					LOC55 = 0;
					LOC55 = levalue_198374((*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_321290((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC59) goto LA60;
			{
				NIM_BOOL LOC64;
				LOC64 = 0;
				LOC64 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC64)) goto LA65;
				LOC64 = isvalue_320046(c);
				LA65: ;
				if (!LOC64) goto LA66;
				{
					NIM_BOOL LOC70;
					LOC70 = 0;
					LOC70 = levalue_198374(c, (*fact).kindU.S6.sons->data[((NI) 1)]);
					if (!LOC70) goto LA71;
					result = ((NU8) 1);
				}
				LA71: ;
			}
			LA66: ;
		}
		goto LA41;
		LA60: ;
		LA41: ;
	}
	break;
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 83):
	case ((NU16) 85):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	case ((NU16) 96):
	case ((NU16) 100):
	case ((NU16) 140):
	{
		{
			NIM_BOOL LOC76;
			LOC76 = 0;
			LOC76 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], x);
			if (!LOC76) goto LA77;
			{
				NIM_BOOL LOC81;
				LOC81 = 0;
				LOC81 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 2)]);
				if (!(LOC81)) goto LA82;
				LOC81 = isvalue_320046(c);
				LA82: ;
				if (!LOC81) goto LA83;
				{
					NIM_BOOL LOC87;
					LOC87 = 0;
					LOC87 = levalue_198374((*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_321290((*fact).kindU.S6.sons->data[((NI) 2)], x);
			if (!LOC91) goto LA92;
			{
				NIM_BOOL LOC96;
				LOC96 = 0;
				LOC96 = isvalue_320046((*fact).kindU.S6.sons->data[((NI) 1)]);
				if (!(LOC96)) goto LA97;
				LOC96 = isvalue_320046(c);
				LA97: ;
				if (!LOC96) goto LA98;
				{
					Tnode190813* LOC102;
					NIM_BOOL LOC103;
					LOC102 = 0;
					LOC102 = pred_320701((*fact).kindU.S6.sons->data[((NI) 1)]);
					LOC103 = 0;
					LOC103 = levalue_198374(c, LOC102);
					if (!LOC103) goto LA104;
					result = ((NU8) 1);
				}
				LA104: ;
			}
			LA98: ;
		}
		goto LA74;
		LA92: ;
		LA74: ;
	}
	break;
	case ((NU16) 109):
	case ((NU16) 138):
	case ((NU16) 137):
	{
		internalerror_165199((*x).info, ((NimStringDesc*) &TMP3331));
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, implieslt_321923)(Tnode190813* fact, Tnode190813* x, Tnode190813* c) {
	NU8 result;
	Tnode190813* p;
	result = 0;
	p = pred_320701(c);
	{
		if (!!((p == c))) goto LA3;
		result = impliesle_321888(fact, x, p);
	}
	goto LA1;
	LA3: ;
	{
		Tnode190813* q;
		q = pred_320701(x);
		{
			if (!!((q == x))) goto LA8;
			result = impliesle_321888(fact, q, c);
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, len_191097)(Tnode190813* 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_321746)(Tnode190813* a, Tnode190813* b) {
	NU8 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = equalsets_240082(a, b);
		if (!LOC3) goto LA4;
		result = ((NU8) 2);
	}
	goto LA1;
	LA4: ;
	{
		Tnode190813* LOC7;
		NI LOC8;
		LOC7 = 0;
		LOC7 = intersectsets_240061(a, b);
		LOC8 = 0;
		LOC8 = len_191097(LOC7);
		if (!(LOC8 == ((NI) 0))) goto LA9;
		result = ((NU8) 1);
	}
	goto LA1;
	LA9: ;
	LA1: ;
	return result;
}

N_NIMCALL(NU8, leimpliesin_321588)(Tnode190813* x, Tnode190813* c, Tnode190813* aset) {
	NU8 result;
	result = 0;
	{
		Tnode190813* value;
		NI64 LOC5;
		if (!((*c).kind >= ((NU8) 5) && (*c).kind <= ((NU8) 15))) goto LA3;
		LOC5 = 0;
		LOC5 = firstord_220004((*x).typ);
		value = newintnode_191607((*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_240019(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_321667)(Tnode190813* x, Tnode190813* c, Tnode190813* aset) {
	NU8 result;
	result = 0;
	{
		Tnode190813* value;
		NI64 max;
		if (!((*c).kind >= ((NU8) 5) && (*c).kind <= ((NU8) 15))) goto LA3;
		value = newintnode_191607((*c).kind, (*c).kindU.S1.intval);
		max = lastord_220010((*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_240019(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_321758)(Tnode190813* fact, Tnode190813* loc, Tnode190813* aset) {
	NU8 result;
	result = 0;
	switch ((*(*(*fact).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic) {
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], loc);
			if (!LOC4) goto LA5;
			{
				NIM_BOOL LOC9;
				LOC9 = 0;
				LOC9 = inset_240019(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_321290((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC14) goto LA15;
			{
				NIM_BOOL LOC19;
				LOC19 = 0;
				LOC19 = inset_240019(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 ((NU16) 159):
	{
		{
			NIM_BOOL LOC26;
			LOC26 = 0;
			LOC26 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC26) goto LA27;
			result = comparesets_321746((*fact).kindU.S6.sons->data[((NI) 1)], aset);
		}
		LA27: ;
	}
	break;
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 83):
	case ((NU16) 85):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	case ((NU16) 96):
	case ((NU16) 100):
	case ((NU16) 140):
	{
		{
			NIM_BOOL LOC32;
			LOC32 = 0;
			LOC32 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], loc);
			if (!LOC32) goto LA33;
			result = leimpliesin_321588((*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_321290((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC36) goto LA37;
			result = geimpliesin_321667((*fact).kindU.S6.sons->data[((NI) 2)], (*fact).kindU.S6.sons->data[((NI) 1)], aset);
		}
		goto LA30;
		LA37: ;
		LA30: ;
	}
	break;
	case ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 84):
	case ((NU16) 86):
	case ((NU16) 88):
	case ((NU16) 91):
	case ((NU16) 94):
	case ((NU16) 97):
	case ((NU16) 101):
	case ((NU16) 141):
	{
		{
			NIM_BOOL LOC42;
			Tnode190813* LOC45;
			LOC42 = 0;
			LOC42 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 1)], loc);
			if (!LOC42) goto LA43;
			LOC45 = 0;
			LOC45 = pred_320701((*fact).kindU.S6.sons->data[((NI) 2)]);
			result = leimpliesin_321588((*fact).kindU.S6.sons->data[((NI) 1)], LOC45, aset);
		}
		goto LA40;
		LA43: ;
		{
			NIM_BOOL LOC47;
			Tnode190813* LOC50;
			LOC47 = 0;
			LOC47 = sametree_321290((*fact).kindU.S6.sons->data[((NI) 2)], loc);
			if (!LOC47) goto LA48;
			LOC50 = 0;
			LOC50 = pred_320701((*fact).kindU.S6.sons->data[((NI) 1)]);
			result = geimpliesin_321667((*fact).kindU.S6.sons->data[((NI) 2)], LOC50, aset);
		}
		goto LA40;
		LA48: ;
		LA40: ;
	}
	break;
	case ((NU16) 109):
	case ((NU16) 138):
	case ((NU16) 137):
	{
		internalerror_165199((*loc).info, ((NimStringDesc*) &TMP3332));
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, factimplies_321971)(Tnode190813* fact, Tnode190813* prop) {
	NU8 result;
	NU16 LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = getmagic_219403(fact);
	switch (LOC1) {
	case ((NU16) 109):
	{
		Tnode190813* arg;
		NU16 LOC3;
		arg = (*fact).kindU.S6.sons->data[((NI) 1)];
		LOC3 = 0;
		LOC3 = getmagic_219403(arg);
		switch (LOC3) {
		case ((NU16) 168):
		case ((NU16) 98):
		{
			NU8 LOC5;
			LOC5 = 0;
			LOC5 = factimplies_321971(arg, prop);
			result = HEX7E_321961(LOC5);
			goto BeforeRet;
		}
		break;
		case ((NU16) 137):
		{
			NU8 a;
			NU8 b;
			a = factimplies_321971((*arg).kindU.S6.sons->data[((NI) 1)], prop);
			b = factimplies_321971((*arg).kindU.S6.sons->data[((NI) 2)], prop);
			{
				if (!(a == b)) goto LA9;
				result = HEX7E_321961(a);
				goto BeforeRet;
			}
			LA9: ;
			result = ((NU8) 0);
			goto BeforeRet;
		}
		break;
		default:
		{
			result = ((NU8) 0);
			goto BeforeRet;
		}
		break;
		}
	}
	break;
	case ((NU16) 137):
	{
		result = factimplies_321971((*fact).kindU.S6.sons->data[((NI) 1)], prop);
		{
			if (!!((result == ((NU8) 0)))) goto LA15;
			goto BeforeRet;
		}
		LA15: ;
		result = factimplies_321971((*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 ((NU16) 109):
	{
		NU8 LOC19;
		LOC19 = 0;
		LOC19 = factimplies_321971(fact, (*prop).kindU.S6.sons->data[((NI) 1)]);
		result = HEX7E_321961(LOC19);
	}
	break;
	case ((NU16) 168):
	{
		result = impliesisnil_321823(fact, prop);
	}
	break;
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		result = implieseq_321552(fact, prop);
	}
	break;
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 83):
	case ((NU16) 85):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	case ((NU16) 96):
	case ((NU16) 100):
	case ((NU16) 140):
	{
		result = impliesle_321888(fact, (*prop).kindU.S6.sons->data[((NI) 1)], (*prop).kindU.S6.sons->data[((NI) 2)]);
	}
	break;
	case ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 84):
	case ((NU16) 86):
	case ((NU16) 88):
	case ((NU16) 91):
	case ((NU16) 94):
	case ((NU16) 97):
	case ((NU16) 101):
	case ((NU16) 141):
	{
		result = implieslt_321923(fact, (*prop).kindU.S6.sons->data[((NI) 1)], (*prop).kindU.S6.sons->data[((NI) 2)]);
	}
	break;
	case ((NU16) 159):
	{
		result = impliesin_321758(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_322021)(Tnodeseq190807* facts, Tnode190813* prop) {
	NU8 result;
{	result = 0;
	{
		Tnode190813* f_322210;
		NI i_322233;
		NI L_322235;
		f_322210 = 0;
		i_322233 = ((NI) 0);
		L_322235 = (facts ? facts->Sup.len : 0);
		{
			while (1) {
				if (!(i_322233 < L_322235)) goto LA3;
				f_322210 = facts->data[i_322233];
				{
					if (!!(f_322210 == 0)) goto LA6;
					result = factimplies_321971(f_322210, prop);
					{
						if (!!((result == ((NU8) 0)))) goto LA10;
						goto BeforeRet;
					}
					LA10: ;
				}
				LA6: ;
				i_322233 += ((NI) 1);
			} LA3: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, swapargs_320258)(Tnode190813* fact, Tsym190843* newop) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192407(((NU8) 27), (*fact).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(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(Tnode190813*, neg_320274)(Tnode190813* n) {
	Tnode190813* result;
	NU16 LOC5;
{	result = 0;
	{
		if (!(n == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getmagic_219403(n);
	switch (LOC5) {
	case ((NU16) 109):
	{
		result = (*n).kindU.S6.sons->data[((NI) 1)];
	}
	break;
	case ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 84):
	case ((NU16) 86):
	case ((NU16) 88):
	case ((NU16) 91):
	case ((NU16) 94):
	case ((NU16) 97):
	case ((NU16) 101):
	case ((NU16) 141):
	{
		result = swapargs_320258(n, ople_320244);
	}
	break;
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 83):
	case ((NU16) 85):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	case ((NU16) 96):
	case ((NU16) 100):
	case ((NU16) 140):
	{
		result = swapargs_320258(n, oplt_320245);
	}
	break;
	case ((NU16) 159):
	{
		Ttype190849* t;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 39)))) goto LA12;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA12: ;
		t = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106232576256));
		result = newnodei_192407(((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)]);
		{
			Tnode190813* s;
			if (!((*t).kind == ((NU8) 14))) goto LA16;
			s = newnodeit_192807(((NU8) 39), (*n).info, (*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
			{
				Tnode190813* e_320319;
				Tnode190813* HEX3Atmp_320400;
				e_320319 = 0;
				HEX3Atmp_320400 = 0;
				HEX3Atmp_320400 = (*t).n;
				{
					NI i_320404;
					NI HEX3Atmp_320406;
					NI LOC20;
					NI res_320408;
					i_320404 = 0;
					HEX3Atmp_320406 = 0;
					LOC20 = 0;
					LOC20 = len_191097(HEX3Atmp_320400);
					HEX3Atmp_320406 = (LOC20 - 1);
					res_320408 = ((NI) 0);
					{
						while (1) {
							Tnode190813* easnode;
							if (!(res_320408 <= HEX3Atmp_320406)) goto LA22;
							i_320404 = res_320408;
							e_320319 = (*HEX3Atmp_320400).kindU.S6.sons->data[i_320404];
							easnode = newintnode_191607(((NU8) 6), ((NI64) ((*(*e_320319).kindU.S4.sym).position)));
							{
								NIM_BOOL LOC25;
								LOC25 = 0;
								LOC25 = inset_240019((*n).kindU.S6.sons->data[((NI) 1)], easnode);
								if (!!(LOC25)) goto LA26;
								add_191164(s, easnode);
							}
							LA26: ;
							res_320408 += ((NI) 1);
						} LA22: ;
					}
				}
			}
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), s);
		}
		goto LA14;
		LA16: ;
		{
			NIM_BOOL LOC29;
			NI64 LOC31;
			LOC29 = 0;
			LOC29 = !(((285212672 &(IL64(1)<<(((*t).kind)&IL64(63))))!=0));
			if (!(LOC29)) goto LA30;
			LOC31 = 0;
			LOC31 = lengthord_220016(t);
			LOC29 = (LOC31 < IL64(1000));
			LA30: ;
			if (!LOC29) goto LA32;
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), complement_240550((*n).kindU.S6.sons->data[((NI) 1)]));
		}
		goto LA14;
		LA32: ;
		{
			result = NIM_NIL;
		}
		LA14: ;
	}
	break;
	case ((NU16) 138):
	{
		Tnode190813* a;
		Tnode190813* b;
		a = neg_320274((*n).kindU.S6.sons->data[((NI) 1)]);
		b = neg_320274((*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_192407(((NU8) 27), (*n).info, ((NI) 3));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opand_320246));
			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_192407(((NU8) 27), (*n).info, ((NI) 2));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opnot_195999));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, buildcall_320429)(Tsym190843* op, Tnode190813* a) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192407(((NU8) 27), (*a).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(op));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
	return result;
}

N_NIMCALL(NU8, impliesnotnil_322251)(Tnodeseq190807* facts, Tnode190813* arg) {
	NU8 result;
	Tnode190813* LOC1;
	Tnode190813* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = buildcall_320429(opisnil_320248, arg);
	LOC2 = 0;
	LOC2 = neg_320274(LOC1);
	result = doesimply_322021(facts, LOC2);
	return result;
}

N_NIMCALL(Tnode190813*, buildproperfieldcheck_323583)(Tnode190813* access, Tnode190813* check) {
	Tnode190813* result;
	result = 0;
	{
		if (!((*(*check).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 39))) goto LA3;
		result = copytree_195028(check);
		{
			Tnode190813* a;
			if (!((*access).kind == ((NU8) 45))) goto LA7;
			a = copytree_195028(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: ;
	{
		Tnode190813* LOC10;
		LOC10 = 0;
		LOC10 = buildproperfieldcheck_323583(access, (*check).kindU.S6.sons->data[((NI) 1)]);
		result = neg_320274(LOC10);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, checkfieldaccess_323809)(Tnodeseq190807* m, Tnode190813* n) {
	{
		NI i_323824;
		NI HEX3Atmp_323851;
		NI LOC2;
		NI res_323854;
		i_323824 = 0;
		HEX3Atmp_323851 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_323851 = (NI)(LOC2 - ((NI) 1));
		res_323854 = ((NI) 1);
		{
			while (1) {
				Tnode190813* check;
				if (!(res_323854 <= HEX3Atmp_323851)) goto LA4;
				i_323824 = res_323854;
				check = buildproperfieldcheck_323583((*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[i_323824]);
				{
					NIM_BOOL LOC7;
					NU8 LOC9;
					NimStringDesc* LOC12;
					LOC7 = 0;
					LOC7 = !((check == NIM_NIL));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = doesimply_322021(m, check);
					LOC7 = !((LOC9 == ((NU8) 2)));
					LA8: ;
					if (!LOC7) goto LA10;
					LOC12 = 0;
					LOC12 = rendertree_212058((*n).kindU.S6.sons->data[((NI) 0)], 0);
					message_165188((*n).info, ((NU16) 251), LOC12);
					goto LA1;
				}
				LA10: ;
				res_323854 += ((NI) 1);
			} LA4: ;
		}
	} LA1: ;
}

static N_INLINE(NI, safelen_191125)(Tnode190813* 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_321446)(Tnode190813* n, Tnode190813* x) {
	NIM_BOOL result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametree_321290(n, x);
		if (!LOC3) goto LA4;
		result = NIM_TRUE;
	}
	goto LA1;
	LA4: ;
	{
		{
			NI i_321462;
			NI HEX3Atmp_321465;
			NI LOC8;
			NI res_321468;
			i_321462 = 0;
			HEX3Atmp_321465 = 0;
			LOC8 = 0;
			LOC8 = safelen_191125(n);
			HEX3Atmp_321465 = (NI)(LOC8 - ((NI) 1));
			res_321468 = ((NI) 0);
			{
				while (1) {
					if (!(res_321468 <= HEX3Atmp_321465)) goto LA10;
					i_321462 = res_321468;
					{
						NIM_BOOL LOC13;
						LOC13 = 0;
						LOC13 = hassubtree_321446((*n).kindU.S6.sons->data[i_321462], x);
						if (!LOC13) goto LA14;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA14: ;
					res_321468 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, invalidatefacts_321487)(Tnodeseq190807** m, Tnode190813* n) {
	{
		NI i_321502;
		NI HEX3Atmp_321517;
		NI res_321520;
		i_321502 = 0;
		HEX3Atmp_321517 = 0;
		HEX3Atmp_321517 = ((*m) ? ((*m)->Sup.len-1) : -1);
		res_321520 = ((NI) 0);
		{
			while (1) {
				if (!(res_321520 <= HEX3Atmp_321517)) goto LA3;
				i_321502 = res_321520;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = !(((*m)->data[i_321502] == NIM_NIL));
					if (!(LOC6)) goto LA7;
					LOC6 = hassubtree_321446((*m)->data[i_321502], n);
					LA7: ;
					if (!LOC6) goto LA8;
					asgnRefNoCycle((void**) (&(*m)->data[i_321502]), NIM_NIL);
				}
				LA8: ;
				res_321520 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(void, addasgnfact_323486)(Tnodeseq190807** m, Tnode190813* key, Tnode190813* value) {
	Tnode190813* fact;
	fact = newnodei_192407(((NU8) 27), (*key).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opeq_320249));
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 1)]), key);
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 2)]), value);
	(*m) = (Tnodeseq190807*) incrSeq(&((*m))->Sup, sizeof(Tnode190813*));
	asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len-1]), fact);
}

N_NIMCALL(NIM_BOOL, islet_320078)(Tnode190813* n) {
	NIM_BOOL result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		{
			if (!((2097696 &(1<<(((*(*n).kindU.S4.sym).kind)&31)))!=0)) goto LA7;
			result = NIM_TRUE;
		}
		goto LA5;
		LA7: ;
		{
			NIM_BOOL LOC10;
			Ttype190849* LOC12;
			LOC10 = 0;
			LOC10 = ((*(*n).kindU.S4.sym).kind == ((NU8) 3));
			if (!(LOC10)) goto LA11;
			LOC12 = 0;
			LOC12 = skiptypes_194167((*(*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_320130)(Tnode190813* 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 &(1<<(((*(*n).kindU.S4.sym).kind)&31)))!=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_320190)(Tnode190813* m, NIM_BOOL isapprox) {
	NIM_BOOL result;
	Tnode190813* 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_219428((*n).kindU.S6.sons->data[((NI) 1)]);
					if (LOC8) goto LA9;
					LOC8 = islet_320078((*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_320078(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_320130(n);
	}
	LA21: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, interestingcaseexpr_320234)(Tnode190813* m) {
	NIM_BOOL result;
	result = 0;
	result = isletlocation_320190(m, NIM_TRUE);
	return result;
}

N_NIMCALL(Ttype190849*, settype_323272)(Tnode190813* n) {
	Ttype190849* result;
	result = 0;
	result = newtype_193140(((NU8) 19), (*(*n).typ).owner);
	addsonskipintlit_238731(result, (*n).typ);
	return result;
}

N_NIMCALL(Tnode190813*, buildof_323282)(Tnode190813* it, Tnode190813* loc) {
	Tnode190813* result;
	Tnode190813* s;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = len_191097(it);
	s = newnodei_192407(((NU8) 39), (*it).info, (NI)(LOC1 - ((NI) 1)));
	asgnRefNoCycle((void**) (&(*s).typ), settype_323272(loc));
	{
		NI i_323300;
		NI HEX3Atmp_323307;
		NI LOC3;
		NI res_323310;
		i_323300 = 0;
		HEX3Atmp_323307 = 0;
		LOC3 = 0;
		LOC3 = len_191097(it);
		HEX3Atmp_323307 = (NI)(LOC3 - ((NI) 2));
		res_323310 = ((NI) 0);
		{
			while (1) {
				if (!(res_323310 <= HEX3Atmp_323307)) goto LA5;
				i_323300 = res_323310;
				asgnRefNoCycle((void**) (&(*s).kindU.S6.sons->data[i_323300]), (*it).kindU.S6.sons->data[i_323300]);
				res_323310 += ((NI) 1);
			} LA5: ;
		}
	}
	result = newnodei_192407(((NU8) 27), (*it).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opcontains_196000));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), s);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), loc);
	return result;
}

N_NIMCALL(Tnode190813*, buildelse_323329)(Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* s;
	Ttype190849* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = settype_323272((*n).kindU.S6.sons->data[((NI) 0)]);
	s = newnodeit_192807(((NU8) 39), (*n).info, LOC1);
	{
		NI i_323346;
		NI HEX3Atmp_323428;
		NI LOC3;
		NI res_323431;
		i_323346 = 0;
		HEX3Atmp_323428 = 0;
		LOC3 = 0;
		LOC3 = len_191097(n);
		HEX3Atmp_323428 = (NI)(LOC3 - ((NI) 2));
		res_323431 = ((NI) 1);
		{
			while (1) {
				Tnode190813* branch;
				if (!(res_323431 <= HEX3Atmp_323428)) goto LA5;
				i_323346 = res_323431;
				branch = (*n).kindU.S6.sons->data[i_323346];
				{
					NI j_323412;
					NI HEX3Atmp_323421;
					NI LOC7;
					NI res_323424;
					j_323412 = 0;
					HEX3Atmp_323421 = 0;
					LOC7 = 0;
					LOC7 = len_191097(branch);
					HEX3Atmp_323421 = (NI)(LOC7 - ((NI) 2));
					res_323424 = ((NI) 0);
					{
						while (1) {
							if (!(res_323424 <= HEX3Atmp_323421)) goto LA9;
							j_323412 = res_323424;
							add_191164(s, (*branch).kindU.S6.sons->data[j_323412]);
							res_323424 += ((NI) 1);
						} LA9: ;
					}
				}
				res_323431 += ((NI) 1);
			} LA5: ;
		}
	}
	result = newnodei_192407(((NU8) 27), (*n).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opcontains_196000));
	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_323537)(Tnodeseq190807** m, Tnode190813* n, NI i) {
	Tnode190813* branch;
	branch = (*n).kindU.S6.sons->data[i];
	{
		Tnode190813* LOC5;
		if (!((*branch).kind == ((NU8) 85))) goto LA3;
		LOC5 = 0;
		LOC5 = buildof_323282(branch, (*n).kindU.S6.sons->data[((NI) 0)]);
		(*m) = (Tnodeseq190807*) incrSeq(&((*m))->Sup, sizeof(Tnode190813*));
		asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len-1]), LOC5);
	}
	goto LA1;
	LA3: ;
	{
		Tnode190813* LOC7;
		Tnode190813* LOC8;
		LOC7 = 0;
		LOC7 = buildelse_323329(n);
		LOC8 = 0;
		LOC8 = neg_320274(LOC7);
		(*m) = (Tnodeseq190807*) incrSeq(&((*m))->Sup, sizeof(Tnode190813*));
		asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len-1]), LOC8);
	}
	LA1: ;
}

N_NIMCALL(Tnode190813*, usefulfact_321022)(Tnode190813* n) {
	Tnode190813* result;
	NU16 LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getmagic_219403(n);
	switch (LOC1) {
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	{
		{
			NIM_BOOL LOC5;
			Tnode190813* LOC6;
			NIM_BOOL LOC8;
			LOC5 = 0;
			LOC6 = 0;
			LOC6 = skipconv_229935((*n).kindU.S6.sons->data[((NI) 2)]);
			LOC5 = ((*LOC6).kind == ((NU8) 23));
			if (!(LOC5)) goto LA7;
			LOC8 = 0;
			LOC8 = isletlocation_320190((*n).kindU.S6.sons->data[((NI) 1)], NIM_FALSE);
			if (LOC8) goto LA9;
			LOC8 = isvar_320130((*n).kindU.S6.sons->data[((NI) 1)]);
			LA9: ;
			LOC5 = LOC8;
			LA7: ;
			if (!LOC5) goto LA10;
			result = buildcall_320429(opisnil_320248, (*n).kindU.S6.sons->data[((NI) 1)]);
		}
		goto LA3;
		LA10: ;
		{
			{
				NIM_BOOL LOC15;
				LOC15 = 0;
				LOC15 = isletlocation_320190((*n).kindU.S6.sons->data[((NI) 1)], NIM_TRUE);
				if (LOC15) goto LA16;
				LOC15 = isletlocation_320190((*n).kindU.S6.sons->data[((NI) 2)], NIM_TRUE);
				LA16: ;
				if (!LOC15) goto LA17;
				result = n;
			}
			LA17: ;
		}
		LA3: ;
	}
	break;
	case ((NU16) 77) ... ((NU16) 78):
	case ((NU16) 80) ... ((NU16) 81):
	case ((NU16) 83) ... ((NU16) 88):
	case ((NU16) 90) ... ((NU16) 91):
	case ((NU16) 93) ... ((NU16) 94):
	case ((NU16) 96) ... ((NU16) 97):
	case ((NU16) 100) ... ((NU16) 101):
	case ((NU16) 140) ... ((NU16) 141):
	{
		{
			NIM_BOOL LOC22;
			LOC22 = 0;
			LOC22 = isletlocation_320190((*n).kindU.S6.sons->data[((NI) 1)], NIM_TRUE);
			if (LOC22) goto LA23;
			LOC22 = isletlocation_320190((*n).kindU.S6.sons->data[((NI) 2)], NIM_TRUE);
			LA23: ;
			if (!LOC22) goto LA24;
			result = n;
		}
		LA24: ;
	}
	break;
	case ((NU16) 168):
	{
		{
			NIM_BOOL LOC29;
			LOC29 = 0;
			LOC29 = isletlocation_320190((*n).kindU.S6.sons->data[((NI) 1)], NIM_FALSE);
			if (LOC29) goto LA30;
			LOC29 = isvar_320130((*n).kindU.S6.sons->data[((NI) 1)]);
			LA30: ;
			if (!LOC29) goto LA31;
			result = n;
		}
		LA31: ;
	}
	break;
	case ((NU16) 158):
	case ((NU16) 159):
	{
		{
			NIM_BOOL LOC36;
			LOC36 = 0;
			LOC36 = isletlocation_320190((*n).kindU.S6.sons->data[((NI) 1)], NIM_TRUE);
			if (!LOC36) goto LA37;
			result = n;
		}
		LA37: ;
	}
	break;
	case ((NU16) 137):
	{
		Tnode190813* a;
		Tnode190813* b;
		a = usefulfact_321022((*n).kindU.S6.sons->data[((NI) 1)]);
		b = usefulfact_321022((*n).kindU.S6.sons->data[((NI) 2)]);
		{
			NIM_BOOL LOC42;
			LOC42 = 0;
			LOC42 = !((a == NIM_NIL));
			if (!(LOC42)) goto LA43;
			LOC42 = !((b == NIM_NIL));
			LA43: ;
			if (!LOC42) goto LA44;
			result = newnodei_192407(((NU8) 27), (*n).info, ((NI) 3));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opand_320246));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), b);
		}
		goto LA40;
		LA44: ;
		{
			if (!!((a == NIM_NIL))) goto LA47;
			result = a;
		}
		goto LA40;
		LA47: ;
		{
			if (!!((b == NIM_NIL))) goto LA50;
			result = b;
		}
		goto LA40;
		LA50: ;
		LA40: ;
	}
	break;
	case ((NU16) 109):
	{
		Tnode190813* a;
		a = usefulfact_321022((*n).kindU.S6.sons->data[((NI) 1)]);
		{
			if (!!((a == NIM_NIL))) goto LA55;
			result = neg_320274(a);
		}
		LA55: ;
	}
	break;
	case ((NU16) 138):
	{
		Tnode190813* a;
		Tnode190813* LOC58;
		Tnode190813* b;
		Tnode190813* LOC59;
		LOC58 = 0;
		LOC58 = usefulfact_321022((*n).kindU.S6.sons->data[((NI) 1)]);
		a = neg_320274(LOC58);
		LOC59 = 0;
		LOC59 = usefulfact_321022((*n).kindU.S6.sons->data[((NI) 2)]);
		b = neg_320274(LOC59);
		{
			NIM_BOOL LOC62;
			LOC62 = 0;
			LOC62 = !((a == NIM_NIL));
			if (!(LOC62)) goto LA63;
			LOC62 = !((b == NIM_NIL));
			LA63: ;
			if (!LOC62) goto LA64;
			result = newnodei_192407(((NU8) 27), (*n).info, ((NI) 3));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opand_320246));
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), b);
			result = neg_320274(result);
		}
		LA64: ;
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC69;
			LOC69 = 0;
			LOC69 = ((*n).kind == ((NU8) 3));
			if (!(LOC69)) goto LA70;
			LOC69 = ((*(*n).kindU.S4.sym).kind == ((NU8) 9));
			LA70: ;
			if (!LOC69) goto LA71;
			{
				if (!!(((*(*n).kindU.S4.sym).ast == NIM_NIL))) goto LA75;
				result = usefulfact_321022((*(*n).kindU.S4.sym).ast);
			}
			LA75: ;
		}
		goto LA67;
		LA71: ;
		{
			Tnode190813* LOC80;
			if (!((*n).kind == ((NU8) 126))) goto LA78;
			LOC80 = 0;
			LOC80 = lastson_193431(n);
			result = usefulfact_321022(LOC80);
		}
		goto LA67;
		LA78: ;
		LA67: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(void, addfact_321220)(Tnodeseq190807** m, Tnode190813* n_321224) {
	Tnode190813* n;
	n = usefulfact_321022(n_321224);
	{
		if (!!((n == NIM_NIL))) goto LA3;
		(*m) = (Tnodeseq190807*) incrSeq(&((*m))->Sup, sizeof(Tnode190813*));
		asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len-1]), n);
	}
	LA3: ;
}

N_NIMCALL(void, addfactneg_321254)(Tnodeseq190807** m, Tnode190813* n_321258) {
	Tnode190813* n;
	n = neg_320274(n_321258);
	{
		if (!!((n == NIM_NIL))) goto LA3;
		addfact_321220(m, n);
	}
	LA3: ;
}

N_NIMCALL(void, adddiscriminantfact_323459)(Tnodeseq190807** m, Tnode190813* n) {
	Tnode190813* fact;
	fact = newnodei_192407(((NU8) 27), (*n).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*fact).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(opeq_320249));
	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) = (Tnodeseq190807*) incrSeq(&((*m))->Sup, sizeof(Tnode190813*));
	asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len-1]), fact);
}

N_NIMCALL(Tnode190813*, buildcall_320442)(Tsym190843* op, Tnode190813* a, Tnode190813* b) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192407(((NU8) 29), (*a).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(op));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), a);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), b);
	return result;
}

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

N_NIMCALL(Tnode190813*, minusone_320588)(void) {
	Tnode190813* result;
	result = 0;
	result = newintnode_191607(((NU8) 6), IL64(-1));
	return result;
}

N_NIMCALL(Tnode190813*, negate_320513)(Tnode190813* a, Tnode190813* b_320516, Tnode190813* res) {
	Tnode190813* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode190813* b;
		LOC3 = 0;
		LOC3 = ((*b_320516).kind >= ((NU8) 5) && (*b_320516).kind <= ((NU8) 15));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*b_320516).kindU.S1.intval == (IL64(-9223372036854775807) - IL64(1))));
		LA4: ;
		if (!LOC3) goto LA5;
		b = copynode_194640(b_320516);
		(*b).kindU.S1.intval = -((*b).kindU.S1.intval);
		{
			if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA9;
			(*b).kindU.S1.intval = HEX7CHEX2BHEX7C_255019((*b).kindU.S1.intval, (*a).kindU.S1.intval);
			result = b;
		}
		goto LA7;
		LA9: ;
		{
			result = buildcall_320442(opadd_320250, a, b);
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		Tnode190813* b;
		if (!((*b_320516).kind >= ((NU8) 16) && (*b_320516).kind <= ((NU8) 18))) goto LA13;
		b = copynode_194640(b_320516);
		(*b).kindU.S2.floatval = -((*b).kindU.S2.floatval);
		result = buildcall_320442(opadd_320250, a, b);
	}
	goto LA1;
	LA13: ;
	{
		result = res;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, HEX7CHEX2BHEX7C_320457)(Tnode190813* a, Tnode190813* b) {
	Tnode190813* result;
	result = 0;
	result = copynode_194640(a);
	{
		if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA3;
		(*result).kindU.S1.intval = HEX7CHEX2BHEX7C_255019((*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(Tnode190813*, HEX7CHEX2AHEX7C_320485)(Tnode190813* a, Tnode190813* b) {
	Tnode190813* result;
	result = 0;
	result = copynode_194640(a);
	{
		if (!((*a).kind >= ((NU8) 5) && (*a).kind <= ((NU8) 15))) goto LA3;
		(*result).kindU.S1.intval = HEX7CHEX2AHEX7C_255073((*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(Tnode190813*, reassociation_320662)(Tnode190813* n) {
	Tnode190813* result;
	NU16 LOC1;
	result = 0;
	result = n;
	LOC1 = 0;
	LOC1 = getmagic_219403(result);
	switch (LOC1) {
	case ((NU16) 41):
	case ((NU16) 46):
	case ((NU16) 53):
	case ((NU16) 51):
	{
		{
			NIM_BOOL LOC5;
			NIM_BOOL LOC6;
			Tnode190813* LOC7;
			Tnode190813* LOC9;
			NU16 LOC10;
			Tnode190813* LOC12;
			Tnode190813* LOC13;
			Tnode190813* LOC16;
			Tnode190813* LOC17;
			Tnode190813* LOC18;
			Tnode190813* LOC19;
			Tnode190813* LOC20;
			Tnode190813* LOC21;
			LOC5 = 0;
			LOC6 = 0;
			LOC7 = 0;
			LOC7 = HEX5BHEX5D_191244(result, ((NI) 2));
			LOC6 = isvalue_320046(LOC7);
			if (!(LOC6)) goto LA8;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC10 = 0;
			LOC10 = getmagic_219403(LOC9);
			LOC6 = (LOC10 == ((NU16) 41) || LOC10 == ((NU16) 46) || LOC10 == ((NU16) 53) || LOC10 == ((NU16) 51));
			LA8: ;
			LOC5 = LOC6;
			if (!(LOC5)) goto LA11;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_191244(LOC12, ((NI) 2));
			LOC5 = isvalue_320046(LOC13);
			LA11: ;
			if (!LOC5) goto LA14;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_191244(LOC16, ((NI) 1));
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC19 = 0;
			LOC19 = HEX5BHEX5D_191244(LOC18, ((NI) 2));
			LOC20 = 0;
			LOC20 = HEX5BHEX5D_191244(result, ((NI) 2));
			LOC21 = 0;
			LOC21 = HEX7CHEX2BHEX7C_320457(LOC19, LOC20);
			result = buildcall_320442(opadd_320250, LOC17, LOC21);
		}
		LA14: ;
	}
	break;
	case ((NU16) 43):
	case ((NU16) 48):
	case ((NU16) 55):
	{
		{
			NIM_BOOL LOC25;
			NIM_BOOL LOC26;
			Tnode190813* LOC27;
			Tnode190813* LOC29;
			NU16 LOC30;
			Tnode190813* LOC32;
			Tnode190813* LOC33;
			Tnode190813* LOC36;
			Tnode190813* LOC37;
			Tnode190813* LOC38;
			Tnode190813* LOC39;
			Tnode190813* LOC40;
			Tnode190813* LOC41;
			LOC25 = 0;
			LOC26 = 0;
			LOC27 = 0;
			LOC27 = HEX5BHEX5D_191244(result, ((NI) 2));
			LOC26 = isvalue_320046(LOC27);
			if (!(LOC26)) goto LA28;
			LOC29 = 0;
			LOC29 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC30 = 0;
			LOC30 = getmagic_219403(LOC29);
			LOC26 = (LOC30 == ((NU16) 43) || LOC30 == ((NU16) 48) || LOC30 == ((NU16) 55));
			LA28: ;
			LOC25 = LOC26;
			if (!(LOC25)) goto LA31;
			LOC32 = 0;
			LOC32 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC33 = 0;
			LOC33 = HEX5BHEX5D_191244(LOC32, ((NI) 2));
			LOC25 = isvalue_320046(LOC33);
			LA31: ;
			if (!LOC25) goto LA34;
			LOC36 = 0;
			LOC36 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC37 = 0;
			LOC37 = HEX5BHEX5D_191244(LOC36, ((NI) 1));
			LOC38 = 0;
			LOC38 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC39 = 0;
			LOC39 = HEX5BHEX5D_191244(LOC38, ((NI) 2));
			LOC40 = 0;
			LOC40 = HEX5BHEX5D_191244(result, ((NI) 2));
			LOC41 = 0;
			LOC41 = HEX7CHEX2AHEX7C_320485(LOC39, LOC40);
			result = buildcall_320442(opadd_320250, LOC37, LOC41);
		}
		LA34: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, canon_320735)(Tnode190813* n) {
	Tnode190813* result;
	NU16 LOC19;
	NU16 LOC51;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = safelen_191125(n);
		if (!(((NI) 1) <= LOC3)) goto LA4;
		result = shallowcopy_194817(n);
		{
			NI i_320759;
			NI HEX3Atmp_320988;
			NI LOC7;
			NI res_320991;
			i_320759 = 0;
			HEX3Atmp_320988 = 0;
			LOC7 = 0;
			LOC7 = len_191097(n);
			HEX3Atmp_320988 = (LOC7 - 1);
			res_320991 = ((NI) 0);
			{
				while (1) {
					if (!(res_320991 <= HEX3Atmp_320988)) goto LA9;
					i_320759 = res_320991;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_320759]), canon_320735((*n).kindU.S6.sons->data[i_320759]));
					res_320991 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC11;
		NIM_BOOL LOC12;
		NU16 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_219403((*(*n).kindU.S4.sym).ast);
		LOC11 = ((TMP4007[LOC15/8] &(1<<(LOC15%8)))!=0);
		LA14: ;
		if (!LOC11) goto LA16;
		result = copytree_195028((*(*n).kindU.S4.sym).ast);
	}
	goto LA1;
	LA16: ;
	{
		result = n;
	}
	LA1: ;
	LOC19 = 0;
	LOC19 = getmagic_219403(result);
	switch (LOC19) {
	case ((NU16) 76):
	case ((NU16) 41):
	case ((NU16) 43):
	case ((NU16) 62):
	case ((NU16) 63):
	case ((NU16) 79):
	case ((NU16) 82):
	case ((NU16) 89):
	case ((NU16) 92):
	case ((NU16) 95):
	case ((NU16) 98):
	case ((NU16) 104):
	case ((NU16) 99):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 102):
	case ((NU16) 46):
	case ((NU16) 53):
	case ((NU16) 51):
	case ((NU16) 48):
	case ((NU16) 55):
	case ((NU16) 69):
	case ((NU16) 70):
	{
		{
			NIM_BOOL LOC23;
			NIM_BOOL LOC25;
			LOC23 = 0;
			LOC23 = isvalue_320046((*result).kindU.S6.sons->data[((NI) 1)]);
			if (!(LOC23)) goto LA24;
			LOC25 = 0;
			LOC25 = isvalue_320046((*result).kindU.S6.sons->data[((NI) 2)]);
			LOC23 = !(LOC25);
			LA24: ;
			if (!LOC23) goto LA26;
			result = swapargs_320258(result, (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		}
		LA26: ;
	}
	break;
	case ((NU16) 5):
	{
		Tnode190813* LOC29;
		Tnode190813* LOC30;
		Tnode190813* LOC31;
		LOC29 = 0;
		LOC29 = HEX5BHEX5D_191244(result, ((NI) 1));
		LOC30 = 0;
		LOC30 = buildcall_320429(oplen_320254, LOC29);
		LOC31 = 0;
		LOC31 = minusone_320588();
		result = buildcall_320442(opadd_320250, LOC30, LOC31);
	}
	break;
	case ((NU16) 22):
	{
		Tnode190813* LOC33;
		Tnode190813* LOC34;
		LOC33 = 0;
		LOC33 = HEX5BHEX5D_191244(result, ((NI) 1));
		LOC34 = 0;
		LOC34 = newintnode_191607(((NU8) 6), IL64(-1));
		result = buildcall_320442(opadd_320250, LOC33, LOC34);
	}
	break;
	case ((NU16) 42):
	case ((NU16) 47):
	case ((NU16) 54):
	case ((NU16) 52):
	{
		Tnode190813* LOC36;
		Tnode190813* LOC37;
		LOC36 = 0;
		LOC36 = HEX5BHEX5D_191244(result, ((NI) 1));
		LOC37 = 0;
		LOC37 = HEX5BHEX5D_191244(result, ((NI) 2));
		result = negate_320513(LOC36, LOC37, result);
	}
	break;
	case ((NU16) 29):
	case ((NU16) 30):
	case ((NU16) 31):
	case ((NU16) 32):
	case ((NU16) 33):
	case ((NU16) 34):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(oplen_320254));
	}
	break;
	case ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 84):
	case ((NU16) 86):
	case ((NU16) 88):
	case ((NU16) 91):
	case ((NU16) 94):
	case ((NU16) 97):
	case ((NU16) 101):
	case ((NU16) 141):
	{
		Tnode190813* y;
		Tnode190813* LOC40;
		Tnode190813* p;
		Tnode190813* minus;
		Tnode190813* LOC48;
		Tnode190813* LOC49;
		LOC40 = 0;
		LOC40 = HEX5BHEX5D_191244(n, ((NI) 2));
		y = canon_320735(LOC40);
		p = pred_320701(y);
		{
			if (!!((p == y))) goto LA43;
			minus = p;
		}
		goto LA41;
		LA43: ;
		{
			Tnode190813* LOC46;
			Tnode190813* LOC47;
			LOC46 = 0;
			LOC46 = minusone_320588();
			LOC47 = 0;
			LOC47 = buildcall_320442(opadd_320250, y, LOC46);
			minus = canon_320735(LOC47);
		}
		LA41: ;
		LOC48 = 0;
		LOC48 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC49 = 0;
		LOC49 = canon_320735(LOC48);
		result = buildcall_320442(ople_320244, LOC49, minus);
	}
	break;
	default:
	{
	}
	break;
	}
	result = skipconv_229935(result);
	result = reassociation_320662(result);
	LOC51 = 0;
	LOC51 = getmagic_219403(result);
	switch (LOC51) {
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 83):
	case ((NU16) 85):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	case ((NU16) 96):
	case ((NU16) 100):
	case ((NU16) 140):
	{
		Tnode190813* x;
		Tnode190813* y;
		x = HEX5BHEX5D_191244(result, ((NI) 1));
		y = HEX5BHEX5D_191244(result, ((NI) 2));
		{
			NIM_BOOL LOC55;
			NIM_BOOL LOC56;
			NIM_BOOL LOC57;
			NI LOC59;
			Tnode190813* LOC61;
			Tnode190813* LOC63;
			NU16 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_191097(x);
			LOC57 = (LOC59 == ((NI) 3));
			LA58: ;
			LOC56 = LOC57;
			if (!(LOC56)) goto LA60;
			LOC61 = 0;
			LOC61 = HEX5BHEX5D_191244(x, ((NI) 2));
			LOC56 = isvalue_320046(LOC61);
			LA60: ;
			LOC55 = LOC56;
			if (!(LOC55)) goto LA62;
			LOC63 = 0;
			LOC63 = HEX5BHEX5D_191244(x, ((NI) 1));
			LOC55 = isletlocation_320190(LOC63, NIM_TRUE);
			LA62: ;
			if (!LOC55) goto LA64;
			LOC66 = 0;
			LOC66 = getmagic_219403(x);
			switch (LOC66) {
			case ((NU16) 42):
			case ((NU16) 47):
			case ((NU16) 54):
			case ((NU16) 52):
			{
				Tnode190813* LOC68;
				Tnode190813* LOC69;
				Tnode190813* LOC70;
				Tnode190813* LOC71;
				Tnode190813* LOC72;
				LOC68 = 0;
				LOC68 = HEX5BHEX5D_191244(result, ((NI) 0));
				LOC69 = 0;
				LOC69 = HEX5BHEX5D_191244(x, ((NI) 1));
				LOC70 = 0;
				LOC70 = HEX5BHEX5D_191244(x, ((NI) 2));
				LOC71 = 0;
				LOC71 = buildcall_320442(opadd_320250, y, LOC70);
				LOC72 = 0;
				LOC72 = reassociation_320662(LOC71);
				result = buildcall_320442((*LOC68).kindU.S4.sym, LOC69, LOC72);
			}
			break;
			case ((NU16) 41):
			case ((NU16) 46):
			case ((NU16) 53):
			case ((NU16) 51):
			{
				Tnode190813* plus;
				Tnode190813* LOC74;
				Tnode190813* LOC75;
				LOC74 = 0;
				LOC74 = HEX5BHEX5D_191244(x, ((NI) 2));
				LOC75 = 0;
				LOC75 = negate_320513(y, LOC74, NIM_NIL);
				plus = reassociation_320662(LOC75);
				{
					Tnode190813* LOC80;
					Tnode190813* LOC81;
					if (!!((plus == NIM_NIL))) goto LA78;
					LOC80 = 0;
					LOC80 = HEX5BHEX5D_191244(result, ((NI) 0));
					LOC81 = 0;
					LOC81 = HEX5BHEX5D_191244(x, ((NI) 1));
					result = buildcall_320442((*LOC80).kindU.S4.sym, LOC81, plus);
				}
				LA78: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA53;
		LA64: ;
		{
			NIM_BOOL LOC84;
			NIM_BOOL LOC85;
			NIM_BOOL LOC86;
			NI LOC88;
			Tnode190813* LOC90;
			Tnode190813* LOC92;
			NU16 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_191097(y);
			LOC86 = (LOC88 == ((NI) 3));
			LA87: ;
			LOC85 = LOC86;
			if (!(LOC85)) goto LA89;
			LOC90 = 0;
			LOC90 = HEX5BHEX5D_191244(y, ((NI) 2));
			LOC85 = isvalue_320046(LOC90);
			LA89: ;
			LOC84 = LOC85;
			if (!(LOC84)) goto LA91;
			LOC92 = 0;
			LOC92 = HEX5BHEX5D_191244(y, ((NI) 1));
			LOC84 = isletlocation_320190(LOC92, NIM_TRUE);
			LA91: ;
			if (!LOC84) goto LA93;
			LOC95 = 0;
			LOC95 = getmagic_219403(y);
			switch (LOC95) {
			case ((NU16) 42):
			case ((NU16) 47):
			case ((NU16) 54):
			case ((NU16) 52):
			{
				Tnode190813* LOC97;
				Tnode190813* LOC98;
				Tnode190813* LOC99;
				Tnode190813* LOC100;
				Tnode190813* LOC101;
				LOC97 = 0;
				LOC97 = HEX5BHEX5D_191244(result, ((NI) 0));
				LOC98 = 0;
				LOC98 = HEX5BHEX5D_191244(y, ((NI) 1));
				LOC99 = 0;
				LOC99 = HEX5BHEX5D_191244(y, ((NI) 2));
				LOC100 = 0;
				LOC100 = buildcall_320442(opadd_320250, x, LOC99);
				LOC101 = 0;
				LOC101 = reassociation_320662(LOC100);
				result = buildcall_320442((*LOC97).kindU.S4.sym, LOC98, LOC101);
			}
			break;
			case ((NU16) 41):
			case ((NU16) 46):
			case ((NU16) 53):
			case ((NU16) 51):
			{
				Tnode190813* plus;
				Tnode190813* LOC103;
				Tnode190813* LOC104;
				LOC103 = 0;
				LOC103 = HEX5BHEX5D_191244(y, ((NI) 2));
				LOC104 = 0;
				LOC104 = negate_320513(x, LOC103, NIM_NIL);
				plus = reassociation_320662(LOC104);
				{
					NIM_BOOL LOC107;
					NIM_BOOL LOC109;
					Tnode190813* LOC112;
					Tnode190813* LOC113;
					LOC107 = 0;
					LOC107 = !((plus == NIM_NIL));
					if (!(LOC107)) goto LA108;
					LOC109 = 0;
					LOC109 = isletlocation_320190(x, NIM_TRUE);
					LOC107 = !(LOC109);
					LA108: ;
					if (!LOC107) goto LA110;
					LOC112 = 0;
					LOC112 = HEX5BHEX5D_191244(result, ((NI) 0));
					LOC113 = 0;
					LOC113 = HEX5BHEX5D_191244(y, ((NI) 1));
					result = buildcall_320442((*LOC112).kindU.S4.sym, plus, LOC113);
				}
				LA110: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		goto LA53;
		LA93: ;
		LA53: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(void, addfactle_323249)(Tnodeseq190807** m, Tnode190813* a, Tnode190813* b) {
	Tnode190813* LOC1;
	Tnode190813* LOC2;
	LOC1 = 0;
	LOC1 = buildcall_320442(ople_320244, a, b);
	LOC2 = 0;
	LOC2 = canon_320735(LOC1);
	(*m) = (Tnodeseq190807*) incrSeq(&((*m))->Sup, sizeof(Tnode190813*));
	asgnRefNoCycle((void**) (&(*m)->data[(*m)->Sup.len-1]), LOC2);
}

N_NIMCALL(Tnode190813*, zero_320570)(void) {
	Tnode190813* result;
	result = 0;
	result = newintnode_191607(((NU8) 6), IL64(0));
	return result;
}

N_NIMCALL(Tnode190813*, one_320579)(void) {
	Tnode190813* result;
	result = 0;
	result = newintnode_191607(((NU8) 6), IL64(1));
	return result;
}
N_NIMCALL(void, TMP4009)(void* p, NI op) {
	Treplacements322560* a;
	NI LOC1;
	a = (Treplacements322560*)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(Tnode190813*, replacesubtree_322567)(Tnode190813* n, Tnode190813* x, Tnode190813* by) {
	Tnode190813* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametree_321290(n, x);
		if (!LOC3) goto LA4;
		result = by;
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = hassubtree_321446(n, x);
		if (!LOC7) goto LA8;
		result = shallowcopy_194817(n);
		{
			NI i_322583;
			NI HEX3Atmp_322587;
			NI LOC11;
			NI res_322590;
			i_322583 = 0;
			HEX3Atmp_322587 = 0;
			LOC11 = 0;
			LOC11 = safelen_191125(n);
			HEX3Atmp_322587 = (NI)(LOC11 - ((NI) 1));
			res_322590 = ((NI) 0);
			{
				while (1) {
					if (!(res_322590 <= HEX3Atmp_322587)) goto LA13;
					i_322583 = res_322590;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_322583]), replacesubtree_322567((*n).kindU.S6.sons->data[i_322583], x, by));
					res_322590 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	goto LA1;
	LA8: ;
	{
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, applyreplacements_322609)(Tnode190813* n, Treplacements322560* rep) {
	Tnode190813* result;
	result = 0;
	result = n;
	{
		TY432269 x_322811;
		NI i_322816;
		NI L_322818;
		memset((void*)(&x_322811), 0, sizeof(x_322811));
		i_322816 = ((NI) 0);
		L_322818 = (rep ? rep->Sup.len : 0);
		{
			while (1) {
				if (!(i_322816 < L_322818)) goto LA3;
				x_322811.Field0 = rep->data[i_322816].Field0;
				x_322811.Field1 = rep->data[i_322816].Field1;
				result = replacesubtree_322567(result, x_322811.Field0, x_322811.Field1);
				i_322816 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(NU8, pleviamodelrec_322834)(Tnodeseq190807** m, Tnode190813* a, Tnode190813* b) {
	NU8 result;
{	result = 0;
	{
		NI i_322851;
		NI HEX3Atmp_323002;
		NI res_323005;
		i_322851 = 0;
		HEX3Atmp_323002 = 0;
		HEX3Atmp_323002 = ((*m) ? ((*m)->Sup.len-1) : -1);
		res_323005 = ((NI) 0);
		{
			while (1) {
				Tnode190813* fact;
				if (!(res_323005 <= HEX3Atmp_323002)) goto LA3;
				i_322851 = res_323005;
				fact = (*m)->data[i_322851];
				{
					NIM_BOOL LOC6;
					NU16 LOC8;
					Tnode190813* x;
					Tnode190813* y;
					LOC6 = 0;
					LOC6 = !((fact == NIM_NIL));
					if (!(LOC6)) goto LA7;
					LOC8 = 0;
					LOC8 = getmagic_219403(fact);
					LOC6 = ((TMP4011[LOC8/8] &(1<<(LOC8%8)))!=0);
					LA7: ;
					if (!LOC6) goto LA9;
					x = HEX5BHEX5D_191244(fact, ((NI) 1));
					y = HEX5BHEX5D_191244(fact, ((NI) 2));
					asgnRefNoCycle((void**) (&(*m)->data[i_322851]), NIM_NIL);
					{
						NU8 LOC13;
						LOC13 = 0;
						LOC13 = ple_322306((*m), a, x);
						if (!(LOC13 == ((NU8) 2))) goto LA14;
						{
							NU8 LOC18;
							LOC18 = 0;
							LOC18 = ple_322306((*m), y, b);
							if (!(LOC18 == ((NU8) 2))) goto LA19;
							result = ((NU8) 2);
							goto BeforeRet;
						}
						LA19: ;
					}
					LA14: ;
					result = impliesle_321888(fact, a, b);
					{
						if (!!((result == ((NU8) 0)))) goto LA23;
						goto BeforeRet;
					}
					LA23: ;
				}
				LA9: ;
				res_323005 += ((NI) 1);
			} LA3: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, pleviamodel_322298)(Tnodeseq190807* model, Tnode190813* aa, Tnode190813* bb) {
	NU8 result;
	Treplacements322560* replacements;
	Tnodeseq190807* m;
	Tnode190813* a;
	Tnode190813* b;
	result = 0;
	replacements = (Treplacements322560*) newSeq((&NTI322560), 0);
	{
		Tnode190813* fact_323056;
		NI i_323189;
		NI L_323191;
		fact_323056 = 0;
		i_323189 = ((NI) 0);
		L_323191 = (model ? model->Sup.len : 0);
		{
			while (1) {
				if (!(i_323189 < L_323191)) goto LA3;
				fact_323056 = model->data[i_323189];
				{
					NIM_BOOL LOC6;
					NU16 LOC8;
					Tnode190813* a;
					Tnode190813* b;
					LOC6 = 0;
					LOC6 = !((fact_323056 == NIM_NIL));
					if (!(LOC6)) goto LA7;
					LOC8 = 0;
					LOC8 = getmagic_219403(fact_323056);
					LOC6 = ((TMP4010[LOC8/8] &(1<<(LOC8%8)))!=0);
					LA7: ;
					if (!LOC6) goto LA9;
					a = HEX5BHEX5D_191244(fact_323056, ((NI) 1));
					b = HEX5BHEX5D_191244(fact_323056, ((NI) 2));
					{
						TY432269 LOC15;
						if (!((*a).kind == ((NU8) 3))) goto LA13;
						memset((void*)(&LOC15), 0, sizeof(LOC15));
						LOC15.Field0 = a;
						LOC15.Field1 = b;
						replacements = (Treplacements322560*) incrSeq(&(replacements)->Sup, sizeof(TY432269));
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len-1].Field0), LOC15.Field0);
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len-1].Field1), LOC15.Field1);
					}
					goto LA11;
					LA13: ;
					{
						TY432269 LOC17;
						memset((void*)(&LOC17), 0, sizeof(LOC17));
						LOC17.Field0 = b;
						LOC17.Field1 = a;
						replacements = (Treplacements322560*) incrSeq(&(replacements)->Sup, sizeof(TY432269));
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len-1].Field0), LOC17.Field0);
						asgnRefNoCycle((void**) (&replacements->data[replacements->Sup.len-1].Field1), LOC17.Field1);
					}
					LA11: ;
				}
				LA9: ;
				i_323189 += ((NI) 1);
			} LA3: ;
		}
	}
	m = 0;
	a = aa;
	b = bb;
	{
		if (!(((NI) 0) < (replacements ? replacements->Sup.len : 0))) goto LA20;
		m = (Tnodeseq190807*) newSeq((&NTI190807), 0);
		{
			Tnode190813* fact_323149;
			NI i_323196;
			NI L_323198;
			fact_323149 = 0;
			i_323196 = ((NI) 0);
			L_323198 = (model ? model->Sup.len : 0);
			{
				while (1) {
					if (!(i_323196 < L_323198)) goto LA24;
					fact_323149 = model->data[i_323196];
					{
						NIM_BOOL LOC27;
						NU16 LOC29;
						Tnode190813* LOC32;
						Tnode190813* LOC33;
						LOC27 = 0;
						LOC27 = !((fact_323149 == NIM_NIL));
						if (!(LOC27)) goto LA28;
						LOC29 = 0;
						LOC29 = getmagic_219403(fact_323149);
						LOC27 = !(((TMP4010[LOC29/8] &(1<<(LOC29%8)))!=0));
						LA28: ;
						if (!LOC27) goto LA30;
						LOC32 = 0;
						LOC32 = applyreplacements_322609(fact_323149, replacements);
						LOC33 = 0;
						LOC33 = canon_320735(LOC32);
						m = (Tnodeseq190807*) incrSeq(&(m)->Sup, sizeof(Tnode190813*));
						asgnRefNoCycle((void**) (&m->data[m->Sup.len-1]), LOC33);
					}
					LA30: ;
					i_323196 += ((NI) 1);
				} LA24: ;
			}
		}
		a = applyreplacements_322609(aa, replacements);
		b = applyreplacements_322609(bb, replacements);
	}
	goto LA18;
	LA20: ;
	{
		genericSeqAssign((&m), model, (&NTI190807));
	}
	LA18: ;
	result = pleviamodelrec_322834((&m), a, b);
	return result;
}

N_NIMCALL(NU8, ple_322306)(Tnodeseq190807* m, Tnode190813* a, Tnode190813* b) {
	NU8 result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isvalue_320046(a);
		if (!(LOC3)) goto LA4;
		LOC3 = isvalue_320046(b);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = levalue_198374(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_320046(b);
		if (!(LOC16)) goto LA17;
		LOC16 = !(((*a).typ == NIM_NIL));
		LA17: ;
		LOC15 = LOC16;
		if (!(LOC15)) goto LA18;
		LOC15 = isordinaltype_220093((*a).typ);
		LA18: ;
		if (!LOC15) goto LA19;
		{
			NI64 LOC23;
			LOC23 = 0;
			LOC23 = lastord_220010((*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_320046(a);
		if (!(LOC29)) goto LA30;
		LOC29 = !(((*b).typ == NIM_NIL));
		LA30: ;
		LOC28 = LOC29;
		if (!(LOC28)) goto LA31;
		LOC28 = isordinaltype_220093((*b).typ);
		LA31: ;
		if (!LOC28) goto LA32;
		{
			NI64 LOC36;
			LOC36 = 0;
			LOC36 = firstord_220004((*b).typ);
			if (!(LOC36 <= (*a).kindU.S1.intval)) goto LA37;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA37: ;
	}
	LA32: ;
	{
		NIM_BOOL LOC41;
		LOC41 = 0;
		LOC41 = sametree_321290(a, b);
		if (!LOC41) goto LA42;
		result = ((NU8) 2);
		goto BeforeRet;
	}
	LA42: ;
	{
		NIM_BOOL LOC46;
		NU16 LOC47;
		LOC46 = 0;
		LOC47 = 0;
		LOC47 = getmagic_219403(b);
		LOC46 = (LOC47 == ((NU16) 29) || LOC47 == ((NU16) 30) || LOC47 == ((NU16) 31) || LOC47 == ((NU16) 32) || LOC47 == ((NU16) 33) || LOC47 == ((NU16) 34));
		if (!(LOC46)) goto LA48;
		LOC46 = isvalue_320046(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;
		NU16 LOC59;
		Tnode190813* LOC61;
		Tnode190813* LOC62;
		NU8 LOC63;
		Tnode190813* LOC65;
		NU8 LOC66;
		LOC57 = 0;
		LOC58 = 0;
		LOC59 = 0;
		LOC59 = getmagic_219403(b);
		LOC58 = (LOC59 == ((NU16) 41) || LOC59 == ((NU16) 46) || LOC59 == ((NU16) 53) || LOC59 == ((NU16) 51));
		if (!(LOC58)) goto LA60;
		LOC61 = 0;
		LOC61 = zero_320570();
		LOC62 = 0;
		LOC62 = HEX5BHEX5D_191244(b, ((NI) 2));
		LOC63 = 0;
		LOC63 = ple_322306(m, LOC61, LOC62);
		LOC58 = (LOC63 == ((NU8) 2));
		LA60: ;
		LOC57 = LOC58;
		if (!(LOC57)) goto LA64;
		LOC65 = 0;
		LOC65 = HEX5BHEX5D_191244(b, ((NI) 1));
		LOC66 = 0;
		LOC66 = ple_322306(m, a, LOC65);
		LOC57 = (LOC66 == ((NU8) 2));
		LA64: ;
		if (!LOC57) goto LA67;
		result = ((NU8) 2);
		goto BeforeRet;
	}
	LA67: ;
	{
		NIM_BOOL LOC71;
		NIM_BOOL LOC72;
		NU16 LOC73;
		Tnode190813* LOC75;
		Tnode190813* LOC76;
		NU8 LOC77;
		Tnode190813* LOC79;
		NU8 LOC80;
		LOC71 = 0;
		LOC72 = 0;
		LOC73 = 0;
		LOC73 = getmagic_219403(a);
		LOC72 = (LOC73 == ((NU16) 41) || LOC73 == ((NU16) 46) || LOC73 == ((NU16) 53) || LOC73 == ((NU16) 51));
		if (!(LOC72)) goto LA74;
		LOC75 = 0;
		LOC75 = HEX5BHEX5D_191244(a, ((NI) 2));
		LOC76 = 0;
		LOC76 = zero_320570();
		LOC77 = 0;
		LOC77 = ple_322306(m, LOC75, LOC76);
		LOC72 = (LOC77 == ((NU8) 2));
		LA74: ;
		LOC71 = LOC72;
		if (!(LOC71)) goto LA78;
		LOC79 = 0;
		LOC79 = HEX5BHEX5D_191244(a, ((NI) 1));
		LOC80 = 0;
		LOC80 = ple_322306(m, LOC79, b);
		LOC71 = (LOC80 == ((NU8) 2));
		LA78: ;
		if (!LOC71) goto LA81;
		result = ((NU8) 2);
		goto BeforeRet;
	}
	LA81: ;
	{
		NU16 LOC85;
		LOC85 = 0;
		LOC85 = getmagic_219403(b);
		if (!(LOC85 == ((NU16) 43) || LOC85 == ((NU16) 48) || LOC85 == ((NU16) 55))) goto LA86;
		{
			NIM_BOOL LOC90;
			NIM_BOOL LOC91;
			Tnode190813* LOC92;
			NU8 LOC93;
			Tnode190813* LOC95;
			Tnode190813* LOC96;
			NU8 LOC97;
			Tnode190813* LOC99;
			Tnode190813* LOC100;
			NU8 LOC101;
			LOC90 = 0;
			LOC91 = 0;
			LOC92 = 0;
			LOC92 = HEX5BHEX5D_191244(b, ((NI) 1));
			LOC93 = 0;
			LOC93 = ple_322306(m, a, LOC92);
			LOC91 = (LOC93 == ((NU8) 2));
			if (!(LOC91)) goto LA94;
			LOC95 = 0;
			LOC95 = one_320579();
			LOC96 = 0;
			LOC96 = HEX5BHEX5D_191244(b, ((NI) 2));
			LOC97 = 0;
			LOC97 = ple_322306(m, LOC95, LOC96);
			LOC91 = (LOC97 == ((NU8) 2));
			LA94: ;
			LOC90 = LOC91;
			if (!(LOC90)) goto LA98;
			LOC99 = 0;
			LOC99 = zero_320570();
			LOC100 = 0;
			LOC100 = HEX5BHEX5D_191244(b, ((NI) 1));
			LOC101 = 0;
			LOC101 = ple_322306(m, LOC99, LOC100);
			LOC90 = (LOC101 == ((NU8) 2));
			LA98: ;
			if (!LOC90) goto LA102;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA102: ;
	}
	LA86: ;
	{
		NU16 LOC106;
		LOC106 = 0;
		LOC106 = getmagic_219403(a);
		if (!(LOC106 == ((NU16) 44) || LOC106 == ((NU16) 49) || LOC106 == ((NU16) 56))) goto LA107;
		{
			NIM_BOOL LOC111;
			NIM_BOOL LOC112;
			Tnode190813* LOC113;
			Tnode190813* LOC114;
			NU8 LOC115;
			Tnode190813* LOC117;
			NU8 LOC118;
			Tnode190813* LOC120;
			NU8 LOC121;
			LOC111 = 0;
			LOC112 = 0;
			LOC113 = 0;
			LOC113 = one_320579();
			LOC114 = 0;
			LOC114 = HEX5BHEX5D_191244(a, ((NI) 2));
			LOC115 = 0;
			LOC115 = ple_322306(m, LOC113, LOC114);
			LOC112 = (LOC115 == ((NU8) 2));
			if (!(LOC112)) goto LA116;
			LOC117 = 0;
			LOC117 = zero_320570();
			LOC118 = 0;
			LOC118 = ple_322306(m, LOC117, b);
			LOC112 = (LOC118 == ((NU8) 2));
			LA116: ;
			LOC111 = LOC112;
			if (!(LOC111)) goto LA119;
			LOC120 = 0;
			LOC120 = HEX5BHEX5D_191244(a, ((NI) 1));
			LOC121 = 0;
			LOC121 = ple_322306(m, LOC120, b);
			LOC111 = (LOC121 == ((NU8) 2));
			LA119: ;
			if (!LOC111) goto LA122;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA122: ;
	}
	LA107: ;
	{
		NU16 LOC126;
		LOC126 = 0;
		LOC126 = getmagic_219403(b);
		if (!(LOC126 == ((NU16) 63) || LOC126 == ((NU16) 70))) goto LA127;
		{
			NIM_BOOL LOC131;
			Tnode190813* LOC132;
			NU8 LOC133;
			Tnode190813* LOC135;
			NU8 LOC136;
			LOC131 = 0;
			LOC132 = 0;
			LOC132 = HEX5BHEX5D_191244(b, ((NI) 1));
			LOC133 = 0;
			LOC133 = ple_322306(m, a, LOC132);
			LOC131 = (LOC133 == ((NU8) 2));
			if (LOC131) goto LA134;
			LOC135 = 0;
			LOC135 = HEX5BHEX5D_191244(b, ((NI) 2));
			LOC136 = 0;
			LOC136 = ple_322306(m, a, LOC135);
			LOC131 = (LOC136 == ((NU8) 2));
			LA134: ;
			if (!LOC131) goto LA137;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA137: ;
	}
	LA127: ;
	{
		NU16 LOC141;
		LOC141 = 0;
		LOC141 = getmagic_219403(a);
		if (!(LOC141 == ((NU16) 62) || LOC141 == ((NU16) 69))) goto LA142;
		{
			NIM_BOOL LOC146;
			Tnode190813* LOC147;
			NU8 LOC148;
			Tnode190813* LOC150;
			NU8 LOC151;
			LOC146 = 0;
			LOC147 = 0;
			LOC147 = HEX5BHEX5D_191244(a, ((NI) 1));
			LOC148 = 0;
			LOC148 = ple_322306(m, LOC147, b);
			LOC146 = (LOC148 == ((NU8) 2));
			if (LOC146) goto LA149;
			LOC150 = 0;
			LOC150 = HEX5BHEX5D_191244(a, ((NI) 2));
			LOC151 = 0;
			LOC151 = ple_322306(m, LOC150, b);
			LOC146 = (LOC151 == ((NU8) 2));
			LA149: ;
			if (!LOC146) goto LA152;
			result = ((NU8) 2);
			goto BeforeRet;
		}
		LA152: ;
	}
	LA142: ;
	result = pleviamodel_322298(m, a, b);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, provele_323223)(Tnodeseq190807* m, Tnode190813* a, Tnode190813* b) {
	NU8 result;
	Tnode190813* x;
	Tnode190813* LOC1;
	Tnode190813* LOC2;
	Tnode190813* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = buildcall_320442(ople_320244, a, b);
	x = canon_320735(LOC1);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_191244(x, ((NI) 1));
	LOC3 = 0;
	LOC3 = HEX5BHEX5D_191244(x, ((NI) 2));
	result = ple_322306(m, LOC2, LOC3);
	{
		Tnode190813* y;
		Tnode190813* LOC8;
		Tnode190813* LOC9;
		Tnode190813* LOC10;
		Tnode190813* LOC11;
		Tnode190813* LOC12;
		NU8 LOC13;
		if (!(result == ((NU8) 0))) goto LA6;
		LOC8 = 0;
		LOC8 = one_320579();
		LOC9 = 0;
		LOC9 = buildcall_320442(opadd_320250, b, LOC8);
		LOC10 = 0;
		LOC10 = buildcall_320442(ople_320244, LOC9, a);
		y = canon_320735(LOC10);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_191244(y, ((NI) 1));
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_191244(y, ((NI) 2));
		LOC13 = 0;
		LOC13 = ple_322306(m, LOC11, LOC12);
		result = HEX7E_321961(LOC13);
	}
	LA6: ;
	return result;
}

N_NIMCALL(Tnode190813*, lowbound_320597)(Tnode190813* x) {
	Tnode190813* result;
	NI64 LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = firstord_220004((*x).typ);
	result = newintnode_191607(((NU8) 6), LOC1);
	(*result).info = (*x).info;
	return result;
}

N_NIMCALL(Tnode190813*, highbound_320607)(Tnode190813* x) {
	Tnode190813* result;
	Ttype190849* typ;
	result = 0;
	typ = skiptypes_194167((*x).typ, IL64(211106232576256));
	{
		NI64 LOC5;
		if (!((65552 &(IL64(1)<<(((*typ).kind)&IL64(63))))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = lastord_220010(typ);
		result = newintnode_191607(((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_191097((*(*x).kindU.S4.sym).ast);
		result = newintnode_191607(((NU8) 6), ((NI64) ((NI)(LOC13 - ((NI) 1)))));
	}
	goto LA1;
	LA11: ;
	{
		Tnode190813* LOC15;
		Tnode190813* LOC16;
		LOC15 = 0;
		LOC15 = buildcall_320429(oplen_320254, x);
		LOC16 = 0;
		LOC16 = minusone_320588();
		result = buildcall_320442(opadd_320250, LOC15, LOC16);
	}
	LA1: ;
	(*result).info = (*x).info;
	return result;
}

N_NIMCALL(Tnode190813*, HEX2BHEX40_321010)(Tnode190813* a, NI64 b) {
	Tnode190813* result;
	Tnode190813* LOC1;
	result = 0;
	LOC1 = 0;
	{
		Tnode190813* LOC6;
		if (!!((b == IL64(0)))) goto LA4;
		LOC6 = 0;
		LOC6 = newintnode_191607(((NU8) 6), b);
		LOC1 = buildcall_320442(opadd_320250, a, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		LOC1 = a;
	}
	LA2: ;
	result = canon_320735(LOC1);
	return result;
}

N_NIMCALL(NI64, simpleslice_322264)(Tnode190813* a, Tnode190813* b) {
	NI64 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametree_321290(a, b);
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			NU16 LOC9;
			Tnode190813* LOC11;
			Tnode190813* LOC14;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = getmagic_219403(a);
			LOC8 = (LOC9 == ((NU16) 41) || LOC9 == ((NU16) 46) || LOC9 == ((NU16) 53) || LOC9 == ((NU16) 51));
			if (!(LOC8)) goto LA10;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_191244(a, ((NI) 2));
			LOC8 = ((*LOC11).kind >= ((NU8) 5) && (*LOC11).kind <= ((NU8) 15));
			LA10: ;
			if (!LOC8) goto LA12;
			LOC14 = 0;
			LOC14 = HEX5BHEX5D_191244(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, nimsrc_guardsInit)(void) {
	asgnRefNoCycle((void**) (&ople_320244), createmagic_195987(((NimStringDesc*) &TMP903), ((NU16) 77)));
	asgnRefNoCycle((void**) (&oplt_320245), createmagic_195987(((NimStringDesc*) &TMP904), ((NU16) 78)));
	asgnRefNoCycle((void**) (&opand_320246), createmagic_195987(((NimStringDesc*) &TMP905), ((NU16) 137)));
	asgnRefNoCycle((void**) (&opor_320247), createmagic_195987(((NimStringDesc*) &TMP906), ((NU16) 138)));
	asgnRefNoCycle((void**) (&opisnil_320248), createmagic_195987(((NimStringDesc*) &TMP907), ((NU16) 168)));
	asgnRefNoCycle((void**) (&opeq_320249), createmagic_195987(((NimStringDesc*) &TMP908), ((NU16) 76)));
	asgnRefNoCycle((void**) (&opadd_320250), createmagic_195987(((NimStringDesc*) &TMP909), ((NU16) 41)));
	asgnRefNoCycle((void**) (&opsub_320251), createmagic_195987(((NimStringDesc*) &TMP910), ((NU16) 42)));
	asgnRefNoCycle((void**) (&opmul_320252), createmagic_195987(((NimStringDesc*) &TMP911), ((NU16) 43)));
	asgnRefNoCycle((void**) (&opdiv_320253), createmagic_195987(((NimStringDesc*) &TMP912), ((NU16) 44)));
	asgnRefNoCycle((void**) (&oplen_320254), createmagic_195987(((NimStringDesc*) &TMP913), ((NU16) 32)));
}

NIM_EXTERNC N_NOINLINE(void, nimsrc_guardsDatInit)(void) {
NTI322560.size = sizeof(Treplacements322560*);
NTI322560.kind = 24;
NTI322560.base = (&NTI432269);
NTI322560.flags = 2;
NTI322560.marker = TMP4009;
}

