/* 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 <math.h>

#include <setjmp.h>

#include <string.h>
typedef struct Tnode190813 Tnode190813;
typedef struct Ttype190849 Ttype190849;
typedef struct Tlineinfo163338 Tlineinfo163338;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tsym190843 Tsym190843;
typedef struct Tident167021 Tident167021;
typedef struct Tnodeseq190807 Tnodeseq190807;
typedef struct Tidobj167015 Tidobj167015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
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 Tcell46347 Tcell46347;
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 Tinfocpu159479 Tinfocpu159479;
typedef struct Tinfoos159049 Tinfoos159049;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct TY86345 TY86345;
typedef struct Tinstantiation190833 Tinstantiation190833;
typedef struct Tlistentry130022 Tlistentry130022;
typedef struct Tbasechunk27438 Tbasechunk27438;
typedef struct Tfreecell27430 Tfreecell27430;
typedef struct TY190933 TY190933;
struct  Tlineinfo163338  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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  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  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;
};
struct Tinfocpu159479 {
NimStringDesc* Field0;
NI Field1;
NU8 Field2;
NI Field3;
NI Field4;
};
typedef Tinfocpu159479 TY159497[14];
struct Tinfoos159049 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
NimStringDesc* Field3;
NimStringDesc* Field4;
NimStringDesc* Field5;
NimStringDesc* Field6;
NimStringDesc* Field7;
NimStringDesc* Field8;
NimStringDesc* Field9;
NimStringDesc* Field10;
NimStringDesc* Field11;
NU8 Field12;
};
typedef Tinfoos159049 TY159071[24];
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e, void* ClEnv);
void* ClEnv;
} TY15609;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY15609 raiseAction;
};
struct  Tident167021  {
  Tidobj167015 Sup;
NimStringDesc* s;
Tident167021* next;
NI h;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TY86345 {
NimStringDesc* Field0;
NI Field1;
};
typedef NimStringDesc* TY154965[2];
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;
};
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  Tinstantiation190833  {
Tsym190843* sym;
Ttypeseq190845* concretetypes;
TY190933* usedby;
};
struct  Tfreecell27430  {
Tfreecell27430* next;
NI zerofield;
};
struct Tnodeseq190807 {
  TGenericSeq Sup;
  Tnode190813* 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(void, internalerror_165199)(Tlineinfo163338 info, NimStringDesc* errmsg);
N_NIMCALL(Tnode190813*, newsymnode_192338)(Tsym190843* sym, Tlineinfo163338 info);
N_NIMCALL(Ttype190849*, newtype_193140)(NU8 kind, Tsym190843* owner);
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(void, addsonskipintlit_238731)(Ttype190849* father, Ttype190849* son);
N_NIMCALL(Ttype190849*, skiptypes_194167)(Ttype190849* t, NU64 kinds);
N_NIMCALL(Tnode190813*, newintnode_191607)(NU8 kind, NI64 intval);
N_NIMCALL(Ttype190849*, getintlittype_238660)(Tnode190813* literal);
N_NIMCALL(Tnode190813*, newstrnode_191643)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(Tnode190813*, newintnodet_256028)(NI64 intval, Tnode190813* n);
N_NIMCALL(Tnode190813*, newstrnodet_256042)(NimStringDesc* strval, Tnode190813* n);
N_NIMCALL(NimStringDesc*, ntgetDateStr)(void);
N_NIMCALL(NimStringDesc*, ntgetClockStr)(void);
N_NIMCALL(NimStringDesc*, nsuToLowerStr)(NimStringDesc* s);
N_NIMCALL(Tnode190813*, getapptype_257231)(Tnode190813* n);
N_NIMCALL(Tnode190813*, newfloatnodet_256035)(NF floatval, Tnode190813* n);
N_NIMCALL(Tnode190813*, newfloatnode_191631)(NU8 kind, NF floatval);
N_NIMCALL(Ttype190849*, getfloatlittype_238688)(Tnode190813* literal);
N_NIMCALL(Tnode190813*, copytree_195028)(Tnode190813* src);
N_NIMCALL(Tnode190813*, newsymnodetypedesc_257736)(Tsym190843* s, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, copynode_194640)(Tnode190813* src);
N_NIMCALL(Tnode190813*, getconstifexpr_256949)(Tsym190843* c, Tnode190813* n);
N_NIMCALL(NI, sonslen_193403)(Tnode190813* n);
static N_INLINE(NI, len_191097)(Tnode190813* n);
N_NIMCALL(Tnode190813*, getconstexpr_256004)(Tsym190843* m, Tnode190813* n);
N_NIMCALL(NI64, getordvalue_220178)(Tnode190813* n);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NI64, computesize_220184)(Ttype190849* typ);
N_NIMCALL(void, localerror_165155)(Tlineinfo163338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NI64, getsize_220190)(Ttype190849* typ);
N_NIMCALL(NI64, firstord_220004)(Ttype190849* t);
N_NIMCALL(NI64, lastord_220010)(Ttype190849* t);
static N_INLINE(Tnode190813*, HEX5BHEX5D_191244)(Tnode190813* n, NI i);
N_NIMCALL(Tnode190813*, getarrayconstr_257296)(Tsym190843* m, Tnode190813* n);
N_NIMCALL(Tnode190813*, magiccall_257172)(Tsym190843* m, Tnode190813* n);
N_NIMCALL(Tnode190813*, evalop_256011)(NU16 m, Tnode190813* n, Tnode190813* a, Tnode190813* b, Tnode190813* c);
N_NIMCALL(NI64, getint_195605)(Tnode190813* a);
N_NIMCALL(NF, getfloat_195616)(Tnode190813* a);
N_NIMCALL(NI64, cardset_240089)(Tnode190813* s);
N_NIMCALL(NimStringDesc*, getstr_195628)(Tnode190813* a);
N_NIMCALL(NI64, lengthord_220016)(Ttype190849* t);
static N_INLINE(NI, cmpStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NIM_BOOL, containssets_240075)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NIM_BOOL, equalsets_240082)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tnode190813*, intersectsets_240061)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tnode190813*, unionsets_240047)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tnode190813*, diffsets_240054)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tnode190813*, symdiffsets_240068)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NimStringDesc*, getstrorchar_195639)(Tnode190813* a);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, inset_240019)(Tnode190813* s, Tnode190813* elem);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_76243, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
N_NIMCALL(NimStringDesc*, ordinalvaltostring_256091)(Tnode190813* a);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NIM_BOOL, testcompileoption_176631)(NimStringDesc* switch_176633, Tlineinfo163338 info);
N_NIMCALL(NIM_BOOL, testcompileoptionarg_176518)(NimStringDesc* switch_176520, NimStringDesc* arg, Tlineinfo163338 info);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_82529, TNimType* typ);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, rendertree_212058)(Tnode190813* n, NU8 renderflags);
N_NIMCALL(Tnode190813*, foldconstrstr_257679)(Tsym190843* m, Tnode190813* n);
N_NIMCALL(Tnode190813*, newnodeit_192807)(NU8 kind, Tlineinfo163338 info, Ttype190849* typ);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(Tnode190813*, evalis_256580)(Tnode190813* n, Tnode190813* a);
N_NIMCALL(void, internalerror_165218)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_165306)(TY86345 x);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(NIM_BOOL, sametype_225092)(Ttype190849* a, Ttype190849* b, NU8 flags);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_52222)(Tcell46347* c);
static N_INLINE(NIM_BOOL, canbecycleroot_49867)(Tcell46347* c);
static N_INLINE(void, rtladdcycleroot_50623)(Tcell46347* c);
N_NOINLINE(void, incl_47065)(Tcellset46359* s, Tcell46347* cell);
static N_INLINE(void, decref_51804)(Tcell46347* c);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, addson_192819)(Tnode190813* father, Tnode190813* son);
N_NIMCALL(NIM_BOOL, levalueconv_256021)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, msgkindtostring_164616)(NU16 kind);
N_NIMCALL(NimStringDesc*, typetostring_220032)(Ttype190849* typ, NU8 prefer);
N_NIMCALL(Tnode190813*, foldconv_257281)(Tnode190813* n, Tnode190813* a, NIM_BOOL check);
N_NIMCALL(void, rangecheck_257271)(Tnode190813* n, NI64 value);
N_NIMCALL(Tnode190813*, foldarrayaccess_257328)(Tsym190843* m, Tnode190813* n);
N_NIMCALL(Tnode190813*, foldfieldaccess_257403)(Tsym190843* m, Tnode190813* n);
static N_INLINE(NIM_BOOL, isintrange_256197)(Ttype190849* t);
N_NIMCALL(Ttype190849*, makerange_256294)(Ttype190849* typ, NI64 first, NI64 last);
N_NIMCALL(Tnode190813*, newnode_191401)(NU8 kind);
N_NIMCALL(NI64, HEX7CHEX2DHEX7C_255030)(NI64 a, NI64 b);
static N_INLINE(NIM_BOOL, isfloatrange_256167)(Ttype190849* t);
N_NIMCALL(Ttype190849*, makerangef_256339)(Ttype190849* typ, NF first, NF last);
N_NIMCALL(NI64, HEX7CabsHEX7C_255041)(NI64 a);
static N_INLINE(NIM_BOOL, isintlit_220327)(Ttype190849* t);
N_NIMCALL(NI64, HEX7CHEX2BHEX7C_255019)(NI64 a, NI64 b);
N_NIMCALL(NI64, pickminint_256248)(Tnode190813* n);
N_NIMCALL(NI64, pickmaxint_256271)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, isintrangeorlit_256238)(Ttype190849* t);
N_NIMCALL(Ttype190849*, pickintrange_256227)(Ttype190849* a, Ttype190849* b);
N_NIMCALL(NI64, HEX7CHEX2AHEX7C_255073)(NI64 a, NI64 b);
N_NIMCALL(NI64, HEX7CdivHEX7C_255051)(NI64 a, NI64 b);
STRING_LITERAL(TMP2811, "leValueConv", 11);
extern NIM_CONST TY159497 Cpu_159496;
extern NIM_CONST TY159071 Os_159070;
STRING_LITERAL(TMP3222, "lib", 3);
STRING_LITERAL(TMP3223, "staticlib", 9);
STRING_LITERAL(TMP3224, "gui", 3);
STRING_LITERAL(TMP3225, "console", 7);
STRING_LITERAL(TMP3226, "getConstIfExpr()", 16);
STRING_LITERAL(TMP3228, "sizeof", 6);
STRING_LITERAL(TMP3232, "constant folding for shl", 24);
STRING_LITERAL(TMP3233, "constant folding for shr", 24);
STRING_LITERAL(TMP3235, "false", 5);
STRING_LITERAL(TMP3236, "true", 4);
STRING_LITERAL(TMP3237, "ordinalValToString", 18);
STRING_LITERAL(TMP3238, "no symbol for ordinal value: ", 29);
STRING_LITERAL(TMP3239, "evalOp(", 7);
STRING_LITERAL(TMP3240, "", 0);
STRING_LITERAL(TMP3242, "semfold.nim", 11);
NIM_CONST TY86345 TMP3241 = {((NimStringDesc*) &TMP3242),
((NI) 252)}
;
NIM_CONST TY86345 TMP3243 = {((NimStringDesc*) &TMP3242),
((NI) 253)}
;
STRING_LITERAL(TMP3244, "closure", 7);
STRING_LITERAL(TMP3245, "iterator", 8);
STRING_LITERAL(TMP3246, "cannot convert ", 15);
STRING_LITERAL(TMP3247, " to ", 4);
STRING_LITERAL(TMP3248, "pickMinInt", 10);
STRING_LITERAL(TMP3249, "pickMaxInt", 10);
extern Tgcheap48216 gch_48244;
extern NU8 targetcpu_159600;
extern NU8 targetos_159602;
extern NU32 gglobaloptions_154128;
extern TSafePoint* exchandler_17043;
extern TNimType NTI190529; /* TMagic */
extern TNimType NTI3443; /* OverflowError */
extern Exception* currexception_17045;
extern TNimType NTI3441; /* DivByZeroError */

N_NIMCALL(NIM_BOOL, levalueconv_256021)(Tnode190813* a, Tnode190813* b) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	switch ((*a).kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		switch ((*b).kind) {
		case ((NU8) 5) ... ((NU8) 15):
		{
			result = ((*a).kindU.S1.intval <= (*b).kindU.S1.intval);
		}
		break;
		case ((NU8) 16) ... ((NU8) 19):
		{
			NI LOC4;
			LOC4 = 0;
			LOC4 = lrint((*b).kindU.S2.floatval);
			result = ((*a).kindU.S1.intval <= ((NI64) (LOC4)));
		}
		break;
		default:
		{
			internalerror_165199((*a).info, ((NimStringDesc*) &TMP2811));
		}
		break;
		}
	}
	break;
	case ((NU8) 16) ... ((NU8) 19):
	{
		switch ((*b).kind) {
		case ((NU8) 16) ... ((NU8) 19):
		{
			result = ((*a).kindU.S2.floatval <= (*b).kindU.S2.floatval);
		}
		break;
		case ((NU8) 5) ... ((NU8) 15):
		{
			result = ((*a).kindU.S2.floatval <= ((double) (((NI) ((*b).kindU.S1.intval)))));
		}
		break;
		default:
		{
			internalerror_165199((*a).info, ((NimStringDesc*) &TMP2811));
		}
		break;
		}
	}
	break;
	default:
	{
		internalerror_165199((*a).info, ((NimStringDesc*) &TMP2811));
	}
	break;
	}
	return result;
}

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(Tnode190813*, newsymnodetypedesc_257736)(Tsym190843* s, Tlineinfo163338 info) {
	Tnode190813* result;
	result = 0;
	result = newsymnode_192338(s, info);
	asgnRefNoCycle((void**) (&(*result).typ), newtype_193140(((NU8) 8), (*s).owner));
	addsonskipintlit_238731((*result).typ, (*s).typ);
	return result;
}

N_NIMCALL(Tnode190813*, newintnodet_256028)(NI64 intval, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_194167((*n).typ, IL64(211106242013440));
	switch ((*LOC1).kind) {
	case ((NU8) 31):
	{
		result = newintnode_191607(((NU8) 6), intval);
		asgnRefNoCycle((void**) (&(*result).typ), getintlittype_238660(result));
	}
	break;
	case ((NU8) 2):
	{
		result = newintnode_191607(((NU8) 5), intval);
		asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	}
	break;
	default:
	{
		result = newintnode_191607(((NU8) 6), intval);
		asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	}
	break;
	}
	(*result).info = (*n).info;
	return result;
}

N_NIMCALL(Tnode190813*, newstrnodet_256042)(NimStringDesc* strval, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newstrnode_191643(((NU8) 20), strval);
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	(*result).info = (*n).info;
	return result;
}

N_NIMCALL(Tnode190813*, getapptype_257231)(Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	{
		if (!((gglobaloptions_154128 &(1<<((((NU8) 8))&31)))!=0)) goto LA3;
		result = newstrnodet_256042(((NimStringDesc*) &TMP3222), n);
	}
	goto LA1;
	LA3: ;
	{
		if (!((gglobaloptions_154128 &(1<<((((NU8) 9))&31)))!=0)) goto LA6;
		result = newstrnodet_256042(((NimStringDesc*) &TMP3223), n);
	}
	goto LA1;
	LA6: ;
	{
		if (!((gglobaloptions_154128 &(1<<((((NU8) 10))&31)))!=0)) goto LA9;
		result = newstrnodet_256042(((NimStringDesc*) &TMP3224), n);
	}
	goto LA1;
	LA9: ;
	{
		result = newstrnodet_256042(((NimStringDesc*) &TMP3225), n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, newfloatnodet_256035)(NF floatval, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newfloatnode_191631(((NU8) 16), floatval);
	{
		Ttype190849* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_194167((*n).typ, IL64(211106242013440));
		if (!((*LOC3).kind == ((NU8) 36))) goto LA4;
		asgnRefNoCycle((void**) (&(*result).typ), getfloatlittype_238688(result));
	}
	goto LA1;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	}
	LA1: ;
	(*result).info = (*n).info;
	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(Tnode190813*, getconstifexpr_256949)(Tsym190843* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	result = NIM_NIL;
	{
		NI i_256966;
		NI HEX3Atmp_257024;
		NI LOC2;
		NI res_257027;
		i_256966 = 0;
		HEX3Atmp_257024 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_257024 = (NI)(LOC2 - ((NI) 1));
		res_257027 = ((NI) 0);
		{
			while (1) {
				Tnode190813* it;
				if (!(res_257027 <= HEX3Atmp_257024)) goto LA4;
				i_256966 = res_257027;
				it = (*n).kindU.S6.sons->data[i_256966];
				{
					NI LOC7;
					Tnode190813* e;
					LOC7 = 0;
					LOC7 = len_191097(it);
					if (!(LOC7 == ((NI) 2))) goto LA8;
					e = getconstexpr_256004(c, (*it).kindU.S6.sons->data[((NI) 0)]);
					{
						if (!(e == NIM_NIL)) goto LA12;
						result = NIM_NIL;
						goto BeforeRet;
					}
					LA12: ;
					{
						NI64 LOC16;
						LOC16 = 0;
						LOC16 = getordvalue_220178(e);
						if (!!((LOC16 == IL64(0)))) goto LA17;
						{
							if (!(result == NIM_NIL)) goto LA21;
							result = getconstexpr_256004(c, (*it).kindU.S6.sons->data[((NI) 1)]);
							{
								if (!(result == NIM_NIL)) goto LA25;
								goto BeforeRet;
							}
							LA25: ;
						}
						LA21: ;
					}
					LA17: ;
				}
				goto LA5;
				LA8: ;
				{
					NI LOC28;
					LOC28 = 0;
					LOC28 = len_191097(it);
					if (!(LOC28 == ((NI) 1))) goto LA29;
					{
						if (!(result == NIM_NIL)) goto LA33;
						result = getconstexpr_256004(c, (*it).kindU.S6.sons->data[((NI) 0)]);
					}
					LA33: ;
				}
				goto LA5;
				LA29: ;
				{
					internalerror_165199((*it).info, ((NimStringDesc*) &TMP3226));
				}
				LA5: ;
				res_257027 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
	(*s).hasRaiseAction = NIM_FALSE;
	(*s).prev = exchandler_17043;
	exchandler_17043 = s;
}

static N_INLINE(void, popSafePoint)(void) {
	exchandler_17043 = (*exchandler_17043).prev;
}

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*, getarrayconstr_257296)(Tsym190843* m, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 41))) goto LA3;
		result = n;
	}
	goto LA1;
	LA3: ;
	{
		result = getconstexpr_256004(m, n);
		{
			if (!(result == NIM_NIL)) goto LA8;
			result = n;
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, cmpStrings)(NimStringDesc* a, NimStringDesc* b) {
	NI result;
	int LOC13;
{	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = ((NI) 0);
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(a == NIM_NIL)) goto LA7;
		result = ((NI) -1);
		goto BeforeRet;
	}
	LA7: ;
	{
		if (!(b == NIM_NIL)) goto LA11;
		result = ((NI) 1);
		goto BeforeRet;
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = strcmp(((NCSTRING) ((*a).data)), ((NCSTRING) ((*b).data)));
	result = ((NI) (LOC13));
	goto BeforeRet;
	}BeforeRet: ;
	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;
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	memcpy(((NCSTRING) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((NCSTRING) ((*src).data)), (NI)((*src).Sup.len + ((NI) 1)));
	(*dest).Sup.len += (*src).Sup.len;
}

N_NIMCALL(NimStringDesc*, ordinalvaltostring_256091)(Tnode190813* a) {
	NimStringDesc* result;
	NI64 x;
	Ttype190849* t;
{	result = 0;
	x = getint_195605(a);
	t = skiptypes_194167((*a).typ, IL64(211106233624832));
	switch ((*t).kind) {
	case ((NU8) 2):
	{
		result = nimCharToStr(((NIM_CHAR) ((NI)(((NI) (x)) & ((NI) 255)))));
	}
	break;
	case ((NU8) 14):
	{
		Tnode190813* n;
		NimStringDesc* LOC20;
		NimStringDesc* LOC21;
		n = (*t).n;
		{
			NI i_256112;
			NI HEX3Atmp_256145;
			NI LOC4;
			NI res_256148;
			i_256112 = 0;
			HEX3Atmp_256145 = 0;
			LOC4 = 0;
			LOC4 = sonslen_193403(n);
			HEX3Atmp_256145 = (NI)(LOC4 - ((NI) 1));
			res_256148 = ((NI) 0);
			{
				while (1) {
					Tsym190843* field;
					if (!(res_256148 <= HEX3Atmp_256145)) goto LA6;
					i_256112 = res_256148;
					{
						if (!!(((*(*n).kindU.S6.sons->data[i_256112]).kind == ((NU8) 3)))) goto LA9;
						internalerror_165199((*a).info, ((NimStringDesc*) &TMP3237));
					}
					LA9: ;
					field = (*(*n).kindU.S6.sons->data[i_256112]).kindU.S4.sym;
					{
						if (!(((NI64) ((*field).position)) == x)) goto LA13;
						{
							if (!((*field).ast == NIM_NIL)) goto LA17;
							result = copyString((*(*field).name).s);
							goto BeforeRet;
						}
						goto LA15;
						LA17: ;
						{
							result = copyString((*(*field).ast).kindU.S3.strval);
							goto BeforeRet;
						}
						LA15: ;
					}
					LA13: ;
					res_256148 += ((NI) 1);
				} LA6: ;
			}
		}
		LOC20 = 0;
		LOC21 = 0;
		LOC21 = nimInt64ToStr(x);
		LOC20 = rawNewString(LOC21->Sup.len + 29);
appendString(LOC20, ((NimStringDesc*) &TMP3238));
appendString(LOC20, LOC21);
		internalerror_165199((*a).info, LOC20);
	}
	break;
	default:
	{
		result = nimInt64ToStr(x);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[((*dest).Sup.len)- 0] = c;
	(*dest).data[((NI)((*dest).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest).Sup.len += ((NI) 1);
}

N_NIMCALL(Tnode190813*, evalop_256011)(NU16 m, Tnode190813* n, Tnode190813* a, Tnode190813* b, Tnode190813* c) {
	Tnode190813* result;
	result = 0;
	result = NIM_NIL;
	switch (m) {
	case ((NU16) 25):
	{
		NI64 LOC2;
		LOC2 = 0;
		LOC2 = getordvalue_220178(a);
		result = newintnodet_256028(LOC2, n);
	}
	break;
	case ((NU16) 38):
	{
		NI64 LOC4;
		LOC4 = 0;
		LOC4 = getint_195605(a);
		result = newintnodet_256028(LOC4, n);
	}
	break;
	case ((NU16) 105):
	case ((NU16) 106):
	{
		NI64 LOC6;
		LOC6 = 0;
		LOC6 = getint_195605(a);
		result = newintnodet_256028(-(LOC6), n);
	}
	break;
	case ((NU16) 114):
	{
		NF LOC8;
		LOC8 = 0;
		LOC8 = getfloat_195616(a);
		result = newfloatnodet_256035(-(LOC8), n);
	}
	break;
	case ((NU16) 109):
	{
		NI64 LOC10;
		LOC10 = 0;
		LOC10 = getint_195605(a);
		result = newintnodet_256028((NI64)(IL64(1) - LOC10), n);
	}
	break;
	case ((NU16) 37):
	{
		NI64 LOC12;
		LOC12 = 0;
		LOC12 = cardset_240089(a);
		result = newintnodet_256028(LOC12, n);
	}
	break;
	case ((NU16) 111):
	case ((NU16) 112):
	{
		NI64 LOC14;
		LOC14 = 0;
		LOC14 = getint_195605(a);
		result = newintnodet_256028((NI64)((NU64) ~(LOC14)), n);
	}
	break;
	case ((NU16) 30):
	case ((NU16) 33):
	{
		{
			if (!((*a).kind == ((NU8) 23))) goto LA18;
			result = newintnodet_256028(IL64(0), n);
		}
		goto LA16;
		LA18: ;
		{
			NimStringDesc* LOC21;
			LOC21 = 0;
			LOC21 = getstr_195628(a);
			result = newintnodet_256028(((NI64) ((LOC21 ? LOC21->Sup.len : 0))), n);
		}
		LA16: ;
	}
	break;
	case ((NU16) 31):
	{
		NI64 LOC23;
		LOC23 = 0;
		LOC23 = lengthord_220016((*a).typ);
		result = newintnodet_256028(LOC23, n);
	}
	break;
	case ((NU16) 32):
	case ((NU16) 29):
	case ((NU16) 34):
	{
		{
			if (!((*a).kind == ((NU8) 23))) goto LA27;
			result = newintnodet_256028(IL64(0), n);
		}
		goto LA25;
		LA27: ;
		{
			NI LOC30;
			LOC30 = 0;
			LOC30 = sonslen_193403(a);
			result = newintnodet_256028(((NI64) (LOC30)), n);
		}
		LA25: ;
	}
	break;
	case ((NU16) 110):
	case ((NU16) 113):
	{
		result = a;
	}
	break;
	case ((NU16) 125):
	case ((NU16) 126):
	{
		NI64 LOC33;
		LOC33 = 0;
		LOC33 = getint_195605(a);
		result = newfloatnodet_256035(((double) (((NI) (LOC33)))), n);
	}
	break;
	case ((NU16) 127):
	case ((NU16) 128):
	{
		NF LOC35;
		LOC35 = 0;
		LOC35 = getfloat_195616(a);
		result = newintnodet_256028(((NI64) (float64ToInt32(LOC35))), n);
	}
	break;
	case ((NU16) 115):
	{
		NF LOC37;
		LOC37 = 0;
		LOC37 = getfloat_195616(a);
		result = newfloatnodet_256035((LOC37 > 0? (LOC37) : -(LOC37)), n);
	}
	break;
	case ((NU16) 107):
	case ((NU16) 108):
	{
		{
			NI64 LOC41;
			LOC41 = 0;
			LOC41 = getint_195605(a);
			if (!(IL64(0) <= LOC41)) goto LA42;
			result = a;
		}
		goto LA39;
		LA42: ;
		{
			NI64 LOC45;
			LOC45 = 0;
			LOC45 = getint_195605(a);
			result = newintnodet_256028(-(LOC45), n);
		}
		LA39: ;
	}
	break;
	case ((NU16) 116):
	case ((NU16) 117):
	case ((NU16) 118):
	case ((NU16) 119):
	case ((NU16) 120):
	case ((NU16) 121):
	{
		NI64 LOC47;
		NI64 LOC48;
		LOC47 = 0;
		LOC47 = getint_195605(a);
		LOC48 = 0;
		LOC48 = getsize_220190((*a).typ);
		result = newintnodet_256028((NI64)(LOC47 & (NI64)((NI64)((NU64)(IL64(1)) << (NU64)((NI64)(LOC48 * IL64(8)))) - IL64(1))), n);
	}
	break;
	case ((NU16) 122):
	{
		NI64 LOC50;
		LOC50 = 0;
		LOC50 = getint_195605(a);
		result = newintnodet_256028(((NI64) ((NI64)(LOC50 & IL64(255)))), n);
	}
	break;
	case ((NU16) 123):
	{
		NI64 LOC52;
		LOC52 = 0;
		LOC52 = getint_195605(a);
		result = newintnodet_256028(((NI64) ((NI64)(LOC52 & IL64(65535)))), n);
	}
	break;
	case ((NU16) 124):
	{
		NI64 LOC54;
		LOC54 = 0;
		LOC54 = getint_195605(a);
		result = newintnodet_256028(((NI64) ((NI64)(LOC54 & IL64(4294967295)))), n);
	}
	break;
	case ((NU16) 22):
	{
		NI64 LOC56;
		LOC56 = 0;
		LOC56 = getordvalue_220178(a);
		result = newintnodet_256028((NI64)(LOC56 - IL64(1)), n);
	}
	break;
	case ((NU16) 51):
	{
		NI64 LOC58;
		NI64 LOC59;
		LOC58 = 0;
		LOC58 = getordvalue_220178(a);
		LOC59 = 0;
		LOC59 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC58 + LOC59), n);
	}
	break;
	case ((NU16) 52):
	{
		NI64 LOC61;
		NI64 LOC62;
		LOC61 = 0;
		LOC61 = getordvalue_220178(a);
		LOC62 = 0;
		LOC62 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC61 - LOC62), n);
	}
	break;
	case ((NU16) 41):
	case ((NU16) 46):
	{
		NI64 LOC64;
		NI64 LOC65;
		LOC64 = 0;
		LOC64 = getint_195605(a);
		LOC65 = 0;
		LOC65 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC64 + LOC65), n);
	}
	break;
	case ((NU16) 42):
	case ((NU16) 47):
	{
		NI64 LOC67;
		NI64 LOC68;
		LOC67 = 0;
		LOC67 = getint_195605(a);
		LOC68 = 0;
		LOC68 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC67 - LOC68), n);
	}
	break;
	case ((NU16) 43):
	case ((NU16) 48):
	{
		NI64 LOC70;
		NI64 LOC71;
		LOC70 = 0;
		LOC70 = getint_195605(a);
		LOC71 = 0;
		LOC71 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC70 * LOC71), n);
	}
	break;
	case ((NU16) 62):
	{
		{
			NI64 LOC75;
			NI64 LOC76;
			NI64 LOC79;
			LOC75 = 0;
			LOC75 = getint_195605(b);
			LOC76 = 0;
			LOC76 = getint_195605(a);
			if (!(LOC75 < LOC76)) goto LA77;
			LOC79 = 0;
			LOC79 = getint_195605(b);
			result = newintnodet_256028(LOC79, n);
		}
		goto LA73;
		LA77: ;
		{
			NI64 LOC81;
			LOC81 = 0;
			LOC81 = getint_195605(a);
			result = newintnodet_256028(LOC81, n);
		}
		LA73: ;
	}
	break;
	case ((NU16) 63):
	{
		{
			NI64 LOC85;
			NI64 LOC86;
			NI64 LOC89;
			LOC85 = 0;
			LOC85 = getint_195605(b);
			LOC86 = 0;
			LOC86 = getint_195605(a);
			if (!(LOC85 < LOC86)) goto LA87;
			LOC89 = 0;
			LOC89 = getint_195605(a);
			result = newintnodet_256028(LOC89, n);
		}
		goto LA83;
		LA87: ;
		{
			NI64 LOC91;
			LOC91 = 0;
			LOC91 = getint_195605(b);
			result = newintnodet_256028(LOC91, n);
		}
		LA83: ;
	}
	break;
	case ((NU16) 58):
	case ((NU16) 65):
	{
		Ttype190849* LOC93;
		LOC93 = 0;
		LOC93 = skiptypes_194167((*n).typ, IL64(211106233624832));
		switch ((*LOC93).kind) {
		case ((NU8) 32):
		{
			NI64 LOC95;
			NI64 LOC96;
			LOC95 = 0;
			LOC95 = getint_195605(a);
			LOC96 = 0;
			LOC96 = getint_195605(b);
			result = newintnodet_256028(((NI64) ((NI8)((NU8)(((NI8) (LOC95))) << (NU8)(((NI8) (LOC96)))))), n);
		}
		break;
		case ((NU8) 33):
		{
			NI64 LOC98;
			NI64 LOC99;
			LOC98 = 0;
			LOC98 = getint_195605(a);
			LOC99 = 0;
			LOC99 = getint_195605(b);
			result = newintnodet_256028(((NI64) ((NI16)((NU16)(((NI16) (LOC98))) << (NU16)(((NI16) (LOC99)))))), n);
		}
		break;
		case ((NU8) 34):
		{
			NI64 LOC101;
			NI64 LOC102;
			LOC101 = 0;
			LOC101 = getint_195605(a);
			LOC102 = 0;
			LOC102 = getint_195605(b);
			result = newintnodet_256028(((NI64) ((NI32)((NU32)(((NI32) (LOC101))) << (NU32)(((NI32) (LOC102)))))), n);
		}
		break;
		case ((NU8) 35):
		case ((NU8) 31):
		case ((NU8) 40) ... ((NU8) 44):
		{
			NI64 LOC104;
			NI64 LOC105;
			LOC104 = 0;
			LOC104 = getint_195605(a);
			LOC105 = 0;
			LOC105 = getint_195605(b);
			result = newintnodet_256028((NI64)((NU64)(LOC104) << (NU64)(LOC105)), n);
		}
		break;
		default:
		{
			internalerror_165199((*n).info, ((NimStringDesc*) &TMP3232));
		}
		break;
		}
	}
	break;
	case ((NU16) 57):
	case ((NU16) 64):
	{
		Ttype190849* LOC108;
		LOC108 = 0;
		LOC108 = skiptypes_194167((*n).typ, IL64(211106233624832));
		switch ((*LOC108).kind) {
		case ((NU8) 32):
		{
			NI64 LOC110;
			NI64 LOC111;
			LOC110 = 0;
			LOC110 = getint_195605(a);
			LOC111 = 0;
			LOC111 = getint_195605(b);
			result = newintnodet_256028(((NI64) ((NI8)((NU8)(((NI8) (LOC110))) >> (NU8)(((NI8) (LOC111)))))), n);
		}
		break;
		case ((NU8) 33):
		{
			NI64 LOC113;
			NI64 LOC114;
			LOC113 = 0;
			LOC113 = getint_195605(a);
			LOC114 = 0;
			LOC114 = getint_195605(b);
			result = newintnodet_256028(((NI64) ((NI16)((NU16)(((NI16) (LOC113))) >> (NU16)(((NI16) (LOC114)))))), n);
		}
		break;
		case ((NU8) 34):
		{
			NI64 LOC116;
			NI64 LOC117;
			LOC116 = 0;
			LOC116 = getint_195605(a);
			LOC117 = 0;
			LOC117 = getint_195605(b);
			result = newintnodet_256028(((NI64) ((NI32)((NU32)(((NI32) (LOC116))) >> (NU32)(((NI32) (LOC117)))))), n);
		}
		break;
		case ((NU8) 35):
		case ((NU8) 31):
		case ((NU8) 40) ... ((NU8) 44):
		{
			NI64 LOC119;
			NI64 LOC120;
			LOC119 = 0;
			LOC119 = getint_195605(a);
			LOC120 = 0;
			LOC120 = getint_195605(b);
			result = newintnodet_256028((NI64)((NU64)(LOC119) >> (NU64)(LOC120)), n);
		}
		break;
		default:
		{
			internalerror_165199((*n).info, ((NimStringDesc*) &TMP3233));
		}
		break;
		}
	}
	break;
	case ((NU16) 44):
	case ((NU16) 49):
	{
		NI64 y;
		y = getint_195605(b);
		{
			NI64 LOC127;
			if (!!((y == IL64(0)))) goto LA125;
			LOC127 = 0;
			LOC127 = getint_195605(a);
			result = newintnodet_256028((NI64)(LOC127 / y), n);
		}
		LA125: ;
	}
	break;
	case ((NU16) 45):
	case ((NU16) 50):
	{
		NI64 y;
		y = getint_195605(b);
		{
			NI64 LOC133;
			if (!!((y == IL64(0)))) goto LA131;
			LOC133 = 0;
			LOC133 = getint_195605(a);
			result = newintnodet_256028((NI64)(LOC133 % y), n);
		}
		LA131: ;
	}
	break;
	case ((NU16) 53):
	{
		NF LOC135;
		NF LOC136;
		LOC135 = 0;
		LOC135 = getfloat_195616(a);
		LOC136 = 0;
		LOC136 = getfloat_195616(b);
		result = newfloatnodet_256035(((NF)(LOC135) + (NF)(LOC136)), n);
	}
	break;
	case ((NU16) 54):
	{
		NF LOC138;
		NF LOC139;
		LOC138 = 0;
		LOC138 = getfloat_195616(a);
		LOC139 = 0;
		LOC139 = getfloat_195616(b);
		result = newfloatnodet_256035(((NF)(LOC138) - (NF)(LOC139)), n);
	}
	break;
	case ((NU16) 55):
	{
		NF LOC141;
		NF LOC142;
		LOC141 = 0;
		LOC141 = getfloat_195616(a);
		LOC142 = 0;
		LOC142 = getfloat_195616(b);
		result = newfloatnodet_256035(((NF)(LOC141) * (NF)(LOC142)), n);
	}
	break;
	case ((NU16) 56):
	{
		{
			NF LOC146;
			LOC146 = 0;
			LOC146 = getfloat_195616(b);
			if (!(LOC146 == 0.0)) goto LA147;
			{
				NF LOC151;
				LOC151 = 0;
				LOC151 = getfloat_195616(a);
				if (!(LOC151 == 0.0)) goto LA152;
				result = newfloatnodet_256035(NAN, n);
			}
			goto LA149;
			LA152: ;
			{
				result = newfloatnodet_256035(INF, n);
			}
			LA149: ;
		}
		goto LA144;
		LA147: ;
		{
			NF LOC156;
			NF LOC157;
			LOC156 = 0;
			LOC156 = getfloat_195616(a);
			LOC157 = 0;
			LOC157 = getfloat_195616(b);
			result = newfloatnodet_256035(((NF)(LOC156) / (NF)(LOC157)), n);
		}
		LA144: ;
	}
	break;
	case ((NU16) 70):
	{
		{
			NF LOC161;
			NF LOC162;
			NF LOC165;
			LOC161 = 0;
			LOC161 = getfloat_195616(b);
			LOC162 = 0;
			LOC162 = getfloat_195616(a);
			if (!(LOC161 < LOC162)) goto LA163;
			LOC165 = 0;
			LOC165 = getfloat_195616(a);
			result = newfloatnodet_256035(LOC165, n);
		}
		goto LA159;
		LA163: ;
		{
			NF LOC167;
			LOC167 = 0;
			LOC167 = getfloat_195616(b);
			result = newfloatnodet_256035(LOC167, n);
		}
		LA159: ;
	}
	break;
	case ((NU16) 69):
	{
		{
			NF LOC171;
			NF LOC172;
			NF LOC175;
			LOC171 = 0;
			LOC171 = getfloat_195616(b);
			LOC172 = 0;
			LOC172 = getfloat_195616(a);
			if (!(LOC171 < LOC172)) goto LA173;
			LOC175 = 0;
			LOC175 = getfloat_195616(b);
			result = newfloatnodet_256035(LOC175, n);
		}
		goto LA169;
		LA173: ;
		{
			NF LOC177;
			LOC177 = 0;
			LOC177 = getfloat_195616(a);
			result = newfloatnodet_256035(LOC177, n);
		}
		LA169: ;
	}
	break;
	case ((NU16) 168):
	{
		result = newintnodet_256028(((NI64) (((*a).kind == ((NU8) 23)))), n);
	}
	break;
	case ((NU16) 78):
	case ((NU16) 81):
	case ((NU16) 97):
	case ((NU16) 91):
	case ((NU16) 94):
	{
		NI64 LOC180;
		NI64 LOC181;
		LOC180 = 0;
		LOC180 = getordvalue_220178(a);
		LOC181 = 0;
		LOC181 = getordvalue_220178(b);
		result = newintnodet_256028(((NI64) ((LOC180 < LOC181))), n);
	}
	break;
	case ((NU16) 77):
	case ((NU16) 80):
	case ((NU16) 96):
	case ((NU16) 90):
	case ((NU16) 93):
	{
		NI64 LOC183;
		NI64 LOC184;
		LOC183 = 0;
		LOC183 = getordvalue_220178(a);
		LOC184 = 0;
		LOC184 = getordvalue_220178(b);
		result = newintnodet_256028(((NI64) ((LOC183 <= LOC184))), n);
	}
	break;
	case ((NU16) 76):
	case ((NU16) 79):
	case ((NU16) 95):
	case ((NU16) 89):
	case ((NU16) 92):
	{
		NI64 LOC186;
		NI64 LOC187;
		LOC186 = 0;
		LOC186 = getordvalue_220178(a);
		LOC187 = 0;
		LOC187 = getordvalue_220178(b);
		result = newintnodet_256028(((NI64) ((LOC186 == LOC187))), n);
	}
	break;
	case ((NU16) 84):
	{
		NF LOC189;
		NF LOC190;
		LOC189 = 0;
		LOC189 = getfloat_195616(a);
		LOC190 = 0;
		LOC190 = getfloat_195616(b);
		result = newintnodet_256028(((NI64) ((LOC189 < LOC190))), n);
	}
	break;
	case ((NU16) 83):
	{
		NF LOC192;
		NF LOC193;
		LOC192 = 0;
		LOC192 = getfloat_195616(a);
		LOC193 = 0;
		LOC193 = getfloat_195616(b);
		result = newintnodet_256028(((NI64) ((LOC192 <= LOC193))), n);
	}
	break;
	case ((NU16) 82):
	{
		NF LOC195;
		NF LOC196;
		LOC195 = 0;
		LOC195 = getfloat_195616(a);
		LOC196 = 0;
		LOC196 = getfloat_195616(b);
		result = newintnodet_256028(((NI64) ((LOC195 == LOC196))), n);
	}
	break;
	case ((NU16) 141):
	{
		NimStringDesc* LOC198;
		NimStringDesc* LOC199;
		LOC198 = 0;
		LOC198 = getstr_195628(a);
		LOC199 = 0;
		LOC199 = getstr_195628(b);
		result = newintnodet_256028(((NI64) ((cmpStrings(LOC198, LOC199) < 0))), n);
	}
	break;
	case ((NU16) 140):
	{
		NimStringDesc* LOC201;
		NimStringDesc* LOC202;
		LOC201 = 0;
		LOC201 = getstr_195628(a);
		LOC202 = 0;
		LOC202 = getstr_195628(b);
		result = newintnodet_256028(((NI64) ((cmpStrings(LOC201, LOC202) <= 0))), n);
	}
	break;
	case ((NU16) 139):
	{
		NimStringDesc* LOC204;
		NimStringDesc* LOC205;
		LOC204 = 0;
		LOC204 = getstr_195628(a);
		LOC205 = 0;
		LOC205 = getstr_195628(b);
		result = newintnodet_256028(((NI64) (eqStrings(LOC204, LOC205))), n);
	}
	break;
	case ((NU16) 86):
	case ((NU16) 88):
	{
		NI64 LOC207;
		NI64 LOC208;
		LOC207 = 0;
		LOC207 = getordvalue_220178(a);
		LOC208 = 0;
		LOC208 = getordvalue_220178(b);
		result = newintnodet_256028(((NI64) (((NU64)(LOC207) < (NU64)(LOC208)))), n);
	}
	break;
	case ((NU16) 85):
	case ((NU16) 87):
	{
		NI64 LOC210;
		NI64 LOC211;
		LOC210 = 0;
		LOC210 = getordvalue_220178(a);
		LOC211 = 0;
		LOC211 = getordvalue_220178(b);
		result = newintnodet_256028(((NI64) (((NU64)(LOC210) <= (NU64)(LOC211)))), n);
	}
	break;
	case ((NU16) 59):
	case ((NU16) 66):
	case ((NU16) 137):
	{
		NI64 LOC213;
		NI64 LOC214;
		LOC213 = 0;
		LOC213 = getint_195605(a);
		LOC214 = 0;
		LOC214 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC213 & LOC214), n);
	}
	break;
	case ((NU16) 60):
	case ((NU16) 67):
	case ((NU16) 138):
	{
		NI64 LOC216;
		NI64 LOC217;
		LOC216 = 0;
		LOC216 = getint_195605(a);
		LOC217 = 0;
		LOC217 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC216 | LOC217), n);
	}
	break;
	case ((NU16) 61):
	case ((NU16) 68):
	case ((NU16) 103):
	{
		NI64 LOC219;
		NI64 LOC220;
		LOC219 = 0;
		LOC219 = getint_195605(a);
		LOC220 = 0;
		LOC220 = getint_195605(b);
		result = newintnodet_256028((NI64)(LOC219 ^ LOC220), n);
	}
	break;
	case ((NU16) 71):
	{
		NI64 LOC222;
		NI64 LOC223;
		LOC222 = 0;
		LOC222 = getint_195605(a);
		LOC223 = 0;
		LOC223 = getint_195605(b);
		result = newintnodet_256028((NI64)((NU64)(LOC222) + (NU64)(LOC223)), n);
	}
	break;
	case ((NU16) 72):
	{
		NI64 LOC225;
		NI64 LOC226;
		LOC225 = 0;
		LOC225 = getint_195605(a);
		LOC226 = 0;
		LOC226 = getint_195605(b);
		result = newintnodet_256028((NI64)((NU64)(LOC225) - (NU64)(LOC226)), n);
	}
	break;
	case ((NU16) 73):
	{
		NI64 LOC228;
		NI64 LOC229;
		LOC228 = 0;
		LOC228 = getint_195605(a);
		LOC229 = 0;
		LOC229 = getint_195605(b);
		result = newintnodet_256028((NI64)((NU64)(LOC228) * (NU64)(LOC229)), n);
	}
	break;
	case ((NU16) 75):
	{
		NI64 y;
		y = getint_195605(b);
		{
			NI64 LOC235;
			if (!!((y == IL64(0)))) goto LA233;
			LOC235 = 0;
			LOC235 = getint_195605(a);
			result = newintnodet_256028((NI64)((NU64)(LOC235) % (NU64)(y)), n);
		}
		LA233: ;
	}
	break;
	case ((NU16) 74):
	{
		NI64 y;
		y = getint_195605(b);
		{
			NI64 LOC241;
			if (!!((y == IL64(0)))) goto LA239;
			LOC241 = 0;
			LOC241 = getint_195605(a);
			result = newintnodet_256028((NI64)((NU64)(LOC241) / (NU64)(y)), n);
		}
		LA239: ;
	}
	break;
	case ((NU16) 143):
	{
		NIM_BOOL LOC243;
		LOC243 = 0;
		LOC243 = containssets_240075(a, b);
		result = newintnodet_256028(((NI64) (LOC243)), n);
	}
	break;
	case ((NU16) 142):
	{
		NIM_BOOL LOC245;
		LOC245 = 0;
		LOC245 = equalsets_240082(a, b);
		result = newintnodet_256028(((NI64) (LOC245)), n);
	}
	break;
	case ((NU16) 144):
	{
		NIM_BOOL LOC247;
		NIM_BOOL LOC249;
		LOC247 = 0;
		LOC247 = containssets_240075(a, b);
		if (!(LOC247)) goto LA248;
		LOC249 = 0;
		LOC249 = equalsets_240082(a, b);
		LOC247 = !(LOC249);
		LA248: ;
		result = newintnodet_256028(((NI64) (LOC247)), n);
	}
	break;
	case ((NU16) 145):
	{
		result = intersectsets_240061(a, b);
		(*result).info = (*n).info;
	}
	break;
	case ((NU16) 146):
	{
		result = unionsets_240047(a, b);
		(*result).info = (*n).info;
	}
	break;
	case ((NU16) 147):
	{
		result = diffsets_240054(a, b);
		(*result).info = (*n).info;
	}
	break;
	case ((NU16) 148):
	{
		result = symdiffsets_240068(a, b);
		(*result).info = (*n).info;
	}
	break;
	case ((NU16) 149):
	{
		NimStringDesc* LOC255;
		NimStringDesc* LOC256;
		NimStringDesc* LOC257;
		LOC255 = 0;
		LOC256 = 0;
		LOC256 = getstrorchar_195639(a);
		LOC257 = 0;
		LOC257 = getstrorchar_195639(b);
		LOC255 = rawNewString(LOC256->Sup.len + LOC257->Sup.len + 0);
appendString(LOC255, LOC256);
appendString(LOC255, LOC257);
		result = newstrnodet_256042(LOC255, n);
	}
	break;
	case ((NU16) 159):
	{
		NIM_BOOL LOC259;
		LOC259 = 0;
		LOC259 = inset_240019(a, b);
		result = newintnodet_256028(((NI64) (LOC259)), n);
	}
	break;
	case ((NU16) 160):
	{
	}
	break;
	case ((NU16) 131):
	case ((NU16) 132):
	{
		NI64 LOC262;
		NimStringDesc* LOC263;
		LOC262 = 0;
		LOC262 = getordvalue_220178(a);
		LOC263 = 0;
		LOC263 = nimInt64ToStr(LOC262);
		result = newstrnodet_256042(LOC263, n);
	}
	break;
	case ((NU16) 130):
	{
		{
			NI64 LOC267;
			LOC267 = 0;
			LOC267 = getordvalue_220178(a);
			if (!(LOC267 == IL64(0))) goto LA268;
			result = newstrnodet_256042(((NimStringDesc*) &TMP3235), n);
		}
		goto LA265;
		LA268: ;
		{
			result = newstrnodet_256042(((NimStringDesc*) &TMP3236), n);
		}
		LA265: ;
	}
	break;
	case ((NU16) 170):
	{
		NimStringDesc* LOC272;
		NI64 LOC273;
		NimStringDesc* LOC274;
		LOC272 = 0;
		LOC272 = getstr_195628(a);
		LOC273 = 0;
		LOC273 = getordvalue_220178(b);
		LOC274 = 0;
		LOC274 = copyStr(LOC272, ((NI) (LOC273)));
		result = newstrnodet_256042(LOC274, n);
	}
	break;
	case ((NU16) 171):
	{
		NimStringDesc* LOC276;
		NI64 LOC277;
		NI64 LOC278;
		NimStringDesc* LOC279;
		LOC276 = 0;
		LOC276 = getstr_195628(a);
		LOC277 = 0;
		LOC277 = getordvalue_220178(b);
		LOC278 = 0;
		LOC278 = getordvalue_220178(c);
		LOC279 = 0;
		LOC279 = copyStrLast(LOC276, ((NI) (LOC277)), ((NI) (LOC278)));
		result = newstrnodet_256042(LOC279, n);
	}
	break;
	case ((NU16) 133):
	{
		NF LOC281;
		NimStringDesc* LOC282;
		LOC281 = 0;
		LOC281 = getfloat_195616(a);
		LOC282 = 0;
		LOC282 = nimFloatToStr(LOC281);
		result = newstrnodet_256042(LOC282, n);
	}
	break;
	case ((NU16) 134):
	case ((NU16) 129):
	{
		NimStringDesc* LOC284;
		LOC284 = 0;
		LOC284 = getstrorchar_195639(a);
		result = newstrnodet_256042(LOC284, n);
	}
	break;
	case ((NU16) 135):
	{
		result = a;
	}
	break;
	case ((NU16) 136):
	{
		NimStringDesc* LOC287;
		LOC287 = 0;
		LOC287 = ordinalvaltostring_256091(a);
		result = newstrnodet_256042(LOC287, n);
	}
	break;
	case ((NU16) 169):
	{
		result = copytree_195028(a);
		asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	}
	break;
	case ((NU16) 226):
	{
		NimStringDesc* LOC290;
		NIM_BOOL LOC291;
		LOC290 = 0;
		LOC290 = getstr_195628(a);
		LOC291 = 0;
		LOC291 = testcompileoption_176631(LOC290, (*n).info);
		result = newintnodet_256028(((NI64) (LOC291)), n);
	}
	break;
	case ((NU16) 227):
	{
		NimStringDesc* LOC293;
		NimStringDesc* LOC294;
		NIM_BOOL LOC295;
		LOC293 = 0;
		LOC293 = getstr_195628(a);
		LOC294 = 0;
		LOC294 = getstr_195628(b);
		LOC295 = 0;
		LOC295 = testcompileoptionarg_176518(LOC293, LOC294, (*n).info);
		result = newintnodet_256028(((NI64) (LOC295)), n);
	}
	break;
	case ((NU16) 172):
	case ((NU16) 173):
	case ((NU16) 161):
	case ((NU16) 23):
	case ((NU16) 24):
	case ((NU16) 14):
	case ((NU16) 167):
	case ((NU16) 155):
	case ((NU16) 156):
	case ((NU16) 157):
	case ((NU16) 162):
	case ((NU16) 163):
	case ((NU16) 18):
	case ((NU16) 19):
	case ((NU16) 20):
	case ((NU16) 7):
	case ((NU16) 151):
	case ((NU16) 228) ... ((NU16) 260):
	case ((NU16) 98):
	case ((NU16) 16):
	case ((NU16) 17):
	case ((NU16) 263):
	case ((NU16) 213):
	case ((NU16) 166):
	case ((NU16) 13):
	{
	}
	break;
	default:
	{
		NimStringDesc* LOC298;
		LOC298 = 0;
		LOC298 = rawNewString(reprEnum(m, (&NTI190529))->Sup.len + 8);
appendString(LOC298, ((NimStringDesc*) &TMP3239));
appendString(LOC298, reprEnum(m, (&NTI190529)));
appendChar(LOC298, 41);
		internalerror_165199((*a).info, LOC298);
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, magiccall_257172)(Tsym190843* m, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* s;
	Tnode190813* a;
	Tnode190813* b;
	Tnode190813* c;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 <= ((NI) 1))) goto LA4;
		goto BeforeRet;
	}
	LA4: ;
	s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 1)]);
	b = 0;
	c = 0;
	{
		if (!(a == NIM_NIL)) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_193403(n);
		if (!(((NI) 2) < LOC12)) goto LA13;
		b = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 2)]);
		{
			if (!(b == NIM_NIL)) goto LA17;
			goto BeforeRet;
		}
		LA17: ;
		{
			NI LOC21;
			LOC21 = 0;
			LOC21 = sonslen_193403(n);
			if (!(((NI) 3) < LOC21)) goto LA22;
			c = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 3)]);
			{
				if (!(c == NIM_NIL)) goto LA26;
				goto BeforeRet;
			}
			LA26: ;
		}
		LA22: ;
	}
	LA13: ;
	result = evalop_256011((*s).magic, n, a, b, c);
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	Tcell46347* c;
	c = usrtocell_49846(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3;
		rtladdzct_51404(c);
	}
	LA3: ;
}

N_NIMCALL(Tnode190813*, foldconstrstr_257679)(Tsym190843* m, Tnode190813* n) {
	Tnode190813* result;
	NimStringDesc* LOC1;
{	result = 0;
	result = newnodeit_192807(((NU8) 20), (*n).info, (*n).typ);
	LOC1 = 0;
	LOC1 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1(((NimStringDesc*) &TMP3240));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	{
		NI i_257697;
		NI HEX3Atmp_257714;
		NI LOC3;
		NI res_257717;
		i_257697 = 0;
		HEX3Atmp_257714 = 0;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		HEX3Atmp_257714 = (NI)(LOC3 - ((NI) 1));
		res_257717 = ((NI) 1);
		{
			while (1) {
				Tnode190813* a;
				NimStringDesc* LOC10;
				if (!(res_257717 <= HEX3Atmp_257714)) goto LA5;
				i_257697 = res_257717;
				a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[i_257697]);
				{
					if (!(a == NIM_NIL)) goto LA8;
					result = NIM_NIL;
					goto BeforeRet;
				}
				LA8: ;
				LOC10 = 0;
				LOC10 = getstrorchar_195639(a);
				(*result).kindU.S3.strval = resizeString((*result).kindU.S3.strval, LOC10->Sup.len + 0);
appendString((*result).kindU.S3.strval, LOC10);
				res_257717 += ((NI) 1);
			} LA5: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, evalis_256580)(Tnode190813* n, Tnode190813* a) {
	Tnode190813* result;
	Ttype190849* t1;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = ((*a).kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*a).kindU.S4.sym).kind == ((NU8) 7));
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_165306(TMP3241);
		internalerror_165218(LOC7);
	}
	LA5: ;
	{
		NIM_BOOL LOC10;
		NI LOC11;
		Tnode190813* LOC13;
		NimStringDesc* LOC16;
		LOC10 = 0;
		LOC11 = 0;
		LOC11 = sonslen_193403(n);
		LOC10 = (LOC11 == ((NI) 3));
		if (!(LOC10)) goto LA12;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_191244(n, ((NI) 2));
		LOC10 = ((*LOC13).kind >= ((NU8) 20) && (*LOC13).kind <= ((NU8) 22) || (*LOC13).kind == ((NU8) 4));
		LA12: ;
		if (!!(LOC10)) goto LA14;
		LOC16 = 0;
		LOC16 = HEX24_165306(TMP3243);
		internalerror_165218(LOC16);
	}
	LA14: ;
	t1 = (*(*a).kindU.S4.sym).typ;
	{
		Tnode190813* LOC19;
		Tnode190813* LOC22;
		NimStringDesc* LOC23;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_191244(n, ((NI) 2));
		if (!((*LOC19).kind >= ((NU8) 20) && (*LOC19).kind <= ((NU8) 22))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_191244(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = nsuNormalize((*LOC22).kindU.S3.strval);
		if (eqStrings(LOC23, ((NimStringDesc*) &TMP3244))) goto LA24;
		if (eqStrings(LOC23, ((NimStringDesc*) &TMP3245))) goto LA25;
		goto LA26;
		LA24: ;
		{
			Ttype190849* t;
			NIM_BOOL LOC29;
			NIM_BOOL LOC30;
			t = skiptypes_194167(t1, IL64(211106233624832));
			LOC29 = 0;
			LOC30 = 0;
			LOC30 = ((*t).kind == ((NU8) 25));
			if (!(LOC30)) goto LA31;
			LOC30 = ((*t).callconv == ((NU8) 8));
			LA31: ;
			LOC29 = LOC30;
			if (!(LOC29)) goto LA32;
			LOC29 = !((((*t).flags &(1<<((((NU8) 14))&31)))!=0));
			LA32: ;
			result = newintnode_191607(((NU8) 6), ((NI64) (LOC29)));
		}
		goto LA27;
		LA25: ;
		{
			Ttype190849* t;
			NIM_BOOL LOC34;
			NIM_BOOL LOC35;
			t = skiptypes_194167(t1, IL64(211106233624832));
			LOC34 = 0;
			LOC35 = 0;
			LOC35 = ((*t).kind == ((NU8) 25));
			if (!(LOC35)) goto LA36;
			LOC35 = ((*t).callconv == ((NU8) 8));
			LA36: ;
			LOC34 = LOC35;
			if (!(LOC34)) goto LA37;
			LOC34 = (((*t).flags &(1<<((((NU8) 14))&31)))!=0);
			LA37: ;
			result = newintnode_191607(((NU8) 6), ((NI64) (LOC34)));
		}
		goto LA27;
		LA26: ;
		{
		}
		LA27: ;
	}
	goto LA17;
	LA20: ;
	{
		Ttype190849* t2;
		Tnode190813* LOC40;
		NIM_BOOL match;
		LOC40 = 0;
		LOC40 = HEX5BHEX5D_191244(n, ((NI) 2));
		t2 = (*LOC40).typ;
		match = sametype_225092(t1, t2, 0);
		result = newintnode_191607(((NU8) 6), ((NI64) (match)));
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	return result;
}

static N_INLINE(Exception*, getCurrentException)(void) {
	Exception* result;
	result = 0;
	result = currexception_17045;
	return result;
}

static N_INLINE(NIM_BOOL, canbecycleroot_49867)(Tcell46347* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_50623)(Tcell46347* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_47065((&gch_48244.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_52222)(Tcell46347* c) {
	(*c).refcount = (NI)((NU64)((*c).refcount) + (NU64)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_49867(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_50623(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_51804)(Tcell46347* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3;
		rtladdzct_51404(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_49867(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_50623(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Tcell46347* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_49846(src);
		incref_52222(LOC5);
	}
	LA3: ;
	{
		Tcell46347* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_49846((*dest));
		decref_51804(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currexception_17045), (*currexception_17045).parent);
}

N_NIMCALL(void, rangecheck_257271)(Tnode190813* n, NI64 value) {
	{
		NIM_BOOL LOC3;
		NI64 LOC4;
		NI64 LOC6;
		NimStringDesc* LOC9;
		NimStringDesc* LOC10;
		NimStringDesc* LOC11;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = firstord_220004((*n).typ);
		LOC3 = (value < LOC4);
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = lastord_220010((*n).typ);
		LOC3 = (LOC6 < value);
		LA5: ;
		if (!LOC3) goto LA7;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = nimInt64ToStr(value);
		LOC11 = 0;
		LOC11 = typetostring_220032((*n).typ, ((NU8) 0));
		LOC9 = rawNewString(LOC10->Sup.len + LOC11->Sup.len + 19);
appendString(LOC9, ((NimStringDesc*) &TMP3246));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3247));
appendString(LOC9, LOC11);
		localerror_165155((*n).info, ((NU16) 4), LOC9);
	}
	LA7: ;
}

N_NIMCALL(Tnode190813*, foldconv_257281)(Tnode190813* n, Tnode190813* a, NIM_BOOL check) {
	Tnode190813* result;
	Ttype190849* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_194167((*n).typ, IL64(211106233624832));
	switch ((*LOC1).kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	{
		Ttype190849* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_194167((*a).typ, IL64(211106233624832));
		switch ((*LOC3).kind) {
		case ((NU8) 36) ... ((NU8) 38):
		{
			NF LOC5;
			LOC5 = 0;
			LOC5 = getfloat_195616(a);
			result = newintnodet_256028(((NI64) (((NI) (LOC5)))), n);
		}
		break;
		case ((NU8) 2):
		{
			NI64 LOC7;
			LOC7 = 0;
			LOC7 = getordvalue_220178(a);
			result = newintnodet_256028(LOC7, n);
		}
		break;
		default:
		{
			result = a;
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
		}
		break;
		}
		{
			if (!check) goto LA11;
			rangecheck_257271(n, (*result).kindU.S1.intval);
		}
		LA11: ;
	}
	break;
	case ((NU8) 36) ... ((NU8) 38):
	{
		Ttype190849* LOC14;
		LOC14 = 0;
		LOC14 = skiptypes_194167((*a).typ, IL64(211106233624832));
		switch ((*LOC14).kind) {
		case ((NU8) 31) ... ((NU8) 35):
		case ((NU8) 14):
		case ((NU8) 1):
		case ((NU8) 2):
		{
			NI64 LOC16;
			LOC16 = 0;
			LOC16 = getordvalue_220178(a);
			result = newfloatnodet_256035(((double) (((NI) (LOC16)))), n);
		}
		break;
		default:
		{
			result = a;
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
		}
		break;
		}
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	case ((NU8) 25):
	{
	}
	break;
	default:
	{
		result = a;
		asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, foldarrayaccess_257328)(Tsym190843* m, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* x;
	Tnode190813* y;
	NI64 idx;
{	result = 0;
	x = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 0)]);
	{
		NIM_BOOL LOC3;
		Ttype190849* LOC5;
		LOC3 = 0;
		LOC3 = (x == NIM_NIL);
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = skiptypes_194167((*x).typ, 2048);
		LOC3 = ((*LOC5).kind == ((NU8) 8));
		LA4: ;
		if (!LOC3) goto LA6;
		goto BeforeRet;
	}
	LA6: ;
	y = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 1)]);
	{
		if (!(y == NIM_NIL)) goto LA10;
		goto BeforeRet;
	}
	LA10: ;
	idx = getordvalue_220178(y);
	switch ((*x).kind) {
	case ((NU8) 37):
	{
		{
			NIM_BOOL LOC15;
			NI LOC17;
			LOC15 = 0;
			LOC15 = (IL64(0) <= idx);
			if (!(LOC15)) goto LA16;
			LOC17 = 0;
			LOC17 = sonslen_193403(x);
			LOC15 = (idx < ((NI64) (LOC17)));
			LA16: ;
			if (!LOC15) goto LA18;
			result = (*x).kindU.S6.sons->data[idx];
			{
				if (!((*result).kind == ((NU8) 34))) goto LA22;
				result = (*result).kindU.S6.sons->data[((NI) 1)];
			}
			LA22: ;
		}
		goto LA13;
		LA18: ;
		{
			localerror_165155((*n).info, ((NU16) 82), ((NimStringDesc*) &TMP3240));
		}
		LA13: ;
	}
	break;
	case ((NU8) 41):
	{
		NI64 LOC26;
		LOC26 = 0;
		LOC26 = firstord_220004((*x).typ);
		idx = (NI64)(idx - LOC26);
		{
			NIM_BOOL LOC29;
			NI LOC31;
			LOC29 = 0;
			LOC29 = (IL64(0) <= idx);
			if (!(LOC29)) goto LA30;
			LOC31 = 0;
			LOC31 = len_191097(x);
			LOC29 = (idx < ((NI64) (LOC31)));
			LA30: ;
			if (!LOC29) goto LA32;
			result = (*x).kindU.S6.sons->data[idx];
		}
		goto LA27;
		LA32: ;
		{
			localerror_165155((*n).info, ((NU16) 82), ((NimStringDesc*) &TMP3240));
		}
		LA27: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		result = newnodeit_192807(((NU8) 5), (*x).info, (*n).typ);
		{
			NIM_BOOL LOC38;
			LOC38 = 0;
			LOC38 = (IL64(0) <= idx);
			if (!(LOC38)) goto LA39;
			LOC38 = (idx < ((NI64) (((*x).kindU.S3.strval ? (*x).kindU.S3.strval->Sup.len : 0))));
			LA39: ;
			if (!LOC38) goto LA40;
			(*result).kindU.S1.intval = ((NI64) (((NU8)((*x).kindU.S3.strval->data[idx]))));
		}
		goto LA36;
		LA40: ;
		{
			if (!(idx == ((NI64) (((*x).kindU.S3.strval ? (*x).kindU.S3.strval->Sup.len : 0))))) goto LA43;
		}
		goto LA36;
		LA43: ;
		{
			localerror_165155((*n).info, ((NU16) 82), ((NimStringDesc*) &TMP3240));
		}
		LA36: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, foldfieldaccess_257403)(Tsym190843* m, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* x;
	Tsym190843* field;
{	result = 0;
	x = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 0)]);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (x == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = !(((*x).kind == ((NU8) 38) || (*x).kind == ((NU8) 37)));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	field = (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym;
	{
		NI i_257624;
		NI HEX3Atmp_257656;
		NI HEX3Atmp_257657;
		NI LOC8;
		NI res_257660;
		i_257624 = 0;
		HEX3Atmp_257656 = 0;
		HEX3Atmp_257657 = 0;
		HEX3Atmp_257656 = ((*x).kind == ((NU8) 38));
		LOC8 = 0;
		LOC8 = sonslen_193403(x);
		HEX3Atmp_257657 = (NI)(LOC8 - ((NI) 1));
		res_257660 = ((NI) (HEX3Atmp_257656));
		{
			while (1) {
				Tnode190813* it;
				if (!(res_257660 <= HEX3Atmp_257657)) goto LA10;
				i_257624 = res_257660;
				it = (*x).kindU.S6.sons->data[i_257624];
				{
					if (!!(((*it).kind == ((NU8) 34)))) goto LA13;
					result = (*x).kindU.S6.sons->data[(*field).position];
					{
						if (!((*result).kind == ((NU8) 34))) goto LA17;
						result = (*result).kindU.S6.sons->data[((NI) 1)];
					}
					LA17: ;
					goto BeforeRet;
				}
				LA13: ;
				{
					if (!((*(*(*(*it).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).Sup.id == (*(*field).name).Sup.id)) goto LA21;
					result = (*(*x).kindU.S6.sons->data[i_257624]).kindU.S6.sons->data[((NI) 1)];
					goto BeforeRet;
				}
				LA21: ;
				res_257660 += ((NI) 1);
			} LA10: ;
		}
	}
	localerror_165155((*n).info, ((NU16) 209), (*(*field).name).s);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, getconstexpr_256004)(Tsym190843* m, Tnode190813* n) {
	Tnode190813* volatile result;
{	result = 0;
	result = NIM_NIL;
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		Tsym190843* s;
		s = (*n).kindU.S4.sym;
		switch ((*s).kind) {
		case ((NU8) 20):
		{
			result = newintnodet_256028(((NI64) ((*s).position)), n);
		}
		break;
		case ((NU8) 10):
		{
			switch ((*s).magic) {
			case ((NU16) 215):
			{
				result = newintnodet_256028(((NI64) ((((*m).flags &(1<<((((NU8) 12))&31)))!=0))), n);
			}
			break;
			case ((NU16) 216):
			{
				NimStringDesc* LOC6;
				LOC6 = 0;
				LOC6 = ntgetDateStr();
				result = newstrnodet_256042(LOC6, n);
			}
			break;
			case ((NU16) 217):
			{
				NimStringDesc* LOC8;
				LOC8 = 0;
				LOC8 = ntgetClockStr();
				result = newstrnodet_256042(LOC8, n);
			}
			break;
			case ((NU16) 219):
			{
				result = newintnodet_256028(((NI64) (Cpu_159496[(targetcpu_159600)- 1].Field2)), n);
			}
			break;
			case ((NU16) 220):
			{
				NimStringDesc* LOC11;
				LOC11 = 0;
				LOC11 = nsuToLowerStr(Os_159070[(targetos_159602)- 1].Field0);
				result = newstrnodet_256042(LOC11, n);
			}
			break;
			case ((NU16) 221):
			{
				NimStringDesc* LOC13;
				LOC13 = 0;
				LOC13 = nsuToLowerStr(Cpu_159496[(targetcpu_159600)- 1].Field0);
				result = newstrnodet_256042(LOC13, n);
			}
			break;
			case ((NU16) 222):
			{
				result = getapptype_257231(n);
			}
			break;
			case ((NU16) 223):
			{
				result = newfloatnodet_256035(NAN, n);
			}
			break;
			case ((NU16) 224):
			{
				result = newfloatnodet_256035(INF, n);
			}
			break;
			case ((NU16) 225):
			{
				result = newfloatnodet_256035(-INF, n);
			}
			break;
			default:
			{
				{
					if (!!((((*s).flags &(1<<((((NU8) 25))&31)))!=0))) goto LA21;
					result = copytree_195028((*s).ast);
				}
				LA21: ;
			}
			break;
			}
		}
		break;
		case ((NU8) 12):
		case ((NU8) 13):
		{
			result = n;
		}
		break;
		case ((NU8) 7):
		{
			result = newsymnodetypedesc_257736(s, (*n).info);
		}
		break;
		case ((NU8) 4):
		{
			{
				if (!((*(*s).typ).kind == ((NU8) 59))) goto LA28;
				{
					if (!!(((*(*s).typ).n == NIM_NIL))) goto LA32;
					result = (*(*s).typ).n;
					asgnRefNoCycle((void**) (&(*result).typ), (*(*s).typ).sons->data[((NI) 0)]);
				}
				LA32: ;
			}
			goto LA26;
			LA28: ;
			{
				result = newsymnodetypedesc_257736(s, (*n).info);
			}
			LA26: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	break;
	case ((NU8) 5) ... ((NU8) 23):
	{
		result = copynode_194640(n);
	}
	break;
	case ((NU8) 48):
	{
		result = getconstifexpr_256949(m, n);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		Tsym190843* s;
		TSafePoint TMP3227;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA41;
			goto BeforeRet;
		}
		LA41: ;
		s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		{
			if (!!(((*s).kind == ((NU8) 12)))) goto LA45;
			goto BeforeRet;
		}
		LA45: ;
		pushSafePoint(&TMP3227);
		TMP3227.status = setjmp(TMP3227.context);
		if (TMP3227.status == 0) {
			switch ((*s).magic) {
			case ((NU16) 0):
			{
				popSafePoint();
				goto BeforeRet;
			}
			break;
			case ((NU16) 6):
			{
				Tnode190813* a;
				a = (*n).kindU.S6.sons->data[((NI) 1)];
				{
					NI64 LOC52;
					LOC52 = 0;
					LOC52 = computesize_220184((*a).typ);
					if (!(LOC52 < IL64(0))) goto LA53;
					localerror_165155((*a).info, ((NU16) 77), ((NimStringDesc*) &TMP3228));
					result = NIM_NIL;
				}
				goto LA50;
				LA53: ;
				{
					Ttype190849* LOC56;
					NI64 LOC59;
					LOC56 = 0;
					LOC56 = skiptypes_194167((*a).typ, IL64(211106232576256));
					if (!((IL64(1161083061026822) &(IL64(1)<<(((*LOC56).kind)&IL64(63))))!=0)) goto LA57;
					LOC59 = 0;
					LOC59 = getsize_220190((*a).typ);
					result = newintnodet_256028(LOC59, n);
				}
				goto LA50;
				LA57: ;
				{
					result = NIM_NIL;
				}
				LA50: ;
			}
			break;
			case ((NU16) 4):
			{
				NI64 LOC62;
				LOC62 = 0;
				LOC62 = firstord_220004((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
				result = newintnodet_256028(LOC62, n);
			}
			break;
			case ((NU16) 5):
			{
				{
					Ttype190849* LOC66;
					Tnode190813* LOC69;
					Ttype190849* LOC70;
					NI64 LOC71;
					LOC66 = 0;
					LOC66 = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964864));
					if (!!(((IL64(281475933011968) &(IL64(1)<<(((*LOC66).kind)&IL64(63))))!=0))) goto LA67;
					LOC69 = 0;
					LOC69 = HEX5BHEX5D_191244(n, ((NI) 1));
					LOC70 = 0;
					LOC70 = skiptypes_194167((*LOC69).typ, IL64(211106240964864));
					LOC71 = 0;
					LOC71 = lastord_220010(LOC70);
					result = newintnodet_256028(LOC71, n);
				}
				goto LA64;
				LA67: ;
				{
					Tnode190813* a;
					a = getarrayconstr_257296(m, (*n).kindU.S6.sons->data[((NI) 1)]);
					{
						NI LOC77;
						if (!((*a).kind == ((NU8) 41))) goto LA75;
						LOC77 = 0;
						LOC77 = sonslen_193403(a);
						result = newintnodet_256028(((NI64) ((NI)(LOC77 - ((NI) 1)))), n);
					}
					LA75: ;
				}
				LA64: ;
			}
			break;
			case ((NU16) 29):
			{
				Tnode190813* a;
				a = getarrayconstr_257296(m, (*n).kindU.S6.sons->data[((NI) 1)]);
				{
					NI LOC83;
					if (!((*a).kind == ((NU8) 41))) goto LA81;
					LOC83 = 0;
					LOC83 = sonslen_193403(a);
					result = newintnodet_256028(((NI64) (LOC83)), n);
				}
				goto LA79;
				LA81: ;
				{
					result = magiccall_257172(m, n);
				}
				LA79: ;
			}
			break;
			case ((NU16) 31):
			{
				NI64 LOC86;
				LOC86 = 0;
				LOC86 = lengthord_220016((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
				result = newintnodet_256028(LOC86, n);
			}
			break;
			case ((NU16) 165):
			{
				Tnode190813* LOC88;
				NimStringDesc* LOC89;
				LOC88 = 0;
				LOC88 = HEX5BHEX5D_191244(n, ((NI) 1));
				LOC89 = 0;
				LOC89 = rendertree_212058(LOC88, 4);
				result = newstrnodet_256042(LOC89, n);
			}
			break;
			case ((NU16) 149):
			{
				result = foldconstrstr_257679(m, n);
			}
			break;
			case ((NU16) 8):
			{
				Tnode190813* a;
				Tnode190813* LOC92;
				LOC92 = 0;
				LOC92 = HEX5BHEX5D_191244(n, ((NI) 1));
				a = getconstexpr_256004(m, LOC92);
				{
					NIM_BOOL LOC95;
					NIM_BOOL LOC96;
					LOC95 = 0;
					LOC96 = 0;
					LOC96 = !((a == NIM_NIL));
					if (!(LOC96)) goto LA97;
					LOC96 = ((*a).kind == ((NU8) 3));
					LA97: ;
					LOC95 = LOC96;
					if (!(LOC95)) goto LA98;
					LOC95 = ((*(*a).kindU.S4.sym).kind == ((NU8) 7));
					LA98: ;
					if (!LOC95) goto LA99;
					result = evalis_256580(n, a);
				}
				LA99: ;
			}
			break;
			default:
			{
				result = magiccall_257172(m, n);
			}
			break;
			}
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI3443))) {
				TMP3227.status = 0;
				localerror_165155((*n).info, ((NU16) 76), ((NimStringDesc*) &TMP3240));
				popCurrentException();
			}
			else 			if (isObj(getCurrentException()->Sup.m_type, (&NTI3441))) {
				TMP3227.status = 0;
				localerror_165155((*n).info, ((NU16) 73), ((NimStringDesc*) &TMP3240));
				popCurrentException();
			}
		}
		if (TMP3227.status != 0) reraiseException();
	}
	break;
	case ((NU8) 63):
	{
		Tnode190813* a;
		a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			if (!!((a == NIM_NIL))) goto LA108;
			result = n;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
		}
		LA108: ;
	}
	break;
	case ((NU8) 41):
	{
		result = copytree_195028(n);
		{
			NI i_257979;
			NI HEX3Atmp_258273;
			NI LOC112;
			NI res_258276;
			i_257979 = 0;
			HEX3Atmp_258273 = 0;
			LOC112 = 0;
			LOC112 = sonslen_193403(n);
			HEX3Atmp_258273 = (NI)(LOC112 - ((NI) 1));
			res_258276 = ((NI) 0);
			{
				while (1) {
					Tnode190813* a;
					if (!(res_258276 <= HEX3Atmp_258273)) goto LA114;
					i_257979 = res_258276;
					a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[i_257979]);
					{
						if (!(a == NIM_NIL)) goto LA117;
						result = NIM_NIL;
						goto BeforeRet;
					}
					LA117: ;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_257979]), a);
					res_258276 += ((NI) 1);
				} LA114: ;
			}
		}
		(*result).flags |= ((NI16)1)<<((((NU8) 4))%(sizeof(NI16)*8));
	}
	break;
	case ((NU8) 44):
	{
		Tnode190813* a;
		Tnode190813* b;
		a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			if (!(a == NIM_NIL)) goto LA122;
			goto BeforeRet;
		}
		LA122: ;
		b = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 1)]);
		{
			if (!(b == NIM_NIL)) goto LA126;
			goto BeforeRet;
		}
		LA126: ;
		result = copynode_194640(n);
		addson_192819(result, a);
		addson_192819(result, b);
	}
	break;
	case ((NU8) 39):
	{
		result = copytree_195028(n);
		{
			NI i_258045;
			NI HEX3Atmp_258281;
			NI LOC130;
			NI res_258284;
			i_258045 = 0;
			HEX3Atmp_258281 = 0;
			LOC130 = 0;
			LOC130 = sonslen_193403(n);
			HEX3Atmp_258281 = (NI)(LOC130 - ((NI) 1));
			res_258284 = ((NI) 0);
			{
				while (1) {
					Tnode190813* a;
					if (!(res_258284 <= HEX3Atmp_258281)) goto LA132;
					i_258045 = res_258284;
					a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[i_258045]);
					{
						if (!(a == NIM_NIL)) goto LA135;
						result = NIM_NIL;
						goto BeforeRet;
					}
					LA135: ;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_258045]), a);
					res_258284 += ((NI) 1);
				} LA132: ;
			}
		}
		(*result).flags |= ((NI16)1)<<((((NU8) 4))%(sizeof(NI16)*8));
	}
	break;
	case ((NU8) 38):
	{
		result = copytree_195028(n);
		{
			NI i_258083;
			NI HEX3Atmp_258289;
			NI LOC139;
			NI res_258292;
			i_258083 = 0;
			HEX3Atmp_258289 = 0;
			LOC139 = 0;
			LOC139 = sonslen_193403(n);
			HEX3Atmp_258289 = (NI)(LOC139 - ((NI) 1));
			res_258292 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					if (!(res_258292 <= HEX3Atmp_258289)) goto LA141;
					i_258083 = res_258292;
					a = getconstexpr_256004(m, (*(*n).kindU.S6.sons->data[i_258083]).kindU.S6.sons->data[((NI) 1)]);
					{
						if (!(a == NIM_NIL)) goto LA144;
						result = NIM_NIL;
						goto BeforeRet;
					}
					LA144: ;
					asgnRefNoCycle((void**) (&(*(*result).kindU.S6.sons->data[i_258083]).kindU.S6.sons->data[((NI) 1)]), a);
					res_258292 += ((NI) 1);
				} LA141: ;
			}
		}
		(*result).flags |= ((NI16)1)<<((((NU8) 4))%(sizeof(NI16)*8));
	}
	break;
	case ((NU8) 37):
	{
		result = copytree_195028(n);
		{
			NIM_BOOL LOC149;
			NI LOC150;
			LOC149 = 0;
			LOC150 = 0;
			LOC150 = sonslen_193403(n);
			LOC149 = (((NI) 0) < LOC150);
			if (!(LOC149)) goto LA151;
			LOC149 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 34));
			LA151: ;
			if (!LOC149) goto LA152;
			{
				NI i_258133;
				NI HEX3Atmp_258297;
				NI LOC155;
				NI res_258300;
				i_258133 = 0;
				HEX3Atmp_258297 = 0;
				LOC155 = 0;
				LOC155 = sonslen_193403(n);
				HEX3Atmp_258297 = (NI)(LOC155 - ((NI) 1));
				res_258300 = ((NI) 0);
				{
					while (1) {
						Tnode190813* a;
						if (!(res_258300 <= HEX3Atmp_258297)) goto LA157;
						i_258133 = res_258300;
						a = getconstexpr_256004(m, (*(*n).kindU.S6.sons->data[i_258133]).kindU.S6.sons->data[((NI) 1)]);
						{
							if (!(a == NIM_NIL)) goto LA160;
							result = NIM_NIL;
							goto BeforeRet;
						}
						LA160: ;
						asgnRefNoCycle((void**) (&(*(*result).kindU.S6.sons->data[i_258133]).kindU.S6.sons->data[((NI) 1)]), a);
						res_258300 += ((NI) 1);
					} LA157: ;
				}
			}
		}
		goto LA147;
		LA152: ;
		{
			{
				NI i_258163;
				NI HEX3Atmp_258305;
				NI LOC164;
				NI res_258308;
				i_258163 = 0;
				HEX3Atmp_258305 = 0;
				LOC164 = 0;
				LOC164 = sonslen_193403(n);
				HEX3Atmp_258305 = (NI)(LOC164 - ((NI) 1));
				res_258308 = ((NI) 0);
				{
					while (1) {
						Tnode190813* a;
						if (!(res_258308 <= HEX3Atmp_258305)) goto LA166;
						i_258163 = res_258308;
						a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[i_258163]);
						{
							if (!(a == NIM_NIL)) goto LA169;
							result = NIM_NIL;
							goto BeforeRet;
						}
						LA169: ;
						asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_258163]), a);
						res_258308 += ((NI) 1);
					} LA166: ;
				}
			}
		}
		LA147: ;
		(*result).flags |= ((NI16)1)<<((((NU8) 4))%(sizeof(NI16)*8));
	}
	break;
	case ((NU8) 68):
	case ((NU8) 69):
	case ((NU8) 70):
	{
		Tnode190813* a;
		a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			if (!(a == NIM_NIL)) goto LA174;
			goto BeforeRet;
		}
		LA174: ;
		{
			NIM_BOOL LOC178;
			LOC178 = 0;
			LOC178 = levalueconv_256021((*n).kindU.S6.sons->data[((NI) 1)], a);
			if (!(LOC178)) goto LA179;
			LOC178 = levalueconv_256021(a, (*n).kindU.S6.sons->data[((NI) 2)]);
			LA179: ;
			if (!LOC178) goto LA180;
			result = a;
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
		}
		goto LA176;
		LA180: ;
		{
			NimStringDesc* LOC183;
			TY154965 LOC184;
			NimStringDesc* LOC185;
			LOC183 = 0;
			LOC183 = msgkindtostring_164616(((NU16) 142));
			memset((void*)LOC184, 0, sizeof(LOC184));
			LOC184[0] = typetostring_220032((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, ((NU8) 0));
			LOC184[1] = typetostring_220032((*n).typ, ((NU8) 0));
			LOC185 = 0;
			LOC185 = nsuFormatOpenArray(LOC183, LOC184, 2);
			localerror_165155((*n).info, ((NU16) 4), LOC185);
		}
		LA176: ;
	}
	break;
	case ((NU8) 71):
	case ((NU8) 72):
	{
		Tnode190813* a;
		a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			if (!(a == NIM_NIL)) goto LA189;
			goto BeforeRet;
		}
		LA189: ;
		result = a;
		asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		Tnode190813* a;
		a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 1)]);
		{
			if (!(a == NIM_NIL)) goto LA194;
			goto BeforeRet;
		}
		LA194: ;
		result = foldconv_257281(n, a, ((*n).kind == ((NU8) 58)));
	}
	break;
	case ((NU8) 61):
	{
		Tnode190813* a;
		a = getconstexpr_256004(m, (*n).kindU.S6.sons->data[((NI) 1)]);
		{
			if (!(a == NIM_NIL)) goto LA199;
			goto BeforeRet;
		}
		LA199: ;
		{
			if (!((IL64(1125900835880960) &(IL64(1)<<(((*(*n).typ).kind)&IL64(63))))!=0)) goto LA203;
			result = a;
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
		}
		LA203: ;
	}
	break;
	case ((NU8) 42):
	{
		result = foldarrayaccess_257328(m, n);
	}
	break;
	case ((NU8) 45):
	{
		result = foldfieldaccess_257403(m, n);
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, isintrange_256197)(Ttype190849* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 20));
	if (!(LOC1)) goto LA2;
	LOC1 = ((IL64(15459734781952) &(IL64(1)<<(((*(*t).sons->data[((NI) 0)]).kind)&IL64(63))))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Ttype190849*, makerange_256294)(Ttype190849* typ, NI64 first, NI64 last) {
	Ttype190849* result;
	NI64 mina;
	NI64 maxa;
	Tnode190813* lowernode;
	result = 0;
	mina = ((first <= last) ? first : last);
	maxa = ((first >= last) ? first : last);
	lowernode = newintnode_191607(((NU8) 6), mina);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*typ).kind == ((NU8) 31));
		if (!(LOC3)) goto LA4;
		LOC3 = (mina == maxa);
		LA4: ;
		if (!LOC3) goto LA5;
		result = getintlittype_238660(lowernode);
	}
	goto LA1;
	LA5: ;
	{
		if (!((IL64(18691697672192) &(IL64(1)<<(((*typ).kind)&IL64(63))))!=0)) goto LA8;
		result = typ;
	}
	goto LA1;
	LA8: ;
	{
		Tnode190813* n;
		Tnode190813* LOC11;
		Ttype190849* LOC12;
		n = newnode_191401(((NU8) 44));
		addson_192819(n, lowernode);
		LOC11 = 0;
		LOC11 = newintnode_191607(((NU8) 6), maxa);
		addson_192819(n, LOC11);
		result = newtype_193140(((NU8) 20), (*typ).owner);
		asgnRefNoCycle((void**) (&(*result).n), n);
		LOC12 = 0;
		LOC12 = skiptypes_194167(typ, 1048576);
		addsonskipintlit_238731(result, LOC12);
	}
	LA1: ;
	return result;
}

static N_INLINE(NIM_BOOL, isfloatrange_256167)(Ttype190849* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 20));
	if (!(LOC1)) goto LA2;
	LOC1 = ((IL64(1030792151040) &(IL64(1)<<(((*(*t).sons->data[((NI) 0)]).kind)&IL64(63))))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Ttype190849*, makerangef_256339)(Ttype190849* typ, NF first, NF last) {
	Ttype190849* result;
	Tnode190813* n;
	Tnode190813* LOC1;
	Tnode190813* LOC2;
	Ttype190849* LOC3;
	result = 0;
	n = newnode_191401(((NU8) 44));
	LOC1 = 0;
	LOC1 = newfloatnode_191631(((NU8) 16), ((first <= last) ? first : last));
	addson_192819(n, LOC1);
	LOC2 = 0;
	LOC2 = newfloatnode_191631(((NU8) 16), ((first >= last) ? first : last));
	addson_192819(n, LOC2);
	result = newtype_193140(((NU8) 20), (*typ).owner);
	asgnRefNoCycle((void**) (&(*result).n), n);
	LOC3 = 0;
	LOC3 = skiptypes_194167(typ, 1048576);
	addsonskipintlit_238731(result, LOC3);
	return result;
}

static N_INLINE(NIM_BOOL, isintlit_220327)(Ttype190849* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*t).kind == ((NU8) 31));
	if (!(LOC2)) goto LA3;
	LOC2 = !(((*t).n == NIM_NIL));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*(*t).n).kind == ((NU8) 6));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NI64, pickminint_256248)(Tnode190813* n) {
	NI64 result;
	result = 0;
	{
		if (!((*n).kind >= ((NU8) 6) && (*n).kind <= ((NU8) 15))) goto LA3;
		result = (*n).kindU.S1.intval;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = isintlit_220327((*n).typ);
		if (!LOC6) goto LA7;
		result = (*(*(*n).typ).n).kindU.S1.intval;
	}
	goto LA1;
	LA7: ;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = isintrange_256197((*n).typ);
		if (!LOC10) goto LA11;
		result = firstord_220004((*n).typ);
	}
	goto LA1;
	LA11: ;
	{
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3248));
	}
	LA1: ;
	return result;
}

N_NIMCALL(NI64, pickmaxint_256271)(Tnode190813* n) {
	NI64 result;
	result = 0;
	{
		if (!((*n).kind >= ((NU8) 6) && (*n).kind <= ((NU8) 15))) goto LA3;
		result = (*n).kindU.S1.intval;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = isintlit_220327((*n).typ);
		if (!LOC6) goto LA7;
		result = (*(*(*n).typ).n).kindU.S1.intval;
	}
	goto LA1;
	LA7: ;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = isintrange_256197((*n).typ);
		if (!LOC10) goto LA11;
		result = lastord_220010((*n).typ);
	}
	goto LA1;
	LA11: ;
	{
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3249));
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isintrangeorlit_256238)(Ttype190849* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = isintrange_256197(t);
	if (LOC1) goto LA2;
	LOC1 = isintlit_220327(t);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Ttype190849*, pickintrange_256227)(Ttype190849* a, Ttype190849* b) {
	Ttype190849* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isintrange_256197(a);
		if (!LOC3) goto LA4;
		result = a;
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isintrange_256197(b);
		if (!LOC7) goto LA8;
		result = b;
	}
	goto LA1;
	LA8: ;
	{
		result = a;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, getintervaltype_256365)(NU16 m, Tnode190813* n) {
	Ttype190849* result;
	result = 0;
	result = (*n).typ;
	switch (m) {
	case ((NU16) 105):
	case ((NU16) 106):
	{
		Ttype190849* a;
		a = (*(*n).kindU.S6.sons->data[((NI) 1)]).typ;
		{
			NIM_BOOL LOC4;
			NI64 LOC7;
			NI64 LOC8;
			NI64 LOC9;
			NI64 LOC10;
			LOC4 = 0;
			LOC4 = isintrange_256197(a);
			if (!LOC4) goto LA5;
			LOC7 = 0;
			LOC7 = lastord_220010(a);
			LOC8 = 0;
			LOC8 = HEX7CHEX2DHEX7C_255030(IL64(0), LOC7);
			LOC9 = 0;
			LOC9 = firstord_220004(a);
			LOC10 = 0;
			LOC10 = HEX7CHEX2DHEX7C_255030(IL64(0), LOC9);
			result = makerange_256294(a, LOC8, LOC10);
		}
		LA5: ;
	}
	break;
	case ((NU16) 114):
	{
		Ttype190849* a;
		a = (*(*n).kindU.S6.sons->data[((NI) 1)]).typ;
		{
			NIM_BOOL LOC14;
			NF LOC17;
			NF LOC18;
			LOC14 = 0;
			LOC14 = isfloatrange_256167(a);
			if (!LOC14) goto LA15;
			LOC17 = 0;
			LOC17 = getfloat_195616((*(*a).n).kindU.S6.sons->data[((NI) 1)]);
			LOC18 = 0;
			LOC18 = getfloat_195616((*(*a).n).kindU.S6.sons->data[((NI) 0)]);
			result = makerangef_256339(a, -(LOC17), -(LOC18));
		}
		LA15: ;
	}
	break;
	case ((NU16) 115):
	{
		Ttype190849* a;
		a = (*(*n).kindU.S6.sons->data[((NI) 1)]).typ;
		{
			NIM_BOOL LOC22;
			LOC22 = 0;
			LOC22 = isfloatrange_256167(a);
			if (!LOC22) goto LA23;
			{
				Tnode190813* LOC27;
				NF LOC30;
				LOC27 = 0;
				LOC27 = HEX5BHEX5D_191244((*a).n, ((NI) 0));
				if (!((*LOC27).kindU.S2.floatval <= 0.0)) goto LA28;
				LOC30 = 0;
				LOC30 = getfloat_195616((*(*a).n).kindU.S6.sons->data[((NI) 0)]);
				result = makerangef_256339(a, 0.0, (LOC30 > 0? (LOC30) : -(LOC30)));
			}
			goto LA25;
			LA28: ;
			{
				NF LOC32;
				NF LOC33;
				LOC32 = 0;
				LOC32 = getfloat_195616((*(*a).n).kindU.S6.sons->data[((NI) 1)]);
				LOC33 = 0;
				LOC33 = getfloat_195616((*(*a).n).kindU.S6.sons->data[((NI) 0)]);
				result = makerangef_256339(a, (LOC32 > 0? (LOC32) : -(LOC32)), (LOC33 > 0? (LOC33) : -(LOC33)));
			}
			LA25: ;
		}
		LA23: ;
	}
	break;
	case ((NU16) 107):
	case ((NU16) 108):
	{
		Ttype190849* a;
		a = (*(*n).kindU.S6.sons->data[((NI) 1)]).typ;
		{
			NIM_BOOL LOC37;
			LOC37 = 0;
			LOC37 = isintrange_256197(a);
			if (!LOC37) goto LA38;
			{
				Tnode190813* LOC42;
				NI64 LOC45;
				NI64 LOC46;
				LOC42 = 0;
				LOC42 = HEX5BHEX5D_191244((*a).n, ((NI) 0));
				if (!((*LOC42).kindU.S1.intval <= IL64(0))) goto LA43;
				LOC45 = 0;
				LOC45 = getint_195605((*(*a).n).kindU.S6.sons->data[((NI) 0)]);
				LOC46 = 0;
				LOC46 = HEX7CabsHEX7C_255041(LOC45);
				result = makerange_256294(a, IL64(0), LOC46);
			}
			goto LA40;
			LA43: ;
			{
				NI64 LOC48;
				NI64 LOC49;
				NI64 LOC50;
				NI64 LOC51;
				LOC48 = 0;
				LOC48 = getint_195605((*(*a).n).kindU.S6.sons->data[((NI) 1)]);
				LOC49 = 0;
				LOC49 = HEX7CabsHEX7C_255041(LOC48);
				LOC50 = 0;
				LOC50 = getint_195605((*(*a).n).kindU.S6.sons->data[((NI) 0)]);
				LOC51 = 0;
				LOC51 = HEX7CabsHEX7C_255041(LOC50);
				result = makerange_256294(a, LOC49, LOC51);
			}
			LA40: ;
		}
		LA38: ;
	}
	break;
	case ((NU16) 51):
	{
		Ttype190849* a;
		Ttype190849* b;
		a = (*(*n).kindU.S6.sons->data[((NI) 1)]).typ;
		b = (*(*n).kindU.S6.sons->data[((NI) 2)]).typ;
		{
			NIM_BOOL LOC55;
			NI64 LOC59;
			NI64 LOC60;
			NI64 LOC61;
			NI64 LOC62;
			NI64 LOC63;
			NI64 LOC64;
			LOC55 = 0;
			LOC55 = isintrange_256197(a);
			if (!(LOC55)) goto LA56;
			LOC55 = isintlit_220327(b);
			LA56: ;
			if (!LOC55) goto LA57;
			LOC59 = 0;
			LOC59 = pickminint_256248((*n).kindU.S6.sons->data[((NI) 1)]);
			LOC60 = 0;
			LOC60 = pickminint_256248((*n).kindU.S6.sons->data[((NI) 2)]);
			LOC61 = 0;
			LOC61 = HEX7CHEX2BHEX7C_255019(LOC59, LOC60);
			LOC62 = 0;
			LOC62 = pickmaxint_256271((*n).kindU.S6.sons->data[((NI) 1)]);
			LOC63 = 0;
			LOC63 = pickmaxint_256271((*n).kindU.S6.sons->data[((NI) 2)]);
			LOC64 = 0;
			LOC64 = HEX7CHEX2BHEX7C_255019(LOC62, LOC63);
			result = makerange_256294(a, LOC61, LOC64);
		}
		LA57: ;
	}
	break;
	case ((NU16) 52):
	{
		Ttype190849* a;
		Ttype190849* b;
		a = (*(*n).kindU.S6.sons->data[((NI) 1)]).typ;
		b = (*(*n).kindU.S6.sons->data[((NI) 2)]).typ;
		{
			NIM_BOOL LOC68;
			NI64 LOC72;
			NI64 LOC73;
			NI64 LOC74;
			NI64 LOC75;
			NI64 LOC76;
			NI64 LOC77;
			LOC68 = 0;
			LOC68 = isintrange_256197(a);
			if (!(LOC68)) goto LA69;
			LOC68 = isintlit_220327(b);
			LA69: ;
			if (!LOC68) goto LA70;
			LOC72 = 0;
			LOC72 = pickminint_256248((*n).kindU.S6.sons->data[((NI) 1)]);
			LOC73 = 0;
			LOC73 = pickminint_256248((*n).kindU.S6.sons->data[((NI) 2)]);
			LOC74 = 0;
			LOC74 = HEX7CHEX2DHEX7C_255030(LOC72, LOC73);
			LOC75 = 0;
			LOC75 = pickmaxint_256271((*n).kindU.S6.sons->data[((NI) 1)]);
			LOC76 = 0;
			LOC76 = pickmaxint_256271((*n).kindU.S6.sons->data[((NI) 2)]);
			LOC77 = 0;
			LOC77 = HEX7CHEX2DHEX7C_255030(LOC75, LOC76);
			result = makerange_256294(a, LOC74, LOC77);
		}
		LA70: ;
	}
	break;
	case ((NU16) 41):
	case ((NU16) 46):
	case ((NU16) 71):
	{
		Tnode190813* a_256424;
		Tnode190813* b_256426;
		a_256424 = (*n).kindU.S6.sons->data[((NI) 1)];
		b_256426 = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			NIM_BOOL LOC81;
			Ttype190849* LOC85;
			NI64 LOC86;
			NI64 LOC87;
			NI64 LOC88;
			NI64 LOC89;
			NI64 LOC90;
			NI64 LOC91;
			LOC81 = 0;
			LOC81 = isintrangeorlit_256238((*a_256424).typ);
			if (!(LOC81)) goto LA82;
			LOC81 = isintrangeorlit_256238((*b_256426).typ);
			LA82: ;
			if (!LOC81) goto LA83;
			LOC85 = 0;
			LOC85 = pickintrange_256227((*a_256424).typ, (*b_256426).typ);
			LOC86 = 0;
			LOC86 = pickminint_256248(a_256424);
			LOC87 = 0;
			LOC87 = pickminint_256248(b_256426);
			LOC88 = 0;
			LOC88 = HEX7CHEX2BHEX7C_255019(LOC86, LOC87);
			LOC89 = 0;
			LOC89 = pickmaxint_256271(a_256424);
			LOC90 = 0;
			LOC90 = pickmaxint_256271(b_256426);
			LOC91 = 0;
			LOC91 = HEX7CHEX2BHEX7C_255019(LOC89, LOC90);
			result = makerange_256294(LOC85, LOC88, LOC91);
		}
		LA83: ;
	}
	break;
	case ((NU16) 43):
	case ((NU16) 48):
	case ((NU16) 73):
	{
		Tnode190813* a_256430;
		Tnode190813* b_256432;
		a_256430 = (*n).kindU.S6.sons->data[((NI) 1)];
		b_256432 = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			NIM_BOOL LOC95;
			Ttype190849* LOC99;
			NI64 LOC100;
			NI64 LOC101;
			NI64 LOC102;
			NI64 LOC103;
			NI64 LOC104;
			NI64 LOC105;
			LOC95 = 0;
			LOC95 = isintrangeorlit_256238((*a_256430).typ);
			if (!(LOC95)) goto LA96;
			LOC95 = isintrangeorlit_256238((*b_256432).typ);
			LA96: ;
			if (!LOC95) goto LA97;
			LOC99 = 0;
			LOC99 = pickintrange_256227((*a_256430).typ, (*b_256432).typ);
			LOC100 = 0;
			LOC100 = pickminint_256248(a_256430);
			LOC101 = 0;
			LOC101 = pickminint_256248(b_256432);
			LOC102 = 0;
			LOC102 = HEX7CHEX2AHEX7C_255073(LOC100, LOC101);
			LOC103 = 0;
			LOC103 = pickmaxint_256271(a_256430);
			LOC104 = 0;
			LOC104 = pickmaxint_256271(b_256432);
			LOC105 = 0;
			LOC105 = HEX7CHEX2AHEX7C_255073(LOC103, LOC104);
			result = makerange_256294(LOC99, LOC102, LOC105);
		}
		LA97: ;
	}
	break;
	case ((NU16) 42):
	case ((NU16) 47):
	case ((NU16) 72):
	{
		Tnode190813* a_256436;
		Tnode190813* b_256438;
		a_256436 = (*n).kindU.S6.sons->data[((NI) 1)];
		b_256438 = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			NIM_BOOL LOC109;
			NI64 LOC113;
			NI64 LOC114;
			NI64 LOC115;
			NI64 LOC116;
			NI64 LOC117;
			NI64 LOC118;
			LOC109 = 0;
			LOC109 = isintrange_256197((*a_256436).typ);
			if (!(LOC109)) goto LA110;
			LOC109 = ((*b_256438).kind >= ((NU8) 6) && (*b_256438).kind <= ((NU8) 15));
			LA110: ;
			if (!LOC109) goto LA111;
			LOC113 = 0;
			LOC113 = pickminint_256248(a_256436);
			LOC114 = 0;
			LOC114 = pickminint_256248(b_256438);
			LOC115 = 0;
			LOC115 = HEX7CHEX2DHEX7C_255030(LOC113, LOC114);
			LOC116 = 0;
			LOC116 = pickmaxint_256271(a_256436);
			LOC117 = 0;
			LOC117 = pickmaxint_256271(b_256438);
			LOC118 = 0;
			LOC118 = HEX7CHEX2DHEX7C_255030(LOC116, LOC117);
			result = makerange_256294((*a_256436).typ, LOC115, LOC118);
		}
		LA111: ;
	}
	break;
	case ((NU16) 59):
	case ((NU16) 66):
	{
		Tnode190813* a;
		Tnode190813* b;
		a = (*n).kindU.S6.sons->data[((NI) 1)];
		b = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			Tnode190813* LOC124;
			if (!!(((*b).kind >= ((NU8) 6) && (*b).kind <= ((NU8) 15)))) goto LA122;
			LOC124 = 0;
			LOC124 = a;
			a = b;
			b = LOC124;
		}
		LA122: ;
		{
			NI64 x;
			if (!((*b).kind >= ((NU8) 6) && (*b).kind <= ((NU8) 15))) goto LA127;
			x = HEX7CHEX2BHEX7C_255019((*b).kindU.S1.intval, IL64(1));
			{
				NIM_BOOL LOC131;
				LOC131 = 0;
				LOC131 = ((NI64)(x & -(x)) == x);
				if (!(LOC131)) goto LA132;
				LOC131 = (IL64(0) <= x);
				LA132: ;
				if (!LOC131) goto LA133;
				result = makerange_256294((*a).typ, IL64(0), (*b).kindU.S1.intval);
			}
			LA133: ;
		}
		LA127: ;
	}
	break;
	case ((NU16) 75):
	{
		Tnode190813* a;
		Tnode190813* b;
		a = (*n).kindU.S6.sons->data[((NI) 1)];
		b = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			if (!((*a).kind >= ((NU8) 6) && (*a).kind <= ((NU8) 15))) goto LA138;
			{
				if (!(IL64(0) <= (*b).kindU.S1.intval)) goto LA142;
				result = makerange_256294((*a).typ, IL64(0), (NI64)((*b).kindU.S1.intval - IL64(1)));
			}
			goto LA140;
			LA142: ;
			{
				result = makerange_256294((*a).typ, (NI64)((*b).kindU.S1.intval + IL64(1)), IL64(0));
			}
			LA140: ;
		}
		LA138: ;
	}
	break;
	case ((NU16) 45):
	case ((NU16) 50):
	{
		Tnode190813* a;
		Tnode190813* b;
		a = (*n).kindU.S6.sons->data[((NI) 1)];
		b = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			if (!((*b).kind >= ((NU8) 6) && (*b).kind <= ((NU8) 15))) goto LA148;
			{
				if (!(IL64(0) <= (*b).kindU.S1.intval)) goto LA152;
				result = makerange_256294((*a).typ, -((NI64)((*b).kindU.S1.intval - IL64(1))), (NI64)((*b).kindU.S1.intval - IL64(1)));
			}
			goto LA150;
			LA152: ;
			{
				result = makerange_256294((*a).typ, (NI64)((*b).kindU.S1.intval + IL64(1)), -((NI64)((*b).kindU.S1.intval + IL64(1))));
			}
			LA150: ;
		}
		LA148: ;
	}
	break;
	case ((NU16) 44):
	case ((NU16) 49):
	case ((NU16) 74):
	{
		Tnode190813* a_256527;
		Tnode190813* b_256529;
		a_256527 = (*n).kindU.S6.sons->data[((NI) 1)];
		b_256529 = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			NIM_BOOL LOC158;
			NI64 LOC162;
			NI64 LOC163;
			NI64 LOC164;
			NI64 LOC165;
			NI64 LOC166;
			NI64 LOC167;
			LOC158 = 0;
			LOC158 = isintrange_256197((*a_256527).typ);
			if (!(LOC158)) goto LA159;
			LOC158 = ((*b_256529).kind >= ((NU8) 6) && (*b_256529).kind <= ((NU8) 15));
			LA159: ;
			if (!LOC158) goto LA160;
			LOC162 = 0;
			LOC162 = pickminint_256248(a_256527);
			LOC163 = 0;
			LOC163 = pickminint_256248(b_256529);
			LOC164 = 0;
			LOC164 = HEX7CdivHEX7C_255051(LOC162, LOC163);
			LOC165 = 0;
			LOC165 = pickmaxint_256271(a_256527);
			LOC166 = 0;
			LOC166 = pickmaxint_256271(b_256529);
			LOC167 = 0;
			LOC167 = HEX7CdivHEX7C_255051(LOC165, LOC166);
			result = makerange_256294((*a_256527).typ, LOC164, LOC167);
		}
		LA160: ;
	}
	break;
	case ((NU16) 62):
	{
		Tnode190813* a_256544;
		Tnode190813* b_256546;
		a_256544 = (*n).kindU.S6.sons->data[((NI) 1)];
		b_256546 = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			NIM_BOOL LOC171;
			Ttype190849* LOC175;
			NI64 LOC176;
			NI64 LOC177;
			NI64 LOC178;
			NI64 LOC179;
			LOC171 = 0;
			LOC171 = isintrangeorlit_256238((*a_256544).typ);
			if (!(LOC171)) goto LA172;
			LOC171 = isintrangeorlit_256238((*b_256546).typ);
			LA172: ;
			if (!LOC171) goto LA173;
			LOC175 = 0;
			LOC175 = pickintrange_256227((*a_256544).typ, (*b_256546).typ);
			LOC176 = 0;
			LOC176 = pickminint_256248(a_256544);
			LOC177 = 0;
			LOC177 = pickminint_256248(b_256546);
			LOC178 = 0;
			LOC178 = pickmaxint_256271(a_256544);
			LOC179 = 0;
			LOC179 = pickmaxint_256271(b_256546);
			result = makerange_256294(LOC175, ((LOC176 <= LOC177) ? LOC176 : LOC177), ((LOC178 <= LOC179) ? LOC178 : LOC179));
		}
		LA173: ;
	}
	break;
	case ((NU16) 63):
	{
		Tnode190813* a_256558;
		Tnode190813* b_256560;
		a_256558 = (*n).kindU.S6.sons->data[((NI) 1)];
		b_256560 = (*n).kindU.S6.sons->data[((NI) 2)];
		{
			NIM_BOOL LOC183;
			Ttype190849* LOC187;
			NI64 LOC188;
			NI64 LOC189;
			NI64 LOC190;
			NI64 LOC191;
			LOC183 = 0;
			LOC183 = isintrangeorlit_256238((*a_256558).typ);
			if (!(LOC183)) goto LA184;
			LOC183 = isintrangeorlit_256238((*b_256560).typ);
			LA184: ;
			if (!LOC183) goto LA185;
			LOC187 = 0;
			LOC187 = pickintrange_256227((*a_256558).typ, (*b_256560).typ);
			LOC188 = 0;
			LOC188 = pickminint_256248(a_256558);
			LOC189 = 0;
			LOC189 = pickminint_256248(b_256560);
			LOC190 = 0;
			LOC190 = pickmaxint_256271(a_256558);
			LOC191 = 0;
			LOC191 = pickmaxint_256271(b_256560);
			result = makerange_256294(LOC187, ((LOC188 >= LOC189) ? LOC188 : LOC189), ((LOC190 >= LOC191) ? LOC190 : LOC191));
		}
		LA185: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
NIM_EXTERNC N_NOINLINE(void, nimsrc_semfoldInit)(void) {
}

NIM_EXTERNC N_NOINLINE(void, nimsrc_semfoldDatInit)(void) {
}

