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

#include "nimbase.h"
#include <string.h>
#include <setjmp.h>
typedef struct Ttype215828 Ttype215828;
typedef struct Tidobj190006 Tidobj190006;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq215824 Ttypeseq215824;
typedef struct Tnode215790 Tnode215790;
typedef struct Tsym215822 Tsym215822;
typedef struct Tloc215804 Tloc215804;
typedef struct Ropeobj170006 Ropeobj170006;
typedef struct Cell47504 Cell47504;
typedef struct Cellseq47520 Cellseq47520;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47516 Cellset47516;
typedef struct Pagedesc47512 Pagedesc47512;
typedef struct Memregion29687 Memregion29687;
typedef struct Smallchunk29639 Smallchunk29639;
typedef struct Llchunk29681 Llchunk29681;
typedef struct Bigchunk29641 Bigchunk29641;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29685 Avlnode29685;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Tident190012 Tident190012;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tscope215816 Tscope215816;
typedef struct TY215925 TY215925;
typedef struct Tstrtable215794 Tstrtable215794;
typedef struct Tsymseq215792 Tsymseq215792;
typedef struct Tlineinfo183337 Tlineinfo183337;
typedef struct Tlib215808 Tlib215808;
typedef struct Tpasscontext262002 Tpasscontext262002;
typedef struct Tcontext265020 Tcontext265020;
typedef struct Tproccon265008 Tproccon265008;
typedef struct Intset212035 Intset212035;
typedef struct Trunk212031 Trunk212031;
typedef struct Trunkseq212033 Trunkseq212033;
typedef struct Tlinkedlist135016 Tlinkedlist135016;
typedef struct Tlistentry135010 Tlistentry135010;
typedef struct Tidtable215840 Tidtable215840;
typedef struct Tidpairseq215838 Tidpairseq215838;
typedef struct Tctx264036 Tctx264036;
typedef struct TY265140 TY265140;
typedef struct Tnodeseq215784 Tnodeseq215784;
typedef struct Slice88082 Slice88082;
typedef struct Toverloaditer270296 Toverloaditer270296;
typedef struct Tidentiter222084 Tidentiter222084;
typedef struct TY88687 TY88687;
typedef struct Tcandidate363206 Tcandidate363206;
typedef struct Trepltypevars284531 Trepltypevars284531;
typedef struct Genericctx444427 Genericctx444427;
typedef struct Tinstantiation215812 Tinstantiation215812;
typedef struct TY215913 TY215913;
typedef struct Tinstantiationpair265010 Tinstantiationpair265010;
typedef struct TY429716 TY429716;
typedef struct TY429717 TY429717;
typedef struct Toptionentry265002 Toptionentry265002;
typedef struct TY437422 TY437422;
typedef struct Templctx439942 Templctx439942;
typedef struct Tliftctx451895 Tliftctx451895;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct Tfieldinstctx453708 Tfieldinstctx453708;
typedef struct Tfieldsctx453847 Tfieldsctx453847;
typedef struct Ttabiter222071 Ttabiter222071;
typedef struct Trodreader253021 Trodreader253021;
typedef struct Tindex253019 Tindex253019;
typedef struct Tiitable222163 Tiitable222163;
typedef struct Tiipairseq222161 Tiipairseq222161;
typedef struct Table253054 Table253054;
typedef struct Keyvaluepairseq253057 Keyvaluepairseq253057;
typedef struct Memfile251202 Memfile251202;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
typedef struct Tidpair215836 Tidpair215836;
typedef struct TY264242 TY264242;
typedef struct TY184093 TY184093;
typedef struct PprocHEX3Aobjecttype264221 PprocHEX3Aobjecttype264221;
typedef struct TY264261 TY264261;
typedef struct Tiipair222159 Tiipair222159;
typedef struct Keyvaluepair253060 Keyvaluepair253060;
typedef struct TY264222 TY264222;
typedef struct TY264227 TY264227;
typedef struct TY264262 TY264262;
typedef struct Vmargs264030 Vmargs264030;
typedef struct Tblock264018 Tblock264018;
typedef struct TY264202 TY264202;
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj190006  {
  TNimObject Sup;
NI id;
};
struct  Tloc215804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype215828* t;
Ropeobj170006* r;
Ropeobj170006* heaproot;
};
struct  Ttype215828  {
  Tidobj190006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq215824* sons;
Tnode215790* n;
Tsym215822* owner;
Tsym215822* sym;
Tsym215822* destructor;
Tsym215822* deepcopy;
Tsym215822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc215804 loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Cell47504  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47520  {
NI len;
NI cap;
Cell47504** d;
};
struct  Cellset47516  {
NI counter;
NI max;
Pagedesc47512* head;
Pagedesc47512** data;
};
typedef Smallchunk29639* TY29702[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29687  {
NI minlargeobj;
NI maxlargeobj;
TY29702 freesmallchunks;
Llchunk29681* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29641* freechunkslist;
Intset29614 chunkstarts;
Avlnode29685* root;
Avlnode29685* deleted;
Avlnode29685* last;
Avlnode29685* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47520 zct;
Cellseq47520 decstack;
Cellset47516 cycleroots;
Cellseq47520 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tstrtable215794  {
NI counter;
Tsymseq215792* data;
};
struct  Tlineinfo183337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tsym215822  {
  Tidobj190006 Sup;
NU8 kind;
union{
struct {Ttypeseq215824* typeinstcache;
Tscope215816* typscope;
} S1;
struct {TY215925* procinstcache;
Tsym215822* gcunsafetyreason;
} S2;
struct {TY215925* usedgenerics;
Tstrtable215794 tab;
} S3;
struct {Tsym215822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype215828* typ;
Tident190012* name;
Tlineinfo183337 info;
Tsym215822* owner;
NU32 flags;
Tnode215790* ast;
NU32 options;
NI position;
NI offset;
Tloc215804 loc;
Tlib215808* annex;
Tnode215790* constraint;
};
struct  Tpasscontext262002  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  Intset212035  {
NI counter;
NI max;
Trunk212031* head;
Trunkseq212033* data;
};
struct  Tlinkedlist135016  {
Tlistentry135010* head;
Tlistentry135010* tail;
NI counter;
};
struct  Tidtable215840  {
NI counter;
Tidpairseq215838* data;
};
typedef N_NIMCALL_PTR(Tnode215790*, TY265071) (Tcontext265020* c, Tnode215790* n);
typedef N_NIMCALL_PTR(Tnode215790*, TY265076) (Tcontext265020* c, Tnode215790* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode215790*, TY265084) (Tcontext265020* c, Tnode215790* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode215790*, TY265092) (Tcontext265020* c, Tnode215790* n);
typedef N_NIMCALL_PTR(Tnode215790*, TY265097) (Tcontext265020* c, Tnode215790* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode215790*, TY265105) (Tcontext265020* c, Tnode215790* n);
typedef N_NIMCALL_PTR(Tnode215790*, TY265110) (Tcontext265020* c, Tnode215790* n, Tnode215790* norig, NU32 filter);
typedef N_NIMCALL_PTR(Ttype215828*, TY265117) (Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
typedef struct {
N_NIMCALL_PTR(Tnode215790*, ClPrc) (Tcontext265020* c, Tidtable215840 pt, Tnode215790* n, void* ClEnv);
void* ClEnv;
} TY265123;
typedef struct {
N_NIMCALL_PTR(Tsym215822*, ClPrc) (Tcontext265020* c, Tsym215822* fn, Tidtable215840 pt, Tlineinfo183337 info, void* ClEnv);
void* ClEnv;
} TY265129;
typedef N_NIMCALL_PTR(Tsym215822*, TY265145) (Tcontext265020* c, Tsym215822* dc, Ttype215828* t, Tlineinfo183337 info, NU8 op);
struct  Tcontext265020  {
  Tpasscontext262002 Sup;
Tsym215822* module;
Tscope215816* currentscope;
Tscope215816* importtable;
Tscope215816* toplevelscope;
Tproccon265008* p;
Tsymseq215792* friendmodules;
NI instcounter;
Intset212035 ambiguoussymbols;
NI intypeclass;
NI ingenericcontext;
NI inunrolledcontext;
NI compilescontextid;
NI compilescontextidgenerator;
NI ingenericinst;
Tsymseq215792* converters;
Tsymseq215792* patterns;
Tlinkedlist135016 optionstack;
Tidtable215840 symmapping;
Tlinkedlist135016 libs;
TY265071 semconstexpr;
TY265076 semexpr;
TY265084 semtryexpr;
TY265092 semtryconstexpr;
TY265097 semoperand;
TY265105 semconstboolexpr;
TY265110 semoverloadedcall;
TY265117 semtypenode;
TY265123 seminferredlambda;
TY265129 semgenerateinstance;
Intset212035 includedfiles;
Tstrtable215794 userpragmas;
Tctx264036* evalcontext;
Intset212035 unknownidents;
TY265140* generics;
NI lastgenericidx;
NI hloloopdetector;
NI inparallelstmt;
TY265145 insttypeboundop;
};
struct  Tnode215790  {
Ttype215828* typ;
Tlineinfo183337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym215822* sym;
} S4;
struct {Tident190012* ident;
} S5;
struct {Tnodeseq215784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tproccon265008  {
Tsym215822* owner;
Tsym215822* resultsym;
NI nestedloopcounter;
NI nestedblockcounter;
NI intrystmt;
Tproccon265008* next;
NIM_BOOL wasforwarded;
Tnode215790* bracketexpr;
};
struct  Tident190012  {
  Tidobj190006 Sup;
NimStringDesc* s;
Tident190012* next;
NI h;
};
typedef NU8 TY450235[20];
struct  Slice88082  {
NI a;
NI b;
};
typedef Tnode215790* TY434020[2];
typedef Ttype215828* TY434025[2];
struct  Tidentiter222084  {
NI h;
Tident190012* name;
};
struct  Toverloaditer270296  {
Tidentiter222084 it;
Tsym215822* m;
NU8 mode;
NI symchoiceindex;
Tscope215816* scope;
Intset212035 insymchoice;
};
typedef NimStringDesc* TY185169[2];
struct TY88687 {
NimStringDesc* Field0;
NI Field1;
};
struct  Tcandidate363206  {
Tcontext265020* c;
NI exactmatches;
NI genericmatches;
NI subtypematches;
NI intconvmatches;
NI convmatches;
NU8 state;
Ttype215828* callee;
Tsym215822* calleesym;
NI calleescope;
Tnode215790* call;
Tidtable215840 bindings;
NIM_BOOL basetypematch;
NU8 fauxmatch;
NIM_BOOL genericconverter;
NIM_BOOL coercedistincts;
NIM_BOOL typedescmatched;
NIM_BOOL isnocall;
NI inheritancepenalty;
Tsymseq215792* errors;
};
struct  Trepltypevars284531  {
Tcontext265020* c;
Tidtable215840 typemap;
Tidtable215840 symmap;
Tidtable215840 localcache;
Tlineinfo183337 info;
NIM_BOOL allowmetatypes;
NIM_BOOL skiptypedesc;
Tsym215822* owner;
NI recursionlimit;
};
struct  Genericctx444427  {
Intset212035 tomixin;
NIM_BOOL cursorinbody;
Tnode215790* bracketexpr;
};
struct  Tscope215816  {
NI depthlevel;
Tstrtable215794 symbols;
Tnodeseq215784* usingsyms;
Tscope215816* parent;
};
struct  Tinstantiation215812  {
Tsym215822* sym;
Ttypeseq215824* concretetypes;
TY215913* usedby;
NI compilesid;
};
struct  Tinstantiationpair265010  {
Tsym215822* genericsym;
Tinstantiation215812* inst;
};
typedef NU8 Tspecialwords197006[33];
typedef Ttype215828* TY265646[2];
typedef Tnode215790* TY464931[3];
struct TY429717 {
Tsym215822* Field0;
NI Field1;
};
typedef Ttype215828* TY367877[1];
struct  Tlistentry135010  {
  TNimObject Sup;
Tlistentry135010* prev;
Tlistentry135010* next;
};
struct  Toptionentry265002  {
  Tlistentry135010 Sup;
NU32 options;
NU8 defaultcc;
Tlib215808* dynlib;
NU64 notes;
Tnode215790* otherpragmas;
};
struct  TY437422  {
NI HEX3Astate;
Tnode215790* genericparams436661;
NimStringDesc* paramname436663;
Tlineinfo183337 info436664;
Tcontext265020* c436659;
};
typedef struct {
N_NIMCALL_PTR(Ttype215828*, ClPrc) (Ttype215828* typeclass, Tident190012* typid, void* ClEnv);
void* ClEnv;
} TY436680;
typedef N_CLOSURE_PTR(Ttype215828*, TMP3314) (Ttype215828* typeclass, Tident190012* typid);
typedef N_CLOSURE_PTR(Ttype215828*, TMP3315) (Ttype215828* typeclass, Tident190012* typid);
typedef N_CLOSURE_PTR(Ttype215828*, TMP3316) (Ttype215828* typeclass, Tident190012* typid);
typedef N_CLOSURE_PTR(Ttype215828*, TMP3317) (Ttype215828* typeclass, Tident190012* typid);
typedef N_CLOSURE_PTR(Ttype215828*, TMP3318) (Ttype215828* typeclass, Tident190012* typid);
typedef N_CLOSURE_PTR(Ttype215828*, TMP3319) (Ttype215828* typeclass, Tident190012* typid);
typedef N_CLOSURE_PTR(Ttype215828*, TMP3320) (Ttype215828* typeclass, Tident190012* typid);
typedef N_CLOSURE_PTR(Ttype215828*, TMP3322) (Ttype215828* typeclass, Tident190012* typid);
struct  Templctx439942  {
Tcontext265020* c;
Intset212035 tobind;
Intset212035 tomixin;
Intset212035 toinject;
Tsym215822* owner;
NIM_BOOL cursorinbody;
Tnode215790* bracketexpr;
};
typedef Tsym215822* TY449706[2];
typedef Tnode215790* TY383939[2];
typedef Tnode215790* TY218053[7];
typedef Tnode215790* TY231280[1];
typedef NU8 TY461833[32];
typedef NimStringDesc* TY460630[2];
typedef N_NIMCALL_PTR(Tnode215790*, Transformation422004) (Tcontext265020* c, Tnode215790* n);
typedef NimStringDesc* TY185156[3];
typedef NimStringDesc* TY184752[1];
struct  Tliftctx451895  {
Tcontext265020* c;
Tlineinfo183337 info;
NU8 kind;
Tsym215822* fn;
Ttype215828* asgnfortype;
NIM_BOOL recurse;
};
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;
} TY17811;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY17811 raiseAction;
};
typedef N_CLOSURE_PTR(Tsym215822*, TMP3585) (Tcontext265020* c, Tsym215822* fn, Tidtable215840 pt, Tlineinfo183337 info);
struct  Tfieldinstctx453708  {
Ttype215828* tupletype;
NI tupleindex;
Tsym215822* field;
NIM_BOOL replacebyfieldname;
};
struct  Tfieldsctx453847  {
Tcontext265020* c;
NU8 m;
};
typedef N_NIMCALL_PTR(Tnode215790*, TY262054) (Tsym215822* m, NI32 fileidx);
struct  Ttabiter222071  {
NI h;
};
typedef N_CLOSURE_PTR(Tnode215790*, TMP3649) (Tcontext265020* c, Tidtable215840 pt, Tnode215790* n, void* ClEnv);
typedef N_CLOSURE_PTR(Tsym215822*, TMP3650) (Tcontext265020* c, Tsym215822* fn, Tidtable215840 pt, Tlineinfo183337 info, void* ClEnv);
struct  Tiitable222163  {
NI counter;
Tiipairseq222161* data;
};
struct  Tindex253019  {
NI lastidxkey;
NI lastidxval;
Tiitable222163 tab;
NimStringDesc* r;
NI offset;
};
struct  Table253054  {
Keyvaluepairseq253057* data;
NI counter;
};
struct  Memfile251202  {
void* mem;
NI size;
int handle;
};
struct  Trodreader253021  {
  TNimObject Sup;
NI pos;
NCSTRING s;
NU32 options;
NU8 reason;
TY215913* moddeps;
TY215913* files;
NI dataidx;
NI convertersidx;
NI initidx;
NI interfidx;
NI compilerprocsidx;
NI methodsidx;
NimStringDesc* filename;
Tindex253019 index;
Tindex253019 imports;
NI readerindex;
NI line;
NI moduleid;
Table253054 syms;
Memfile251202 memfile;
Tsymseq215792* methods;
NimStringDesc* origfile;
NIM_BOOL inviewmode;
};
struct  Ropeobj170006  {
  TNimObject Sup;
Ropeobj170006* left;
Ropeobj170006* right;
NI length;
NimStringDesc* data;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY29618[16];
struct  Pagedesc47512  {
Pagedesc47512* next;
NI key;
TY29618 bits;
};
struct  Basechunk29637  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29639  {
  Basechunk29637 Sup;
Smallchunk29639* next;
Smallchunk29639* prev;
Freecell29629* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29681  {
NI size;
NI acc;
Llchunk29681* next;
};
struct  Bigchunk29641  {
  Basechunk29637 Sup;
Bigchunk29641* next;
Bigchunk29641* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29618 bits;
};
typedef Avlnode29685* TY29692[2];
struct  Avlnode29685  {
TY29692 link;
NI key;
NI upperbound;
NI level;
};
struct  Tlib215808  {
  Tlistentry135010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj170006* name;
Tnode215790* path;
};
struct  Trunk212031  {
Trunk212031* next;
NI key;
TY29618 bits;
};
struct  Tidpair215836  {
Tidobj190006* key;
TNimObject* val;
};
struct  Tctx264036  {
  Tpasscontext262002 Sup;
TY264242* code;
TY184093* debug;
Tnode215790* globals;
Tnode215790* constants;
Ttypeseq215824* types;
Tnode215790* currentexceptiona;
Tnode215790* currentexceptionb;
NI exceptioninstr;
PprocHEX3Aobjecttype264221* prc;
Tsym215822* module;
Tnode215790* callsite;
NU8 mode;
NU8 features;
NIM_BOOL traceactive;
NI loopiterations;
Tlineinfo183337 comesfromheuristic;
TY264261* callbacks;
NimStringDesc* errorflag;
};
struct  Tiipair222159  {
NI key;
NI val;
};
struct Keyvaluepair253060 {
NI Field0;
NI Field1;
Tsym215822* Field2;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
struct TY264227 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY264227 TY264230[256];
struct  PprocHEX3Aobjecttype264221  {
TY264222* blocks;
Tsym215822* sym;
TY264230 slots;
NI maxslots;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Vmargs264030* args, void* ClEnv);
void* ClEnv;
} Vmcallback264032;
struct TY264262 {
NimStringDesc* Field0;
Vmcallback264032 Field1;
};
struct  Tblock264018  {
Tsym215822* label;
TY264202* fixups;
};
struct  Vmargs264030  {
NI ra;
NI rb;
NI rc;
void* slots;
Tnode215790* currentexception;
};
struct Tsymseq215792 {
  TGenericSeq Sup;
  Tsym215822* data[SEQ_DECL_SIZE];
};
struct Ttypeseq215824 {
  TGenericSeq Sup;
  Ttype215828* data[SEQ_DECL_SIZE];
};
struct TY215925 {
  TGenericSeq Sup;
  Tinstantiation215812* data[SEQ_DECL_SIZE];
};
struct TY265140 {
  TGenericSeq Sup;
  Tinstantiationpair265010 data[SEQ_DECL_SIZE];
};
struct Tnodeseq215784 {
  TGenericSeq Sup;
  Tnode215790* data[SEQ_DECL_SIZE];
};
struct TY429716 {
  TGenericSeq Sup;
  TY429717 data[SEQ_DECL_SIZE];
};
struct Trunkseq212033 {
  TGenericSeq Sup;
  Trunk212031* data[SEQ_DECL_SIZE];
};
struct Tidpairseq215838 {
  TGenericSeq Sup;
  Tidpair215836 data[SEQ_DECL_SIZE];
};
struct TY215913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct Tiipairseq222161 {
  TGenericSeq Sup;
  Tiipair222159 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq253057 {
  TGenericSeq Sup;
  Keyvaluepair253060 data[SEQ_DECL_SIZE];
};
struct TY264242 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY184093 {
  TGenericSeq Sup;
  Tlineinfo183337 data[SEQ_DECL_SIZE];
};
struct TY264261 {
  TGenericSeq Sup;
  TY264262 data[SEQ_DECL_SIZE];
};
struct TY264222 {
  TGenericSeq Sup;
  Tblock264018 data[SEQ_DECL_SIZE];
};
struct TY264202 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell47504*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_53001)(Cell47504* c);
N_NOINLINE(void, addzct_51417)(Cellseq47520* s, Cell47504* c);
N_NIMCALL(Tident190012*, getident_190441)(NimStringDesc* identifier);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newObjRC1)(TNimType* typ, NI size);
N_NIMCALL(Tnode215790*, newidentnode_217228)(Tident190012* ident, Tlineinfo183337 info);
N_NIMCALL(Tlineinfo183337, unknownlineinfo_184090)(void);
N_NIMCALL(Tcontext265020*, newcontext_265166)(Tsym215822* module);
N_NIMCALL(void, internalerror_188100)(Tlineinfo183337 info, NimStringDesc* errmsg);
N_NIMCALL(Tnode215790*, semconstexpr_427473)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semexprwithtype_426208)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semexpr_426201)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(void, suggestexpr_373810)(Tcontext265020* c, Tnode215790* node);
N_NIMCALL(Tsym215822*, lookup_270601)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, semcapturesym_384143)(Tsym215822* s, Tsym215822* owner);
N_NIMCALL(Tnode215790*, semsym_459040)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags);
N_NIMCALL(void, markused_363244)(Tlineinfo183337 info, Tsym215822* s);
N_NIMCALL(Ttype215828*, skiptypes_219113)(Ttype215828* t, NU64 kinds);
static N_INLINE(Tnode215790*, inlineconst_459033)(Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tnode215790*, copytree_219822)(Tnode215790* src);
N_NIMCALL(Tnode215790*, newsymnode_217241)(Tsym215822* sym, Tlineinfo183337 info);
static N_INLINE(NI, len_216059)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semmacroexpr_427007)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, Tsym215822* sym, NU16 flags);
N_NIMCALL(void, pushinfocontext_184209)(Tlineinfo183337 info);
N_NIMCALL(void, globalerror_188071)(Tlineinfo183337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tnode215790*, evalmacrocall_415669)(Tsym215822* module, Tnode215790* n, Tnode215790* norig, Tsym215822* sym);
N_NIMCALL(Tnode215790*, semaftermacrocall_432992)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags);
N_NIMCALL(Tsym215822*, getmodule_222144)(Tsym215822* s);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(Tnode215790*, semstmt_426250)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semexprnotype_426215)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, discardcheck_450323)(Tcontext265020* c, Tnode215790* result);
N_NIMCALL(void, message_188095)(Tlineinfo183337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NIM_BOOL, implicitlydiscardable_450236)(Tnode215790* n_450238);
N_NIMCALL(Tnode215790*, lastson_218364)(Tnode215790* n);
N_NIMCALL(NIM_BOOL, iscallexpr_216042)(Tnode215790* n);
N_NIMCALL(void, fixniltype_450276)(Tnode215790* n);
static N_INLINE(NIM_BOOL, isatom_220491)(Tnode215790* n);
N_NIMCALL(void, localerror_188080)(Tlineinfo183337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, typetostring_241017)(Ttype215828* typ, NU8 prefer);
N_NIMCALL(Ttype215828*, semtypenode_426245)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(void, checksonslen_265958)(Tnode215790* n, NI length);
N_NIMCALL(NI, sonslen_218351)(Tnode215790* n);
N_NIMCALL(Ttype215828*, semanontuple_435005)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, neworprevtype_433274)(NU8 kind, Ttype215828* prev, Tcontext265020* c);
N_NIMCALL(Ttype215828*, newtypes_265185)(NU8 kind, Tcontext265020* c);
N_NIMCALL(void, addsonskipintlit_259678)(Ttype215828* father, Ttype215828* son);
static N_INLINE(Tnode215790*, HEX5BHEX5D_216238)(Tnode215790* n, NI i);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(Tnode215790*, newnodei_217248)(NU8 kind, Tlineinfo183337 info);
static N_INLINE(Slice88082, HEX2EHEX2E_102424)(NI a, NI b);
N_NIMCALL(void, add_216114)(Tnode215790* father, Tnode215790* son);
N_NIMCALL(Ttype215828*, semrangeaux_433798)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
static N_INLINE(Ttype215828*, skipintlit_259651)(Ttype215828* t);
N_NIMCALL(Ttype215828*, getsystype_259130)(NU8 kind);
N_NIMCALL(NIM_BOOL, sametype_245628)(Ttype215828* a, Ttype215828* b, NU8 flags);
N_NIMCALL(NIM_BOOL, isordinaltype_241057)(Ttype215828* t);
N_NIMCALL(NIM_BOOL, enumhasholes_241060)(Ttype215828* t);
N_NIMCALL(NIM_BOOL, hasgenericarguments_284737)(Tnode215790* n);
N_NIMCALL(void, addson_217807)(Tnode215790* father, Tnode215790* son);
N_NIMCALL(Tnode215790*, makestaticexpr_265608)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NU8, weaklevalue_222277)(Tnode215790* a, Tnode215790* b);
static N_INLINE(Ttype215828*, freshtype_438308)(Ttype215828* res, Ttype215828* prev);
N_NIMCALL(Ttype215828*, copytype_218470)(Ttype215828* t, Tsym215822* owner, NIM_BOOL keepid);
N_NIMCALL(Ttype215828*, semtypeexpr_438291)(Tcontext265020* c, Tnode215790* n_438294);
N_NIMCALL(Ttype215828*, base_241021)(Ttype215828* t);
N_NIMCALL(NimStringDesc*, rendertree_234044)(Tnode215790* n, NU8 renderflags);
N_NIMCALL(Ttype215828*, errortype_265901)(Tcontext265020* c);
N_NIMCALL(Tident190012*, considerquotedident_270004)(Tnode215790* n);
N_NIMCALL(Ttype215828*, makeandtype_265640)(Tcontext265020* c, Ttype215828* t1, Ttype215828* t2);
N_NIMCALL(Ttype215828*, makeortype_265707)(Tcontext265020* c, Ttype215828* t1, Ttype215828* t2);
N_NIMCALL(Ttype215828*, makenottype_265774)(Tcontext265020* c, Ttype215828* t1);
N_NIMCALL(Ttype215828*, semanyref_433690)(Tcontext265020* c, Tnode215790* n_433693, NU8 kind, Ttype215828* prev);
N_NIMCALL(Ttype215828*, newconstraint_433301)(Tcontext265020* c, NU8 k);
N_NIMCALL(void, checkminsonslen_265962)(Tnode215790* n, NI length);
N_NIMCALL(Tnode215790*, semwhen_426990)(Tcontext265020* c, Tnode215790* n, NIM_BOOL semcheck);
N_NIMCALL(void, illformedast_265950)(Tnode215790* n);
N_NIMCALL(void, idsynchronizationpoint_214432)(NI idrange);
N_NIMCALL(Tsym215822*, semtypeident_434341)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, qualifiedlookup_270652)(Tcontext265020* c, Tnode215790* n, NU8 flags);
N_NIMCALL(Tsym215822*, errorsym_270243)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, copysym_218601)(Tsym215822* s, NIM_BOOL keepid);
N_NIMCALL(NI, len_218339)(Ttype215828* n);
N_NIMCALL(Tsym215822*, initoverloaditer_270890)(Toverloaditer270296* o, Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, nextoverloaditer_271041)(Toverloaditer270296* o, Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(Ttype215828*, semarray_434289)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semarrayindex_434182)(Tcontext265020* c, Tnode215790* n);
static N_INLINE(NIM_BOOL, isrange_240470)(Tnode215790* n);
N_NIMCALL(Ttype215828*, makerangewithstaticexpr_265845)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Ttype215828*, makerangetype_265915)(Tcontext265020* c, NI64 first, NI64 last, Tlineinfo183337 info, Ttype215828* inttype);
N_NIMCALL(Ttype215828*, lastson_218377)(Ttype215828* n);
N_NIMCALL(Ttype215828*, semcontainer_433670)(Tcontext265020* c, Tnode215790* n, NU8 kind, NimStringDesc* kindstr, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semrange_434078)(Tcontext265020* c, Tnode215790* n_434081, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semset_433644)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(NI64, lengthord_241007)(Ttype215828* t);
N_NIMCALL(Ttype215828*, semordinal_434323)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semvarargs_433680)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, maketypedesc_265524)(Tcontext265020* c, Ttype215828* typ);
N_NIMCALL(Tsym215822*, getcurrowner_265210)(void);
N_NIMCALL(void, rawaddson_219408)(Ttype215828* father, Ttype215828* son);
N_NIMCALL(Ttype215828*, semgeneric_438065)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, Ttype215828* prev);
N_NIMCALL(void, localerror_188085)(Tlineinfo183337 info, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, nsuToLowerStr)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_85009, TNimType* typ);
N_NIMCALL(Ttype215828*, semgenericparamininvocation_438060)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, internalerror_188113)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_188183)(TY88687 x);
N_NIMCALL(void, newcandidate_363419)(Tcontext265020* ctx, Ttype215828* callee, Tcandidate363206* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, matches_369311)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, Tcandidate363206* m);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, describeargs_363731)(Tcontext265020* c, Tnode215790* n, NI startidx, NU8 prefer);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, containsgenerictype_249492)(Ttype215828* t);
N_NIMCALL(Ttype215828*, instgenericcontainer_429096)(Tcontext265020* c, Tlineinfo183337 info, Ttype215828* header, NIM_BOOL allowmetatypes);
N_NIMCALL(void, initidtable_219033)(Tidtable215840* x);
N_NIMCALL(Ttype215828*, replacetypevarst_284566)(Trepltypevars284531* cl, Ttype215828* t);
N_NIMCALL(NIM_BOOL, ismetatype_216803)(Ttype215828* t);
N_NIMCALL(Tnode215790*, semgenericstmt_433270)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, initintset_212885)(Intset212035* Result);
N_NIMCALL(Tnode215790*, semgenericstmt_444438)(Tcontext265020* c, Tnode215790* n, NU8 flags_444442, Genericctx444427* ctx);
N_NIMCALL(Tnode215790*, lookup_445801)(Tcontext265020* c, Tnode215790* n, NU8 flags, Genericctx444427* ctx);
N_NIMCALL(Tsym215822*, skipalias_270088)(Tsym215822* s, Tnode215790* n);
N_NIMCALL(Tsym215822*, searchinscopes_270131)(Tcontext265020* c, Tident190012* s);
N_NIMCALL(NIM_BOOL, contains_212811)(Intset212035 s, NI key);
N_NIMCALL(Tnode215790*, symchoice_439732)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU8 r);
N_NIMCALL(Tnode215790*, newnodeit_217801)(NU8 kind, Tlineinfo183337 info, Ttype215828* typ);
N_NIMCALL(Tnode215790*, semgenericstmtsymbol_444460)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, Genericctx444427* ctx);
N_NIMCALL(Tnode215790*, semtemplateexpr_426999)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags);
N_NIMCALL(Tnode215790*, evaltemplate_401329)(Tnode215790* n, Tsym215822* tmpl, Tsym215822* gensymowner);
N_NIMCALL(void, popinfocontext_184222)(void);
N_NIMCALL(Tnode215790*, newsymnodetypedesc_277496)(Tsym215822* s, Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, fuzzylookup_445853)(Tcontext265020* c, Tnode215790* n_445856, NU8 flags, Genericctx444427* ctx, NIM_BOOL* ismacro);
N_NIMCALL(Tnode215790*, newdot_445845)(Tnode215790* n, Tnode215790* b);
N_NIMCALL(Tnode215790*, semmixinstmt_439897)(Tcontext265020* c, Tnode215790* n, Intset212035* tomixin);
N_NIMCALL(void, incl_212832)(Intset212035* s, NI key);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(Tnode215790*, semgenericstmtscope_444445)(Tcontext265020* c, Tnode215790* n, NU8 flags, Genericctx444427* ctx);
N_NIMCALL(Tscope215816*, openscope_270060)(Tcontext265020* c);
N_NIMCALL(void, closescope_270068)(Tcontext265020* c);
N_NIMCALL(void, addtempdecl_446289)(Tcontext265020* c, Tnode215790* n, NU8 kind);
N_NIMCALL(Tsym215822*, newsyms_426889)(NU8 kind, Tnode215790* n, Tcontext265020* c);
N_NIMCALL(Tsym215822*, newsym_216684)(NU8 symkind, Tident190012* name, Tsym215822* owner, Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, getidentnode_444420)(Tnode215790* n);
N_NIMCALL(void, addprelimdecl_270451)(Tcontext265020* c, Tsym215822* sym);
N_NIMCALL(void, adddecl_270445)(Tcontext265020* c, Tsym215822* sym);
N_NIMCALL(Tnode215790*, getbody_255828)(Tsym215822* s);
N_NIMCALL(Ttype215828*, maketypefromexpr_265557)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, assigntype_218389)(Ttype215828* dest, Ttype215828* src);
N_NIMCALL(Ttype215828*, semobjectnode_436413)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, skiptypesornil_219129)(Ttype215828* t, NU64 kinds);
static N_INLINE(Ttype215828*, skipgenericinvocation_436311)(Ttype215828* t);
N_NIMCALL(void, addinheritedfields_436336)(Tcontext265020* c, Intset212035* check, NI* pos, Ttype215828* obj);
N_NIMCALL(NI, sonslen_218327)(Ttype215828* n);
N_NIMCALL(void, addinheritedfieldsaux_436238)(Tcontext265020* c, Intset212035* check, NI* pos, Tnode215790* n);
N_NIMCALL(void, semrecordnodeaux_435630)(Tcontext265020* c, Tnode215790* n, Intset212035* check, NI* pos, Tnode215790* father, Ttype215828* rectype);
N_NIMCALL(Tnode215790*, semconstboolexpr_433240)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, fitnode_426230)(Tcontext265020* c, Ttype215828* formal, Tnode215790* arg);
N_NIMCALL(Tnode215790*, copynode_219542)(Tnode215790* src);
N_NIMCALL(Tnode215790*, indextypesmatch_426294)(Tcontext265020* c, Ttype215828* f, Ttype215828* a, Tnode215790* arg);
N_NIMCALL(void, initcandidate_363257)(Tcontext265020* ctx, Tcandidate363206* c, Ttype215828* callee);
N_NIMCALL(Tnode215790*, paramtypesmatch_368299)(Tcandidate363206* m, Ttype215828* f, Ttype215828* a, Tnode215790* arg, Tnode215790* argorig);
N_NIMCALL(void, instgenericconvertersarg_431842)(Tcontext265020* c, Tnode215790* a, Tcandidate363206* x);
N_NIMCALL(NIM_BOOL, isgenericroutine_220314)(Tsym215822* s);
N_NIMCALL(Tsym215822*, generateinstance_429238)(Tcontext265020* c, Tsym215822* fn, Tidtable215840 pt, Tlineinfo183337 info);
static N_INLINE(NIM_BOOL, istoplevel_265966)(Tcontext265020* c);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_53819)(Cell47504* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47504* c);
static N_INLINE(void, rtladdcycleroot_52220)(Cell47504* c);
N_NOINLINE(void, incl_48247)(Cellset47516* s, Cell47504* cell);
static N_INLINE(void, decref_53401)(Cell47504* c);
N_NIMCALL(void, pushowner_265212)(Tsym215822* owner);
N_NIMCALL(Tnode215790*, newsymnode_217234)(Tsym215822* sym);
N_NIMCALL(Tinstantiation215812*, new_429322)(void);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(TNimObject*, idtableget_222107)(Tidtable215840 t, Tidobj190006* key);
N_NIMCALL(Ttype215828*, generatetypeinstance_286450)(Tcontext265020* p, Tidtable215840 pt, Tlineinfo183337 info, Ttype215828* t);
static N_INLINE(void, pushproccon_265277)(Tcontext265020* c, Tsym215822* owner);
N_NIMCALL(void, instantiateproctype_429115)(Tcontext265020* c, Tidtable215840 pt, Tsym215822* prc, Tlineinfo183337 info);
N_NIMCALL(void, inittypevars_286420)(Tcontext265020* p, Tidtable215840 pt, Tlineinfo183337 info, Tsym215822* owner, Trepltypevars284531* Result);
N_NIMCALL(Ttype215828*, instcopytype_285256)(Trepltypevars284531* cl, Ttype215828* t);
N_NIMCALL(Tnode215790*, shallowcopy_219611)(Tnode215790* src);
N_NIMCALL(void, resetidtable_219047)(Tidtable215840* x);
N_NIMCALL(void, propagatetoowner_219190)(Ttype215828* owner, Ttype215828* elem);
N_NIMCALL(void, erasevoidparams_285748)(Ttype215828* t);
N_NIMCALL(void, skipintliteralparams_285876)(Ttype215828* t);
N_NIMCALL(void, maybeaddresult_426265)(Tcontext265020* c, Tsym215822* s, Tnode215790* n);
N_NIMCALL(void, addresult_455754)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info, NU8 owner);
N_NIMCALL(void, addparamorresult_428872)(Tcontext265020* c, Tsym215822* param, NU8 kind);
N_NIMCALL(Ttype215828*, findenforcedstatictype_436533)(Ttype215828* t_436535);
N_NIMCALL(Tsym215822*, getcompilerproc_259746)(NimStringDesc* name);
N_NIMCALL(Tsym215822*, getsyssym_259041)(NimStringDesc* name);
N_NIMCALL(void, addresultnode_455785)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, genericcacheget_428386)(Tsym215822* genericsym, Tinstantiation215812 entry, NI id);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_218864)(TY215925* x, TY215925* y);
N_NIMCALL(NIM_BOOL, sameinstantiation_428346)(Tinstantiation215812 a, Tinstantiation215812 b);
N_NIMCALL(NIM_BOOL, comparetypes_247404)(Ttype215828* x, Ttype215828* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, safeadd_429495)(TY215925** x, Tinstantiation215812* y);
N_NIMCALL(void, makeinstpair_265153)(Tsym215822* s, Tinstantiation215812* inst, Tinstantiationpair265010* Result);
N_NIMCALL(void, pragma_280070)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas);
N_NIMCALL(void, instantiatebody_428915)(Tcontext265020* c, Tnode215790* n, Tnode215790* params, Tsym215822* result);
N_NIMCALL(void, idtableput_222115)(Tidtable215840* t, Tidobj190006* key, TNimObject* val);
N_NIMCALL(void, freshgensyms_428801)(Tnode215790* n, Tsym215822* owner, Tidtable215840* symmap);
static N_INLINE(NI, safelen_216081)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semprocbody_426226)(Tcontext265020* c, Tnode215790* n);
static N_INLINE(NIM_BOOL, isemptytype_220513)(Ttype215828* t);
N_NIMCALL(Tnode215790*, newnodei_217401)(NU8 kind, Tlineinfo183337 info, NI children);
N_NIMCALL(Tnode215790*, semasgn_462057)(Tcontext265020* c, Tnode215790* n, NU8 mode);
N_NIMCALL(Tnode215790*, builtinfieldaccess_463890)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istypeexpr_463450)(Tnode215790* n);
N_NIMCALL(Tsym215822*, getsymfromlist_222135)(Tnode215790* list, Tident190012* ident, NI start);
N_NIMCALL(Tnode215790*, readtypeparameter_463822)(Tcontext265020* c, Ttype215828* typ, Tident190012* paramname, Tlineinfo183337 info);
N_NIMCALL(Ttype215828*, skipgenericalias_246606)(Ttype215828* t);
N_NIMCALL(Tsym215822*, linkto_216854)(Tsym215822* s, Ttype215828* t);
N_NIMCALL(Ttype215828*, newtypewithsons_265601)(Tcontext265020* c, NU8 kind, Ttypeseq215824* sons);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(Tsym215822*, lookupinrecordandbuildcheck_463601)(Tcontext265020* c, Tnode215790* n, Tnode215790* r, Tident190012* field, Tnode215790** check);
N_NIMCALL(Ttype215828*, createsettype_463464)(Tcontext265020* c, Ttype215828* basetype);
static N_INLINE(NIM_BOOL, fieldvisible_370259)(Tcontext265020* c, Tsym215822* f);
N_NIMCALL(Tnode215790*, makederef_463787)(Tnode215790* n);
N_NIMCALL(Tnode215790*, propertywriteaccess_464921)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, Tnode215790* a);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(Tnode215790*, newnode_217601)(NU8 kind, Tlineinfo183337 info, Tnodeseq215784* sons, Ttype215828* typ);
N_NIMCALL(Tnode215790*, semoverloadedcallanalyseeffects_462936)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, NU16 flags);
N_NIMCALL(Tnode215790*, semoverloadedcall_432544)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, NU32 filter);
N_NIMCALL(void, resolveoverloads_430231)(Tcontext265020* c, Tnode215790* n, Tnode215790* orig, NU32 filter, Tsymseq215792** errors, Tcandidate363206* Result);
N_NIMCALL(void, gatherusedsyms_430146)(Tcontext265020* c, Tnodeseq215784** usedsyms);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_283344)(Tnodeseq215784* x, Tnodeseq215784* y);
N_NIMCALL(void, safeadd_430175)(Tnodeseq215784** x, Tnode215790* y);
N_NIMCALL(void, insert_430284)(Tnodeseq215784** x, Tnode215790* item, NI i);
N_NIMCALL(void, pickbestcandidate_429699)(Tcontext265020* c, Tnode215790* headsymbol, Tnode215790* n, Tnode215790* orig, Tnode215790* initialbinding, NU32 filter, Tcandidate363206* best, Tcandidate363206* alt, Tsymseq215792** errors);
N_NIMCALL(NI, lastoverloadscope_271029)(Toverloaditer270296* o);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP3284)(void* p, NI op);
N_NIMCALL(void, initcandidate_363270)(Tcontext265020* ctx, Tcandidate363206* c, Tsym215822* callee, Tnode215790* binding, NI calleescope);
N_NIMCALL(void, determinetype_429695)(Tcontext265020* c, Tsym215822* s);
N_NIMCALL(Tnode215790*, semprocaux_456683)(Tcontext265020* c, Tnode215790* n, NU8 kind, Tspecialwords197006 validpragmas, NU8 phase);
N_NIMCALL(Tnode215790*, semprocannotation_455862)(Tcontext265020* c, Tnode215790* prc, Tspecialwords197006 validpragmas);
N_NIMCALL(Tsym215822*, lookupmacro_455835)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, searchinscopes_270209)(Tcontext265020* c, Tident190012* s, NU32 filter);
N_NIMCALL(Tnode215790*, copyexcept_455801)(Tnode215790* n, NI i);
N_NIMCALL(Tsym215822*, semidentdef_451639)(Tcontext265020* c, Tnode215790* n, NU8 kind);
N_NIMCALL(Tsym215822*, semidentwithpragma_426938)(Tcontext265020* c, NU8 kind, Tnode215790* n, NU32 allowed);
N_NIMCALL(Tsym215822*, semidentvis_426932)(Tcontext265020* c, NU8 kind, Tnode215790* n, NU32 allowed);
N_NIMCALL(Tsym215822*, newsymg_426895)(NU8 kind, Tnode215790* n, Tcontext265020* c);
N_NIMCALL(NimStringDesc*, HEX24_426901)(NU8 kind);
static N_INLINE(void, suggestsym_373436)(Tlineinfo183337 info, Tsym215822* s, NIM_BOOL isdecl);
N_NIMCALL(Tnode215790*, semgenericparamlist_439403)(Tcontext265020* c, Tnode215790* n, Ttype215828* father);
N_NIMCALL(Ttype215828*, semgenericconstraints_439385)(Tcontext265020* c, Ttype215828* x);
N_NIMCALL(void, semparamlist_426254)(Tcontext265020* c, Tnode215790* n, Tnode215790* genericparams, Tsym215822* s);
N_NIMCALL(Ttype215828*, semproctypenode_437494)(Tcontext265020* c, Tnode215790* n, Tnode215790* genericparams, Ttype215828* prev, NU8 kind, NIM_BOOL istype);
N_NIMCALL(Ttype215828*, newproctype_437488)(Tcontext265020* c, Tlineinfo183337 info, Ttype215828* prev);
N_NIMCALL(Toptionentry265002*, lastoptionentry_265169)(Tcontext265020* c);
N_NIMCALL(Ttype215828*, semparamtype_437471)(Tcontext265020* c, Tnode215790* n, Tnode215790** constraint);
N_NIMCALL(Tnode215790*, semnodekindconstraints_287446)(Tnode215790* p);
N_NIMCALL(Ttype215828*, liftparamtype_436657)(Tcontext265020* c, NU8 prockind, Tnode215790* genericparams, Ttype215828* paramtype, NimStringDesc* paramname, Tlineinfo183337 info, NIM_BOOL anon);
N_NIMCALL(void, TMP3312)(void* p, NI op);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_CLOSURE(Ttype215828*, addimplicitgenericimpl_436679)(Ttype215828* typeclass, Tident190012* typid, void* ClEnv);
N_NIMCALL(NIM_BOOL, containsorincl_212862)(Intset212035* s, NI key);
N_NIMCALL(Tnode215790*, sempattern_441109)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, flattenstmts_240587)(Tnode215790* n);
N_NIMCALL(Tnode215790*, sempatternbody_443658)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, handlesym_444001)(Templctx439942* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tnode215790*, newparam_443672)(Templctx439942* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tnode215790*, sembindstmt_439822)(Tcontext265020* c, Tnode215790* n, Intset212035* tobind);
N_NIMCALL(Tnode215790*, expectparam_444064)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(NIM_BOOL, stupidstmtlistexpr_444106)(Tnode215790* n);
N_NIMCALL(Tsym215822*, searchforproc_279226)(Tcontext265020* c, Tscope215816* scope, Tsym215822* fn);
N_NIMCALL(void, addinterfaceoverloadablesymat_270542)(Tcontext265020* c, Tscope215816* scope, Tsym215822* sym);
N_NIMCALL(void, addinterfacedeclat_270491)(Tcontext265020* c, Tscope215816* scope, Tsym215822* sym);
N_NIMCALL(void, implicitpragmas_283153)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas);
N_NIMCALL(void, wrongredefinition_270432)(Tlineinfo183337 info, NimStringDesc* s);
N_NIMCALL(void, addgenericparamlisttoscope_454705)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, addparams_426260)(Tcontext265020* c, Tnode215790* n, NU8 kind);
static N_INLINE(NIM_BOOL, importantcomments_161154)(void);
N_NIMCALL(void, popowner_265215)(void);
N_NIMCALL(void, semoverride_456439)(Tcontext265020* c, Tsym215822* s, Tnode215790* n);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(void, dodestructorstuff_449195)(Tcontext265020* c, Tsym215822* s, Tnode215790* n);
N_NIMCALL(Ttype215828*, instantiatedestructor_449191)(Tcontext265020* c, Ttype215828* typ);
static N_INLINE(NIM_BOOL, contains_449710)(Tsym215822** a, NI aLen0, Tsym215822* item);
static N_INLINE(NI, find_449720)(Tsym215822** a, NI aLen0, Tsym215822* item);
N_NIMCALL(Tnode215790*, generatedestructor_449630)(Tcontext265020* c, Ttype215828* t);
N_NIMCALL(Tnode215790*, destroyfieldorfields_449338)(Tcontext265020* c, Tnode215790* field, Tnode215790* holder);
N_NIMCALL(Tnode215790*, destroycase_449391)(Tcontext265020* c, Tnode215790* n, Tnode215790* holder);
N_NIMCALL(Tnodeseq215784*, HEX5BHEX5D_388135)(Tnodeseq215784* s, Slice88082 x);
N_NIMCALL(Tnode215790*, newnode_216401)(NU8 kind);
N_NIMCALL(Tnode215790*, destroysym_449343)(Tcontext265020* c, Tsym215822* field, Tnode215790* holder);
N_NIMCALL(Tnode215790*, usesym_373801)(Tsym215822* sym);
N_NIMCALL(Tnode215790*, symnodefromtype_427045)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info);
N_NIMCALL(Tsym215822*, symfromtype_427016)(Ttype215828* t, Tlineinfo183337 info);
N_NIMCALL(Ttype215828*, makevartype_265491)(Tcontext265020* c, Ttype215828* basetype);
N_NIMCALL(Tnode215790*, semproc_449166)(Tcontext265020* c, Tnode215790* n);
static N_INLINE(NIM_BOOL, experimentalmode_265970)(Tcontext265020* c);
static N_INLINE(void, paramstypecheck_426977)(Tcontext265020* c, Ttype215828* typ);
N_NIMCALL(void, typeallowedcheck_426948)(Tlineinfo183337 info, Ttype215828* typ, NU8 kind);
N_NIMCALL(Ttype215828*, typeallowed_249040)(Ttype215828* t, NU8 kind);
N_NIMCALL(Tnode215790*, hlobody_428136)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, hlo_427524)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, applypatterns_427609)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, applyrule_418186)(Tcontext265020* c, Tsym215822* s, Tnode215790* n);
N_NIMCALL(Tnode215790*, evalpattern_427528)(Tcontext265020* c, Tnode215790* n, Tnode215790* orig);
N_NIMCALL(Tnode215790*, semdirectop_426985)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, aftercallactions_463385)(Tcontext265020* c, Tnode215790* n, Tnode215790* orig, NU16 flags);
N_NIMCALL(void, semfinishoperands_369269)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, activate_426282)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, fixabstracttype_461360)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, changetype_426235)(Tnode215790* n, Ttype215828* newtype, NIM_BOOL check);
N_NIMCALL(Ttype215828*, elemtype_241383)(Ttype215828* t);
N_NIMCALL(void, globalerror_188076)(Tlineinfo183337 info, NimStringDesc* arg);
N_NIMCALL(NI64, firstord_241001)(Ttype215828* t);
N_NIMCALL(NI64, lastord_241004)(Ttype215828* t);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(void, analyseifaddresstakenincall_461828)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NU8, isassignable_461627)(Tcontext265020* c, Tnode215790* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(NU8, isassignable_287808)(Tsym215822* owner, Tnode215790* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(void, semprocvarcheck_449138)(Tcontext265020* c, Tnode215790* n_449141);
N_NIMCALL(Tnode215790*, skipconv_250082)(Tnode215790* n);
N_NIMCALL(void, performprocvarcheck_449090)(Tcontext265020* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tnode215790*, analyseifaddresstaken_461679)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, newhiddenaddrtaken_461633)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, magicsafteroverloadresolution_462423)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semaddr_462003)(Tcontext265020* c, Tnode215790* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(Ttype215828*, makeptrtype_265181)(Tcontext265020* c, Ttype215828* basetype);
N_NIMCALL(Tnode215790*, semtypeof_462043)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semarrget_462081)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semsubscript_462062)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semderef_464709)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NI64, getordvalue_241118)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semsymgenericinstantiation_459027)(Tcontext265020* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tnode215790*, explicitgenericinstantiation_432602)(Tcontext265020* c, Tnode215790* n, Tsym215822* s_432606);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(Tnode215790*, explicitgenericsym_432585)(Tcontext265020* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tnode215790*, explicitgenericinsterror_432581)(Tnode215790* n);
N_NIMCALL(NimStringDesc*, HEX24_234066)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semarrput_462140)(Tcontext265020* c, Tnode215790* n, NU16 flags);
static N_INLINE(Tnode215790*, skipaddr_462067)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semasgnopr_462172)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semispartof_462179)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(NU8, ispartof_416328)(Tnode215790* a, Tnode215790* b);
N_NIMCALL(Tnode215790*, newintnodet_276016)(NI64 intval, Tnode215790* n);
N_NIMCALL(Tnode215790*, semtypetraits_462251)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, evaltypetrait_462217)(Tnode215790* trait, Ttype215828* operand, Tsym215822* context);
N_NIMCALL(Tnode215790*, newstrnode_216678)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(Ttype215828*, newtype_218107)(NU8 kind, Tsym215822* owner);
N_NIMCALL(Tnode215790*, newintnode_216660)(NU8 kind, NI64 intval);
N_NIMCALL(Tnode215790*, newstrnodet_276024)(NimStringDesc* strval, Tnode215790* n);
N_NIMCALL(Tnode215790*, seminstantiationinfo_462201)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NI, expectintlit_462194)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tlineinfo183337, getinfocontext_184242)(NI index);
N_NIMCALL(NimStringDesc*, tofullpath_184269)(NI32 fileidx);
N_NIMCALL(NimStringDesc*, tofilename_184265)(NI32 fileidx);
static N_INLINE(NI, tolinenumber_184415)(Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, semord_462286)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semlowhigh_460622)(Tcontext265020* c, Tnode215790* n, NU8 m);
N_NIMCALL(Tnode215790*, semshallowcopy_462352)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, sembindsym_462293)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, errornode_265905)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NIM_BOOL, isnegative_462371)(Tnode215790* n_462373);
N_NIMCALL(NU8, checkforsideeffects_287650)(Tnode215790* n);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NIM_BOOL, isstrangearray_462357)(Ttype215828* t_462359);
N_NIMCALL(Tsym215822*, getsysmagic_259079)(NimStringDesc* name, NU8 m);
N_NIMCALL(Transformation422004, getplugin_422073)(Tsym215822* fn);
N_NIMCALL(Tnode215790*, evalatcompiletime_462503)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, getconstexpr_276001)(Tsym215822* m, Tnode215790* n);
N_NIMCALL(Ttype215828*, getintervaltype_276261)(NU8 m, Tnode215790* n);
N_NIMCALL(Tnode215790*, evalstaticexpr_415620)(Tsym215822* module, Tnode215790* e, Tsym215822* prc);
N_NIMCALL(Tnode215790*, fixuptypeaftereval_427201)(Tcontext265020* c, Tnode215790* evaluated, Tnode215790* eorig);
N_NIMCALL(void, annotatetype_419099)(Tnode215790* n, Ttype215828* t);
N_NIMCALL(Tnode215790*, evalconstexpr_415615)(Tsym215822* module, Tnode215790* e);
N_NIMCALL(Tnode215790*, commonoptimizations_387279)(Tsym215822* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, transformbody_388498)(Tsym215822* module, Tnode215790* n, Tsym215822* prc);
static N_INLINE(void, popproccon_265303)(Tcontext265020* c);
N_NIMCALL(void, fixupinstantiatedsymbols_429024)(Tcontext265020* c, Tsym215822* s);
N_NIMCALL(void, semborrow_455735)(Tcontext265020* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tsym215822*, searchforborrowproc_432899)(Tcontext265020* c, Tscope215816* startscope, Tsym215822* fn);
N_NIMCALL(Ttype215828*, baseofdistinct_249496)(Ttype215828* t);
N_NIMCALL(void, sideeffectscheck_429064)(Tcontext265020* c, Tsym215822* s);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_429811)(Tsymseq215792* x, Tsymseq215792* y);
N_NIMCALL(void, safeadd_429908)(Tsymseq215792** x, Tsym215822* y);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(NI, cmpcandidates_363609)(Tcandidate363206* a, Tcandidate363206* b);
N_NIMCALL(void, delete_430831)(Tnodeseq215784** x, NI i);
N_NIMCALL(Tnode215790*, withinfo_217223)(Tnode215790* n, Tlineinfo183337 info);
N_NIMCALL(void, HEX5BHEX5DHEX3D_388186)(Tnodeseq215784** s, Slice88082 x, Tnode215790** b, NI bLen0);
static N_INLINE(NimStringDesc*, HEX5BHEX5D_88075)(NimStringDesc* s, Slice88082 x);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_79810, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NIM_BOOL, samemethoddispatcher_429637)(Tsym215822* a, Tsym215822* b);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, msgkindtostring_184743)(NU16 kind);
N_NIMCALL(NimStringDesc*, getprocheader_241324)(Tsym215822* sym, NU8 prefer);
N_NIMCALL(Tnode215790*, semresolvedcall_432088)(Tcontext265020* c, Tnode215790* n, Tcandidate363206* x);
N_NIMCALL(void, instgenericconverterssons_431875)(Tcontext265020* c, Tnode215790* n, Tcandidate363206* x);
static N_INLINE(NIM_BOOL, canderef_432509)(Tnode215790* n);
N_NIMCALL(Tnode215790*, tryderef_432539)(Tnode215790* n);
N_NIMCALL(void, notfounderror_430031)(Tcontext265020* c, Tnode215790* n_430034, Tsymseq215792* errors);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(Tnode215790*, dottransformation_464646)(Tcontext265020* c, Tnode215790* n);
static N_INLINE(NIM_BOOL, issymchoice_460453)(Tnode215790* n);
N_NIMCALL(Tnode215790*, buildoverloadedsubscripts_464683)(Tnode215790* n, Tident190012* ident);
N_NIMCALL(Tnode215790*, lowertupleunpackingforasgn_377261)(Tnode215790* n, Tsym215822* owner);
N_NIMCALL(NU8, cmptypes_367484)(Tcontext265020* c, Ttype215828* f, Ttype215828* a);
N_NIMCALL(void, typemismatch_426316)(Tnode215790* n, Ttype215828* formal, Ttype215828* actual);
N_NIMCALL(Tnode215790*, overloadedasgn_452847)(Tcontext265020* c, Tnode215790* dest, Tnode215790* src);
N_NIMCALL(Tsym215822*, getasgnorliftbody_452830)(Tcontext265020* c, Ttype215828* typ, Tlineinfo183337 info);
N_NIMCALL(Tsym215822*, liftbody_451910)(Tcontext265020* c, Ttype215828* typ, Tlineinfo183337 info);
N_NIMCALL(Ttype215828*, newproctype_452767)(Tlineinfo183337 info, Tsym215822* owner);
N_NIMCALL(void, addparam_452772)(Ttype215828* proctype, Tsym215822* param);
N_NIMCALL(void, liftbodyaux_451902)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y);
N_NIMCALL(void, defaultop_452603)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y);
N_NIMCALL(Tnode215790*, newasgnstmt_452069)(Tnode215790* le, Tnode215790* ri);
N_NIMCALL(Tnode215790*, newseqcall_452680)(Tcontext265020* c, Tnode215790* x, Tnode215790* y);
N_NIMCALL(Tnode215790*, genbuiltin_452653)(NU8 magic, NimStringDesc* name, Tnode215790* i);
N_NIMCALL(Tsym215822*, createmagic_220600)(NimStringDesc* name, NU8 m);
N_NIMCALL(Tnode215790*, declarecounter_452630)(Tliftctx451895* c, Tnode215790* body, NI64 first);
N_NIMCALL(void, addvar_452621)(Tnode215790* father, Tnode215790* v, Tnode215790* value);
N_NIMCALL(Tnode215790*, newintlit_379359)(NI64 value);
N_NIMCALL(Tnode215790*, genwhileloop_452662)(Tliftctx451895* c, Tnode215790* i, Tnode215790* dest);
N_NIMCALL(Tnode215790*, genhigh_379363)(Tnode215790* n);
N_NIMCALL(Tnode215790*, at_451915)(Tnode215790* a, Tnode215790* i, Ttype215828* elemtype);
N_NIMCALL(void, addincstmt_452673)(Tnode215790* body, Tnode215790* i);
N_NIMCALL(NIM_BOOL, consideroverloadedop_452090)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y);
N_NIMCALL(Tnode215790*, newdestructorcall_452076)(Tsym215822* op, Tnode215790* x);
N_NIMCALL(Tnode215790*, newasgncall_452047)(Tcontext265020* c, Tsym215822* op, Tnode215790* x, Tnode215790* y);
N_NIMCALL(Tnode215790*, genaddr_452032)(Tcontext265020* c, Tnode215790* x);
N_NIMCALL(Tnode215790*, newdeepcopycall_452084)(Tsym215822* op, Tnode215790* x, Tnode215790* y);
N_NIMCALL(void, liftbodyobj_451968)(Tliftctx451895* c, Tnode215790* n, Tnode215790* body, Tnode215790* x, Tnode215790* y);
N_NIMCALL(Tnode215790*, dotfield_451960)(Tnode215790* x, Tsym215822* f);
N_NIMCALL(void, illformedastlocal_265954)(Tnode215790* n);
N_NIMCALL(void, liftbodytup_451923)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y);
static N_INLINE(Tnode215790*, newderef_377006)(Tnode215790* n);
static N_INLINE(void, asgntoresultvar_465012)(Tcontext265020* c, Tnode215790* n, Tnode215790* le, Tnode215790* ri);
N_NIMCALL(Tnode215790*, takeimplicitaddr_464984)(Tcontext265020* c, Tnode215790* n);
static N_INLINE(Tsym215822*, pop_385840)(Tsymseq215792** s);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, finishmethod_426290)(Tcontext265020* c, Tsym215822* s);
N_NIMCALL(NIM_BOOL, hasobjparam_457627)(Tsym215822* s);
N_NIMCALL(void, methoddef_375628)(Tsym215822* s, NIM_BOOL fromcache);
N_NIMCALL(Tnode215790*, skiphiddensubconv_250201)(Tnode215790* n);
N_NIMCALL(Tnode215790*, forcebool_433223)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, assign_212910)(Intset212035* dest, Intset212035 src);
N_NIMCALL(void, semrecordcase_435640)(Tcontext265020* c, Tnode215790* n, Intset212035* check, NI* pos, Tnode215790* father, Ttype215828* rectype);
N_NIMCALL(void, semcasebranch_435512)(Tcontext265020* c, Tnode215790* t, Tnode215790* branch, NI branchindex, NI64* covered);
N_NIMCALL(Tnode215790*, semcasebranchrange_435471)(Tcontext265020* c, Tnode215790* t, Tnode215790* b, NI64* covered);
N_NIMCALL(Tnode215790*, sembranchrange_435452)(Tcontext265020* c, Tnode215790* t, Tnode215790* a, Tnode215790* b, NI64* covered);
N_NIMCALL(Tnode215790*, skipconvtaketype_250108)(Tnode215790* n);
N_NIMCALL(NIM_BOOL, emptyrange_261019)(Tnode215790* a, Tnode215790* b);
N_NIMCALL(void, delson_219495)(Tnode215790* father, NI idx);
N_NIMCALL(Tnode215790*, semcasebranchsetelem_435481)(Tcontext265020* c, Tnode215790* t, Tnode215790* b, NI64* covered);
N_NIMCALL(void, checkforoverlap_435401)(Tcontext265020* c, Tnode215790* t, NI currentex, NI branchindex);
N_NIMCALL(NIM_BOOL, overlap_261006)(Tnode215790* a, Tnode215790* b);
N_NIMCALL(Ropeobj170006*, rope_170277)(NimStringDesc* s);
N_NIMCALL(Ttype215828*, semtuple_435032)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semtypeclass_438321)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(void, safeadd_284485)(Ttypeseq215824** x, Ttype215828* y);
N_NIMCALL(Ttype215828*, semvartype_433772)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semdistinct_433789)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semproctypewithscope_438377)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev, NU8 kind);
N_NIMCALL(void, seteffectsforproctype_348006)(Ttype215828* t, Tnode215790* n);
N_NIMCALL(NIM_BOOL, haspragma_283324)(Tnode215790* n, NU16 pragma);
N_NIMCALL(Ttype215828*, semenum_433306)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(void, strtableadd_222061)(Tstrtable215794* t, Tsym215822* n);
N_NIMCALL(Ttype215828*, semstmtlisttype_437990)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
N_NIMCALL(Ttype215828*, semblocktype_438021)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
static N_INLINE(void, markindirect_265924)(Tcontext265020* c, Tsym215822* s);
N_NIMCALL(void, setintlittype_259717)(Tnode215790* result);
N_NIMCALL(Ttype215828*, getfloatlittype_259647)(Tnode215790* literal);
N_NIMCALL(Tnode215790*, semfieldaccess_458811)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semconv_460486)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, maybelifttype_460467)(Ttype215828** t, Tcontext265020* c, Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, inferwithmetatype_426388)(Tcontext265020* c, Ttype215828* formal, Tnode215790* arg, NIM_BOOL coercedistincts);
N_NIMCALL(NU8, checkconvertible_460217)(Tcontext265020* c, Ttype215828* castdest, Ttype215828* src);
N_NIMCALL(NU8, checkconversionbetweenobjects_460206)(Ttype215828* castdest, Ttype215828* src);
N_NIMCALL(NI, inheritancediff_247442)(Ttype215828* a, Ttype215828* b);
N_NIMCALL(Tnode215790*, semobjconstr_463060)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(void, checkinitialized_467334)(Tnode215790* n, Intset212035 ids, Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, semmagic_466541)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags);
N_NIMCALL(Tnode215790*, semdefined_465712)(Tcontext265020* c, Tnode215790* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(NIM_BOOL, isdefined_191140)(Tident190012* symbol);
N_NIMCALL(Tsym215822*, lookupfordefined_465666)(Tcontext265020* c, Tnode215790* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym215822*, lookupfordefined_465660)(Tcontext265020* c, Tident190012* i, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym215822*, localsearchinscope_270126)(Tcontext265020* c, Tident190012* s);
N_NIMCALL(Tsym215822*, strtableget_222066)(Tstrtable215794 t, Tident190012* name);
N_NIMCALL(Tnode215790*, setms_466534)(Tnode215790* n, Tsym215822* s);
N_NIMCALL(Tnode215790*, semcompiles_466441)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, tryexpr_426275)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(NI, getinfocontextlen_184185)(void);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
static N_INLINE(NimStringDesc*, getcurrentexceptionmsg_87205)(void);
static N_INLINE(void, popCurrentException)(void);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_84004, TNimType* mt);
N_NIMCALL(void, setinfocontextlen_184196)(NI L);
N_NIMCALL(Tnode215790*, semsizeof_460666)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semis_460880)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, maketypesymnode_265548)(Tcontext265020* c, Ttype215828* typ, Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, isopimpl_426995)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NU8, typerel_363805)(Tcandidate363206* c, Ttype215828* f, Ttype215828* aorig, NIM_BOOL dobind);
N_NIMCALL(Tnode215790*, semof_460674)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semexpandtoast_466056)(Tcontext265020* c, Tnode215790* n, Tsym215822* magicsym, NU16 flags);
N_NIMCALL(Tnode215790*, semexpandtoast_465875)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, expectmacroortemplatecall_426981)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Ttype215828*, systypefromname_259125)(NimStringDesc* name);
N_NIMCALL(Tnode215790*, semquoteast_426286)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NimStringDesc*, expectstring_465778)(Tcontext265020* c, Tnode215790* n_465781);
N_NIMCALL(Tnodeseq215784*, newseq_466233)(NI len);
N_NIMCALL(void, processquotations_466066)(Tnode215790** n, NimStringDesc* op, Tnodeseq215784** quotes, Tnodeseq215784** ids);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_NIMCALL(Tsym215822*, newanonsym_465807)(NU8 kind, Tlineinfo183337 info, Tsym215822* owner);
N_NIMCALL(Tnode215790*, semtemplatedef_443296)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semtemplbodydirty_443146)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semtemplbody_440050)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semtemplsymbol_440602)(Tcontext265020* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(void, openscope_440055)(Templctx439942* c);
N_NIMCALL(void, closescope_440059)(Templctx439942* c);
N_NIMCALL(Tnode215790*, semtemplbodyscope_440063)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(void, addlocaldecl_440259)(Templctx439942* c, Tnode215790** n, NU8 k);
N_NIMCALL(NU8, symbinding_439680)(Tnode215790* n);
N_NIMCALL(NU16, whichkeyword_197362)(Tident190012* id);
N_NIMCALL(Tnode215790*, onlyreplaceparams_440069)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, getidentnode_439957)(Templctx439942* c, Tnode215790* n);
static N_INLINE(NIM_BOOL, istemplparam_440001)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(void, replaceidentbysym_439932)(Tnode215790** n, Tnode215790* s);
N_NIMCALL(Tsym215822*, newgensym_440230)(NU8 kind, Tnode215790* n, Templctx439942* c);
N_NIMCALL(void, semtemplsomedecl_441025)(Templctx439942* c, Tnode215790* n, NU8 symkind, NI start);
N_NIMCALL(Tnode215790*, semroutineintemplbody_440823)(Templctx439942* c, Tnode215790* n, NU8 k);
N_NIMCALL(Tnode215790*, semroutineintemplname_440619)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semtemplbodysons_441113)(Templctx439942* c, Tnode215790* n);
N_NIMCALL(NIM_BOOL, oprisroof_441426)(Tnode215790* n);
N_NIMCALL(void, symtabreplace_225803)(Tstrtable215794* t, Tsym215822* prevsym, Tsym215822* newsym);
N_NIMCALL(Tsym215822*, getmagicsym_465795)(NU8 magic);
N_NIMCALL(NU8, spawnresult_378947)(Ttype215828* t, NIM_BOOL inparallel);
N_NIMCALL(Ttype215828*, createflowvar_466475)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info);
N_NIMCALL(Tsym215822*, instantiatecreateflowvarcall_466482)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, semindirectop_463088)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(void, semopaux_460920)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, resolveindirectcall_463065)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, Ttype215828* t, Tcandidate363206* Result);
N_NIMCALL(Tnode215790*, overloadedcallopr_460966)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NIM_BOOL, shouldbebracketexpr_467961)(Tnode215790* n);
N_NIMCALL(void, setgenericparams_468122)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semarrayaccess_464902)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(NU8, checkpar_467056)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semtuplepositionsconstr_467244)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istupletype_467287)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semtuplefieldsconstr_467145)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semsetconstr_466846)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semarrayconstr_461249)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Ttype215828*, commontype_426396)(Ttype215828* x, Ttype215828* y);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_249927)(Ttypeseq215824* x, Ttypeseq215824* y);
N_NIMCALL(NIM_BOOL, isemptycontainer_250113)(Ttype215828* t);
N_NIMCALL(Ttype215828*, commonsuperclass_247850)(Ttype215828* a, Ttype215828* b);
N_NIMCALL(Tnode215790*, semlambda_426240)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semdo_456146)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semcast_460613)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NIM_BOOL, iscastable_460368)(Ttype215828* dst, Ttype215828* src);
N_NIMCALL(NI64, computesize_241121)(Ttype215828* typ);
N_NIMCALL(Tnode215790*, semif_450412)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semexprbranch_450201)(Tcontext265020* c, Tnode215790* n);
static N_INLINE(void, semdestructorcheck_450113)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semexprbranchscope_450229)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semtableconstr_466984)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semstaticexpr_462920)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semblock_467613)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semstmtlist_458068)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semtry_451283)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semraise_454668)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semvarorlet_452981)(Tcontext265020* c, Tnode215790* n, NU8 symkind);
N_NIMCALL(void, suggeststmt_374018)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, newsons_218260)(Tnode215790* father, NI length);
N_NIMCALL(void, addtovarsection_452854)(Tcontext265020* c, Tnode215790** result, Tnode215790* orig, Tnode215790* identdefs);
N_NIMCALL(NIM_BOOL, isdiscardunderscore_452965)(Tsym215822* v);
N_NIMCALL(void, addinterfacedecl_270538)(Tcontext265020* c, Tsym215822* sym);
N_NIMCALL(Tsym215822*, findshadowedvar_451557)(Tcontext265020* c, Tsym215822* v);
N_NIMCALL(NIM_BOOL, identwithin_451603)(Tnode215790* n, Tident190012* s);
N_NIMCALL(void, adddefer_452934)(Tcontext265020* c, Tnode215790** result, Tsym215822* s);
N_NIMCALL(Tnode215790*, createdestructorcall_449882)(Tcontext265020* c, Tsym215822* s);
N_NIMCALL(void, checknilable_451801)(Tsym215822* v);
N_NIMCALL(void, setupcompiletimevar_415631)(Tsym215822* module, Tnode215790* n);
N_NIMCALL(Tnode215790*, semconst_453559)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, fitremovehiddenconv_451538)(Tcontext265020* c, Ttype215828* typ, Tnode215790* n);
N_NIMCALL(Tnode215790*, semtypesection_455631)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, typesectionleftsidepass_454750)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, typesectionrightsidepass_454832)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, processmagictype_439299)(Tcontext265020* c, Tsym215822* m);
N_NIMCALL(void, setmagictype_439291)(Tsym215822* m, NU8 kind, NI size);
N_NIMCALL(void, typesectionfinalpass_455240)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, checkconstructedtype_284089)(Tlineinfo183337 info, Ttype215828* typ);
N_NIMCALL(void, checkformetafields_455099)(Tnode215790* n);
N_NIMCALL(Tnode215790*, semdiscard_448803)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semwhile_449011)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, sembreakorcontinue_448821)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semfor_454561)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semexprnoderef_426219)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, semforvars_454401)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, symforvar_454188)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, addforvardecl_454159)(Tcontext265020* c, Tsym215822* v);
N_NIMCALL(Tnode215790*, semforfields_453947)(Tcontext265020* c, Tnode215790* n, NU8 m);
N_NIMCALL(Tnode215790*, instfieldloopbody_453713)(Tfieldinstctx453708 c, Tnode215790* n, Tnode215790* forloop);
N_NIMCALL(void, semforobjectfields_453850)(Tfieldsctx453847 c, Tnode215790* typ, Tnode215790* forloop, Tnode215790* father);
N_NIMCALL(NIM_BOOL, containsnode_220117)(Tnode215790* n, TY450235 kinds);
N_NIMCALL(Tnode215790*, implicititerator_454530)(Tcontext265020* c, NimStringDesc* it, Tnode215790* arg);
N_NIMCALL(Tnode215790*, semcase_450865)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NI64, tocover_449050)(Ttype215828* t);
N_NIMCALL(Tnode215790*, semreturn_465282)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semusing_465815)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, adddeclat_270455)(Tscope215816* scope, Tsym215822* sym);
N_NIMCALL(Tnode215790*, semasm_449004)(Tcontext265020* con, Tnode215790* n);
N_NIMCALL(NIM_CHAR, pragmaasm_280080)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semasmoremit_281380)(Tcontext265020* con, Tnode215790* n, NIM_CHAR marker);
N_NIMCALL(Tnode215790*, semyield_465549)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, semyieldvarresult_465460)(Tcontext265020* c, Tnode215790* n, Ttype215828* restype);
N_NIMCALL(Tnode215790*, semiterator_457510)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semmethod_457666)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semconverterdef_457674)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, addconverter_265440)(Tcontext265020* c, Tsym215822* conv);
N_NIMCALL(Tnode215790*, semmacrodef_457696)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, evalimport_272001)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, evalimportexcept_272585)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, evalfrom_272005)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, evalinclude_457729)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NI32, checkmodulename_272049)(Tnode215790* n);
N_NIMCALL(void, excl_212841)(Intset212035* s, NI key);
N_NIMCALL(Tnode215790*, semexport_467813)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tsym215822*, inittabiter_222073)(Ttabiter222071* ti, Tstrtable215794 tab);
N_NIMCALL(Tsym215822*, nextiter_222078)(Ttabiter222071* ti, Tstrtable215794 tab);
N_NIMCALL(Tnode215790*, sempragmablock_457789)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NU16, whichpragma_240525)(Tnode215790* n);
N_NIMCALL(void, setline_457758)(Tnode215790* n, Tlineinfo183337 info);
N_NIMCALL(Tnode215790*, semstaticstmt_457838)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, evalstaticstmt_415626)(Tsym215822* module, Tnode215790* e, Tsym215822* prc);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_185125)(Tlineinfo183337 a, Tlineinfo183337 b);
N_NIMCALL(Tnode215790*, tryconstexpr_427414)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semoperand_458818)(Tcontext265020* c, Tnode215790* n, NU16 flags);
N_NIMCALL(Tnode215790*, seminferredlambda_456170)(Tcontext265020* c, Tidtable215840 pt, Tnode215790* n_456174);
N_NIMCALL(Tnode215790*, replacetypesinbody_286430)(Tcontext265020* p, Tidtable215840 pt, Tnode215790* n, Tsym215822* owner);
N_NIMCALL(Tsym215822*, insttypeboundop_369419)(Tcontext265020* c, Tsym215822* dc, Ttype215828* t, Tlineinfo183337 info, NU8 op);
N_NIMCALL(void, importallsymbols_272322)(Tcontext265020* c, Tsym215822* frommod);
N_NIMCALL(Tpasscontext262002*, myopen_468665)(Tsym215822* module);
N_NIMCALL(Tnode215790*, semstmtandgenerategenerics_468717)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semalltypesections_455351)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, gatherstmts_455356)(Tcontext265020* c, Tnode215790* n, Tnode215790* result);
N_NIMCALL(void, addcodeforgenerics_468572)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, hlostmt_428159)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, buildechostmt_463425)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, appendtomodule_216869)(Tsym215822* m, Tnode215790* n);
N_NIMCALL(Tnode215790*, transformstmt_388601)(Tsym215822* module, Tnode215790* n);
N_NIMCALL(void, recovercontext_468769)(Tcontext265020* c);
static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_NOINLINE(NIM_BOOL, isobjslowpath_23734)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_NIMCALL(void, rawclosescope_270065)(Tcontext265020* c);
STRING_LITERAL(TMP1155, "typedesc", 8);
STRING_LITERAL(TMP1156, "destroy_", 8);
STRING_LITERAL(TMP1157, "this_", 5);
STRING_LITERAL(TMP1158, "destructor", 10);
STRING_LITERAL(TMP2097, "sem.myOpen", 10);
STRING_LITERAL(TMP3155, "", 0);
static NIM_CONST TY450235 TMP3156 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0xE0, 0x11, 0x02, 0x0C, 0x01, 0xC0,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3157, "[]", 2);
STRING_LITERAL(TMP3158, "invalid type", 12);
STRING_LITERAL(TMP3159, "|", 1);
STRING_LITERAL(TMP3160, "region needs to be an object type", 33);
STRING_LITERAL(TMP3162, "openarray", 9);
STRING_LITERAL(TMP3163, "range", 5);
STRING_LITERAL(TMP3164, "set", 3);
STRING_LITERAL(TMP3165, "ordinal", 7);
STRING_LITERAL(TMP3166, "seq", 3);
STRING_LITERAL(TMP3167, "varargs", 7);
STRING_LITERAL(TMP3168, "cannot instantiate the \'$1\' $2", 30);
STRING_LITERAL(TMP3170, "compiler/semtypes.nim", 21);
NIM_CONST TY88687 TMP3169 = {((NimStringDesc*) &TMP3170),
((NI) 1040)}
;
STRING_LITERAL(TMP3171, "cannot instantiate ", 19);
STRING_LITERAL(TMP3172, "\012got: (", 7);
STRING_LITERAL(TMP3176, ")\012but expected: (", 17);
STRING_LITERAL(TMP3177, ")", 1);
STRING_LITERAL(TMP3178, "^", 1);
STRING_LITERAL(TMP3179, "{}", 2);
STRING_LITERAL(TMP3180, "{}=", 3);
STRING_LITERAL(TMP3181, "[]=", 3);
STRING_LITERAL(TMP3182, "result", 6);
NIM_CONST TY88687 TMP3183 = {((NimStringDesc*) &TMP3170),
((NI) 1251)}
;
STRING_LITERAL(TMP3184, "object", 6);
STRING_LITERAL(TMP3185, "addInheritedFieldsAux", 21);
STRING_LITERAL(TMP3186, "addInheritedFieldsAux(record case branch)", 41);
STRING_LITERAL(TMP3187, "addInheritedFieldsAux()", 23);
STRING_LITERAL(TMP3188, "semObjectNode", 13);
STRING_LITERAL(TMP3190, "compiler/seminst.nim", 20);
NIM_CONST TY88687 TMP3189 = {((NimStringDesc*) &TMP3190),
((NI) 216)}
;
STRING_LITERAL(TMP3191, "nesting too deep", 16);
NIM_CONST TY88687 TMP3192 = {((NimStringDesc*) &TMP3190),
((NI) 237)}
;
NIM_CONST TY88687 TMP3193 = {((NimStringDesc*) &TMP3190),
((NI) 14)}
;
NIM_CONST TY88687 TMP3194 = {((NimStringDesc*) &TMP3190),
((NI) 16)}
;
STRING_LITERAL(TMP3195, "owner is nil", 12);
NIM_CONST TY88687 TMP3196 = {((NimStringDesc*) &TMP3190),
((NI) 180)}
;
STRING_LITERAL(TMP3197, "result", 6);
STRING_LITERAL(TMP3198, "NimNode", 7);
STRING_LITERAL(TMP3199, "NimNode", 7);
STRING_LITERAL(TMP3200, "PNimrodNode", 11);
static NIM_CONST Tspecialwords197006 TMP3280 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xE0, 0x7F, 0xF4, 0x3B, 0x01, 0xC0,
0xF8, 0x1F, 0x00, 0x10, 0x82, 0x19, 0x00, 0x43,
0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3282, "compiler/semexprs.nim", 21);
NIM_CONST TY88687 TMP3281 = {((NimStringDesc*) &TMP3282),
((NI) 1004)}
;
STRING_LITERAL(TMP3285, "()", 2);
STRING_LITERAL(TMP3286, "cannot use symbol of kind \'", 27);
STRING_LITERAL(TMP3287, "\' as a \'", 8);
STRING_LITERAL(TMP3288, "\'", 1);
static NIM_CONST Tspecialwords197006 TMP3289 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x01, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10}
;
static NIM_CONST Tspecialwords197006 TMP3290 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x76, 0x24, 0x18, 0x01, 0x40,
0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x13,
0x0B, 0x00, 0x11, 0x40, 0x00, 0x00, 0x02, 0x00,
0x00}
;
static NIM_CONST Tspecialwords197006 TMP3291 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x76, 0x24, 0x00, 0x01, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3310, "\':\' expected", 12);
STRING_LITERAL(TMP3313, ":type", 5);
NIM_CONST TY88687 TMP3321 = {((NimStringDesc*) &TMP3170),
((NI) 718)}
;
STRING_LITERAL(TMP3323, "invalid return type: \'stmt\'", 27);
STRING_LITERAL(TMP3324, "*", 1);
STRING_LITERAL(TMP3325, "**", 2);
STRING_LITERAL(TMP3326, "~", 1);
STRING_LITERAL(TMP3329, "semProcAux", 10);
STRING_LITERAL(TMP3331, "destroy", 7);
STRING_LITERAL(TMP3332, "=destroy", 8);
STRING_LITERAL(TMP3333, "deepcopy", 8);
STRING_LITERAL(TMP3334, "=deepcopy", 9);
STRING_LITERAL(TMP3335, "=", 1);
STRING_LITERAL(TMP3336, "nimDestroyRange", 15);
STRING_LITERAL(TMP3338, "compiler/semdestruct.nim", 24);
NIM_CONST TY88687 TMP3337 = {((NimStringDesc*) &TMP3338),
((NI) 114)}
;
NIM_CONST TY88687 TMP3339 = {((NimStringDesc*) &TMP3338),
((NI) 105)}
;
NIM_CONST TY88687 TMP3340 = {((NimStringDesc*) &TMP3338),
((NI) 151)}
;
STRING_LITERAL(TMP3341, "AnonType", 8);
static NIM_CONST Tspecialwords197006 TMP3342 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xE0, 0x7F, 0xF4, 0x3B, 0x01, 0xC0,
0xF8, 0x1F, 0x00, 0x10, 0x82, 0x19, 0x00, 0x43,
0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3343, "use the {.experimental.} pragma to enable destructors", 53);
STRING_LITERAL(TMP3344, "cannot bind another \'deepCopy\' to: ", 35);
STRING_LITERAL(TMP3345, "cannot bind \'deepCopy\' to: ", 27);
STRING_LITERAL(TMP3346, "signature for \'deepCopy\' must be proc[T: ptr|ref](x: T): T", 58);
STRING_LITERAL(TMP3347, "cannot bind another \'=\' to: ", 28);
STRING_LITERAL(TMP3348, "signature for \'=\' must be proc[T: object](x: var T; y: T)", 57);
STRING_LITERAL(TMP3349, "\'destroy\' or \'deepCopy\' expected for \'override\'", 47);
STRING_LITERAL(TMP3350, "invalid type: \'", 15);
STRING_LITERAL(TMP3351, "\' in this context: \'", 20);
STRING_LITERAL(TMP3365, "compiler/hlo.nim", 16);
NIM_CONST TY88687 TMP3364 = {((NimStringDesc*) &TMP3365),
((NI) 15)}
;
STRING_LITERAL(TMP3366, "no tuple type for constructor", 29);
STRING_LITERAL(TMP3367, "invalid tuple constructor", 25);
STRING_LITERAL(TMP3368, "unknown identifier: ", 20);
STRING_LITERAL(TMP3369, "cannot convert ", 15);
STRING_LITERAL(TMP3370, " to ", 4);
static NIM_CONST TY461833 TMP3371 = {
0x00, 0x00, 0x04, 0xEC, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xC3, 0x08, 0x08, 0x00, 0x00, 0x00,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3372, "analyseIfAddressTaken", 21);
STRING_LITERAL(TMP3374, "unsafeAddr", 10);
STRING_LITERAL(TMP3375, "cannot instantiate: ", 20);
STRING_LITERAL(TMP3376, "; got ", 6);
STRING_LITERAL(TMP3377, " type(s) but expected ", 22);
STRING_LITERAL(TMP3378, "could not resolve: ", 19);
STRING_LITERAL(TMP3380, "compiler/semmagic.nim", 21);
NIM_CONST TY88687 TMP3379 = {((NimStringDesc*) &TMP3380),
((NI) 103)}
;
STRING_LITERAL(TMP3381, "name", 4);
STRING_LITERAL(TMP3382, "arity", 5);
NIM_CONST TY88687 TMP3383 = {((NimStringDesc*) &TMP3380),
((NI) 98)}
;
STRING_LITERAL(TMP3384, "low", 3);
STRING_LITERAL(TMP3385, "high", 4);
NIM_CONST TY460630 optostr_460628 = {((NimStringDesc*) &TMP3384),
((NimStringDesc*) &TMP3385)}
;
STRING_LITERAL(TMP3386, "use \'^\' instead of \'-\'; negative indexing is obsolete", 53);
STRING_LITERAL(TMP3387, "no surrounding array access context for \'^\'", 43);
STRING_LITERAL(TMP3388, "invalid context for \'^\' as \'$#\' has side effects", 48);
STRING_LITERAL(TMP3389, "invalid context for \'^\' as len!=high+1 for \'$#\'", 47);
STRING_LITERAL(TMP3390, "len", 3);
STRING_LITERAL(TMP3391, "\'$#\' has to be of an ordinal type for \'^\'", 41);
STRING_LITERAL(TMP3392, "-", 1);
STRING_LITERAL(TMP3393, "cannot find plugin ", 19);
static NIM_CONST TY461833 TMP3394 = {
0x71, 0x00, 0x00, 0x1E, 0xFF, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x83, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3478, " --> \'", 6);
STRING_LITERAL(TMP3513, "\'.closure\' calling convention for top level routines is invalid", 63);
static NIM_CONST Tspecialwords197006 TMP3514 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3516, "compiler/semcall.nim", 20);
NIM_CONST TY88687 TMP3515 = {((NimStringDesc*) &TMP3516),
((NI) 185)}
;
STRING_LITERAL(TMP3517, ".()", 3);
STRING_LITERAL(TMP3518, ".", 1);
NIM_CONST TY88687 TMP3519 = {((NimStringDesc*) &TMP3516),
((NI) 206)}
;
STRING_LITERAL(TMP3520, ".=", 2);
NIM_CONST TY88687 TMP3521 = {((NimStringDesc*) &TMP3516),
((NI) 238)}
;
STRING_LITERAL(TMP3522, "ambiguous call", 14);
STRING_LITERAL(TMP3523, "(", 1);
STRING_LITERAL(TMP3524, ", ", 2);
STRING_LITERAL(TMP3525, "calleeSym.ast is nil", 20);
NIM_CONST TY88687 TMP3526 = {((NimStringDesc*) &TMP3516),
((NI) 328)}
;
STRING_LITERAL(TMP3527, "\012", 1);
STRING_LITERAL(TMP3528, "semOverloadedCallAnalyseEffects", 31);
STRING_LITERAL(TMP3529, "[]=", 3);
STRING_LITERAL(TMP3530, "{}=", 3);
NIM_CONST TY88687 TMP3531 = {((NimStringDesc*) &TMP3282),
((NI) 1333)}
;
STRING_LITERAL(TMP3532, ") ", 2);
STRING_LITERAL(TMP3533, ":lifted=", 8);
STRING_LITERAL(TMP3534, "dest", 4);
STRING_LITERAL(TMP3535, "src", 3);
STRING_LITERAL(TMP3536, "newSeq", 6);
STRING_LITERAL(TMP3537, "len", 3);
STRING_LITERAL(TMP3538, ":tmp", 4);
STRING_LITERAL(TMP3539, "<=", 2);
STRING_LITERAL(TMP3541, "inc", 3);
STRING_LITERAL(TMP3542, "cannot lift assignment operator to \'case\' object", 48);
STRING_LITERAL(TMP3543, "deepCopy", 8);
STRING_LITERAL(TMP3544, "cannot copy openArray", 21);
STRING_LITERAL(TMP3545, "assignment requested for type: ", 31);
STRING_LITERAL(TMP3546, "semRecordNodeAux", 16);
STRING_LITERAL(TMP3547, "semRecordCase: discriminant is no symbol", 40);
STRING_LITERAL(TMP3548, "low(", 4);
STRING_LITERAL(TMP3549, ") must be 0 for discriminant", 28);
STRING_LITERAL(TMP3550, "dummy", 5);
static NIM_CONST Tspecialwords197006 TMP3551 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x01, 0xF6, 0xAD, 0x10, 0x01, 0x40,
0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x03, 0x0B,
0x04, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00,
0x06}
;
STRING_LITERAL(TMP3552, "use \'concept\' instead; \'generic\'", 32);
static NIM_CONST Tspecialwords197006 TMP3553 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80,
0xF8, 0x1F, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
NIM_CONST TY88687 TMP3556 = {((NimStringDesc*) &TMP3282),
((NI) 118)}
;
NIM_CONST TY88687 TMP3557 = {((NimStringDesc*) &TMP3282),
((NI) 123)}
;
STRING_LITERAL(TMP3558, "illegal context for \'nimvm\' magic", 33);
STRING_LITERAL(TMP3560, "bind", 4);
STRING_LITERAL(TMP3561, ":anon", 5);
STRING_LITERAL(TMP3562, "object constructor needs an object type", 39);
STRING_LITERAL(TMP3563, "checkInitialized", 16);
STRING_LITERAL(TMP3564, "field not initialized: ", 23);
STRING_LITERAL(TMP3565, "defined", 7);
STRING_LITERAL(TMP3566, "obsolete usage of \'defined\', use \'declared\' instead", 51);
STRING_LITERAL(TMP3568, "sizeof", 6);
STRING_LITERAL(TMP3569, "is", 2);
NIM_CONST TY88687 TMP3570 = {((NimStringDesc*) &TMP3282),
((NI) 375)}
;
STRING_LITERAL(TMP3571, "closure", 7);
STRING_LITERAL(TMP3572, "of", 2);
NIM_CONST TY88687 TMP3573 = {((NimStringDesc*) &TMP3282),
((NI) 1562)}
;
NIM_CONST TY88687 TMP3574 = {((NimStringDesc*) &TMP3282),
((NI) 1600)}
;
STRING_LITERAL(TMP3575, "``", 2);
STRING_LITERAL(TMP3576, "block", 5);
STRING_LITERAL(TMP3577, "stmt", 4);
STRING_LITERAL(TMP3578, "expr", 4);
static NIM_CONST Tspecialwords197006 TMP3579 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x90, 0x40, 0x00, 0x00, 0x01, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3580, "use the {.experimental.} pragma to enable \'parallel\'", 52);
STRING_LITERAL(TMP3583, "FlowVar", 7);
STRING_LITERAL(TMP3584, "nimCreateFlowVar", 16);
STRING_LITERAL(TMP3586, ")\012", 2);
STRING_LITERAL(TMP3587, "[]", 2);
STRING_LITERAL(TMP3588, "{}", 2);
STRING_LITERAL(TMP3589, "semExpr() to implement", 22);
static NIM_CONST Tspecialwords197006 TMP3590 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x00, 0x36, 0xF4, 0x09, 0x00, 0x40,
0xF8, 0x1F, 0x00, 0x10, 0x02, 0x00, 0x00, 0x40,
0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3591, "use \'defer\'; standalone \'finally\'", 33);
STRING_LITERAL(TMP3592, "use an explicit \'try\'; standalone \'except\'", 42);
STRING_LITERAL(TMP3593, "type class predicate failed", 27);
STRING_LITERAL(TMP3594, "\'typedesc\' metatype is not valid here; typed \'=\' instead of \':\'"
"?", 64);
STRING_LITERAL(TMP3595, "tuple", 5);
STRING_LITERAL(TMP3596, "_", 1);
STRING_LITERAL(TMP3597, "auto", 4);
STRING_LITERAL(TMP3598, "shared", 6);
STRING_LITERAL(TMP3600, "compiler/semstmts.nim", 21);
NIM_CONST TY88687 TMP3599 = {((NimStringDesc*) &TMP3600),
((NI) 711)}
;
NIM_CONST TY88687 TMP3601 = {((NimStringDesc*) &TMP3600),
((NI) 712)}
;
STRING_LITERAL(TMP3602, ":ObjectType", 11);
NIM_CONST TY88687 TMP3603 = {((NimStringDesc*) &TMP3600),
((NI) 738)}
;
STRING_LITERAL(TMP3604, "\'continue\' cannot have a label", 30);
STRING_LITERAL(TMP3605, "true", 4);
STRING_LITERAL(TMP3606, "true", 4);
STRING_LITERAL(TMP3607, "no object or tuple type", 23);
STRING_LITERAL(TMP3608, "Field", 5);
STRING_LITERAL(TMP3609, "\'continue\' not supported in a \'fields\' loop", 43);
STRING_LITERAL(TMP3610, "parallel \'fields\' iterator does not work for \'case\' objects", 59);
static NIM_CONST TY450235 TMP3611 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3612, "items", 5);
STRING_LITERAL(TMP3613, "pairs", 5);
STRING_LITERAL(TMP3614, "use \'else: discard\'; non-ordinal case without \'else\'", 52);
STRING_LITERAL(TMP3615, "\'return\'", 8);
STRING_LITERAL(TMP3616, "use the {.experimental.} pragma to enable \'using\'", 49);
STRING_LITERAL(TMP3617, "semYield", 8);
STRING_LITERAL(TMP3618, "tuple constructor", 17);
STRING_LITERAL(TMP3619, "yield statement must yield a value", 34);
static NIM_CONST Tspecialwords197006 TMP3620 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x08, 0x80, 0xF7, 0x7F,
0x02, 0x80, 0xFF, 0x0F, 0x55, 0x66, 0x7C, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
static NIM_CONST Tspecialwords197006 TMP3621 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x76, 0xD4, 0x00, 0x01, 0x40,
0xF8, 0x1F, 0x00, 0x10, 0x02, 0x18, 0x00, 0x03,
0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3622, "iterator", 8);
STRING_LITERAL(TMP3623, "method", 6);
static NIM_CONST Tspecialwords197006 TMP3624 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xE0, 0x7F, 0xF4, 0x7B, 0x01, 0xC0,
0xF8, 0x1F, 0x00, 0x10, 0x82, 0x19, 0x00, 0x43,
0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3625, "converter", 9);
static NIM_CONST Tspecialwords197006 TMP3626 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x90, 0x76, 0x44, 0x10, 0x01, 0x40,
0xF8, 0x1F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3627, "macro", 5);
STRING_LITERAL(TMP3628, "import", 6);
STRING_LITERAL(TMP3639, "from", 4);
STRING_LITERAL(TMP3642, "include", 7);
STRING_LITERAL(TMP3643, "export", 6);
STRING_LITERAL(TMP3644, "cannot export: ", 15);
static NIM_CONST Tspecialwords197006 TMP3645 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3646, "\'defer\' takes a \'void\' expression", 33);
STRING_LITERAL(TMP3648, "cannot infer type of parameter: ", 32);
STRING_LITERAL(TMP3653, "no code for ", 12);
STRING_LITERAL(TMP3654, "echo", 4);
STRING_LITERAL(TMP3655, "echo", 4);
STRING_LITERAL(TMP3657, "n is not nil", 12);
Ttype215828* commontypebegin_426394;
extern TNimType NTI215786; /* PType */
extern TNimType NTI215828; /* TType */
extern Gcheap49818 gch_49859;
Tident190012* typedescid_436651;
Ttype215828* enforcevoidcontext_448802;
Tsym215822* analyzingdestructor_449170;
Tsym215822* destructoristrivial_449171;
extern TNimType NTI215788; /* PSym */
extern TNimType NTI215822; /* TSym */
Tident190012* destructorname_449188;
Tident190012* destructorparam_449189;
Tnode215790* destructorpragma_449190;
extern NU8 gcmd_161123;
extern NI evaltemplatecounter_401328;
extern TNimType NTI215790; /* TNode */
extern TNimType NTI215435; /* TSymKind */
extern TNimType NTI215824; /* TTypeSeq */
extern TNimType NTI265006; /* PProcCon */
extern Tnode215790* emptynode_216801;
extern Tsym215822* opcontains_220607;
extern Tsym215822* opnot_220606;
extern TNimType NTI215784; /* TNodeSeq */
TNimType NTI429717; /* tuple[a: PSym, b: int] */
extern TNimType NTI104; /* int */
TNimType NTI429716; /* seq[tuple[a: PSym, b: int]] */
extern Tident190012* iddelegator_190456;
extern Tident190012* idanon_190455;
TNimType NTI437422; /* object */
extern TNimType NTI326021; /* range -1..0(int) */
extern TNimType NTI215782; /* PNode */
extern TNimType NTI138; /* string */
extern TNimType NTI183337; /* TLineInfo */
extern TNimType NTI265018; /* PContext */
TNimType NTI437421; /* ref object */
extern NU32 goptions_161119;
extern NIM_BOOL gexperimentalmode_161138;
extern NU64 gnotes_184080;
extern TNimType NTI363206; /* TCandidate */
extern TNimType NTI215792; /* TSymSeq */
extern NI gerrorcounter_184081;
extern NU32 gglobaloptions_161121;
extern NI gerrormax_184084;
extern Tsymseq215792* gowners_265234;
extern NU8 erroroutputs_184113;
extern TNimType NTI265140; /* seq[TInstantiationPair] */
extern TSafePoint* exchandler_19437;
extern TNimType NTI183343; /* ERecoverableError */
extern Exception* currexception_19439;
extern TNimType NTI215521; /* TMagic */
extern Tsym215822* systemmodule_259007;
extern Tlineinfo183337 gcodegenlineinfo_184058;
extern NI ptrsize_168617;
extern TNimType NTI215241; /* TTypeKind */
extern NI intsize_168615;
extern NI floatsize_168616;
extern TY262054 gincludefile_262058;
extern TNimType NTI183345; /* ESuggestDone */
static TNimType* Nim_OfCheck_CACHE1[2];

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

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

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

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	Cell47504* c;
	c = usrtocell_51440(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_53001(c);
	}
	LA3: ;
}

static N_INLINE(Tnode215790*, inlineconst_459033)(Tnode215790* n, Tsym215822* s) {
	Tnode215790* result;
	result = 0;
	result = copytree_219822((*s).ast);
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	(*result).info = (*n).info;
	return result;
}

static N_INLINE(NI, len_216059)(Tnode215790* 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(NIM_BOOL, implicitlydiscardable_450236)(Tnode215790* n_450238) {
	NIM_BOOL result;
	Tnode215790* n;
	NIM_BOOL LOC3;
	NIM_BOOL LOC4;
	result = 0;
	n = n_450238;
	{
		while (1) {
			if (!((TMP3156[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) goto LA2;
			n = lastson_218364(n);
		} LA2: ;
	}
	LOC3 = 0;
	LOC4 = 0;
	LOC4 = iscallexpr_216042(n);
	if (!(LOC4)) goto LA5;
	LOC4 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
	LA5: ;
	LOC3 = LOC4;
	if (!(LOC3)) goto LA6;
	LOC3 = (((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 29))&31U)))!=0);
	LA6: ;
	result = LOC3;
	return result;
}

static N_INLINE(NIM_BOOL, isatom_220491)(Tnode215790* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (((NU8) 0) <= (*n).kind);
	if (!(LOC1)) goto LA2;
	LOC1 = ((*n).kind <= ((NU8) 23));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, fixniltype_450276)(Tnode215790* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isatom_220491(n);
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			NimStringDesc* LOC12;
			LOC8 = 0;
			LOC8 = !(((*n).kind == ((NU8) 23)));
			if (!(LOC8)) goto LA9;
			LOC8 = !(((*n).typ == NIM_NIL));
			LA9: ;
			if (!LOC8) goto LA10;
			LOC12 = 0;
			LOC12 = typetostring_241017((*n).typ, ((NU8) 0));
			localerror_188080((*n).info, ((NU16) 144), LOC12);
		}
		LA10: ;
	}
	goto LA1;
	LA4: ;
	{
		if (!((*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126))) goto LA14;
		(*n).kind = ((NU8) 115);
		{
			Tnode215790* it_450311;
			it_450311 = 0;
			{
				NI i_450316;
				NI HEX3Atmp_450318;
				NI LOC18;
				NI res_450320;
				i_450316 = 0;
				HEX3Atmp_450318 = 0;
				LOC18 = 0;
				LOC18 = len_216059(n);
				HEX3Atmp_450318 = (LOC18 - 1);
				res_450320 = ((NI) 0);
				{
					while (1) {
						if (!(res_450320 <= HEX3Atmp_450318)) goto LA20;
						i_450316 = res_450320;
						it_450311 = (*n).kindU.S6.sons->data[i_450316];
						fixniltype_450276(it_450311);
						res_450320 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	goto LA1;
	LA14: ;
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), NIM_NIL);
}

N_NIMCALL(void, discardcheck_450323)(Tcontext265020* c, Tnode215790* result) {
{	{
		if (!(((NI) 0) < (*c).intypeclass)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = !(((*result).typ == NIM_NIL));
		if (!(LOC7)) goto LA8;
		LOC7 = !(((*(*result).typ).kind == ((NU8) 7) || (*(*result).typ).kind == ((NU8) 3)));
		LA8: ;
		if (!LOC7) goto LA9;
		{
			if (!((*result).kind == ((NU8) 23))) goto LA13;
			asgnRefNoCycle((void**) (&(*result).typ), NIM_NIL);
			message_188095((*result).info, ((NU16) 250), ((NimStringDesc*) &TMP3155));
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC16;
			Tnode215790* n;
			LOC16 = 0;
			LOC16 = implicitlydiscardable_450236(result);
			if (!LOC16) goto LA17;
			n = result;
			asgnRefNoCycle((void**) (&(*result).typ), NIM_NIL);
			{
				while (1) {
					if (!((TMP3156[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) goto LA20;
					n = lastson_218364(n);
					asgnRefNoCycle((void**) (&(*n).typ), NIM_NIL);
				} LA20: ;
			}
		}
		goto LA11;
		LA17: ;
		{
			NIM_BOOL LOC22;
			LOC22 = 0;
			LOC22 = !(((*(*result).typ).kind == ((NU8) 50)));
			if (!(LOC22)) goto LA23;
			LOC22 = !((gcmd_161123 == ((NU8) 18)));
			LA23: ;
			if (!LOC22) goto LA24;
			{
				if (!((*(*result).typ).kind == ((NU8) 5))) goto LA28;
				fixniltype_450276(result);
				message_188095((*result).info, ((NU16) 250), ((NimStringDesc*) &TMP3155));
			}
			goto LA26;
			LA28: ;
			{
				Tnode215790* n;
				NimStringDesc* LOC33;
				n = result;
				{
					while (1) {
						if (!((TMP3156[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) goto LA32;
						n = lastson_218364(n);
					} LA32: ;
				}
				LOC33 = 0;
				LOC33 = typetostring_241017((*result).typ, ((NU8) 0));
				localerror_188080((*n).info, ((NU16) 144), LOC33);
			}
			LA26: ;
		}
		goto LA11;
		LA24: ;
		LA11: ;
	}
	LA9: ;
	}BeforeRet: ;
}

N_NIMCALL(Tnode215790*, semexprnotype_426215)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = semexpr_426201(c, n, 8);
	discardcheck_450323(c, result);
	return result;
}

N_NIMCALL(Tnode215790*, semstmt_426250)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = semexprnotype_426215(c, n);
	return result;
}

N_NIMCALL(Ttype215828*, neworprevtype_433274)(NU8 kind, Ttype215828* prev, Tcontext265020* c) {
	Ttype215828* result;
	result = 0;
	{
		if (!(prev == NIM_NIL)) goto LA3;
		result = newtypes_265185(kind, c);
	}
	goto LA1;
	LA3: ;
	{
		result = prev;
		{
			if (!((*result).kind == ((NU8) 30))) goto LA8;
			(*result).kind = kind;
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semanontuple_435005)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
	}
	LA4: ;
	result = neworprevtype_433274(((NU8) 18), prev, c);
	{
		NI i_435022;
		NI HEX3Atmp_435025;
		NI LOC7;
		NI res_435028;
		i_435022 = 0;
		HEX3Atmp_435025 = 0;
		LOC7 = 0;
		LOC7 = sonslen_218351(n);
		HEX3Atmp_435025 = (NI)(LOC7 - ((NI) 1));
		res_435028 = ((NI) 0);
		{
			while (1) {
				Ttype215828* LOC10;
				if (!(res_435028 <= HEX3Atmp_435025)) goto LA9;
				i_435022 = res_435028;
				LOC10 = 0;
				LOC10 = semtypenode_426245(c, (*n).kindU.S6.sons->data[i_435022], NIM_NIL);
				addsonskipintlit_259678(result, LOC10);
				res_435028 += ((NI) 1);
			} LA9: ;
		}
	}
	return result;
}

static N_INLINE(Tnode215790*, HEX5BHEX5D_216238)(Tnode215790* n, NI i) {
	Tnode215790* result;
	result = 0;
	result = (*n).kindU.S6.sons->data[i];
	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(Slice88082, HEX2EHEX2E_102424)(NI a, NI b) {
	Slice88082 result;
	memset((void*)(&result), 0, sizeof(result));
	result.a = a;
	result.b = b;
	return result;
}

static N_INLINE(Ttype215828*, skipintlit_259651)(Ttype215828* t) {
	Ttype215828* result;
{	result = 0;
	{
		if (!!(((*t).n == NIM_NIL))) goto LA3;
		{
			if (!((*t).kind == ((NU8) 31) || (*t).kind == ((NU8) 36))) goto LA7;
			result = getsystype_259130((*t).kind);
			goto BeforeRet;
		}
		LA7: ;
	}
	LA3: ;
	result = t;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, semrangeaux_433798)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	TY434020 range;
	Tnode215790* LOC9;
	Tnode215790* LOC10;
	TY434025 ranget;
	result = 0;
	checksonslen_265958(n, ((NI) 3));
	result = neworprevtype_433274(((NU8) 20), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_217248(((NU8) 44), (*n).info));
	{
		NIM_BOOL LOC3;
		Tnode215790* LOC4;
		Tnode215790* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_216238(n, ((NI) 1));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 2));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		localerror_188080((*n).info, ((NU16) 110), ((NimStringDesc*) &TMP3155));
	}
	LA7: ;
	memset((void*)range, 0, sizeof(range));
	LOC9 = 0;
	LOC9 = HEX5BHEX5D_216238(n, ((NI) 1));
	range[(((NI) 0))- 0] = semexprwithtype_426208(c, LOC9, 32);
	LOC10 = 0;
	LOC10 = HEX5BHEX5D_216238(n, ((NI) 2));
	range[(((NI) 1))- 0] = semexprwithtype_426208(c, LOC10, 32);
	memset((void*)ranget, 0, sizeof(ranget));
	{
		NI i_434036;
		NI res_434067;
		i_434036 = 0;
		res_434067 = ((NI) 0);
		{
			while (1) {
				Ttype215828* LOC14;
				if (!(res_434067 <= ((NI) 1))) goto LA13;
				i_434036 = res_434067;
				LOC14 = 0;
				LOC14 = skiptypes_219113((*range[(i_434036)- 0]).typ, IL64(576460752303423488));
				ranget[(i_434036)- 0] = skipintlit_259651(LOC14);
				res_434067 += ((NI) 1);
			} LA13: ;
		}
	}
	{
		Ttype215828* LOC17;
		Ttype215828* LOC18;
		NIM_BOOL LOC19;
		LOC17 = 0;
		LOC17 = skiptypes_219113(ranget[(((NI) 0))- 0], 1048576);
		LOC18 = 0;
		LOC18 = skiptypes_219113(ranget[(((NI) 1))- 0], 1048576);
		LOC19 = 0;
		LOC19 = sametype_245628(LOC17, LOC18, 0);
		if (!!(LOC19)) goto LA20;
		localerror_188080((*n).info, ((NU16) 132), ((NimStringDesc*) &TMP3155));
	}
	goto LA15;
	LA20: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = isordinaltype_241057(ranget[(((NI) 0))- 0]);
		if (!!(LOC23)) goto LA24;
		localerror_188080((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3155));
	}
	goto LA15;
	LA24: ;
	{
		NIM_BOOL LOC27;
		LOC27 = 0;
		LOC27 = enumhasholes_241060(ranget[(((NI) 0))- 0]);
		if (!LOC27) goto LA28;
		localerror_188080((*n).info, ((NU16) 150), (*(*(*ranget[(((NI) 0))- 0]).sym).name).s);
	}
	goto LA15;
	LA28: ;
	LA15: ;
	{
		NI i_434050;
		NI res_434074;
		i_434050 = 0;
		res_434074 = ((NI) 0);
		{
			while (1) {
				if (!(res_434074 <= ((NI) 1))) goto LA32;
				i_434050 = res_434074;
				{
					NIM_BOOL LOC35;
					Tnode215790* LOC38;
					LOC35 = 0;
					LOC35 = hasgenericarguments_284737(range[(i_434050)- 0]);
					if (!LOC35) goto LA36;
					LOC38 = 0;
					LOC38 = makestaticexpr_265608(c, range[(i_434050)- 0]);
					addson_217807((*result).n, LOC38);
				}
				goto LA33;
				LA36: ;
				{
					Tnode215790* LOC40;
					LOC40 = 0;
					LOC40 = semconstexpr_427473(c, range[(i_434050)- 0]);
					addson_217807((*result).n, LOC40);
				}
				LA33: ;
				res_434074 += ((NI) 1);
			} LA32: ;
		}
	}
	{
		Tnode215790* LOC43;
		Tnode215790* LOC44;
		NU8 LOC45;
		LOC43 = 0;
		LOC43 = HEX5BHEX5D_216238((*result).n, ((NI) 0));
		LOC44 = 0;
		LOC44 = HEX5BHEX5D_216238((*result).n, ((NI) 1));
		LOC45 = 0;
		LOC45 = weaklevalue_222277(LOC43, LOC44);
		if (!(LOC45 == ((NU8) 1))) goto LA46;
		localerror_188080((*n).info, ((NU16) 110), ((NimStringDesc*) &TMP3155));
	}
	LA46: ;
	addsonskipintlit_259678(result, ranget[(((NI) 0))- 0]);
	return result;
}

static N_INLINE(Ttype215828*, freshtype_438308)(Ttype215828* res, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	{
		if (!prev == 0) goto LA3;
		result = copytype_218470(res, (*res).owner, NIM_FALSE);
	}
	goto LA1;
	LA3: ;
	{
		result = res;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semtypeexpr_438291)(Tcontext265020* c, Tnode215790* n_438294) {
	Ttype215828* result;
	Tnode215790* n;
	result = 0;
	n = semexprwithtype_426208(c, n_438294, 32);
	{
		if (!((*(*n).typ).kind == ((NU8) 8))) goto LA3;
		result = base_241021((*n).typ);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = rendertree_234044(n, 0);
		localerror_188080((*n).info, ((NU16) 67), LOC6);
		result = errortype_265901(c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, newconstraint_433301)(Tcontext265020* c, NU8 k) {
	Ttype215828* result;
	Ttype215828* LOC1;
	result = 0;
	result = newtypes_265185(((NU8) 51), c);
	LOC1 = 0;
	LOC1 = newtypes_265185(k, c);
	addsonskipintlit_259678(result, LOC1);
	return result;
}

N_NIMCALL(Ttype215828*, semanyref_433690)(Tcontext265020* c, Tnode215790* n_433693, NU8 kind, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_216059(n_433693);
		if (!(LOC3 < ((NI) 1))) goto LA4;
		result = newconstraint_433301(c, kind);
	}
	goto LA1;
	LA4: ;
	{
		NI iscall;
		Tnode215790* n;
		Ttype215828* base;
		Tnode215790* LOC13;
		NIM_BOOL isnilable;
		iscall = ((*n_433693).kind == ((NU8) 27) || (*n_433693).kind == ((NU8) 29) || (*n_433693).kind == ((NU8) 30) || (*n_433693).kind == ((NU8) 31) || (*n_433693).kind == ((NU8) 26) || (*n_433693).kind == ((NU8) 28) || (*n_433693).kind == ((NU8) 32));
		{
			Tnode215790* LOC9;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_216238(n_433693, ((NI) 0));
			if (!((*LOC9).kind == ((NU8) 41))) goto LA10;
			n = HEX5BHEX5D_216238(n_433693, ((NI) 0));
		}
		goto LA7;
		LA10: ;
		{
			n = n_433693;
		}
		LA7: ;
		checkminsonslen_265962(n, ((NI) 1));
		LOC13 = 0;
		LOC13 = lastson_218364(n);
		base = semtypenode_426245(c, LOC13, NIM_NIL);
		result = neworprevtype_433274(kind, prev, c);
		isnilable = NIM_FALSE;
		{
			NI i_433740;
			NI HEX3Atmp_433765;
			NI LOC15;
			NI res_433768;
			i_433740 = 0;
			HEX3Atmp_433765 = 0;
			LOC15 = 0;
			LOC15 = len_216059(n);
			HEX3Atmp_433765 = (NI)(LOC15 - ((NI) 2));
			res_433768 = ((NI) (iscall));
			{
				while (1) {
					Tnode215790* ni;
					if (!(res_433768 <= HEX3Atmp_433765)) goto LA17;
					i_433740 = res_433768;
					ni = HEX5BHEX5D_216238(n, i_433740);
					{
						if (!((*ni).kind == ((NU8) 23))) goto LA20;
						isnilable = NIM_TRUE;
					}
					goto LA18;
					LA20: ;
					{
						Ttype215828* region;
						region = semtypenode_426245(c, ni, NIM_NIL);
						{
							Ttype215828* LOC25;
							Tnode215790* LOC28;
							LOC25 = 0;
							LOC25 = skiptypes_219113(region, 2048);
							if (!!(((*LOC25).kind == ((NU8) 50) || (*LOC25).kind == ((NU8) 17)))) goto LA26;
							LOC28 = 0;
							LOC28 = HEX5BHEX5D_216238(n, i_433740);
							message_188095((*LOC28).info, ((NU16) 4), ((NimStringDesc*) &TMP3160));
						}
						LA26: ;
						addsonskipintlit_259678(result, region);
					}
					LA18: ;
					res_433768 += ((NI) 1);
				} LA17: ;
			}
		}
		addsonskipintlit_259678(result, base);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semwhen_426990)(Tcontext265020* c, Tnode215790* n, NIM_BOOL semcheck) {
	Tnode215790* result;
	NIM_BOOL whennimvm;
	result = 0;
	result = NIM_NIL;
	whennimvm = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tnode215790* exprnode;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = (((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0) == ((NI) 2));
		if (!(LOC4)) goto LA5;
		LOC4 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 86));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 88));
		LA6: ;
		if (!LOC3) goto LA7;
		exprnode = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)];
		{
			Tsym215822* LOC13;
			if (!((*exprnode).kind == ((NU8) 2))) goto LA11;
			LOC13 = 0;
			LOC13 = lookup_270601(c, exprnode);
			whennimvm = ((*LOC13).magic == ((NU8) 254));
		}
		goto LA9;
		LA11: ;
		{
			if (!((*exprnode).kind == ((NU8) 3))) goto LA15;
			whennimvm = ((*(*exprnode).kindU.S4.sym).magic == ((NU8) 254));
		}
		goto LA9;
		LA15: ;
		LA9: ;
		{
			if (!whennimvm) goto LA19;
			(*n).flags |= ((NU16)1)<<((((NU8) 8))%(sizeof(NU16)*8));
		}
		LA19: ;
	}
	LA7: ;
	{
		NI i_466768;
		NI HEX3Atmp_466839;
		NI LOC22;
		NI res_466842;
		i_466768 = 0;
		HEX3Atmp_466839 = 0;
		LOC22 = 0;
		LOC22 = sonslen_218351(n);
		HEX3Atmp_466839 = (NI)(LOC22 - ((NI) 1));
		res_466842 = ((NI) 0);
		{
			while (1) {
				Tnode215790* it;
				if (!(res_466842 <= HEX3Atmp_466839)) goto LA24;
				i_466768 = res_466842;
				it = (*n).kindU.S6.sons->data[i_466768];
				switch ((*it).kind) {
				case ((NU8) 86):
				case ((NU8) 49):
				{
					checksonslen_265958(it, ((NI) 2));
					{
						if (!whennimvm) goto LA28;
						{
							if (!semcheck) goto LA32;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semstmt_426250(c, (*it).kindU.S6.sons->data[((NI) 1)]));
						}
						LA32: ;
						result = n;
					}
					goto LA26;
					LA28: ;
					{
						Tnode215790* e;
						e = semconstexpr_427473(c, (*it).kindU.S6.sons->data[((NI) 0)]);
						{
							if (!!(((*e).kind == ((NU8) 6)))) goto LA37;
						}
						goto LA35;
						LA37: ;
						{
							NIM_BOOL LOC40;
							LOC40 = 0;
							LOC40 = !(((*e).kindU.S1.intval == IL64(0)));
							if (!(LOC40)) goto LA41;
							LOC40 = (result == NIM_NIL);
							LA41: ;
							if (!LOC40) goto LA42;
							{
								if (!semcheck) goto LA46;
								result = semstmt_426250(c, (*it).kindU.S6.sons->data[((NI) 1)]);
							}
							goto LA44;
							LA46: ;
							{
								result = (*it).kindU.S6.sons->data[((NI) 1)];
							}
							LA44: ;
						}
						goto LA35;
						LA42: ;
						LA35: ;
					}
					LA26: ;
				}
				break;
				case ((NU8) 88):
				case ((NU8) 50):
				{
					checksonslen_265958(it, ((NI) 1));
					{
						NIM_BOOL LOC52;
						LOC52 = 0;
						LOC52 = (result == NIM_NIL);
						if (LOC52) goto LA53;
						LOC52 = whennimvm;
						LA53: ;
						if (!LOC52) goto LA54;
						{
							if (!semcheck) goto LA58;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semstmt_426250(c, (*it).kindU.S6.sons->data[((NI) 0)]));
						}
						LA58: ;
						{
							if (!(result == NIM_NIL)) goto LA62;
							result = (*it).kindU.S6.sons->data[((NI) 0)];
						}
						LA62: ;
					}
					LA54: ;
				}
				break;
				default:
				{
					illformedast_265950(n);
				}
				break;
				}
				res_466842 += ((NI) 1);
			} LA24: ;
		}
	}
	{
		if (!(result == NIM_NIL)) goto LA67;
		result = newnodei_217248(((NU8) 1), (*n).info);
	}
	LA67: ;
	idsynchronizationpoint_214432(((NI) 200));
	return result;
}

N_NIMCALL(Tsym215822*, semtypeident_434341)(Tcontext265020* c, Tnode215790* n) {
	Tsym215822* result;
{	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
	}
	goto LA1;
	LA3: ;
	{
		result = qualifiedlookup_270652(c, n, 3);
		{
			if (!!((result == NIM_NIL))) goto LA8;
			markused_363244((*n).info, result);
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = ((*result).kind == ((NU8) 3));
				if (!(LOC12)) goto LA13;
				LOC12 = ((*(*result).typ).kind == ((NU8) 8));
				LA13: ;
				if (!LOC12) goto LA14;
				{
					Tsym215822* bound;
					if (!(((NI) 0) < (*c).ingenericinst)) goto LA18;
					bound = (*(*(*result).typ).sons->data[((NI) 0)]).sym;
					{
						if (!!((bound == NIM_NIL))) goto LA22;
						result = bound;
						goto BeforeRet;
					}
					LA22: ;
					goto BeforeRet;
				}
				LA18: ;
				{
					if (!((*(*result).typ).sym == NIM_NIL)) goto LA26;
					localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
					result = errorsym_270243(c, n);
					goto BeforeRet;
				}
				LA26: ;
				result = copysym_218601((*(*result).typ).sym, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*result).typ), copytype_218470((*result).typ, (*(*result).typ).owner, NIM_TRUE));
				(*(*result).typ).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
			}
			LA14: ;
			{
				if (!((*result).kind == ((NU8) 4))) goto LA30;
				{
					NIM_BOOL LOC34;
					NIM_BOOL LOC35;
					NI LOC37;
					LOC34 = 0;
					LOC35 = 0;
					LOC35 = ((*(*result).typ).kind == ((NU8) 12));
					if (!(LOC35)) goto LA36;
					LOC37 = 0;
					LOC37 = len_218339((*result).typ);
					LOC35 = (LOC37 == ((NI) 0));
					LA36: ;
					LOC34 = LOC35;
					if (!(LOC34)) goto LA38;
					LOC34 = (((*(*result).typ).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
					LA38: ;
					if (!LOC34) goto LA39;
					(*result).kind = ((NU8) 7);
					(*(*result).typ).flags &= ~(((NU32)1) << ((((NU8) 25)) % (sizeof(NU32)*8)));
					goto BeforeRet;
				}
				goto LA32;
				LA39: ;
				{
					localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
					result = errorsym_270243(c, n);
					goto BeforeRet;
				}
				LA32: ;
			}
			LA30: ;
			{
				Toverloaditer270296 ov;
				Tsym215822* amb;
				if (!!(((*result).kind == ((NU8) 7)))) goto LA44;
				memset((void*)(&ov), 0, sizeof(ov));
				amb = initoverloaditer_270890((&ov), c, n);
				{
					while (1) {
						NIM_BOOL LOC48;
						LOC48 = 0;
						LOC48 = !((amb == NIM_NIL));
						if (!(LOC48)) goto LA49;
						LOC48 = !(((*amb).kind == ((NU8) 7)));
						LA49: ;
						if (!LOC48) goto LA47;
						amb = nextoverloaditer_271041((&ov), c, n);
					} LA47: ;
				}
				{
					if (!!((amb == NIM_NIL))) goto LA52;
					result = amb;
				}
				goto LA50;
				LA52: ;
				{
					{
						if (!!(((*result).kind == ((NU8) 0)))) goto LA57;
						localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
					}
					LA57: ;
					result = errorsym_270243(c, n);
					goto BeforeRet;
				}
				LA50: ;
			}
			LA44: ;
			{
				Tlineinfo183337 oldinfo;
				if (!!(((*(*result).typ).kind == ((NU8) 12)))) goto LA61;
				oldinfo = (*n).info;
				genericReset((void*)(&(*n)), (&NTI215790));
				(*n).kind = ((NU8) 3);
				asgnRefNoCycle((void**) (&(*n).kindU.S4.sym), result);
				(*n).info = oldinfo;
				asgnRefNoCycle((void**) (&(*n).typ), (*result).typ);
			}
			LA61: ;
		}
		goto LA6;
		LA8: ;
		{
			localerror_188080((*n).info, ((NU16) 20), ((NimStringDesc*) &TMP3155));
			result = errorsym_270243(c, n);
		}
		LA6: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, isrange_240470)(Tnode215790* n) {
	NIM_BOOL result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 27) || (*n).kind == ((NU8) 29) || (*n).kind == ((NU8) 30) || (*n).kind == ((NU8) 31) || (*n).kind == ((NU8) 26) || (*n).kind == ((NU8) 28) || (*n).kind == ((NU8) 32))) goto LA3;
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC8;
			Tnode215790* LOC9;
			Tnode215790* LOC11;
			NIM_BOOL LOC13;
			Tnode215790* LOC14;
			Tnode215790* LOC16;
			Tnode215790* LOC17;
			LOC7 = 0;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC8 = ((*LOC9).kind == ((NU8) 2));
			if (!(LOC8)) goto LA10;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC8 = ((*(*LOC11).kindU.S5.ident).Sup.id == ((NI) 75));
			LA10: ;
			LOC7 = LOC8;
			if (LOC7) goto LA12;
			LOC13 = 0;
			LOC14 = 0;
			LOC14 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC13 = ((*LOC14).kind == ((NU8) 56) || (*LOC14).kind == ((NU8) 57));
			if (!(LOC13)) goto LA15;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_216238(LOC16, ((NI) 1));
			LOC13 = ((*(*(*LOC17).kindU.S4.sym).name).Sup.id == ((NI) 75));
			LA15: ;
			LOC7 = LOC13;
			LA12: ;
			if (!LOC7) goto LA18;
			result = NIM_TRUE;
		}
		LA18: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Ttype215828*, semarrayindex_434182)(Tcontext265020* c, Tnode215790* n) {
	Ttype215828* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_240470(n);
		if (!LOC3) goto LA4;
		result = semrangeaux_433798(c, n, NIM_NIL);
	}
	goto LA1;
	LA4: ;
	{
		Tnode215790* e;
		e = semexprwithtype_426208(c, n, 32);
		{
			if (!((*(*e).typ).kind == ((NU8) 60))) goto LA9;
			result = makerangewithstaticexpr_265845(c, (*(*e).typ).n);
		}
		goto LA7;
		LA9: ;
		{
			if (!((*e).kind >= ((NU8) 6) && (*e).kind <= ((NU8) 15))) goto LA12;
			result = makerangetype_265915(c, IL64(0), (NI64)((*e).kindU.S1.intval - IL64(1)), (*n).info, (*e).typ);
		}
		goto LA7;
		LA12: ;
		{
			NIM_BOOL LOC15;
			LOC15 = 0;
			LOC15 = ((*e).kind == ((NU8) 3));
			if (!(LOC15)) goto LA16;
			LOC15 = ((*(*e).typ).kind == ((NU8) 59));
			LA16: ;
			if (!LOC15) goto LA17;
			{
				if (!!(((*(*e).kindU.S4.sym).ast == NIM_NIL))) goto LA21;
				result = semarrayindex_434182(c, (*(*e).kindU.S4.sym).ast);
				goto BeforeRet;
			}
			LA21: ;
			{
				Ttype215828* LOC25;
				NIM_BOOL LOC26;
				Tnode215790* LOC29;
				LOC25 = 0;
				LOC25 = lastson_218377((*e).typ);
				LOC26 = 0;
				LOC26 = isordinaltype_241057(LOC25);
				if (!!(LOC26)) goto LA27;
				LOC29 = 0;
				LOC29 = HEX5BHEX5D_216238(n, ((NI) 1));
				localerror_188080((*LOC29).info, ((NU16) 78), ((NimStringDesc*) &TMP3155));
			}
			LA27: ;
			result = makerangewithstaticexpr_265845(c, e);
			{
				if (!(((NI) 0) < (*c).ingenericcontext)) goto LA32;
				(*result).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
			}
			LA32: ;
		}
		goto LA7;
		LA17: ;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = ((*e).kind == ((NU8) 27) || (*e).kind == ((NU8) 29) || (*e).kind == ((NU8) 30) || (*e).kind == ((NU8) 31) || (*e).kind == ((NU8) 26) || (*e).kind == ((NU8) 28) || (*e).kind == ((NU8) 32));
			if (!(LOC35)) goto LA36;
			LOC35 = hasgenericarguments_284737(e);
			LA36: ;
			if (!LOC35) goto LA37;
			{
				NIM_BOOL LOC41;
				Tnode215790* LOC44;
				LOC41 = 0;
				LOC41 = isordinaltype_241057((*e).typ);
				if (!!(LOC41)) goto LA42;
				LOC44 = 0;
				LOC44 = HEX5BHEX5D_216238(n, ((NI) 1));
				localerror_188080((*LOC44).info, ((NU16) 78), ((NimStringDesc*) &TMP3155));
			}
			LA42: ;
			result = makerangewithstaticexpr_265845(c, e);
		}
		goto LA7;
		LA37: ;
		{
			if (!((*e).kind == ((NU8) 2))) goto LA46;
			result = skiptypes_219113((*e).typ, 256);
		}
		goto LA7;
		LA46: ;
		{
			Tnode215790* x;
			x = semconstexpr_427473(c, e);
			{
				Ttype215828* LOC53;
				if (!((*x).kind >= ((NU8) 6) && (*x).kind <= ((NU8) 15))) goto LA51;
				LOC53 = 0;
				LOC53 = skiptypes_219113((*x).typ, 256);
				result = makerangetype_265915(c, IL64(0), (NI64)((*x).kindU.S1.intval - IL64(1)), (*n).info, LOC53);
			}
			goto LA49;
			LA51: ;
			{
				result = skiptypes_219113((*x).typ, 256);
			}
			LA49: ;
		}
		LA7: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, semarray_434289)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	Ttype215828* base;
	result = 0;
	base = 0;
	{
		NI LOC3;
		Ttype215828* indx;
		Tnode215790* LOC6;
		Ttype215828* indxb;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 1));
		indx = semarrayindex_434182(c, LOC6);
		indxb = indx;
		{
			if (!((*indxb).kind == ((NU8) 11))) goto LA9;
			indxb = lastson_218377(indxb);
		}
		LA9: ;
		{
			if (!!(((*indxb).kind == ((NU8) 12) || (*indxb).kind == ((NU8) 59) || (*indxb).kind == ((NU8) 60)))) goto LA13;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = isordinaltype_241057(indxb);
				if (!!(LOC17)) goto LA18;
				localerror_188080((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 78), ((NimStringDesc*) &TMP3155));
			}
			goto LA15;
			LA18: ;
			{
				NIM_BOOL LOC21;
				Ttype215828* LOC24;
				NimStringDesc* LOC25;
				LOC21 = 0;
				LOC21 = enumhasholes_241060(indxb);
				if (!LOC21) goto LA22;
				LOC24 = 0;
				LOC24 = skiptypes_219113(indxb, 1048576);
				LOC25 = 0;
				LOC25 = typetostring_241017(LOC24, ((NU8) 0));
				localerror_188080((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 150), LOC25);
			}
			goto LA15;
			LA22: ;
			LA15: ;
		}
		LA13: ;
		base = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
		result = neworprevtype_433274(((NU8) 16), prev, c);
		addsonskipintlit_259678(result, indx);
		addsonskipintlit_259678(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_188080((*n).info, ((NU16) 177), ((NimStringDesc*) &TMP3155));
		result = neworprevtype_433274(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semcontainer_433670)(Tcontext265020* c, Tnode215790* n, NU8 kind, NimStringDesc* kindstr, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	result = neworprevtype_433274(kind, prev, c);
	{
		NI LOC3;
		Ttype215828* base;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_259678(result, base);
	}
	goto LA1;
	LA4: ;
	{
		Ttype215828* LOC7;
		localerror_188080((*n).info, ((NU16) 176), kindstr);
		LOC7 = 0;
		LOC7 = errortype_265901(c);
		addsonskipintlit_259678(result, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semrange_434078)(Tcontext265020* c, Tnode215790* n_434081, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	result = NIM_NIL;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n_434081);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		{
			Tnode215790* LOC8;
			NIM_BOOL LOC9;
			Tnode215790* LOC12;
			Tnode215790* n;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_216238(n_434081, ((NI) 1));
			LOC9 = 0;
			LOC9 = isrange_240470(LOC8);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_216238(n_434081, ((NI) 1));
			result = semrangeaux_433798(c, LOC12, prev);
			n = (*result).n;
			{
				NIM_BOOL LOC15;
				LOC15 = 0;
				LOC15 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind >= ((NU8) 5) && (*(*n).kindU.S6.sons->data[((NI) 0)]).kind <= ((NU8) 15));
				if (!(LOC15)) goto LA16;
				LOC15 = (IL64(0) < (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S1.intval);
				LA16: ;
				if (!LOC15) goto LA17;
				(*result).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
			}
			goto LA13;
			LA17: ;
			{
				NIM_BOOL LOC20;
				LOC20 = 0;
				LOC20 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind >= ((NU8) 5) && (*(*n).kindU.S6.sons->data[((NI) 1)]).kind <= ((NU8) 15));
				if (!(LOC20)) goto LA21;
				LOC20 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S1.intval < IL64(0));
				LA21: ;
				if (!LOC20) goto LA22;
				(*result).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
			}
			goto LA13;
			LA22: ;
			{
				NIM_BOOL LOC25;
				LOC25 = 0;
				LOC25 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind >= ((NU8) 16) && (*(*n).kindU.S6.sons->data[((NI) 0)]).kind <= ((NU8) 18));
				if (!(LOC25)) goto LA26;
				LOC25 = (0.0 < (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S2.floatval);
				LA26: ;
				if (!LOC25) goto LA27;
				(*result).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
			}
			goto LA13;
			LA27: ;
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind >= ((NU8) 16) && (*(*n).kindU.S6.sons->data[((NI) 1)]).kind <= ((NU8) 18));
				if (!(LOC30)) goto LA31;
				LOC30 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S2.floatval < 0.0);
				LA31: ;
				if (!LOC30) goto LA32;
				(*result).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
			}
			goto LA13;
			LA32: ;
			LA13: ;
		}
		goto LA6;
		LA10: ;
		{
			localerror_188080((*(*n_434081).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 100), ((NimStringDesc*) &TMP3155));
			result = neworprevtype_433274(((NU8) 50), prev, c);
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_188080((*n_434081).info, ((NU16) 176), ((NimStringDesc*) &TMP3163));
		result = neworprevtype_433274(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semset_433644)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	result = neworprevtype_433274(((NU8) 19), prev, c);
	{
		NI LOC3;
		Ttype215828* base;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_259678(result, base);
		{
			if (!((*base).kind == ((NU8) 11))) goto LA8;
			base = lastson_218377(base);
		}
		LA8: ;
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = isordinaltype_241057(base);
				if (!!(LOC16)) goto LA17;
				localerror_188080((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3155));
			}
			goto LA14;
			LA17: ;
			{
				NI64 LOC20;
				LOC20 = 0;
				LOC20 = lengthord_241007(base);
				if (!(IL64(65536) < LOC20)) goto LA21;
				localerror_188080((*n).info, ((NU16) 123), ((NimStringDesc*) &TMP3155));
			}
			goto LA14;
			LA21: ;
			LA14: ;
		}
		LA12: ;
	}
	goto LA1;
	LA4: ;
	{
		Ttype215828* LOC24;
		localerror_188080((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3164));
		LOC24 = 0;
		LOC24 = errortype_265901(c);
		addsonskipintlit_259678(result, LOC24);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semordinal_434323)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	result = neworprevtype_433274(((NU8) 15), prev, c);
	{
		NI LOC3;
		Ttype215828* base;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA8;
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = isordinaltype_241057(base);
				if (!!(LOC12)) goto LA13;
				localerror_188080((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 78), ((NimStringDesc*) &TMP3155));
			}
			LA13: ;
		}
		LA8: ;
		addsonskipintlit_259678(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_188080((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3165));
		result = neworprevtype_433274(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semvarargs_433680)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	result = neworprevtype_433274(((NU8) 48), prev, c);
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		Ttype215828* base;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_218351(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = sonslen_218351(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!LOC3) goto LA7;
		base = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_259678(result, base);
		{
			NI LOC11;
			Tident190012* LOC14;
			LOC11 = 0;
			LOC11 = sonslen_218351(n);
			if (!(LOC11 == ((NI) 3))) goto LA12;
			LOC14 = 0;
			LOC14 = considerquotedident_270004((*n).kindU.S6.sons->data[((NI) 2)]);
			asgnRefNoCycle((void**) (&(*result).n), newidentnode_217228(LOC14, (*(*n).kindU.S6.sons->data[((NI) 2)]).info));
		}
		LA12: ;
	}
	goto LA1;
	LA7: ;
	{
		Ttype215828* LOC16;
		localerror_188080((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3167));
		LOC16 = 0;
		LOC16 = errortype_265901(c);
		addsonskipintlit_259678(result, LOC16);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semgenericparamininvocation_438060)(Tcontext265020* c, Tnode215790* n) {
	Ttype215828* result;
	result = 0;
	result = semtypenode_426245(c, n, NIM_NIL);
	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(Ttype215828*, instgenericcontainer_429096)(Tcontext265020* c, Tlineinfo183337 info, Ttype215828* header, NIM_BOOL allowmetatypes) {
	Ttype215828* result;
	Trepltypevars284531 cl;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	initidtable_219033((&cl.symmap));
	initidtable_219033((&cl.typemap));
	initidtable_219033((&cl.localcache));
	cl.info = info;
	cl.c = c;
	cl.allowmetatypes = allowmetatypes;
	result = replacetypevarst_284566((&cl), header);
	return result;
}

N_NIMCALL(Ttype215828*, semgeneric_438065)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, Ttype215828* prev) {
	Ttype215828* result;
	Ttype215828* t;
{	result = 0;
	{
		TY185169 LOC5;
		NimStringDesc* LOC6;
		NimStringDesc* LOC7;
		if (!((*s).typ == NIM_NIL)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = copyString((*(*s).name).s);
		LOC6 = 0;
		LOC6 = copyStr(reprEnum((*s).kind, (&NTI215435)), ((NI) 2));
		LOC5[1] = nsuToLowerStr(LOC6);
		LOC7 = 0;
		LOC7 = nsuFormatOpenArray(((NimStringDesc*) &TMP3168), LOC5, 2);
		localerror_188085((*n).info, LOC7);
		result = neworprevtype_433274(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	LA3: ;
	t = (*s).typ;
	{
		NIM_BOOL LOC10;
		Ttype215828* LOC12;
		LOC10 = 0;
		LOC10 = ((*t).kind == ((NU8) 54));
		if (!(LOC10)) goto LA11;
		LOC12 = 0;
		LOC12 = base_241021(t);
		LOC10 = ((*LOC12).kind == ((NU8) 10));
		LA11: ;
		if (!LOC10) goto LA13;
		t = base_241021(t);
	}
	LA13: ;
	result = neworprevtype_433274(((NU8) 9), prev, c);
	addsonskipintlit_259678(result, t);
	{
		if (!((*t).kind == ((NU8) 30))) goto LA17;
		{
			NI i_438141;
			NI HEX3Atmp_438276;
			NI LOC20;
			NI res_438279;
			i_438141 = 0;
			HEX3Atmp_438276 = 0;
			LOC20 = 0;
			LOC20 = sonslen_218351(n);
			HEX3Atmp_438276 = (NI)(LOC20 - ((NI) 1));
			res_438279 = ((NI) 1);
			{
				while (1) {
					Ttype215828* elem;
					if (!(res_438279 <= HEX3Atmp_438276)) goto LA22;
					i_438141 = res_438279;
					elem = semgenericparamininvocation_438060(c, (*n).kindU.S6.sons->data[i_438141]);
					{
						if (!elem == 0) goto LA25;
						{
							NimStringDesc* LOC31;
							if (!NIM_TRUE) goto LA29;
							LOC31 = 0;
							LOC31 = HEX24_188183(TMP3169);
							internalerror_188113(LOC31);
						}
						LA29: ;
						rawaddson_219408(result, elem);
					}
					goto LA23;
					LA25: ;
					{
						addsonskipintlit_259678(result, elem);
					}
					LA23: ;
					res_438279 += ((NI) 1);
				} LA22: ;
			}
		}
		goto BeforeRet;
	}
	goto LA15;
	LA17: ;
	{
		if (!!(((*t).kind == ((NU8) 10)))) goto LA34;
		localerror_188080((*n).info, ((NU16) 160), (*(*s).name).s);
		result = neworprevtype_433274(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	goto LA15;
	LA34: ;
	{
		Tcandidate363206 m;
		Tnode215790* LOC37;
		NIM_BOOL isconcrete;
		memset((void*)(&m), 0, sizeof(m));
		chckNil((void*)(&m));
		memset((void*)(&m), 0, sizeof(m));
		newcandidate_363419(c, t, (&m));
		m.isnocall = NIM_TRUE;
		LOC37 = 0;
		LOC37 = copytree_219822(n);
		matches_369311(c, n, LOC37, (&m));
		{
			NIM_BOOL LOC40;
			NimStringDesc* err;
			NimStringDesc* LOC44;
			NimStringDesc* LOC45;
			NimStringDesc* LOC46;
			NimStringDesc* LOC47;
			LOC40 = 0;
			LOC40 = !((m.state == ((NU8) 1)));
			if (!(LOC40)) goto LA41;
			LOC40 = !(m.typedescmatched);
			LA41: ;
			if (!LOC40) goto LA42;
			LOC44 = 0;
			LOC45 = 0;
			LOC45 = typetostring_241017(t, ((NU8) 0));
			LOC46 = 0;
			LOC46 = describeargs_363731(c, n, ((NI) 1), ((NU8) 0));
			LOC47 = 0;
			LOC47 = describeargs_363731(c, (*t).n, ((NI) 0), ((NU8) 0));
			LOC44 = rawNewString(LOC45->Sup.len + LOC46->Sup.len + LOC47->Sup.len + 44);
appendString(LOC44, ((NimStringDesc*) &TMP3171));
appendString(LOC44, LOC45);
appendString(LOC44, ((NimStringDesc*) &TMP3172));
appendString(LOC44, LOC46);
appendString(LOC44, ((NimStringDesc*) &TMP3176));
appendString(LOC44, LOC47);
appendString(LOC44, ((NimStringDesc*) &TMP3177));
			err = LOC44;
			localerror_188080((*n).info, ((NU16) 4), err);
			result = neworprevtype_433274(((NU8) 50), prev, c);
			goto BeforeRet;
		}
		LA42: ;
		isconcrete = NIM_TRUE;
		{
			NI i_438200;
			NI HEX3Atmp_438284;
			NI LOC49;
			NI res_438287;
			i_438200 = 0;
			HEX3Atmp_438284 = 0;
			LOC49 = 0;
			LOC49 = len_216059(m.call);
			HEX3Atmp_438284 = (LOC49 - 1);
			res_438287 = ((NI) 1);
			{
				while (1) {
					Ttype215828* typ;
					Tnode215790* LOC52;
					if (!(res_438287 <= HEX3Atmp_438284)) goto LA51;
					i_438200 = res_438287;
					LOC52 = 0;
					LOC52 = HEX5BHEX5D_216238(m.call, i_438200);
					typ = (*LOC52).typ;
					{
						NIM_BOOL LOC55;
						LOC55 = 0;
						LOC55 = ((*typ).kind == ((NU8) 8));
						if (!(LOC55)) goto LA56;
						LOC55 = ((*(*typ).sons->data[((NI) 0)]).kind == ((NU8) 0));
						LA56: ;
						if (!LOC55) goto LA57;
						isconcrete = NIM_FALSE;
						{
							if (!typ == 0) goto LA61;
							{
								NimStringDesc* LOC67;
								if (!NIM_TRUE) goto LA65;
								LOC67 = 0;
								LOC67 = HEX24_188183(TMP3169);
								internalerror_188113(LOC67);
							}
							LA65: ;
							rawaddson_219408(result, typ);
						}
						goto LA59;
						LA61: ;
						{
							addsonskipintlit_259678(result, typ);
						}
						LA59: ;
					}
					goto LA53;
					LA57: ;
					{
						typ = skiptypes_219113(typ, 256);
						{
							NIM_BOOL LOC72;
							LOC72 = 0;
							LOC72 = containsgenerictype_249492(typ);
							if (!LOC72) goto LA73;
							isconcrete = NIM_FALSE;
						}
						LA73: ;
						{
							if (!typ == 0) goto LA77;
							{
								NimStringDesc* LOC83;
								if (!NIM_TRUE) goto LA81;
								LOC83 = 0;
								LOC83 = HEX24_188183(TMP3169);
								internalerror_188113(LOC83);
							}
							LA81: ;
							rawaddson_219408(result, typ);
						}
						goto LA75;
						LA77: ;
						{
							addsonskipintlit_259678(result, typ);
						}
						LA75: ;
					}
					LA53: ;
					res_438287 += ((NI) 1);
				} LA51: ;
			}
		}
		{
			if (!isconcrete) goto LA87;
			{
				NIM_BOOL LOC91;
				LOC91 = 0;
				LOC91 = ((*s).ast == NIM_NIL);
				if (!(LOC91)) goto LA92;
				LOC91 = !(((*(*s).typ).kind == ((NU8) 54)));
				LA92: ;
				if (!LOC91) goto LA93;
				localerror_188080((*n).info, ((NU16) 128), (*(*s).name).s);
				result = neworprevtype_433274(((NU8) 50), prev, c);
			}
			goto LA89;
			LA93: ;
			{
				result = instgenericcontainer_429096(c, (*n).info, result, NIM_FALSE);
			}
			LA89: ;
		}
		LA87: ;
	}
	LA15: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, symchoice_439732)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU8 r) {
	Tnode215790* result;
	Tsym215822* a;
	Toverloaditer270296 o;
	NI i;
	result = 0;
	a = 0;
	memset((void*)(&o), 0, sizeof(o));
	i = ((NI) 0);
	a = initoverloaditer_270890((&o), c, n);
	{
		while (1) {
			if (!!((a == NIM_NIL))) goto LA2;
			a = nextoverloaditer_271041((&o), c, n);
			i += ((NI) 1);
			{
				if (!(((NI) 1) < i)) goto LA5;
				goto LA1;
			}
			LA5: ;
		} LA2: ;
	} LA1: ;
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = (i <= ((NI) 1));
		if (!(LOC9)) goto LA10;
		LOC9 = !((r == ((NU8) 2)));
		LA10: ;
		if (!LOC9) goto LA11;
		result = newsymnode_217241(s, (*n).info);
		markused_363244((*n).info, s);
	}
	goto LA7;
	LA11: ;
	{
		NU8 kind;
		Ttype215828* LOC21;
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = (r == ((NU8) 0));
			if (LOC16) goto LA17;
			LOC16 = ((*n).kind == ((NU8) 45));
			LA17: ;
			if (!LOC16) goto LA18;
			kind = ((NU8) 56);
		}
		goto LA14;
		LA18: ;
		{
			kind = ((NU8) 57);
		}
		LA14: ;
		LOC21 = 0;
		LOC21 = newtypes_265185(((NU8) 0), c);
		result = newnodeit_217801(kind, (*n).info, LOC21);
		a = initoverloaditer_270890((&o), c, n);
		{
			while (1) {
				Tnode215790* LOC24;
				if (!!((a == NIM_NIL))) goto LA23;
				(*a).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				LOC24 = 0;
				LOC24 = newsymnode_217241(a, (*n).info);
				addson_217807(result, LOC24);
				a = nextoverloaditer_271041((&o), c, n);
			} LA23: ;
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode215790*, semtemplateexpr_426999)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags) {
	Tnode215790* result;
	Tsym215822* LOC1;
	result = 0;
	markused_363244((*n).info, s);
	pushinfocontext_184209((*n).info);
	LOC1 = 0;
	LOC1 = getcurrowner_265210();
	result = evaltemplate_401329(n, s, LOC1);
	{
		if (!!(((flags &(1U<<((NU)(((NU8) 9))&15U)))!=0))) goto LA4;
		result = semaftermacrocall_432992(c, result, s, flags);
	}
	LA4: ;
	popinfocontext_184222();
	return result;
}

N_NIMCALL(Tnode215790*, semgenericstmtsymbol_444460)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, Genericctx444427* ctx) {
	Tnode215790* result;
	result = 0;
	(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	switch ((*s).kind) {
	case ((NU8) 0):
	{
		result = n;
	}
	break;
	case ((NU8) 12):
	case ((NU8) 13):
	case ((NU8) 14):
	case ((NU8) 15):
	case ((NU8) 6):
	{
		result = symchoice_439732(c, n, s, ((NU8) 1));
	}
	break;
	case ((NU8) 17):
	{
		{
			NIM_BOOL LOC6;
			NIM_BOOL LOC8;
			NI LOC9;
			LOC6 = 0;
			LOC6 = ((196608 &(1U<<((NU)((*s).kind)&31U)))!=0);
			if (!(LOC6)) goto LA7;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = len_218339((*s).typ);
			LOC8 = (LOC9 == ((NI) 1));
			if (LOC8) goto LA10;
			LOC8 = (((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
			LA10: ;
			LOC6 = LOC8;
			LA7: ;
			if (!LOC6) goto LA11;
			result = semtemplateexpr_426999(c, n, s, 512);
			result = semgenericstmt_444438(c, result, 0, ctx);
		}
		goto LA4;
		LA11: ;
		{
			result = symchoice_439732(c, n, s, ((NU8) 1));
		}
		LA4: ;
	}
	break;
	case ((NU8) 16):
	{
		{
			NIM_BOOL LOC17;
			NIM_BOOL LOC19;
			NI LOC20;
			LOC17 = 0;
			LOC17 = ((196608 &(1U<<((NU)((*s).kind)&31U)))!=0);
			if (!(LOC17)) goto LA18;
			LOC19 = 0;
			LOC20 = 0;
			LOC20 = len_218339((*s).typ);
			LOC19 = (LOC20 == ((NI) 1));
			if (LOC19) goto LA21;
			LOC19 = (((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
			LA21: ;
			LOC17 = LOC19;
			LA18: ;
			if (!LOC17) goto LA22;
			result = semmacroexpr_427007(c, n, n, s, 512);
			result = semgenericstmt_444438(c, result, 0, ctx);
		}
		goto LA15;
		LA22: ;
		{
			result = symchoice_439732(c, n, s, ((NU8) 1));
		}
		LA15: ;
	}
	break;
	case ((NU8) 4):
	{
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = !(((*s).typ == NIM_NIL));
			if (!(LOC28)) goto LA29;
			LOC28 = ((*(*s).typ).kind == ((NU8) 59));
			LA29: ;
			if (!LOC28) goto LA30;
			{
				if (!!(((*(*s).typ).n == NIM_NIL))) goto LA34;
				result = (*(*s).typ).n;
			}
			goto LA32;
			LA34: ;
			{
				result = n;
			}
			LA32: ;
		}
		goto LA26;
		LA30: ;
		{
			result = newsymnodetypedesc_277496(s, (*n).info);
		}
		LA26: ;
	}
	break;
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	case ((NU8) 7):
	{
		{
			NIM_BOOL LOC42;
			LOC42 = 0;
			LOC42 = !(((*s).typ == NIM_NIL));
			if (!(LOC42)) goto LA43;
			LOC42 = (((*(*s).typ).flags & 25165824) == 0);
			LA43: ;
			if (!LOC42) goto LA44;
			result = newsymnodetypedesc_277496(s, (*n).info);
		}
		goto LA40;
		LA44: ;
		{
			result = n;
		}
		LA40: ;
	}
	break;
	default:
	{
		result = newsymnode_217241(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode215790*, lookup_445801)(Tcontext265020* c, Tnode215790* n, NU8 flags, Genericctx444427* ctx) {
	Tnode215790* result;
	Tident190012* ident;
	Tsym215822* s;
	Tsym215822* LOC1;
	result = 0;
	result = n;
	ident = considerquotedident_270004(n);
	LOC1 = 0;
	LOC1 = searchinscopes_270131(c, ident);
	s = skipalias_270088(LOC1, n);
	{
		if (!(s == NIM_NIL)) goto LA4;
		{
			NIM_BOOL LOC8;
			NIM_BOOL LOC9;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = contains_212811((*ctx).tomixin, (*ident).Sup.id);
			LOC8 = !(LOC9);
			if (!(LOC8)) goto LA10;
			LOC8 = !(((flags &(1U<<((NU)(((NU8) 2))&7U)))!=0));
			LA10: ;
			if (!LOC8) goto LA11;
			localerror_188080((*n).info, ((NU16) 63), (*ident).s);
		}
		LA11: ;
	}
	goto LA2;
	LA4: ;
	{
		{
			if (!((flags &(1U<<((NU)(((NU8) 0))&7U)))!=0)) goto LA16;
			result = symchoice_439732(c, n, s, ((NU8) 0));
		}
		goto LA14;
		LA16: ;
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = contains_212811((*ctx).tomixin, (*(*s).name).Sup.id);
			if (!LOC19) goto LA20;
			result = symchoice_439732(c, n, s, ((NU8) 2));
		}
		goto LA14;
		LA20: ;
		{
			result = semgenericstmtsymbol_444460(c, n, s, ctx);
		}
		LA14: ;
	}
	LA2: ;
	return result;
}

N_NIMCALL(Tnode215790*, newdot_445845)(Tnode215790* n, Tnode215790* b) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217248(((NU8) 45), (*n).info);
	add_216114(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	add_216114(result, b);
	return result;
}

N_NIMCALL(Tnode215790*, fuzzylookup_445853)(Tcontext265020* c, Tnode215790* n_445856, NU8 flags, Genericctx444427* ctx, NIM_BOOL* ismacro) {
	Tnode215790* result;
	NU8 luf;
	Tsym215822* s_446215;
	result = 0;
	{
		if (!!(((flags &(1U<<((NU)(((NU8) 2))&7U)))!=0))) goto LA3;
		luf = 2;
	}
	goto LA1;
	LA3: ;
	{
		luf = 0;
	}
	LA1: ;
	s_446215 = qualifiedlookup_270652(c, n_445856, luf);
	{
		if (!!((s_446215 == NIM_NIL))) goto LA8;
		result = semgenericstmtsymbol_444460(c, n_445856, s_446215, ctx);
	}
	goto LA6;
	LA8: ;
	{
		Tnode215790* n;
		Tident190012* ident;
		Tsym215822* s;
		Tsym215822* LOC11;
		asgnRefNoCycle((void**) (&(*n_445856).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_444438(c, (*n_445856).kindU.S6.sons->data[((NI) 0)], flags, ctx));
		result = n_445856;
		n = HEX5BHEX5D_216238(n_445856, ((NI) 1));
		ident = considerquotedident_270004(n);
		LOC11 = 0;
		LOC11 = searchinscopes_270131(c, ident);
		s = skipalias_270088(LOC11, n);
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = !((s == NIM_NIL));
			if (!(LOC14)) goto LA15;
			LOC14 = ((258048 &(1U<<((NU)((*s).kind)&31U)))!=0);
			LA15: ;
			if (!LOC14) goto LA16;
			(*ismacro) = ((196608 &(1U<<((NU)((*s).kind)&31U)))!=0);
			{
				Tnode215790* LOC22;
				if (!((flags &(1U<<((NU)(((NU8) 0))&7U)))!=0)) goto LA20;
				LOC22 = 0;
				LOC22 = symchoice_439732(c, n, s, ((NU8) 0));
				result = newdot_445845(result, LOC22);
			}
			goto LA18;
			LA20: ;
			{
				NIM_BOOL LOC24;
				Tnode215790* LOC27;
				LOC24 = 0;
				LOC24 = contains_212811((*ctx).tomixin, (*(*s).name).Sup.id);
				if (!LOC24) goto LA25;
				LOC27 = 0;
				LOC27 = symchoice_439732(c, n, s, ((NU8) 2));
				result = newdot_445845(result, LOC27);
			}
			goto LA18;
			LA25: ;
			{
				Tnode215790* syms;
				syms = semgenericstmtsymbol_444460(c, n, s, ctx);
				{
					Tnode215790* choice;
					if (!((*syms).kind == ((NU8) 3))) goto LA31;
					choice = symchoice_439732(c, n, s, ((NU8) 2));
					(*choice).kind = ((NU8) 56);
					result = newdot_445845(result, choice);
				}
				goto LA29;
				LA31: ;
				{
					result = newdot_445845(result, syms);
				}
				LA29: ;
			}
			LA18: ;
		}
		LA16: ;
	}
	LA6: ;
	return result;
}

N_NIMCALL(Tnode215790*, semmixinstmt_439897)(Tcontext265020* c, Tnode215790* n, Intset212035* tomixin) {
	Tnode215790* result;
	result = 0;
	{
		NI i_439922;
		NI HEX3Atmp_439925;
		NI LOC2;
		NI res_439928;
		i_439922 = 0;
		HEX3Atmp_439925 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_439925 = (LOC2 - 1);
		res_439928 = ((NI) 0);
		{
			while (1) {
				Tident190012* LOC5;
				if (!(res_439928 <= HEX3Atmp_439925)) goto LA4;
				i_439922 = res_439928;
				LOC5 = 0;
				LOC5 = considerquotedident_270004((*n).kindU.S6.sons->data[i_439922]);
				incl_212832(tomixin, (*LOC5).Sup.id);
				res_439928 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_217248(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode215790*, semgenericstmtscope_444445)(Tcontext265020* c, Tnode215790* n, NU8 flags, Genericctx444427* ctx) {
	Tnode215790* result;
	Tscope215816* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	result = semgenericstmt_444438(c, n, flags, ctx);
	closescope_270068(c);
	return result;
}

N_NIMCALL(Tsym215822*, newsyms_426889)(NU8 kind, Tnode215790* n, Tcontext265020* c) {
	Tsym215822* result;
	Tident190012* LOC1;
	Tsym215822* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_270004(n);
	LOC2 = 0;
	LOC2 = getcurrowner_265210();
	result = newsym_216684(kind, LOC1, LOC2, (*n).info);
	return result;
}

N_NIMCALL(Tnode215790*, getidentnode_444420)(Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 31):
	{
		result = getidentnode_444420((*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 43):
	{
		result = getidentnode_444420((*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illformedast_265950(n);
		result = n;
	}
	break;
	}
	return result;
}

N_NIMCALL(void, addtempdecl_446289)(Tcontext265020* c, Tnode215790* n, NU8 kind) {
	Tsym215822* s;
	Tnode215790* LOC1;
	LOC1 = 0;
	LOC1 = getidentnode_444420(n);
	s = newsyms_426889(((NU8) 0), LOC1, c);
	addprelimdecl_270451(c, s);
}

N_NIMCALL(Tnode215790*, semgenericstmt_444438)(Tcontext265020* c, Tnode215790* n, NU8 flags_444442, Genericctx444427* ctx) {
	Tnode215790* result;
	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		result = lookup_445801(c, n, flags_444442, ctx);
	}
	break;
	case ((NU8) 45):
	{
		NIM_BOOL dummy;
		dummy = 0;
		result = fuzzylookup_445853(c, n, flags_444442, ctx, (&dummy));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 55):
	{
		result = semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_444442 | 1), ctx);
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_439897(c, n, (&(*ctx).tomixin));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		Tnode215790* fn;
		Tsym215822* s;
		NI first;
		NIM_BOOL mixincontext;
		NU8 flags;
		checkminsonslen_265962(n, ((NI) 1));
		fn = (*n).kindU.S6.sons->data[((NI) 0)];
		s = qualifiedlookup_270652(c, fn, 0);
		{
			NIM_BOOL LOC9;
			NIM_BOOL LOC10;
			NIM_BOOL LOC11;
			Tident190012* LOC15;
			NIM_BOOL LOC16;
			NimStringDesc* LOC19;
			LOC9 = 0;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = (s == NIM_NIL);
			if (!(LOC11)) goto LA12;
			LOC11 = !(((flags_444442 &(1U<<((NU)(((NU8) 2))&7U)))!=0));
			LA12: ;
			LOC10 = LOC11;
			if (!(LOC10)) goto LA13;
			LOC10 = ((*fn).kind == ((NU8) 2) || (*fn).kind == ((NU8) 53));
			LA13: ;
			LOC9 = LOC10;
			if (!(LOC9)) goto LA14;
			LOC15 = 0;
			LOC15 = considerquotedident_270004(fn);
			LOC16 = 0;
			LOC16 = contains_212811((*ctx).tomixin, (*LOC15).Sup.id);
			LOC9 = !(LOC16);
			LA14: ;
			if (!LOC9) goto LA17;
			LOC19 = 0;
			LOC19 = rendertree_234044(fn, 0);
			localerror_188080((*n).info, ((NU16) 63), LOC19);
		}
		LA17: ;
		first = ((NI) 0);
		mixincontext = NIM_FALSE;
		{
			NU8 scoption;
			if (!!((s == NIM_NIL))) goto LA22;
			(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
			mixincontext = ((*s).magic == ((NU8) 1) || (*s).magic == ((NU8) 2) || (*s).magic == ((NU8) 3));
			{
				NIM_BOOL LOC26;
				LOC26 = 0;
				LOC26 = contains_212811((*ctx).tomixin, (*(*s).name).Sup.id);
				if (!LOC26) goto LA27;
				scoption = ((NU8) 2);
			}
			goto LA24;
			LA27: ;
			{
				scoption = ((NU8) 1);
			}
			LA24: ;
			switch ((*s).kind) {
			case ((NU8) 16):
			{
				{
					NIM_BOOL LOC33;
					NIM_BOOL LOC35;
					NI LOC36;
					LOC33 = 0;
					LOC33 = ((196608 &(1U<<((NU)((*s).kind)&31U)))!=0);
					if (!(LOC33)) goto LA34;
					LOC35 = 0;
					LOC36 = 0;
					LOC36 = len_218339((*s).typ);
					LOC35 = (LOC36 == ((NI) 1));
					if (LOC35) goto LA37;
					LOC35 = (((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
					LA37: ;
					LOC33 = LOC35;
					LA34: ;
					if (!LOC33) goto LA38;
					result = semmacroexpr_427007(c, n, n, s, 512);
					result = semgenericstmt_444438(c, result, 0, ctx);
				}
				goto LA31;
				LA38: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_439732(c, fn, s, scoption));
					result = n;
				}
				LA31: ;
				mixincontext = NIM_TRUE;
			}
			break;
			case ((NU8) 17):
			{
				{
					NIM_BOOL LOC44;
					NIM_BOOL LOC46;
					NI LOC47;
					LOC44 = 0;
					LOC44 = ((196608 &(1U<<((NU)((*s).kind)&31U)))!=0);
					if (!(LOC44)) goto LA45;
					LOC46 = 0;
					LOC47 = 0;
					LOC47 = len_218339((*s).typ);
					LOC46 = (LOC47 == ((NI) 1));
					if (LOC46) goto LA48;
					LOC46 = (((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
					LA48: ;
					LOC44 = LOC46;
					LA45: ;
					if (!LOC44) goto LA49;
					result = semtemplateexpr_426999(c, n, s, 512);
					result = semgenericstmt_444438(c, result, 0, ctx);
				}
				goto LA42;
				LA49: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_439732(c, fn, s, scoption));
					result = n;
				}
				LA42: ;
				mixincontext = NIM_TRUE;
			}
			break;
			case ((NU8) 0):
			case ((NU8) 3):
			{
			}
			break;
			case ((NU8) 12):
			case ((NU8) 13):
			case ((NU8) 14):
			case ((NU8) 15):
			case ((NU8) 6):
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), symchoice_439732(c, fn, s, scoption));
				{
					NIM_BOOL LOC56;
					NIM_BOOL LOC57;
					NI LOC59;
					LOC56 = 0;
					LOC57 = 0;
					LOC57 = !(((*ctx).bracketexpr == NIM_NIL));
					if (!(LOC57)) goto LA58;
					LOC59 = 0;
					LOC59 = len_216059(n);
					LOC57 = (LOC59 == ((NI) 2));
					LA58: ;
					LOC56 = LOC57;
					if (!(LOC56)) goto LA60;
					LOC56 = eqStrings((*(*s).name).s, ((NimStringDesc*) &TMP3178));
					LA60: ;
					if (!LOC56) goto LA61;
					add_216114(result, (*ctx).bracketexpr);
				}
				LA61: ;
				first = ((NI) 1);
			}
			break;
			case ((NU8) 4):
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnodetypedesc_277496(s, (*fn).info));
				first = ((NI) 1);
			}
			break;
			case ((NU8) 7):
			{
				{
					NIM_BOOL LOC67;
					LOC67 = 0;
					LOC67 = !(((*s).typ == NIM_NIL));
					if (!(LOC67)) goto LA68;
					LOC67 = !(((*(*s).typ).kind == ((NU8) 12)));
					LA68: ;
					if (!LOC67) goto LA69;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnodetypedesc_277496(s, (*fn).info));
					first = ((NI) 1);
				}
				LA69: ;
			}
			break;
			default:
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(s, (*fn).info));
				first = ((NI) 1);
			}
			break;
			}
		}
		goto LA20;
		LA22: ;
		{
			if (!((*fn).kind == ((NU8) 45))) goto LA73;
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), fuzzylookup_445853(c, fn, flags_444442, ctx, (&mixincontext)));
			first = ((NI) 1);
		}
		goto LA20;
		LA73: ;
		LA20: ;
		{
			if (!mixincontext) goto LA77;
			flags = (flags_444442 | 4);
		}
		goto LA75;
		LA77: ;
		{
			flags = flags_444442;
		}
		LA75: ;
		{
			NI i_447637;
			NI HEX3Atmp_448423;
			NI LOC81;
			NI res_448426;
			i_447637 = 0;
			HEX3Atmp_448423 = 0;
			LOC81 = 0;
			LOC81 = sonslen_218351(result);
			HEX3Atmp_448423 = (NI)(LOC81 - ((NI) 1));
			res_448426 = first;
			{
				while (1) {
					if (!(res_448426 <= HEX3Atmp_448423)) goto LA83;
					i_447637 = res_448426;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_447637]), semgenericstmt_444438(c, (*result).kindU.S6.sons->data[i_447637], flags, ctx));
					res_448426 += ((NI) 1);
				} LA83: ;
			}
		}
	}
	break;
	case ((NU8) 40):
	{
		Tident190012* LOC85;
		Tnode215790* LOC86;
		result = newnodei_217248(((NU8) 27), (*n).info);
		LOC85 = 0;
		LOC85 = getident_190441(((NimStringDesc*) &TMP3179));
		LOC86 = 0;
		LOC86 = newidentnode_217228(LOC85, (*n).info);
		add_216114(result, LOC86);
		{
			NI i_447667;
			Slice88082 HEX3Atmp_448431;
			NI LOC88;
			i_447667 = 0;
			memset((void*)(&HEX3Atmp_448431), 0, sizeof(HEX3Atmp_448431));
			LOC88 = 0;
			LOC88 = len_216059(n);
			HEX3Atmp_448431 = HEX2EHEX2E_102424(((NI) 0), (LOC88 - 1));
			{
				NI x_448435;
				NI HEX3Atmp_448437;
				NI HEX3Atmp_448439;
				NI res_448441;
				x_448435 = 0;
				HEX3Atmp_448437 = 0;
				HEX3Atmp_448439 = 0;
				HEX3Atmp_448437 = HEX3Atmp_448431.a;
				HEX3Atmp_448439 = HEX3Atmp_448431.b;
				res_448441 = HEX3Atmp_448437;
				{
					while (1) {
						Tnode215790* LOC92;
						if (!(res_448441 <= HEX3Atmp_448439)) goto LA91;
						x_448435 = res_448441;
						i_447667 = x_448435;
						LOC92 = 0;
						LOC92 = HEX5BHEX5D_216238(n, i_447667);
						add_216114(result, LOC92);
						res_448441 += ((NI) 1);
					} LA91: ;
				}
			}
		}
		result = semgenericstmt_444438(c, result, flags_444442, ctx);
	}
	break;
	case ((NU8) 42):
	{
		Tident190012* LOC94;
		Tnode215790* LOC95;
		Tnode215790* old_447699;
		result = newnodei_217248(((NU8) 27), (*n).info);
		LOC94 = 0;
		LOC94 = getident_190441(((NimStringDesc*) &TMP3157));
		LOC95 = 0;
		LOC95 = newidentnode_217228(LOC94, (*n).info);
		add_216114(result, LOC95);
		{
			NI i_447696;
			Slice88082 HEX3Atmp_448446;
			NI LOC97;
			i_447696 = 0;
			memset((void*)(&HEX3Atmp_448446), 0, sizeof(HEX3Atmp_448446));
			LOC97 = 0;
			LOC97 = len_216059(n);
			HEX3Atmp_448446 = HEX2EHEX2E_102424(((NI) 0), (LOC97 - 1));
			{
				NI x_448450;
				NI HEX3Atmp_448452;
				NI HEX3Atmp_448454;
				NI res_448456;
				x_448450 = 0;
				HEX3Atmp_448452 = 0;
				HEX3Atmp_448454 = 0;
				HEX3Atmp_448452 = HEX3Atmp_448446.a;
				HEX3Atmp_448454 = HEX3Atmp_448446.b;
				res_448456 = HEX3Atmp_448452;
				{
					while (1) {
						Tnode215790* LOC101;
						if (!(res_448456 <= HEX3Atmp_448454)) goto LA100;
						x_448450 = res_448456;
						i_447696 = x_448450;
						LOC101 = 0;
						LOC101 = HEX5BHEX5D_216238(n, i_447696);
						add_216114(result, LOC101);
						res_448456 += ((NI) 1);
					} LA100: ;
				}
			}
		}
		old_447699 = (*ctx).bracketexpr;
		unsureAsgnRef((void**) (&(*ctx).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		result = semgenericstmt_444438(c, result, flags_444442, ctx);
		unsureAsgnRef((void**) (&(*ctx).bracketexpr), old_447699);
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		Tnode215790* a;
		Tnode215790* b;
		NU8 k;
		checksonslen_265958(n, ((NI) 2));
		a = (*n).kindU.S6.sons->data[((NI) 0)];
		b = (*n).kindU.S6.sons->data[((NI) 1)];
		k = (*a).kind;
		switch (k) {
		case ((NU8) 40):
		{
			Tident190012* LOC104;
			Tnode215790* LOC105;
			result = newnodei_217248(((NU8) 27), (*n).info);
			LOC104 = 0;
			LOC104 = getident_190441(((NimStringDesc*) &TMP3180));
			LOC105 = 0;
			LOC105 = newidentnode_217228(LOC104, (*n).info);
			add_216114(result, LOC105);
			{
				NI i_447733;
				Slice88082 HEX3Atmp_448461;
				NI LOC107;
				i_447733 = 0;
				memset((void*)(&HEX3Atmp_448461), 0, sizeof(HEX3Atmp_448461));
				LOC107 = 0;
				LOC107 = len_216059(a);
				HEX3Atmp_448461 = HEX2EHEX2E_102424(((NI) 0), (LOC107 - 1));
				{
					NI x_448465;
					NI HEX3Atmp_448467;
					NI HEX3Atmp_448469;
					NI res_448471;
					x_448465 = 0;
					HEX3Atmp_448467 = 0;
					HEX3Atmp_448469 = 0;
					HEX3Atmp_448467 = HEX3Atmp_448461.a;
					HEX3Atmp_448469 = HEX3Atmp_448461.b;
					res_448471 = HEX3Atmp_448467;
					{
						while (1) {
							Tnode215790* LOC111;
							if (!(res_448471 <= HEX3Atmp_448469)) goto LA110;
							x_448465 = res_448471;
							i_447733 = x_448465;
							LOC111 = 0;
							LOC111 = HEX5BHEX5D_216238(a, i_447733);
							add_216114(result, LOC111);
							res_448471 += ((NI) 1);
						} LA110: ;
					}
				}
			}
			add_216114(result, b);
			result = semgenericstmt_444438(c, result, flags_444442, ctx);
		}
		break;
		case ((NU8) 42):
		{
			Tident190012* LOC113;
			Tnode215790* LOC114;
			Tnode215790* old_447767;
			result = newnodei_217248(((NU8) 27), (*n).info);
			LOC113 = 0;
			LOC113 = getident_190441(((NimStringDesc*) &TMP3181));
			LOC114 = 0;
			LOC114 = newidentnode_217228(LOC113, (*n).info);
			add_216114(result, LOC114);
			{
				NI i_447763;
				Slice88082 HEX3Atmp_448476;
				NI LOC116;
				i_447763 = 0;
				memset((void*)(&HEX3Atmp_448476), 0, sizeof(HEX3Atmp_448476));
				LOC116 = 0;
				LOC116 = len_216059(a);
				HEX3Atmp_448476 = HEX2EHEX2E_102424(((NI) 0), (LOC116 - 1));
				{
					NI x_448480;
					NI HEX3Atmp_448482;
					NI HEX3Atmp_448484;
					NI res_448486;
					x_448480 = 0;
					HEX3Atmp_448482 = 0;
					HEX3Atmp_448484 = 0;
					HEX3Atmp_448482 = HEX3Atmp_448476.a;
					HEX3Atmp_448484 = HEX3Atmp_448476.b;
					res_448486 = HEX3Atmp_448482;
					{
						while (1) {
							Tnode215790* LOC120;
							if (!(res_448486 <= HEX3Atmp_448484)) goto LA119;
							x_448480 = res_448486;
							i_447763 = x_448480;
							LOC120 = 0;
							LOC120 = HEX5BHEX5D_216238(a, i_447763);
							add_216114(result, LOC120);
							res_448486 += ((NI) 1);
						} LA119: ;
					}
				}
			}
			add_216114(result, b);
			old_447767 = (*ctx).bracketexpr;
			unsureAsgnRef((void**) (&(*ctx).bracketexpr), (*a).kindU.S6.sons->data[((NI) 0)]);
			result = semgenericstmt_444438(c, result, flags_444442, ctx);
			unsureAsgnRef((void**) (&(*ctx).bracketexpr), old_447767);
		}
		break;
		default:
		{
			{
				NI i_447780;
				NI HEX3Atmp_448491;
				NI LOC123;
				NI res_448494;
				i_447780 = 0;
				HEX3Atmp_448491 = 0;
				LOC123 = 0;
				LOC123 = sonslen_218351(n);
				HEX3Atmp_448491 = (NI)(LOC123 - ((NI) 1));
				res_448494 = ((NI) 0);
				{
					while (1) {
						if (!(res_448494 <= HEX3Atmp_448491)) goto LA125;
						i_447780 = res_448494;
						asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_447780]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[i_447780], flags_444442, ctx));
						res_448494 += ((NI) 1);
					} LA125: ;
				}
			}
		}
		break;
		}
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_447794;
			NI HEX3Atmp_448499;
			NI LOC128;
			NI res_448502;
			i_447794 = 0;
			HEX3Atmp_448499 = 0;
			LOC128 = 0;
			LOC128 = sonslen_218351(n);
			HEX3Atmp_448499 = (NI)(LOC128 - ((NI) 1));
			res_448502 = ((NI) 0);
			{
				while (1) {
					if (!(res_448502 <= HEX3Atmp_448499)) goto LA130;
					i_447794 = res_448502;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_447794]), semgenericstmtscope_444445(c, (*n).kindU.S6.sons->data[i_447794], flags_444442, ctx));
					res_448502 += ((NI) 1);
				} LA130: ;
			}
		}
	}
	break;
	case ((NU8) 93):
	{
		{
			NI i_447808;
			NI HEX3Atmp_448507;
			NI LOC133;
			NI res_448510;
			i_447808 = 0;
			HEX3Atmp_448507 = 0;
			LOC133 = 0;
			LOC133 = sonslen_218351(n);
			HEX3Atmp_448507 = (NI)(LOC133 - ((NI) 1));
			res_448510 = ((NI) 0);
			{
				while (1) {
					if (!(res_448510 <= HEX3Atmp_448507)) goto LA135;
					i_447808 = res_448510;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_447808]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[i_447808], (flags_444442 | 4), ctx));
					res_448510 += ((NI) 1);
				} LA135: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		Tscope215816* LOC137;
		LOC137 = 0;
		LOC137 = openscope_270060(c);
		{
			NI i_447835;
			NI HEX3Atmp_448515;
			NI LOC139;
			NI res_448518;
			i_447835 = 0;
			HEX3Atmp_448515 = 0;
			LOC139 = 0;
			LOC139 = sonslen_218351(n);
			HEX3Atmp_448515 = (NI)(LOC139 - ((NI) 1));
			res_448518 = ((NI) 0);
			{
				while (1) {
					if (!(res_448518 <= HEX3Atmp_448515)) goto LA141;
					i_447835 = res_448518;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_447835]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[i_447835], flags_444442, ctx));
					res_448518 += ((NI) 1);
				} LA141: ;
			}
		}
		closescope_270068(c);
	}
	break;
	case ((NU8) 97):
	{
		Tscope215816* LOC143;
		LOC143 = 0;
		LOC143 = openscope_270060(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_444442, ctx));
		{
			NI i_447851;
			NI HEX3Atmp_448531;
			NI LOC145;
			NI res_448534;
			i_447851 = 0;
			HEX3Atmp_448531 = 0;
			LOC145 = 0;
			LOC145 = sonslen_218351(n);
			HEX3Atmp_448531 = (NI)(LOC145 - ((NI) 1));
			res_448534 = ((NI) 1);
			{
				while (1) {
					Tnode215790* a;
					NI L;
					if (!(res_448534 <= HEX3Atmp_448531)) goto LA147;
					i_447851 = res_448534;
					a = (*n).kindU.S6.sons->data[i_447851];
					checkminsonslen_265962(a, ((NI) 1));
					L = sonslen_218351(a);
					{
						NI j_447866;
						NI HEX3Atmp_448524;
						NI res_448527;
						j_447866 = 0;
						HEX3Atmp_448524 = 0;
						HEX3Atmp_448524 = (NI)(L - ((NI) 2));
						res_448527 = ((NI) 0);
						{
							while (1) {
								if (!(res_448527 <= HEX3Atmp_448524)) goto LA150;
								j_447866 = res_448527;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_447866]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[j_447866], flags_444442, ctx));
								res_448527 += ((NI) 1);
							} LA150: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_444445(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_444442, ctx));
					res_448534 += ((NI) 1);
				} LA147: ;
			}
		}
		closescope_270068(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		Tscope215816* LOC152;
		L = sonslen_218351(n);
		LOC152 = 0;
		LOC152 = openscope_270060(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))], flags_444442, ctx));
		{
			NI i_447885;
			NI HEX3Atmp_448539;
			NI res_448542;
			i_447885 = 0;
			HEX3Atmp_448539 = 0;
			HEX3Atmp_448539 = (NI)(L - ((NI) 3));
			res_448542 = ((NI) 0);
			{
				while (1) {
					if (!(res_448542 <= HEX3Atmp_448539)) goto LA155;
					i_447885 = res_448542;
					addtempdecl_446289(c, (*n).kindU.S6.sons->data[i_447885], ((NU8) 20));
					res_448542 += ((NI) 1);
				} LA155: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_444442, ctx));
		closescope_270068(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		Tscope215816* LOC157;
		checksonslen_265958(n, ((NI) 2));
		LOC157 = 0;
		LOC157 = openscope_270060(c);
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA160;
			addtempdecl_446289(c, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 21));
		}
		LA160: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_444442, ctx));
		closescope_270068(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_265962(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmtscope_444445(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_444442, ctx));
		{
			NI i_447915;
			NI HEX3Atmp_448555;
			NI LOC164;
			NI res_448558;
			i_447915 = 0;
			HEX3Atmp_448555 = 0;
			LOC164 = 0;
			LOC164 = sonslen_218351(n);
			HEX3Atmp_448555 = (NI)(LOC164 - ((NI) 1));
			res_448558 = ((NI) 1);
			{
				while (1) {
					Tnode215790* a;
					NI L;
					if (!(res_448558 <= HEX3Atmp_448555)) goto LA166;
					i_447915 = res_448558;
					a = (*n).kindU.S6.sons->data[i_447915];
					checkminsonslen_265962(a, ((NI) 1));
					L = sonslen_218351(a);
					{
						NI j_447930;
						NI HEX3Atmp_448548;
						NI res_448551;
						j_447930 = 0;
						HEX3Atmp_448548 = 0;
						HEX3Atmp_448548 = (NI)(L - ((NI) 2));
						res_448551 = ((NI) 0);
						{
							while (1) {
								if (!(res_448551 <= HEX3Atmp_448548)) goto LA169;
								j_447930 = res_448551;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_447930]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[j_447930], (flags_444442 | 2), ctx));
								res_448551 += ((NI) 1);
							} LA169: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_444445(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_444442, ctx));
					res_448558 += ((NI) 1);
				} LA166: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		{
			NI i_447959;
			NI HEX3Atmp_448572;
			NI LOC172;
			NI res_448575;
			i_447959 = 0;
			HEX3Atmp_448572 = 0;
			LOC172 = 0;
			LOC172 = sonslen_218351(n);
			HEX3Atmp_448572 = (NI)(LOC172 - ((NI) 1));
			res_448575 = ((NI) 0);
			{
				while (1) {
					if (!(res_448575 <= HEX3Atmp_448572)) goto LA174;
					i_447959 = res_448575;
					{
						Tnode215790* a;
						NI L;
						a = (*n).kindU.S6.sons->data[i_447959];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA178;
							goto LA175;
						}
						LA178: ;
						{
							NIM_BOOL LOC182;
							LOC182 = 0;
							LOC182 = !(((*a).kind == ((NU8) 35)));
							if (!(LOC182)) goto LA183;
							LOC182 = !(((*a).kind == ((NU8) 36)));
							LA183: ;
							if (!LOC182) goto LA184;
							illformedast_265950(a);
						}
						LA184: ;
						checkminsonslen_265962(a, ((NI) 3));
						L = sonslen_218351(a);
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_444442 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_444442, ctx));
						{
							NI j_448018;
							NI HEX3Atmp_448565;
							NI res_448568;
							j_448018 = 0;
							HEX3Atmp_448565 = 0;
							HEX3Atmp_448565 = (NI)(L - ((NI) 3));
							res_448568 = ((NI) 0);
							{
								while (1) {
									Tnode215790* LOC189;
									if (!(res_448568 <= HEX3Atmp_448565)) goto LA188;
									j_448018 = res_448568;
									LOC189 = 0;
									LOC189 = getidentnode_444420((*a).kindU.S6.sons->data[j_448018]);
									addtempdecl_446289(c, LOC189, ((NU8) 8));
									res_448568 += ((NI) 1);
								} LA188: ;
							}
						}
					} LA175: ;
					res_448575 += ((NI) 1);
				} LA174: ;
			}
		}
	}
	break;
	case ((NU8) 75):
	{
		{
			NI i_448031;
			NI HEX3Atmp_448588;
			NI LOC192;
			NI res_448591;
			i_448031 = 0;
			HEX3Atmp_448588 = 0;
			LOC192 = 0;
			LOC192 = sonslen_218351(n);
			HEX3Atmp_448588 = (NI)(LOC192 - ((NI) 1));
			res_448591 = ((NI) 0);
			{
				while (1) {
					Tnode215790* a;
					NI L;
					if (!(res_448591 <= HEX3Atmp_448588)) goto LA194;
					i_448031 = res_448591;
					a = (*n).kindU.S6.sons->data[i_448031];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA197;
						illformedast_265950(a);
					}
					LA197: ;
					checkminsonslen_265962(a, ((NI) 3));
					L = sonslen_218351(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_444442 | 2), ctx));
					{
						NI j_448070;
						NI HEX3Atmp_448581;
						NI res_448584;
						j_448070 = 0;
						HEX3Atmp_448581 = 0;
						HEX3Atmp_448581 = (NI)(L - ((NI) 3));
						res_448584 = ((NI) 0);
						{
							while (1) {
								Tnode215790* LOC202;
								if (!(res_448584 <= HEX3Atmp_448581)) goto LA201;
								j_448070 = res_448584;
								LOC202 = 0;
								LOC202 = getidentnode_444420((*a).kindU.S6.sons->data[j_448070]);
								addtempdecl_446289(c, LOC202, ((NU8) 7));
								res_448584 += ((NI) 1);
							} LA201: ;
						}
					}
					res_448591 += ((NI) 1);
				} LA194: ;
			}
		}
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_448083;
			NI HEX3Atmp_448597;
			NI LOC205;
			NI res_448600;
			i_448083 = 0;
			HEX3Atmp_448597 = 0;
			LOC205 = 0;
			LOC205 = sonslen_218351(n);
			HEX3Atmp_448597 = (NI)(LOC205 - ((NI) 1));
			res_448600 = ((NI) 0);
			{
				while (1) {
					if (!(res_448600 <= HEX3Atmp_448597)) goto LA207;
					i_448083 = res_448600;
					{
						Tnode215790* a;
						Tnode215790* LOC217;
						a = (*n).kindU.S6.sons->data[i_448083];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA211;
							goto LA208;
						}
						LA211: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA215;
							illformedast_265950(a);
						}
						LA215: ;
						checksonslen_265958(a, ((NI) 3));
						LOC217 = 0;
						LOC217 = getidentnode_444420((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_446289(c, LOC217, ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[((NI) 1)], (flags_444442 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[((NI) 2)], flags_444442, ctx));
					} LA208: ;
					res_448600 += ((NI) 1);
				} LA207: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_448133;
			NI HEX3Atmp_448606;
			NI LOC220;
			NI res_448609;
			i_448133 = 0;
			HEX3Atmp_448606 = 0;
			LOC220 = 0;
			LOC220 = sonslen_218351(n);
			HEX3Atmp_448606 = (NI)(LOC220 - ((NI) 1));
			res_448609 = ((NI) 0);
			{
				while (1) {
					if (!(res_448609 <= HEX3Atmp_448606)) goto LA222;
					i_448133 = res_448609;
					{
						Tnode215790* a;
						Tnode215790* LOC232;
						a = (*n).kindU.S6.sons->data[i_448133];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA226;
							goto LA223;
						}
						LA226: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA230;
							illformedast_265950(a);
						}
						LA230: ;
						checksonslen_265958(a, ((NI) 3));
						LOC232 = 0;
						LOC232 = getidentnode_444420((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_446289(c, LOC232, ((NU8) 7));
					} LA223: ;
					res_448609 += ((NI) 1);
				} LA222: ;
			}
		}
		{
			NI i_448166;
			NI HEX3Atmp_448615;
			NI LOC234;
			NI res_448618;
			i_448166 = 0;
			HEX3Atmp_448615 = 0;
			LOC234 = 0;
			LOC234 = sonslen_218351(n);
			HEX3Atmp_448615 = (NI)(LOC234 - ((NI) 1));
			res_448618 = ((NI) 0);
			{
				while (1) {
					if (!(res_448618 <= HEX3Atmp_448615)) goto LA236;
					i_448166 = res_448618;
					{
						Tnode215790* a;
						a = (*n).kindU.S6.sons->data[i_448166];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA240;
							goto LA237;
						}
						LA240: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA244;
							illformedast_265950(a);
						}
						LA244: ;
						checksonslen_265958(a, ((NI) 3));
						{
							Tscope215816* LOC250;
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA248;
							LOC250 = 0;
							LOC250 = openscope_270060(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[((NI) 1)], flags_444442, ctx));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_444442 | 2), ctx));
							closescope_270068(c);
						}
						goto LA246;
						LA248: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_444442 | 2), ctx));
						}
						LA246: ;
					} LA237: ;
					res_448618 += ((NI) 1);
				} LA236: ;
			}
		}
	}
	break;
	case ((NU8) 150):
	{
		{
			NI LOC255;
			LOC255 = 0;
			LOC255 = sonslen_218351(n);
			if (!(((NI) 0) < LOC255)) goto LA256;
			{
				if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA260;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_444442 | 2), ctx));
			}
			LA260: ;
			{
				NI i_448266;
				NI HEX3Atmp_448624;
				NI LOC263;
				NI res_448627;
				i_448266 = 0;
				HEX3Atmp_448624 = 0;
				LOC263 = 0;
				LOC263 = sonslen_218351(n);
				HEX3Atmp_448624 = (NI)(LOC263 - ((NI) 1));
				res_448627 = ((NI) 1);
				{
					while (1) {
						Tnode215790* a;
						Tnode215790* LOC269;
						Tsym215822* LOC270;
						if (!(res_448627 <= HEX3Atmp_448624)) goto LA265;
						i_448266 = res_448627;
						a = 0;
						switch ((*(*n).kindU.S6.sons->data[i_448266]).kind) {
						case ((NU8) 151):
						{
							a = (*(*n).kindU.S6.sons->data[i_448266]).kindU.S6.sons->data[((NI) 0)];
						}
						break;
						case ((NU8) 2):
						{
							a = (*n).kindU.S6.sons->data[i_448266];
						}
						break;
						default:
						{
							illformedast_265950(n);
						}
						break;
						}
						LOC269 = 0;
						LOC269 = getidentnode_444420(a);
						LOC270 = 0;
						LOC270 = newsyms_426889(((NU8) 0), LOC269, c);
						adddecl_270445(c, LOC270);
						res_448627 += ((NI) 1);
					} LA265: ;
				}
			}
		}
		LA256: ;
	}
	break;
	case ((NU8) 133):
	case ((NU8) 134):
	case ((NU8) 135):
	{
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_265962(n, ((NI) 1));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA275;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_444442 | 2), ctx));
		}
		LA275: ;
		{
			NI i_448308;
			NI HEX3Atmp_448640;
			NI LOC278;
			NI res_448643;
			i_448308 = 0;
			HEX3Atmp_448640 = 0;
			LOC278 = 0;
			LOC278 = sonslen_218351(n);
			HEX3Atmp_448640 = (NI)(LOC278 - ((NI) 1));
			res_448643 = ((NI) 1);
			{
				while (1) {
					Tnode215790* a;
					NI L;
					if (!(res_448643 <= HEX3Atmp_448640)) goto LA280;
					i_448308 = res_448643;
					a = (*n).kindU.S6.sons->data[i_448308];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA283;
						illformedast_265950(a);
					}
					LA283: ;
					checkminsonslen_265962(a, ((NI) 3));
					L = sonslen_218351(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_444442 | 2), ctx));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_444438(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_444442, ctx));
					{
						NI j_448349;
						NI HEX3Atmp_448633;
						NI res_448636;
						j_448349 = 0;
						HEX3Atmp_448633 = 0;
						HEX3Atmp_448633 = (NI)(L - ((NI) 3));
						res_448636 = ((NI) 0);
						{
							while (1) {
								Tnode215790* LOC288;
								if (!(res_448636 <= HEX3Atmp_448633)) goto LA287;
								j_448349 = res_448636;
								LOC288 = 0;
								LOC288 = getidentnode_444420((*a).kindU.S6.sons->data[j_448349]);
								addtempdecl_446289(c, LOC288, ((NU8) 3));
								res_448636 += ((NI) 1);
							} LA287: ;
						}
					}
					res_448643 += ((NI) 1);
				} LA280: ;
			}
		}
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 81):
	case ((NU8) 82):
	case ((NU8) 83):
	case ((NU8) 84):
	case ((NU8) 51):
	case ((NU8) 52):
	{
		Tscope215816* LOC295;
		Tnode215790* body;
		checksonslen_265958(n, ((NI) 7));
		{
			Tnode215790* LOC294;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA292;
			LOC294 = 0;
			LOC294 = getidentnode_444420((*n).kindU.S6.sons->data[((NI) 0)]);
			addtempdecl_446289(c, LOC294, ((NU8) 12));
		}
		LA292: ;
		LOC295 = 0;
		LOC295 = openscope_270060(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 2)], flags_444442, ctx));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA298;
			{
				Tident190012* LOC304;
				Tsym215822* LOC305;
				if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 3)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA302;
				LOC304 = 0;
				LOC304 = getident_190441(((NimStringDesc*) &TMP3182));
				LOC305 = 0;
				LOC305 = newsym_216684(((NU8) 0), LOC304, NIM_NIL, (*n).info);
				addprelimdecl_270451(c, LOC305);
			}
			LA302: ;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 3)], flags_444442, ctx));
		}
		LA298: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 4)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 4)], flags_444442, ctx));
		body = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3))) goto LA308;
			body = getbody_255828((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		}
		goto LA306;
		LA308: ;
		{
			body = (*n).kindU.S6.sons->data[((NI) 6)];
		}
		LA306: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semgenericstmtscope_444445(c, body, flags_444442, ctx));
		closescope_270068(c);
	}
	break;
	case ((NU8) 90):
	case ((NU8) 43):
	{
	}
	break;
	case ((NU8) 34):
	case ((NU8) 33):
	{
		checkminsonslen_265962(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_444442, ctx));
	}
	break;
	default:
	{
		{
			NI i_448418;
			NI HEX3Atmp_448649;
			NI LOC315;
			NI res_448652;
			i_448418 = 0;
			HEX3Atmp_448649 = 0;
			LOC315 = 0;
			LOC315 = sonslen_218351(n);
			HEX3Atmp_448649 = (NI)(LOC315 - ((NI) 1));
			res_448652 = ((NI) 0);
			{
				while (1) {
					if (!(res_448652 <= HEX3Atmp_448649)) goto LA317;
					i_448418 = res_448652;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_448418]), semgenericstmt_444438(c, (*n).kindU.S6.sons->data[i_448418], flags_444442, ctx));
					res_448652 += ((NI) 1);
				} LA317: ;
			}
		}
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode215790*, semgenericstmt_433270)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Genericctx444427 ctx;
	result = 0;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_212885((&ctx.tomixin));
	result = semgenericstmt_444438(c, n, 0, (&ctx));
	return result;
}

static N_INLINE(Ttype215828*, skipgenericinvocation_436311)(Ttype215828* t) {
	Ttype215828* result;
	result = 0;
	result = t;
	{
		if (!((*result).kind == ((NU8) 9))) goto LA3;
		result = (*result).sons->data[((NI) 0)];
	}
	LA3: ;
	{
		while (1) {
			if (!((*result).kind == ((NU8) 11) || (*result).kind == ((NU8) 10) || (*result).kind == ((NU8) 22) || (*result).kind == ((NU8) 21))) goto LA6;
			result = lastson_218377(result);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(void, addinheritedfieldsaux_436238)(Tcontext265020* c, Intset212035* check, NI* pos, Tnode215790* n) {
	switch ((*n).kind) {
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA4;
			internalerror_188100((*n).info, ((NimStringDesc*) &TMP3185));
		}
		LA4: ;
		addinheritedfieldsaux_436238(c, check, pos, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_436268;
			NI HEX3Atmp_436296;
			NI LOC7;
			NI res_436299;
			i_436268 = 0;
			HEX3Atmp_436296 = 0;
			LOC7 = 0;
			LOC7 = sonslen_218351(n);
			HEX3Atmp_436296 = (NI)(LOC7 - ((NI) 1));
			res_436299 = ((NI) 1);
			{
				while (1) {
					if (!(res_436299 <= HEX3Atmp_436296)) goto LA9;
					i_436268 = res_436299;
					switch ((*(*n).kindU.S6.sons->data[i_436268]).kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						Tnode215790* LOC11;
						LOC11 = 0;
						LOC11 = lastson_218364((*n).kindU.S6.sons->data[i_436268]);
						addinheritedfieldsaux_436238(c, check, pos, LOC11);
					}
					break;
					default:
					{
						internalerror_188100((*n).info, ((NimStringDesc*) &TMP3186));
					}
					break;
					}
					res_436299 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		{
			NI i_436282;
			NI HEX3Atmp_436304;
			NI LOC15;
			NI res_436307;
			i_436282 = 0;
			HEX3Atmp_436304 = 0;
			LOC15 = 0;
			LOC15 = sonslen_218351(n);
			HEX3Atmp_436304 = (NI)(LOC15 - ((NI) 1));
			res_436307 = ((NI) 0);
			{
				while (1) {
					if (!(res_436307 <= HEX3Atmp_436304)) goto LA17;
					i_436282 = res_436307;
					addinheritedfieldsaux_436238(c, check, pos, (*n).kindU.S6.sons->data[i_436282]);
					res_436307 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		incl_212832(check, (*(*(*n).kindU.S4.sym).name).Sup.id);
		(*pos) += ((NI) 1);
	}
	break;
	default:
	{
		internalerror_188100((*n).info, ((NimStringDesc*) &TMP3187));
	}
	break;
	}
}

N_NIMCALL(void, addinheritedfields_436336)(Tcontext265020* c, Intset212035* check, NI* pos, Ttype215828* obj) {
	{
		NIM_BOOL LOC3;
		NI LOC4;
		Ttype215828* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_218327(obj);
		LOC3 = (((NI) 0) < LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = !(((*obj).sons->data[((NI) 0)] == NIM_NIL));
		LA5: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = skipgenericinvocation_436311((*obj).sons->data[((NI) 0)]);
		addinheritedfields_436336(c, check, pos, LOC8);
	}
	LA6: ;
	addinheritedfieldsaux_436238(c, check, pos, (*obj).n);
}

static N_INLINE(NIM_BOOL, istoplevel_265966)(Tcontext265020* c) {
	NIM_BOOL result;
	result = 0;
	result = ((*(*c).currentscope).depthlevel <= ((NI) 2));
	return result;
}

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

static N_INLINE(void, rtladdcycleroot_52220)(Cell47504* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_48247((&gch_49859.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_53819)(Cell47504* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_51458(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_52220(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_53401)(Cell47504* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_53001(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_51458(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_52220(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell47504* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_51440(src);
		incref_53819(LOC5);
	}
	LA3: ;
	{
		Cell47504* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_51440((*dest));
		decref_53401(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, pushproccon_265277)(Tcontext265020* c, Tsym215822* owner) {
	Tproccon265008* x;
{	{
		if (!(owner == NIM_NIL)) goto LA3;
		internalerror_188113(((NimStringDesc*) &TMP3195));
		goto BeforeRet;
	}
	LA3: ;
	x = 0;
	x = (Tproccon265008*) newObj((&NTI265006), sizeof(Tproccon265008));
	asgnRefNoCycle((void**) (&(*x).owner), owner);
	asgnRef((void**) (&(*x).next), (*c).p);
	asgnRef((void**) (&(*c).p), x);
	}BeforeRet: ;
}

N_NIMCALL(Ttype215828*, findenforcedstatictype_436533)(Ttype215828* t_436535) {
	Ttype215828* result;
{	result = 0;
	{
		if (!((*t_436535).kind == ((NU8) 59))) goto LA3;
		result = t_436535;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*t_436535).kind == ((NU8) 55))) goto LA7;
		{
			Ttype215828* s_436563;
			Ttypeseq215824* HEX3Atmp_436578;
			NI i_436581;
			NI L_436583;
			s_436563 = 0;
			HEX3Atmp_436578 = 0;
			HEX3Atmp_436578 = (*t_436535).sons;
			i_436581 = ((NI) 0);
			L_436583 = (HEX3Atmp_436578 ? HEX3Atmp_436578->Sup.len : 0);
			{
				while (1) {
					Ttype215828* t;
					if (!(i_436581 < L_436583)) goto LA11;
					s_436563 = HEX3Atmp_436578->data[i_436581];
					t = findenforcedstatictype_436533(s_436563);
					{
						if (!!((t == NIM_NIL))) goto LA14;
						result = t;
						goto BeforeRet;
					}
					LA14: ;
					i_436581 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, addparamorresult_428872)(Tcontext265020* c, Tsym215822* param, NU8 kind) {
	{
		Ttype215828* statictype;
		if (!(kind == ((NU8) 16))) goto LA3;
		statictype = findenforcedstatictype_436533((*param).typ);
		{
			Tsym215822* a;
			if (!!((statictype == NIM_NIL))) goto LA7;
			a = copysym_218601(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), base_241021(statictype));
			adddecl_270445(c, a);
		}
		goto LA5;
		LA7: ;
		{
			if (!((*(*param).typ).kind == ((NU8) 8))) goto LA10;
			adddecl_270445(c, param);
		}
		goto LA5;
		LA10: ;
		{
			Tsym215822* nn;
			Tsym215822* a;
			{
				Tsym215822* LOC15;
				LOC15 = 0;
				LOC15 = getcompilerproc_259746(((NimStringDesc*) &TMP3198));
				if (!!((LOC15 == NIM_NIL))) goto LA16;
				nn = getsyssym_259041(((NimStringDesc*) &TMP3199));
			}
			goto LA13;
			LA16: ;
			{
				nn = getsyssym_259041(((NimStringDesc*) &TMP3200));
			}
			LA13: ;
			a = copysym_218601(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), (*nn).typ);
			adddecl_270445(c, a);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!!((((*param).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0))) goto LA22;
			adddecl_270445(c, param);
		}
		LA22: ;
	}
	LA1: ;
}

N_NIMCALL(void, addresult_455754)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info, NU8 owner) {
	{
		Tsym215822* s;
		Tident190012* LOC5;
		Tsym215822* LOC6;
		if (!!((t == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = getident_190441(((NimStringDesc*) &TMP3197));
		LOC6 = 0;
		LOC6 = getcurrowner_265210();
		s = newsym_216684(((NU8) 11), LOC5, LOC6, info);
		asgnRefNoCycle((void**) (&(*s).typ), t);
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
		addparamorresult_428872(c, s, owner);
		asgnRefNoCycle((void**) (&(*(*c).p).resultsym), s);
	}
	LA3: ;
}

N_NIMCALL(void, addresultnode_455785)(Tcontext265020* c, Tnode215790* n) {
	{
		Tnode215790* LOC5;
		if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = newsymnode_217234((*(*c).p).resultsym);
		addson_217807(n, LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, maybeaddresult_426265)(Tcontext265020* c, Tsym215822* s, Tnode215790* n) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = ((*s).kind == ((NU8) 14));
		if (!(LOC5)) goto LA6;
		LOC5 = !(((*(*s).typ).callconv == ((NU8) 8)));
		LA6: ;
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA7;
		addresult_455754(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, (*s).kind);
		addresultnode_455785(c, n);
	}
	LA7: ;
}

N_NIMCALL(void, instantiateproctype_429115)(Tcontext265020* c, Tidtable215840 pt, Tsym215822* prc, Tlineinfo183337 info) {
	Trepltypevars284531 cl;
	Ttype215828* result;
	Tnode215790* originalparams;
	Tnode215790* LOC20;
	adddecl_270445(c, prc);
	pushinfocontext_184209(info);
	memset((void*)(&cl), 0, sizeof(cl));
	chckNil((void*)(&cl));
	memset((void*)(&cl), 0, sizeof(cl));
	inittypevars_286420(c, pt, info, NIM_NIL, (&cl));
	result = instcopytype_285256((&cl), (*prc).typ);
	originalparams = (*result).n;
	asgnRefNoCycle((void**) (&(*result).n), shallowcopy_219611(originalparams));
	{
		NI i_429144;
		NI HEX3Atmp_429231;
		NI LOC2;
		NI res_429234;
		i_429144 = 0;
		HEX3Atmp_429231 = 0;
		LOC2 = 0;
		LOC2 = len_218339(result);
		HEX3Atmp_429231 = (LOC2 - 1);
		res_429234 = ((NI) 1);
		{
			while (1) {
				Tsym215822* oldparam;
				Tnode215790* LOC15;
				Tsym215822* param;
				if (!(res_429234 <= HEX3Atmp_429231)) goto LA4;
				i_429144 = res_429234;
				{
					if (!(((NI) 1) < i_429144)) goto LA7;
					resetidtable_219047((&cl.symmap));
					resetidtable_219047((&cl.localcache));
				}
				LA7: ;
				asgnRefNoCycle((void**) (&(*result).sons->data[i_429144]), replacetypevarst_284566((&cl), (*result).sons->data[i_429144]));
				propagatetoowner_219190(result, (*result).sons->data[i_429144]);
				{
					Tnode215790* LOC11;
					NimStringDesc* LOC14;
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_216238(originalparams, i_429144);
					if (!!(((*LOC11).kind == ((NU8) 3)))) goto LA12;
					LOC14 = 0;
					LOC14 = HEX24_188183(TMP3196);
					internalerror_188113(LOC14);
				}
				LA12: ;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_216238(originalparams, i_429144);
				oldparam = (*LOC15).kindU.S4.sym;
				param = copysym_218601(oldparam, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*param).owner), prc);
				asgnRefNoCycle((void**) (&(*param).typ), (*result).sons->data[i_429144]);
				{
					if (!!(((*oldparam).ast == NIM_NIL))) goto LA18;
					asgnRefNoCycle((void**) (&(*param).ast), fitnode_426230(c, (*param).typ, (*oldparam).ast));
				}
				LA18: ;
				asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[i_429144]), newsymnode_217234(param));
				adddecl_270445(c, param);
				res_429234 += ((NI) 1);
			} LA4: ;
		}
	}
	resetidtable_219047((&cl.symmap));
	resetidtable_219047((&cl.localcache));
	asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), replacetypevarst_284566((&cl), (*result).sons->data[((NI) 0)]));
	LOC20 = 0;
	LOC20 = HEX5BHEX5D_216238(originalparams, ((NI) 0));
	asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[((NI) 0)]), copytree_219822(LOC20));
	erasevoidparams_285748(result);
	skipintliteralparams_285876(result);
	asgnRefNoCycle((void**) (&(*prc).typ), result);
	maybeaddresult_426265(c, prc, (*prc).ast);
	popinfocontext_184222();
}

N_NIMCALL(NIM_BOOL, sameinstantiation_428346)(Tinstantiation215812 a, Tinstantiation215812 b) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!((a.concretetypes ? a.concretetypes->Sup.len : 0) == (b.concretetypes ? b.concretetypes->Sup.len : 0))) goto LA3;
		{
			NI i_428376;
			NI HEX3Atmp_428379;
			NI res_428382;
			i_428376 = 0;
			HEX3Atmp_428379 = 0;
			HEX3Atmp_428379 = (a.concretetypes ? (a.concretetypes->Sup.len-1) : -1);
			res_428382 = ((NI) 0);
			{
				while (1) {
					if (!(res_428382 <= HEX3Atmp_428379)) goto LA7;
					i_428376 = res_428382;
					{
						NIM_BOOL LOC10;
						LOC10 = 0;
						LOC10 = comparetypes_247404(a.concretetypes->data[i_428376], b.concretetypes->data[i_428376], ((NU8) 0), 4);
						if (!!(LOC10)) goto LA11;
						goto BeforeRet;
					}
					LA11: ;
					res_428382 += ((NI) 1);
				} LA7: ;
			}
		}
		result = NIM_TRUE;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym215822*, genericcacheget_428386)(Tsym215822* genericsym, Tinstantiation215812 entry, NI id) {
	Tsym215822* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = HEX3DHEX3D_218864((*genericsym).kindU.S2.procinstcache, NIM_NIL);
		if (!!(LOC3)) goto LA4;
		{
			Tinstantiation215812* inst_428602;
			TY215925* HEX3Atmp_428604;
			NI i_428607;
			NI L_428609;
			inst_428602 = 0;
			HEX3Atmp_428604 = 0;
			HEX3Atmp_428604 = (*genericsym).kindU.S2.procinstcache;
			i_428607 = ((NI) 0);
			L_428609 = (HEX3Atmp_428604 ? HEX3Atmp_428604->Sup.len : 0);
			{
				while (1) {
					if (!(i_428607 < L_428609)) goto LA8;
					inst_428602 = HEX3Atmp_428604->data[i_428607];
					{
						NIM_BOOL LOC11;
						LOC11 = 0;
						LOC11 = ((*inst_428602).compilesid == id);
						if (!(LOC11)) goto LA12;
						LOC11 = sameinstantiation_428346(entry, (*inst_428602));
						LA12: ;
						if (!LOC11) goto LA13;
						result = (*inst_428602).sym;
						goto BeforeRet;
					}
					LA13: ;
					i_428607 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA4: ;
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(void, freshgensyms_428801)(Tnode215790* n, Tsym215822* owner, Tidtable215840* symmap) {
	{
		NIM_BOOL LOC3;
		Tsym215822* s;
		Tsym215822* x;
		Tidobj190006* LOC7;
		TNimObject* LOC8;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = (((*(*n).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		s = (*n).kindU.S4.sym;
		LOC7 = 0;
		LOC7 = &s->Sup;
		LOC8 = 0;
		LOC8 = idtableget_222107((*symmap), LOC7);
		x = ((Tsym215822*) (LOC8));
		{
			Tidobj190006* LOC13;
			TNimObject* LOC14;
			if (!(x == NIM_NIL)) goto LA11;
			x = copysym_218601(s, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*x).owner), owner);
			LOC13 = 0;
			LOC13 = &s->Sup;
			LOC14 = 0;
			LOC14 = &x->Sup.Sup;
			idtableput_222115(symmap, LOC13, LOC14);
		}
		LA11: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S4.sym), x);
	}
	goto LA1;
	LA5: ;
	{
		{
			NI i_428862;
			NI HEX3Atmp_428865;
			NI LOC17;
			NI res_428868;
			i_428862 = 0;
			HEX3Atmp_428865 = 0;
			LOC17 = 0;
			LOC17 = safelen_216081(n);
			HEX3Atmp_428865 = (LOC17 - 1);
			res_428868 = ((NI) 0);
			{
				while (1) {
					if (!(res_428868 <= HEX3Atmp_428865)) goto LA19;
					i_428862 = res_428868;
					freshgensyms_428801((*n).kindU.S6.sons->data[i_428862], owner, symmap);
					res_428868 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, isemptytype_220513)(Ttype215828* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (t == NIM_NIL);
	if (LOC1) goto LA2;
	LOC1 = ((*t).kind == ((NU8) 3) || (*t).kind == ((NU8) 7));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, istypeexpr_463450)(Tnode215790* n) {
	NIM_BOOL result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 4):
	case ((NU8) 132):
	{
		result = NIM_TRUE;
	}
	break;
	case ((NU8) 3):
	{
		result = ((*(*n).kindU.S4.sym).kind == ((NU8) 7));
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode215790*, readtypeparameter_463822)(Tcontext265020* c, Ttype215828* typ, Tident190012* paramname, Tlineinfo183337 info) {
	Tnode215790* result;
	Ttype215828* ty;
	Ttype215828* tbody;
{	result = 0;
	{
		if (!((*typ).kind == ((NU8) 11))) goto LA3;
		ty = skipgenericalias_246606(typ);
	}
	goto LA1;
	LA3: ;
	{
		{
			NimStringDesc* LOC10;
			if (!!(((*typ).kind == ((NU8) 54)))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX24_188183(TMP3281);
			internalerror_188113(LOC10);
		}
		LA8: ;
		ty = skipgenericalias_246606((*typ).sons->data[((NI) 1)]);
	}
	LA1: ;
	tbody = (*ty).sons->data[((NI) 0)];
	{
		NI s_463867;
		NI HEX3Atmp_463883;
		NI LOC12;
		NI res_463886;
		s_463867 = 0;
		HEX3Atmp_463883 = 0;
		LOC12 = 0;
		LOC12 = len_218339(tbody);
		HEX3Atmp_463883 = (NI)(LOC12 - ((NI) 2));
		res_463886 = ((NI) 0);
		{
			while (1) {
				Ttype215828* tparam;
				if (!(res_463886 <= HEX3Atmp_463883)) goto LA14;
				s_463867 = res_463886;
				tparam = (*tbody).sons->data[s_463867];
				{
					Ttype215828* rawtyp;
					if (!((*(*(*tparam).sym).name).Sup.id == (*paramname).Sup.id)) goto LA17;
					rawtyp = (*ty).sons->data[(NI)(s_463867 + ((NI) 1))];
					{
						if (!((*rawtyp).kind == ((NU8) 59))) goto LA21;
						result = (*rawtyp).n;
						goto BeforeRet;
					}
					goto LA19;
					LA21: ;
					{
						Ttype215828* foundtyp;
						Tsym215822* LOC24;
						Tsym215822* LOC25;
						foundtyp = maketypedesc_265524(c, rawtyp);
						LOC24 = 0;
						LOC24 = copysym_218601((*tparam).sym, NIM_FALSE);
						LOC25 = 0;
						LOC25 = linkto_216854(LOC24, foundtyp);
						result = newsymnode_217241(LOC25, info);
						goto BeforeRet;
					}
					LA19: ;
				}
				LA17: ;
				res_463886 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, createsettype_463464)(Tcontext265020* c, Ttype215828* basetype) {
	Ttype215828* result;
	result = 0;
	result = newtypes_265185(((NU8) 19), c);
	rawaddson_219408(result, basetype);
	return result;
}

N_NIMCALL(Tsym215822*, lookupinrecordandbuildcheck_463601)(Tcontext265020* c, Tnode215790* n, Tnode215790* r, Tident190012* field, Tnode215790** check) {
	Tsym215822* result;
{	result = 0;
	result = NIM_NIL;
	switch ((*r).kind) {
	case ((NU8) 138):
	{
		{
			NI i_463621;
			NI HEX3Atmp_463756;
			NI LOC3;
			NI res_463759;
			i_463621 = 0;
			HEX3Atmp_463756 = 0;
			LOC3 = 0;
			LOC3 = sonslen_218351(r);
			HEX3Atmp_463756 = (NI)(LOC3 - ((NI) 1));
			res_463759 = ((NI) 0);
			{
				while (1) {
					if (!(res_463759 <= HEX3Atmp_463756)) goto LA5;
					i_463621 = res_463759;
					result = lookupinrecordandbuildcheck_463601(c, n, (*r).kindU.S6.sons->data[i_463621], field, check);
					{
						if (!!((result == NIM_NIL))) goto LA8;
						goto BeforeRet;
					}
					LA8: ;
					res_463759 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		Ttype215828* settype;
		Tnode215790* s;
		checkminsonslen_265962(r, ((NI) 2));
		{
			if (!!(((*(*r).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA13;
			illformedast_265950(r);
		}
		LA13: ;
		result = lookupinrecordandbuildcheck_463601(c, n, (*r).kindU.S6.sons->data[((NI) 0)], field, check);
		{
			if (!!((result == NIM_NIL))) goto LA17;
			goto BeforeRet;
		}
		LA17: ;
		settype = createsettype_463464(c, (*(*r).kindU.S6.sons->data[((NI) 0)]).typ);
		s = newnodeit_217801(((NU8) 39), (*r).info, settype);
		{
			NI i_463672;
			NI HEX3Atmp_463780;
			NI LOC20;
			NI res_463783;
			i_463672 = 0;
			HEX3Atmp_463780 = 0;
			LOC20 = 0;
			LOC20 = sonslen_218351(r);
			HEX3Atmp_463780 = (NI)(LOC20 - ((NI) 1));
			res_463783 = ((NI) 1);
			{
				while (1) {
					Tnode215790* it;
					if (!(res_463783 <= HEX3Atmp_463780)) goto LA22;
					i_463672 = res_463783;
					it = (*r).kindU.S6.sons->data[i_463672];
					switch ((*it).kind) {
					case ((NU8) 85):
					{
						Tnode215790* LOC24;
						LOC24 = 0;
						LOC24 = lastson_218364(it);
						result = lookupinrecordandbuildcheck_463601(c, n, LOC24, field, check);
						{
							if (!(result == NIM_NIL)) goto LA27;
							{
								NI j_463696;
								NI HEX3Atmp_463765;
								NI LOC30;
								NI res_463768;
								j_463696 = 0;
								HEX3Atmp_463765 = 0;
								LOC30 = 0;
								LOC30 = sonslen_218351(it);
								HEX3Atmp_463765 = (NI)(LOC30 - ((NI) 2));
								res_463768 = ((NI) 0);
								{
									while (1) {
										Tnode215790* LOC33;
										if (!(res_463768 <= HEX3Atmp_463765)) goto LA32;
										j_463696 = res_463768;
										LOC33 = 0;
										LOC33 = copytree_219822((*it).kindU.S6.sons->data[j_463696]);
										addson_217807(s, LOC33);
										res_463768 += ((NI) 1);
									} LA32: ;
								}
							}
						}
						goto LA25;
						LA27: ;
						{
							Tnode215790* inexpr;
							Ttype215828* LOC44;
							Tnode215790* LOC45;
							Tnode215790* LOC46;
							{
								if (!((*check) == NIM_NIL)) goto LA37;
								unsureAsgnRef((void**) (&(*check)), newnodei_217248(((NU8) 46), (*n).info));
								addson_217807((*check), emptynode_216801);
							}
							LA37: ;
							s = newnodeit_217801(((NU8) 39), (*n).info, settype);
							{
								NI j_463721;
								NI HEX3Atmp_463773;
								NI LOC40;
								NI res_463776;
								j_463721 = 0;
								HEX3Atmp_463773 = 0;
								LOC40 = 0;
								LOC40 = sonslen_218351(it);
								HEX3Atmp_463773 = (NI)(LOC40 - ((NI) 2));
								res_463776 = ((NI) 0);
								{
									while (1) {
										Tnode215790* LOC43;
										if (!(res_463776 <= HEX3Atmp_463773)) goto LA42;
										j_463721 = res_463776;
										LOC43 = 0;
										LOC43 = copytree_219822((*it).kindU.S6.sons->data[j_463721]);
										addson_217807(s, LOC43);
										res_463776 += ((NI) 1);
									} LA42: ;
								}
							}
							LOC44 = 0;
							LOC44 = getsystype_259130(((NU8) 1));
							inexpr = newnodeit_217801(((NU8) 27), (*n).info, LOC44);
							LOC45 = 0;
							LOC45 = newsymnode_217241(opcontains_220607, (*n).info);
							addson_217807(inexpr, LOC45);
							addson_217807(inexpr, s);
							LOC46 = 0;
							LOC46 = copytree_219822((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_217807(inexpr, LOC46);
							addson_217807((*check), inexpr);
							goto BeforeRet;
						}
						LA25: ;
					}
					break;
					case ((NU8) 88):
					{
						Tnode215790* LOC48;
						LOC48 = 0;
						LOC48 = lastson_218364(it);
						result = lookupinrecordandbuildcheck_463601(c, n, LOC48, field, check);
						{
							Tnode215790* inexpr;
							Ttype215828* LOC57;
							Tnode215790* LOC58;
							Tnode215790* LOC59;
							Tnode215790* notexpr;
							Ttype215828* LOC60;
							Tnode215790* LOC61;
							if (!!((result == NIM_NIL))) goto LA51;
							{
								if (!((*check) == NIM_NIL)) goto LA55;
								unsureAsgnRef((void**) (&(*check)), newnodei_217248(((NU8) 46), (*n).info));
								addson_217807((*check), emptynode_216801);
							}
							LA55: ;
							LOC57 = 0;
							LOC57 = getsystype_259130(((NU8) 1));
							inexpr = newnodeit_217801(((NU8) 27), (*n).info, LOC57);
							LOC58 = 0;
							LOC58 = newsymnode_217241(opcontains_220607, (*n).info);
							addson_217807(inexpr, LOC58);
							addson_217807(inexpr, s);
							LOC59 = 0;
							LOC59 = copytree_219822((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_217807(inexpr, LOC59);
							LOC60 = 0;
							LOC60 = getsystype_259130(((NU8) 1));
							notexpr = newnodeit_217801(((NU8) 27), (*n).info, LOC60);
							LOC61 = 0;
							LOC61 = newsymnode_217241(opnot_220606, (*n).info);
							addson_217807(notexpr, LOC61);
							addson_217807(notexpr, inexpr);
							addson_217807((*check), notexpr);
							goto BeforeRet;
						}
						LA51: ;
					}
					break;
					default:
					{
						illformedast_265950(it);
					}
					break;
					}
					res_463783 += ((NI) 1);
				} LA22: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		{
			if (!((*(*(*r).kindU.S4.sym).name).Sup.id == (*field).Sup.id)) goto LA66;
			result = (*r).kindU.S4.sym;
		}
		LA66: ;
	}
	break;
	default:
	{
		illformedast_265950(n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, fieldvisible_370259)(Tcontext265020* c, Tsym215822* f) {
	NIM_BOOL result;
	NI fmoduleid;
	Tsym215822* LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getmodule_222144(f);
	fmoduleid = (*LOC1).Sup.id;
	LOC2 = 0;
	LOC2 = (((*f).flags &(1U<<((NU)(((NU8) 1))&31U)))!=0);
	if (LOC2) goto LA3;
	LOC2 = (fmoduleid == (*(*c).module).Sup.id);
	LA3: ;
	result = LOC2;
	{
		Tsym215822* module_370402;
		Tsymseq215792* HEX3Atmp_370405;
		NI i_370408;
		NI L_370410;
		module_370402 = 0;
		HEX3Atmp_370405 = 0;
		HEX3Atmp_370405 = (*c).friendmodules;
		i_370408 = ((NI) 0);
		L_370410 = (HEX3Atmp_370405 ? HEX3Atmp_370405->Sup.len : 0);
		{
			while (1) {
				if (!(i_370408 < L_370410)) goto LA6;
				module_370402 = HEX3Atmp_370405->data[i_370408];
				{
					if (!(fmoduleid == (*module_370402).Sup.id)) goto LA9;
					result = NIM_TRUE;
					goto LA4;
				}
				LA9: ;
				i_370408 += ((NI) 1);
			} LA6: ;
		}
	} LA4: ;
	return result;
}

N_NIMCALL(Tnode215790*, makederef_463787)(Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* t;
	result = 0;
	t = skiptypes_219113((*n).typ, 2048);
	result = n;
	{
		if (!((*t).kind == ((NU8) 23))) goto LA3;
		result = newnodeit_217801(((NU8) 65), (*n).info, (*t).sons->data[((NI) 0)]);
		addson_217807(result, n);
		t = skiptypes_219113((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		while (1) {
			Tnode215790* a;
			Ttype215828* basetyp;
			if (!((*t).kind == ((NU8) 21) || (*t).kind == ((NU8) 22))) goto LA6;
			a = result;
			basetyp = lastson_218377(t);
			result = newnodeit_217801(((NU8) 65), (*n).info, basetyp);
			addson_217807(result, a);
			t = skiptypes_219113(basetyp, 2048);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(Tnode215790*, builtinfieldaccess_463890)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tsym215822* s;
	Tident190012* i;
	Ttype215828* ty;
	Tsym215822* f;
	Tnode215790* check;
{	result = 0;
	checksonslen_265958(n, ((NI) 2));
	s = qualifiedlookup_270652(c, n, 3);
	{
		if (!!((s == NIM_NIL))) goto LA3;
		{
			if (!((258112 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA7;
			result = symchoice_439732(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA11;
				result = semsym_459040(c, n, s, flags);
			}
			LA11: ;
		}
		goto LA5;
		LA7: ;
		{
			markused_363244((*(*n).kindU.S6.sons->data[((NI) 1)]).info, s);
			result = semsym_459040(c, n, s, flags);
		}
		LA5: ;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags | 32)));
	i = considerquotedident_270004((*n).kindU.S6.sons->data[((NI) 1)]);
	ty = (*(*n).kindU.S6.sons->data[((NI) 0)]).typ;
	f = NIM_NIL;
	result = NIM_NIL;
	{
		NIM_BOOL LOC16;
		NIM_BOOL LOC18;
		Ttype215828* LOC20;
		LOC16 = 0;
		LOC16 = istypeexpr_463450((*n).kindU.S6.sons->data[((NI) 0)]);
		if (LOC16) goto LA17;
		LOC18 = 0;
		LOC18 = ((*ty).kind == ((NU8) 8));
		if (!(LOC18)) goto LA19;
		LOC20 = 0;
		LOC20 = base_241021(ty);
		LOC18 = !(((*LOC20).kind == ((NU8) 0)));
		LA19: ;
		LOC16 = LOC18;
		LA17: ;
		if (!LOC16) goto LA21;
		{
			if (!((*ty).kind == ((NU8) 8))) goto LA25;
			ty = base_241021(ty);
		}
		LA25: ;
		ty = skiptypes_219113(ty, 14680064);
		switch ((*ty).kind) {
		case ((NU8) 14):
		{
			{
				while (1) {
					if (!!((ty == NIM_NIL))) goto LA29;
					f = getsymfromlist_222135((*ty).n, i, ((NI) 0));
					{
						if (!!((f == NIM_NIL))) goto LA32;
						goto LA28;
					}
					LA32: ;
					ty = (*ty).sons->data[((NI) 0)];
				} LA29: ;
			} LA28: ;
			{
				if (!!((f == NIM_NIL))) goto LA36;
				result = newsymnode_217234(f);
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), ty);
				markused_363244((*n).info, f);
				goto BeforeRet;
			}
			LA36: ;
		}
		break;
		case ((NU8) 11):
		case ((NU8) 54):
		{
			result = readtypeparameter_463822(c, ty, i, (*n).info);
			goto BeforeRet;
		}
		break;
		case ((NU8) 17):
		case ((NU8) 18):
		{
			{
				NIM_BOOL LOC42;
				LOC42 = 0;
				LOC42 = !(((*ty).n == NIM_NIL));
				if (!(LOC42)) goto LA43;
				LOC42 = ((*(*ty).n).kind == ((NU8) 138));
				LA43: ;
				if (!LOC42) goto LA44;
				{
					Tnode215790* field_464222;
					Tnode215790* HEX3Atmp_464632;
					field_464222 = 0;
					HEX3Atmp_464632 = 0;
					HEX3Atmp_464632 = (*ty).n;
					{
						NI i_464636;
						NI HEX3Atmp_464638;
						NI LOC48;
						NI res_464640;
						i_464636 = 0;
						HEX3Atmp_464638 = 0;
						LOC48 = 0;
						LOC48 = len_216059(HEX3Atmp_464632);
						HEX3Atmp_464638 = (LOC48 - 1);
						res_464640 = ((NI) 0);
						{
							while (1) {
								if (!(res_464640 <= HEX3Atmp_464638)) goto LA50;
								i_464636 = res_464640;
								field_464222 = (*HEX3Atmp_464632).kindU.S6.sons->data[i_464636];
								{
									Ttypeseq215824* LOC55;
									TY265646 LOC56;
									if (!((*(*field_464222).kindU.S4.sym).name == i)) goto LA53;
									LOC55 = 0;
									LOC55 = (Ttypeseq215824*) newSeq((&NTI215824), 2);
									memset((void*)LOC56, 0, sizeof(LOC56));
									LOC56[0] = ty;
									LOC56[1] = (*(*field_464222).kindU.S4.sym).typ;
									asgnRefNoCycle((void**) (&LOC55->data[0]), LOC56[0]);
									asgnRefNoCycle((void**) (&LOC55->data[1]), LOC56[1]);
									asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_265601(c, ((NU8) 61), LOC55));
									asgnRefNoCycle((void**) (&(*(*n).typ).n), copytree_219822(n));
									result = n;
									goto BeforeRet;
								}
								LA53: ;
								res_464640 += ((NI) 1);
							} LA50: ;
						}
					}
				}
			}
			LA44: ;
		}
		break;
		default:
		{
			goto BeforeRet;
		}
		break;
		}
		ty = (*(*n).kindU.S6.sons->data[((NI) 0)]).typ;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA21: ;
	ty = skiptypes_219113(ty, 14682112);
	{
		while (1) {
			if (!(((*ty).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0)) goto LA59;
			ty = skiptypes_219113(ty, 8192);
		} LA59: ;
	}
	check = NIM_NIL;
	{
		if (!((*ty).kind == ((NU8) 17))) goto LA62;
		{
			while (1) {
				check = NIM_NIL;
				f = lookupinrecordandbuildcheck_463601(c, n, (*ty).n, i, &check);
				{
					if (!!((f == NIM_NIL))) goto LA68;
					goto LA64;
				}
				LA68: ;
				{
					if (!((*ty).sons->data[((NI) 0)] == NIM_NIL)) goto LA72;
					goto LA64;
				}
				LA72: ;
				ty = skiptypes_219113((*ty).sons->data[((NI) 0)], 2048);
			}
		} LA64: ;
		{
			if (!!((f == NIM_NIL))) goto LA76;
			{
				NIM_BOOL LOC80;
				LOC80 = 0;
				LOC80 = fieldvisible_370259(c, f);
				if (!LOC80) goto LA81;
				markused_363244((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_463787((*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_217234(f));
				asgnRefNoCycle((void**) (&(*n).typ), (*f).typ);
				{
					if (!(check == NIM_NIL)) goto LA85;
					result = n;
				}
				goto LA83;
				LA85: ;
				{
					asgnRefNoCycle((void**) (&(*check).kindU.S6.sons->data[((NI) 0)]), n);
					asgnRefNoCycle((void**) (&(*check).typ), (*n).typ);
					result = check;
				}
				LA83: ;
			}
			LA81: ;
		}
		LA76: ;
	}
	goto LA60;
	LA62: ;
	{
		NIM_BOOL LOC89;
		LOC89 = 0;
		LOC89 = ((*ty).kind == ((NU8) 18));
		if (!(LOC89)) goto LA90;
		LOC89 = !(((*ty).n == NIM_NIL));
		LA90: ;
		if (!LOC89) goto LA91;
		f = getsymfromlist_222135((*ty).n, i, ((NI) 0));
		{
			if (!!((f == NIM_NIL))) goto LA95;
			markused_363244((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_463787((*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_217234(f));
			asgnRefNoCycle((void**) (&(*n).typ), (*f).typ);
			result = n;
		}
		LA95: ;
	}
	goto LA60;
	LA91: ;
	LA60: ;
	{
		Ttype215828* t;
		if (!(result == NIM_NIL)) goto LA99;
		t = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 14680064);
		{
			if (!((*t).kind == ((NU8) 11) || (*t).kind == ((NU8) 54))) goto LA103;
			result = readtypeparameter_463822(c, t, i, (*n).info);
		}
		LA103: ;
	}
	LA99: ;
	}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(void, gatherusedsyms_430146)(Tcontext265020* c, Tnodeseq215784** usedsyms) {
	{
		Tscope215816* scope_430152;
		Tscope215816* HEX3Atmp_430227;
		Tscope215816* current_430230;
		scope_430152 = 0;
		HEX3Atmp_430227 = 0;
		HEX3Atmp_430227 = (*c).currentscope;
		current_430230 = HEX3Atmp_430227;
		{
			while (1) {
				if (!!((current_430230 == NIM_NIL))) goto LA3;
				scope_430152 = current_430230;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = HEX3DHEX3D_283344((*scope_430152).usingsyms, NIM_NIL);
					if (!!(LOC6)) goto LA7;
					{
						Tnode215790* s_430173;
						Tnodeseq215784* HEX3Atmp_430221;
						NI i_430224;
						NI L_430226;
						s_430173 = 0;
						HEX3Atmp_430221 = 0;
						HEX3Atmp_430221 = (*scope_430152).usingsyms;
						i_430224 = ((NI) 0);
						L_430226 = (HEX3Atmp_430221 ? HEX3Atmp_430221->Sup.len : 0);
						{
							while (1) {
								if (!(i_430224 < L_430226)) goto LA11;
								s_430173 = HEX3Atmp_430221->data[i_430224];
								safeadd_430175(usedsyms, s_430173);
								i_430224 += ((NI) 1);
							} LA11: ;
						}
					}
				}
				LA7: ;
				current_430230 = (*current_430230).parent;
			} LA3: ;
		}
	}
}
N_NIMCALL(void, TMP3284)(void* p, NI op) {
	TY429716* a;
	NI LOC1;
	a = (TY429716*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].Field0, op);
	}
}

N_NIMCALL(Tsym215822*, lookupmacro_455835)(Tcontext265020* c, Tnode215790* n) {
	Tsym215822* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
		{
			if (!!(((196608 &(1U<<((NU)((*result).kind)&31U)))!=0))) goto LA7;
			result = NIM_NIL;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		Tident190012* LOC10;
		LOC10 = 0;
		LOC10 = considerquotedident_270004(n);
		result = searchinscopes_270209(c, LOC10, 196608);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, copyexcept_455801)(Tnode215790* n, NI i) {
	Tnode215790* result;
	result = 0;
	result = copynode_219542(n);
	{
		NI j_455824;
		NI HEX3Atmp_455828;
		NI LOC2;
		NI res_455831;
		j_455824 = 0;
		HEX3Atmp_455828 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_455828 = (LOC2 - 1);
		res_455831 = ((NI) 0);
		{
			while (1) {
				if (!(res_455831 <= HEX3Atmp_455828)) goto LA4;
				j_455824 = res_455831;
				{
					if (!!((j_455824 == i))) goto LA7;
					add_216114(result, (*n).kindU.S6.sons->data[j_455824]);
				}
				LA7: ;
				res_455831 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode215790*, semprocannotation_455862)(Tcontext265020* c, Tnode215790* prc, Tspecialwords197006 validpragmas) {
	Tnode215790* result;
	Tnode215790* n;
{	result = 0;
	n = (*prc).kindU.S6.sons->data[((NI) 4)];
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = ((*n).kind == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	{
		NI i_455911;
		NI HEX3Atmp_456006;
		NI LOC8;
		NI res_456009;
		i_455911 = 0;
		HEX3Atmp_456006 = 0;
		LOC8 = 0;
		LOC8 = len_216059(n);
		HEX3Atmp_456006 = (LOC8 - 1);
		res_456009 = ((NI) 0);
		{
			while (1) {
				if (!(res_456009 <= HEX3Atmp_456006)) goto LA10;
				i_455911 = res_456009;
				{
					Tnode215790* it;
					Tnode215790* key;
					Tsym215822* m;
					Tnode215790* x;
					Tnode215790* LOC33;
					it = (*n).kindU.S6.sons->data[i_455911];
					{
						if (!((*it).kind == ((NU8) 34))) goto LA14;
						key = (*it).kindU.S6.sons->data[((NI) 0)];
					}
					goto LA12;
					LA14: ;
					{
						key = it;
					}
					LA12: ;
					m = lookupmacro_455835(c, key);
					{
						if (!(m == NIM_NIL)) goto LA19;
						{
							NIM_BOOL LOC23;
							LOC23 = 0;
							LOC23 = ((*key).kind == ((NU8) 2));
							if (!(LOC23)) goto LA24;
							LOC23 = ((*(*key).kindU.S5.ident).Sup.id == ((NI) 87));
							LA24: ;
							if (!LOC23) goto LA25;
							{
								Tident190012* LOC29;
								LOC29 = 0;
								LOC29 = considerquotedident_270004((*prc).kindU.S6.sons->data[((NI) 0)]);
								if (!eqStrings((*LOC29).s, ((NimStringDesc*) &TMP3285))) goto LA30;
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 0)]), newidentnode_217228(iddelegator_190456, (*prc).info));
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_455801(n, i_455911));
							}
							goto LA27;
							LA30: ;
							{
								localerror_188080((*prc).info, ((NU16) 204), ((NimStringDesc*) &TMP3155));
							}
							LA27: ;
						}
						LA25: ;
						goto LA11;
					}
					LA19: ;
					x = newnodei_217248(((NU8) 27), (*n).info);
					LOC33 = 0;
					LOC33 = newsymnode_217234(m);
					add_216114(x, LOC33);
					asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_455801(n, i_455911));
					{
						if (!((*it).kind == ((NU8) 34))) goto LA36;
						add_216114(x, (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA36: ;
					add_216114(x, prc);
					result = semstmt_426250(c, x);
					{
						NIM_BOOL LOC40;
						NIM_BOOL LOC41;
						Tnode215790* LOC43;
						Tnode215790* LOC45;
						Tnode215790* LOC48;
						Tnode215790* LOC49;
						LOC40 = 0;
						LOC41 = 0;
						LOC41 = ((*result).kind >= ((NU8) 51) && (*result).kind <= ((NU8) 52) || (*result).kind >= ((NU8) 79) && (*result).kind <= ((NU8) 81) || (*result).kind == ((NU8) 84));
						if (!(LOC41)) goto LA42;
						LOC43 = 0;
						LOC43 = HEX5BHEX5D_216238(result, ((NI) 0));
						LOC41 = ((*LOC43).kind == ((NU8) 3));
						LA42: ;
						LOC40 = LOC41;
						if (!(LOC40)) goto LA44;
						LOC45 = 0;
						LOC45 = HEX5BHEX5D_216238(result, ((NI) 4));
						LOC40 = !(((*LOC45).kind == ((NU8) 1)));
						LA44: ;
						if (!LOC40) goto LA46;
						LOC48 = 0;
						LOC48 = HEX5BHEX5D_216238(result, ((NI) 0));
						LOC49 = 0;
						LOC49 = HEX5BHEX5D_216238(result, ((NI) 4));
						pragma_280070(c, (*LOC48).kindU.S4.sym, LOC49, validpragmas);
					}
					LA46: ;
					goto BeforeRet;
				} LA11: ;
				res_456009 += ((NI) 1);
			} LA10: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NimStringDesc*, HEX24_426901)(NU8 kind) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = copyStr(reprEnum(kind, (&NTI215435)), ((NI) 2));
	result = nsuToLowerStr(LOC1);
	return result;
}

N_NIMCALL(Tsym215822*, newsymg_426895)(NU8 kind, Tnode215790* n, Tcontext265020* c) {
	Tsym215822* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
		{
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			NimStringDesc* LOC11;
			if (!!(((*result).kind == kind))) goto LA7;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = HEX24_426901((*result).kind);
			LOC11 = 0;
			LOC11 = HEX24_426901(kind);
			LOC9 = rawNewString(LOC10->Sup.len + LOC11->Sup.len + 36);
appendString(LOC9, ((NimStringDesc*) &TMP3286));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3287));
appendString(LOC9, LOC11);
appendString(LOC9, ((NimStringDesc*) &TMP3288));
			localerror_188085((*n).info, LOC9);
		}
		LA7: ;
		asgnRefNoCycle((void**) (&(*result).owner), getcurrowner_265210());
	}
	goto LA1;
	LA3: ;
	{
		Tident190012* LOC13;
		Tsym215822* LOC14;
		LOC13 = 0;
		LOC13 = considerquotedident_270004(n);
		LOC14 = 0;
		LOC14 = getcurrowner_265210();
		result = newsym_216684(kind, LOC13, LOC14, (*n).info);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym215822*, semidentvis_426932)(Tcontext265020* c, NU8 kind, Tnode215790* n, NU32 allowed) {
	Tsym215822* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 31))) goto LA3;
		{
			NIM_BOOL LOC7;
			NI LOC8;
			Tident190012* v;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = sonslen_218351(n);
			LOC7 = (LOC8 == ((NI) 2));
			if (!(LOC7)) goto LA9;
			LOC7 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
			LA9: ;
			if (!LOC7) goto LA10;
			result = newsymg_426895(kind, (*n).kindU.S6.sons->data[((NI) 1)], c);
			v = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = ((allowed &(1U<<((NU)(((NU8) 1))&31U)))!=0);
				if (!(LOC14)) goto LA15;
				LOC14 = ((*v).Sup.id == ((NI) 76));
				LA15: ;
				if (!LOC14) goto LA16;
				(*result).flags |= ((NU32)1)<<((((NU8) 1))%(sizeof(NU32)*8));
			}
			goto LA12;
			LA16: ;
			{
				localerror_188080((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 178), (*v).s);
			}
			LA12: ;
		}
		goto LA5;
		LA10: ;
		{
			illformedast_265950(n);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		result = newsymg_426895(kind, n, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym215822*, semidentwithpragma_426938)(Tcontext265020* c, NU8 kind, Tnode215790* n, NU32 allowed) {
	Tsym215822* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 43))) goto LA3;
		checksonslen_265958(n, ((NI) 2));
		result = semidentvis_426932(c, kind, (*n).kindU.S6.sons->data[((NI) 0)], allowed);
		switch (kind) {
		case ((NU8) 7):
		{
		}
		break;
		case ((NU8) 18):
		{
			pragma_280070(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3289);
		}
		break;
		case ((NU8) 8):
		{
			pragma_280070(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3290);
		}
		break;
		case ((NU8) 9):
		{
			pragma_280070(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3290);
		}
		break;
		case ((NU8) 10):
		{
			pragma_280070(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3291);
		}
		break;
		default:
		{
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		result = semidentvis_426932(c, kind, n, allowed);
	}
	LA1: ;
	{
		if (!(gcmd_161123 == ((NU8) 7))) goto LA14;
	}
	LA14: ;
	return result;
}

static N_INLINE(void, suggestsym_373436)(Tlineinfo183337 info, Tsym215822* s, NIM_BOOL isdecl) {
}

N_NIMCALL(Tsym215822*, semidentdef_451639)(Tcontext265020* c, Tnode215790* n, NU8 kind) {
	Tsym215822* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_265966(c);
		if (!LOC3) goto LA4;
		result = semidentwithpragma_426938(c, kind, n, 2);
		(*result).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
	}
	goto LA1;
	LA4: ;
	{
		result = semidentwithpragma_426938(c, kind, n, 0);
		{
			if (!((*(*result).owner).kind == ((NU8) 6))) goto LA9;
			(*result).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
		}
		LA9: ;
	}
	LA1: ;
	suggestsym_373436((*n).info, result, NIM_TRUE);
	return result;
}

N_NIMCALL(Ttype215828*, semgenericconstraints_439385)(Tcontext265020* c, Ttype215828* x) {
	Ttype215828* result;
	Ttypeseq215824* LOC1;
	TY367877 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = (Ttypeseq215824*) newSeq((&NTI215824), 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = x;
	asgnRefNoCycle((void**) (&LOC1->data[0]), LOC2[0]);
	result = newtypewithsons_265601(c, ((NU8) 12), LOC1);
	return result;
}

N_NIMCALL(Tnode215790*, semgenericparamlist_439403)(Tcontext265020* c, Tnode215790* n, Ttype215828* father) {
	Tnode215790* result;
{	result = 0;
	result = copynode_219542(n);
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_265950(n);
		goto BeforeRet;
	}
	LA3: ;
	{
		NI i_439429;
		NI HEX3Atmp_439668;
		NI LOC6;
		NI res_439671;
		i_439429 = 0;
		HEX3Atmp_439668 = 0;
		LOC6 = 0;
		LOC6 = sonslen_218351(n);
		HEX3Atmp_439668 = (NI)(LOC6 - ((NI) 1));
		res_439671 = ((NI) 0);
		{
			while (1) {
				Tnode215790* a;
				NI L;
				Tnode215790* def;
				NI LOC13;
				Tnode215790* constraint;
				NI LOC20;
				Ttype215828* typ;
				if (!(res_439671 <= HEX3Atmp_439668)) goto LA8;
				i_439429 = res_439671;
				a = (*n).kindU.S6.sons->data[i_439429];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA11;
					illformedast_265950(n);
				}
				LA11: ;
				L = len_216059(a);
				LOC13 = 0;
				{
					if (!NIM_FALSE) goto LA16;
					LOC13 = ((NI) -1);
				}
				goto LA14;
				LA16: ;
				{
					NI LOC19;
					LOC19 = 0;
					LOC19 = len_216059(a);
					LOC13 = (NI)(LOC19 + ((NI) -1));
				}
				LA14: ;
				def = HEX5BHEX5D_216238(a, LOC13);
				LOC20 = 0;
				{
					if (!NIM_FALSE) goto LA23;
					LOC20 = ((NI) -2);
				}
				goto LA21;
				LA23: ;
				{
					NI LOC26;
					LOC26 = 0;
					LOC26 = len_216059(a);
					LOC20 = (NI)(LOC26 + ((NI) -2));
				}
				LA21: ;
				constraint = HEX5BHEX5D_216238(a, LOC20);
				typ = 0;
				{
					if (!!(((*constraint).kind == ((NU8) 1)))) goto LA29;
					typ = semtypenode_426245(c, constraint, NIM_NIL);
					{
						NIM_BOOL LOC33;
						NI LOC35;
						LOC33 = 0;
						LOC33 = !(((*typ).kind == ((NU8) 59)));
						if (LOC33) goto LA34;
						LOC35 = 0;
						LOC35 = len_218339(typ);
						LOC33 = (LOC35 == ((NI) 0));
						LA34: ;
						if (!LOC33) goto LA36;
						{
							if (!((*typ).kind == ((NU8) 8))) goto LA40;
							{
								Ttypeseq215824* LOC46;
								TY367877 LOC47;
								if (!((*(*typ).sons->data[((NI) 0)]).kind == ((NU8) 0))) goto LA44;
								LOC46 = 0;
								LOC46 = (Ttypeseq215824*) newSeq((&NTI215824), 1);
								memset((void*)LOC47, 0, sizeof(LOC47));
								LOC47[0] = newtypes_265185(((NU8) 0), c);
								asgnRefNoCycle((void**) (&LOC46->data[0]), LOC47[0]);
								typ = newtypewithsons_265601(c, ((NU8) 8), LOC46);
							}
							LA44: ;
						}
						goto LA38;
						LA40: ;
						{
							typ = semgenericconstraints_439385(c, typ);
						}
						LA38: ;
					}
					LA36: ;
				}
				LA29: ;
				{
					if (!!(((*def).kind == ((NU8) 1)))) goto LA51;
					def = semconstexpr_427473(c, def);
					{
						if (!(typ == NIM_NIL)) goto LA55;
						{
							Ttypeseq215824* LOC61;
							TY367877 LOC62;
							if (!!(((*(*def).typ).kind == ((NU8) 8)))) goto LA59;
							LOC61 = 0;
							LOC61 = (Ttypeseq215824*) newSeq((&NTI215824), 1);
							memset((void*)LOC62, 0, sizeof(LOC62));
							LOC62[0] = (*def).typ;
							asgnRefNoCycle((void**) (&LOC61->data[0]), LOC62[0]);
							typ = newtypewithsons_265601(c, ((NU8) 59), LOC61);
						}
						LA59: ;
					}
					goto LA53;
					LA55: ;
					{
						asgnRefNoCycle((void**) (&(*def).typ), skiptypes_219113((*def).typ, 256));
						{
							NIM_BOOL LOC66;
							LOC66 = 0;
							LOC66 = containsgenerictype_249492((*def).typ);
							if (!!(LOC66)) goto LA67;
							def = fitnode_426230(c, typ, def);
						}
						LA67: ;
					}
					LA53: ;
				}
				LA51: ;
				{
					if (!(typ == NIM_NIL)) goto LA71;
					typ = newtypes_265185(((NU8) 12), c);
					{
						if (!(father == NIM_NIL)) goto LA75;
						(*typ).flags |= ((NU32)1)<<((((NU8) 25))%(sizeof(NU32)*8));
					}
					LA75: ;
				}
				LA71: ;
				(*typ).flags |= ((NU32)1)<<((((NU8) 23))%(sizeof(NU32)*8));
				{
					NI j_439596;
					NI HEX3Atmp_439661;
					NI res_439664;
					j_439596 = 0;
					HEX3Atmp_439661 = 0;
					HEX3Atmp_439661 = (NI)(L - ((NI) 3));
					res_439664 = ((NI) 0);
					{
						while (1) {
							Ttype215828* finaltype;
							Tsym215822* s;
							Tnode215790* LOC102;
							if (!(res_439664 <= HEX3Atmp_439661)) goto LA79;
							j_439596 = res_439664;
							{
								if (!(j_439596 == ((NI) 0))) goto LA82;
								finaltype = typ;
							}
							goto LA80;
							LA82: ;
							{
								finaltype = copytype_218470(typ, (*typ).owner, NIM_FALSE);
							}
							LA80: ;
							{
								NIM_BOOL LOC87;
								Tsym215822* LOC91;
								LOC87 = 0;
								LOC87 = ((*finaltype).kind == ((NU8) 59));
								if (LOC87) goto LA88;
								LOC87 = (((*typ).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
								LA88: ;
								if (!LOC87) goto LA89;
								LOC91 = 0;
								LOC91 = newsymg_426895(((NU8) 4), (*a).kindU.S6.sons->data[j_439596], c);
								s = linkto_216854(LOC91, finaltype);
							}
							goto LA85;
							LA89: ;
							{
								Tsym215822* LOC93;
								LOC93 = 0;
								LOC93 = newsymg_426895(((NU8) 7), (*a).kindU.S6.sons->data[j_439596], c);
								s = linkto_216854(LOC93, finaltype);
							}
							LA85: ;
							{
								if (!!(((*def).kind == ((NU8) 1)))) goto LA96;
								asgnRefNoCycle((void**) (&(*s).ast), def);
							}
							LA96: ;
							{
								if (!!((father == NIM_NIL))) goto LA100;
								addsonskipintlit_259678(father, (*s).typ);
							}
							LA100: ;
							(*s).position = len_216059(result);
							LOC102 = 0;
							LOC102 = newsymnode_217234(s);
							addson_217807(result, LOC102);
							{
								if (!!((((*s).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0))) goto LA105;
								adddecl_270445(c, s);
							}
							LA105: ;
							res_439664 += ((NI) 1);
						} LA79: ;
					}
				}
				res_439671 += ((NI) 1);
			} LA8: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, newproctype_437488)(Tcontext265020* c, Tlineinfo183337 info, Ttype215828* prev) {
	Ttype215828* result;
	Toptionentry265002* LOC1;
	Tnode215790* LOC2;
	result = 0;
	result = neworprevtype_433274(((NU8) 25), prev, c);
	LOC1 = 0;
	LOC1 = lastoptionentry_265169(c);
	(*result).callconv = (*LOC1).defaultcc;
	asgnRefNoCycle((void**) (&(*result).n), newnodei_217248(((NU8) 76), info));
	rawaddson_219408(result, NIM_NIL);
	LOC2 = 0;
	LOC2 = newnodei_217248(((NU8) 152), info);
	addson_217807((*result).n, LOC2);
	return result;
}

N_NIMCALL(Ttype215828*, semparamtype_437471)(Tcontext265020* c, Tnode215790* n, Tnode215790** constraint) {
	Ttype215828* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 40))) goto LA3;
		result = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		unsureAsgnRef((void**) (&(*constraint)), semnodekindconstraints_287446(n));
	}
	goto LA1;
	LA3: ;
	{
		result = semtypenode_426245(c, n, NIM_NIL);
	}
	LA1: ;
	return result;
}
N_NIMCALL(void, TMP3312)(void* p, NI op) {
	TY437422* a;
	a = (TY437422*)p;
	nimGCvisit((void*)(*a).genericparams436661, op);
	nimGCvisit((void*)(*a).paramname436663, op);
	nimGCvisit((void*)(*a).c436659, op);
}

N_CLOSURE(Ttype215828*, addimplicitgenericimpl_436679)(Ttype215828* typeclass, Tident190012* typid, void* ClEnv) {
	Ttype215828* result;
	TY437422* HEX3Aenvp_437425;
	Tident190012* finaltypid;
	Tsym215822* owner;
	Tsym215822* s;
	Tsym215822* LOC28;
	Tnode215790* LOC29;
{	result = 0;
	HEX3Aenvp_437425 = (TY437422*) ClEnv;
	{
		if (!((*HEX3Aenvp_437425).genericparams436661 == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!((typid == NIM_NIL))) goto LA7;
		finaltypid = typid;
	}
	goto LA5;
	LA7: ;
	{
		NimStringDesc* LOC10;
		LOC10 = 0;
		LOC10 = rawNewString((*HEX3Aenvp_437425).paramname436663->Sup.len + 5);
appendString(LOC10, (*HEX3Aenvp_437425).paramname436663);
appendString(LOC10, ((NimStringDesc*) &TMP3313));
		finaltypid = getident_190441(LOC10);
	}
	LA5: ;
	{
		NI i_436721;
		NI HEX3Atmp_436778;
		NI LOC12;
		NI res_436781;
		i_436721 = 0;
		HEX3Atmp_436778 = 0;
		LOC12 = 0;
		LOC12 = len_216059((*HEX3Aenvp_437425).genericparams436661);
		HEX3Atmp_436778 = (NI)(LOC12 - ((NI) 1));
		res_436781 = ((NI) 0);
		{
			while (1) {
				if (!(res_436781 <= HEX3Atmp_436778)) goto LA14;
				i_436721 = res_436781;
				{
					if (!((*(*(*(*(*HEX3Aenvp_437425).genericparams436661).kindU.S6.sons->data[i_436721]).kindU.S4.sym).name).Sup.id == (*finaltypid).Sup.id)) goto LA17;
					result = (*(*(*HEX3Aenvp_437425).genericparams436661).kindU.S6.sons->data[i_436721]).typ;
					goto BeforeRet;
				}
				LA17: ;
				res_436781 += ((NI) 1);
			} LA14: ;
		}
	}
	{
		if (!!(((*typeclass).sym == NIM_NIL))) goto LA21;
		owner = (*typeclass).sym;
	}
	goto LA19;
	LA21: ;
	{
		owner = getcurrowner_265210();
	}
	LA19: ;
	s = newsym_216684(((NU8) 7), finaltypid, owner, (*HEX3Aenvp_437425).info436664);
	{
		if (!(typid == NIM_NIL)) goto LA26;
		(*s).flags |= ((NU32)1)<<((((NU8) 29))%(sizeof(NU32)*8));
	}
	LA26: ;
	LOC28 = 0;
	LOC28 = linkto_216854(s, typeclass);
	(*typeclass).flags |= ((NU32)1)<<((((NU8) 24))%(sizeof(NU32)*8));
	(*s).position = len_216059((*HEX3Aenvp_437425).genericparams436661);
	LOC29 = 0;
	LOC29 = newsymnode_217234(s);
	addson_217807((*HEX3Aenvp_437425).genericparams436661, LOC29);
	result = typeclass;
	adddecl_270445((*HEX3Aenvp_437425).c436659, s);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, liftparamtype_436657)(Tcontext265020* c, NU8 prockind, Tnode215790* genericparams, Ttype215828* paramtype, NimStringDesc* paramname, Tlineinfo183337 info, NIM_BOOL anon) {
	Ttype215828* result;
	TY437422* HEX3Aenv_437430;
	NimStringDesc* LOC1;
	Tident190012* paramtypid;
{	result = 0;
	HEX3Aenv_437430 = 0;
	HEX3Aenv_437430 = (TY437422*) newObj((&NTI437421), sizeof(TY437422));
	asgnRef((void**) (&(*HEX3Aenv_437430).c436659), c);
	asgnRefNoCycle((void**) (&(*HEX3Aenv_437430).genericparams436661), genericparams);
	LOC1 = 0;
	LOC1 = (*HEX3Aenv_437430).paramname436663; (*HEX3Aenv_437430).paramname436663 = copyStringRC1(paramname);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	(*HEX3Aenv_437430).info436664 = info;
	{
		if (!(paramtype == NIM_NIL)) goto LA4;
		goto BeforeRet;
	}
	LA4: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = !(anon);
		if (!(LOC8)) goto LA9;
		LOC8 = !(((*paramtype).sym == NIM_NIL));
		LA9: ;
		if (!LOC8) goto LA10;
		paramtypid = (*(*paramtype).sym).name;
	}
	goto LA6;
	LA10: ;
	{
		paramtypid = NIM_NIL;
	}
	LA6: ;
	switch ((*paramtype).kind) {
	case ((NU8) 58):
	{
		TY436680 LOC14;
		Ttype215828* LOC15;
		memset((void*)(&LOC14), 0, sizeof(LOC14));
		LOC14.ClPrc = addimplicitgenericimpl_436679; LOC14.ClEnv = HEX3Aenv_437430;
		LOC15 = 0;
		LOC15 = newtypes_265185(((NU8) 12), (*HEX3Aenv_437430).c436659);
		result = LOC14.ClEnv? LOC14.ClPrc(LOC15, NIM_NIL, LOC14.ClEnv):((TMP3314)(LOC14.ClPrc))(LOC15, NIM_NIL);
	}
	break;
	case ((NU8) 59):
	{
		Ttype215828* base;
		Ttype215828* lifted_436833;
		Ttype215828* LOC25;
		TY436680 LOC37;
		Ttypeseq215824* LOC38;
		TY367877 LOC39;
		Ttype215828* LOC40;
		{
			if (!!(((*paramtype).n == NIM_NIL))) goto LA19;
			goto BeforeRet;
		}
		LA19: ;
		{
			if (!(((*paramtype).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0)) goto LA23;
			goto BeforeRet;
		}
		LA23: ;
		LOC25 = 0;
		LOC25 = base_241021(paramtype);
		lifted_436833 = liftparamtype_436657((*HEX3Aenv_437430).c436659, prockind, (*HEX3Aenv_437430).genericparams436661, LOC25, (*HEX3Aenv_437430).paramname436663, (*HEX3Aenv_437430).info436664, NIM_FALSE);
		{
			if (!!((lifted_436833 == NIM_NIL))) goto LA28;
			base = lifted_436833;
		}
		goto LA26;
		LA28: ;
		{
			base = base_241021(paramtype);
		}
		LA26: ;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = ismetatype_216803(base);
			if (!(LOC33)) goto LA34;
			LOC33 = (prockind == ((NU8) 16));
			LA34: ;
			if (!LOC33) goto LA35;
			localerror_188080((*HEX3Aenv_437430).info436664, ((NU16) 206), (*HEX3Aenv_437430).paramname436663);
		}
		LA35: ;
		memset((void*)(&LOC37), 0, sizeof(LOC37));
		LOC37.ClPrc = addimplicitgenericimpl_436679; LOC37.ClEnv = HEX3Aenv_437430;
		LOC38 = 0;
		LOC38 = (Ttypeseq215824*) newSeq((&NTI215824), 1);
		memset((void*)LOC39, 0, sizeof(LOC39));
		LOC39[0] = base;
		asgnRefNoCycle((void**) (&LOC38->data[0]), LOC39[0]);
		LOC40 = 0;
		LOC40 = newtypewithsons_265601((*HEX3Aenv_437430).c436659, ((NU8) 59), LOC38);
		result = LOC37.ClEnv? LOC37.ClPrc(LOC40, paramtypid, LOC37.ClEnv):((TMP3315)(LOC37.ClPrc))(LOC40, paramtypid);
		(*result).flags = ((*result).flags | 4194816);
	}
	break;
	case ((NU8) 8):
	{
		{
			TY436680 LOC55;
			Ttypeseq215824* LOC56;
			TY367877 LOC57;
			Ttype215828* LOC58;
			if (!!((((*paramtype).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0))) goto LA44;
			{
				NIM_BOOL LOC48;
				NIM_BOOL LOC49;
				Ttype215828* LOC50;
				LOC48 = 0;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = base_241021(paramtype);
				LOC49 = ((*LOC50).kind == ((NU8) 0));
				if (!(LOC49)) goto LA51;
				LOC49 = !((paramtypid == NIM_NIL));
				LA51: ;
				LOC48 = LOC49;
				if (!(LOC48)) goto LA52;
				LOC48 = ((*paramtypid).Sup.id == (*typedescid_436651).Sup.id);
				LA52: ;
				if (!LOC48) goto LA53;
				paramtypid = NIM_NIL;
			}
			LA53: ;
			memset((void*)(&LOC55), 0, sizeof(LOC55));
			LOC55.ClPrc = addimplicitgenericimpl_436679; LOC55.ClEnv = HEX3Aenv_437430;
			LOC56 = 0;
			LOC56 = (Ttypeseq215824*) newSeq((&NTI215824), 1);
			memset((void*)LOC57, 0, sizeof(LOC57));
			LOC57[0] = base_241021(paramtype);
			asgnRefNoCycle((void**) (&LOC56->data[0]), LOC57[0]);
			LOC58 = 0;
			LOC58 = newtypewithsons_265601((*HEX3Aenv_437430).c436659, ((NU8) 8), LOC56);
			result = LOC55.ClEnv? LOC55.ClPrc(LOC58, paramtypid, LOC55.ClEnv):((TMP3316)(LOC55.ClPrc))(LOC58, paramtypid);
		}
		LA44: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			NI LOC62;
			LOC62 = 0;
			LOC62 = sonslen_218327(paramtype);
			if (!(LOC62 == ((NI) 1))) goto LA63;
			result = liftparamtype_436657((*HEX3Aenv_437430).c436659, prockind, (*HEX3Aenv_437430).genericparams436661, (*paramtype).sons->data[((NI) 0)], (*HEX3Aenv_437430).paramname436663, (*HEX3Aenv_437430).info436664, NIM_TRUE);
		}
		LA63: ;
	}
	break;
	case ((NU8) 24):
	case ((NU8) 19):
	case ((NU8) 16):
	case ((NU8) 27):
	case ((NU8) 23):
	case ((NU8) 21):
	case ((NU8) 22):
	case ((NU8) 25):
	{
		{
			NIM_BOOL LOC68;
			Ttype215828* LOC70;
			Ttype215828* typ;
			Ttypeseq215824* LOC73;
			TY367877 LOC74;
			TY436680 LOC75;
			LOC68 = 0;
			LOC68 = ((*paramtype).kind == ((NU8) 24));
			if (!(LOC68)) goto LA69;
			LOC70 = 0;
			LOC70 = lastson_218377(paramtype);
			LOC68 = ((*LOC70).kind == ((NU8) 0));
			LA69: ;
			if (!LOC68) goto LA71;
			LOC73 = 0;
			LOC73 = (Ttypeseq215824*) newSeq((&NTI215824), 1);
			memset((void*)LOC74, 0, sizeof(LOC74));
			LOC74[0] = newtypes_265185((*paramtype).kind, (*HEX3Aenv_437430).c436659);
			asgnRefNoCycle((void**) (&LOC73->data[0]), LOC74[0]);
			typ = newtypewithsons_265601((*HEX3Aenv_437430).c436659, ((NU8) 51), LOC73);
			memset((void*)(&LOC75), 0, sizeof(LOC75));
			LOC75.ClPrc = addimplicitgenericimpl_436679; LOC75.ClEnv = HEX3Aenv_437430;
			result = LOC75.ClEnv? LOC75.ClPrc(typ, paramtypid, LOC75.ClEnv):((TMP3317)(LOC75.ClPrc))(typ, paramtypid);
		}
		goto LA66;
		LA71: ;
		{
			{
				NI i_436976;
				NI HEX3Atmp_437432;
				NI LOC78;
				NI res_437435;
				i_436976 = 0;
				HEX3Atmp_437432 = 0;
				LOC78 = 0;
				LOC78 = len_218339(paramtype);
				HEX3Atmp_437432 = (LOC78 - 1);
				res_437435 = ((NI) 0);
				{
					while (1) {
						Ttype215828* lifted;
						if (!(res_437435 <= HEX3Atmp_437432)) goto LA80;
						i_436976 = res_437435;
						{
							NimStringDesc* LOC85;
							if (!((*paramtype).sons->data[i_436976] == paramtype)) goto LA83;
							LOC85 = 0;
							LOC85 = typetostring_241017(paramtype, ((NU8) 0));
							globalerror_188071((*HEX3Aenv_437430).info436664, ((NU16) 127), LOC85);
						}
						LA83: ;
						lifted = liftparamtype_436657((*HEX3Aenv_437430).c436659, prockind, (*HEX3Aenv_437430).genericparams436661, (*paramtype).sons->data[i_436976], (*HEX3Aenv_437430).paramname436663, (*HEX3Aenv_437430).info436664, NIM_FALSE);
						{
							if (!!((lifted == NIM_NIL))) goto LA88;
							asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_436976]), lifted);
							result = paramtype;
						}
						LA88: ;
						res_437435 += ((NI) 1);
					} LA80: ;
				}
			}
		}
		LA66: ;
	}
	break;
	case ((NU8) 10):
	{
		Ttypeseq215824* LOC109;
		TY265646 LOC110;
		TY436680 LOC111;
		result = newtypes_265185(((NU8) 9), (*HEX3Aenv_437430).c436659);
		rawaddson_219408(result, paramtype);
		{
			NI i_437010;
			NI HEX3Atmp_437440;
			NI LOC92;
			NI res_437443;
			i_437010 = 0;
			HEX3Atmp_437440 = 0;
			LOC92 = 0;
			LOC92 = sonslen_218327(paramtype);
			HEX3Atmp_437440 = (NI)(LOC92 - ((NI) 2));
			res_437443 = ((NI) 0);
			{
				while (1) {
					if (!(res_437443 <= HEX3Atmp_437440)) goto LA94;
					i_437010 = res_437443;
					{
						Tnode215790* x;
						Ttype215828* LOC99;
						if (!((*(*paramtype).sons->data[i_437010]).kind == ((NU8) 59))) goto LA97;
						x = copynode_219542(emptynode_216801);
						asgnRefNoCycle((void**) (&(*x).typ), (*paramtype).sons->data[i_437010]);
						LOC99 = 0;
						LOC99 = maketypefromexpr_265557((*HEX3Aenv_437430).c436659, x);
						rawaddson_219408(result, LOC99);
					}
					goto LA95;
					LA97: ;
					{
						Ttype215828* LOC101;
						LOC101 = 0;
						LOC101 = newtypes_265185(((NU8) 58), (*HEX3Aenv_437430).c436659);
						rawaddson_219408(result, LOC101);
					}
					LA95: ;
					res_437443 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			Ttype215828* LOC104;
			Ttype215828* LOC107;
			TY436680 LOC108;
			LOC104 = 0;
			LOC104 = lastson_218377(paramtype);
			if (!((*LOC104).kind == ((NU8) 52))) goto LA105;
			(*result).kind = ((NU8) 53);
			LOC107 = 0;
			LOC107 = lastson_218377(paramtype);
			rawaddson_219408(result, LOC107);
			memset((void*)(&LOC108), 0, sizeof(LOC108));
			LOC108.ClPrc = addimplicitgenericimpl_436679; LOC108.ClEnv = HEX3Aenv_437430;
			result = LOC108.ClEnv? LOC108.ClPrc(result, paramtypid, LOC108.ClEnv):((TMP3318)(LOC108.ClPrc))(result, paramtypid);
			goto BeforeRet;
		}
		LA105: ;
		result = instgenericcontainer_429096((*HEX3Aenv_437430).c436659, (*(*paramtype).sym).info, result, NIM_TRUE);
		LOC109 = 0;
		LOC109 = (Ttypeseq215824*) newSeq((&NTI215824), 2);
		memset((void*)LOC110, 0, sizeof(LOC110));
		LOC110[0] = paramtype;
		LOC110[1] = result;
		asgnRefNoCycle((void**) (&LOC109->data[0]), LOC110[0]);
		asgnRefNoCycle((void**) (&LOC109->data[1]), LOC110[1]);
		result = newtypewithsons_265601((*HEX3Aenv_437430).c436659, ((NU8) 54), LOC109);
		memset((void*)(&LOC111), 0, sizeof(LOC111));
		LOC111.ClPrc = addimplicitgenericimpl_436679; LOC111.ClEnv = HEX3Aenv_437430;
		result = LOC111.ClEnv? LOC111.ClPrc(result, paramtypid, LOC111.ClEnv):((TMP3319)(LOC111.ClPrc))(result, paramtypid);
	}
	break;
	case ((NU8) 11):
	{
		Ttype215828* liftbody;
		Ttype215828* LOC134;
		{
			Ttype215828* LOC115;
			Ttype215828* cp;
			Tsym215822* LOC118;
			TY436680 LOC119;
			LOC115 = 0;
			LOC115 = lastson_218377(paramtype);
			if (!((*LOC115).kind == ((NU8) 52))) goto LA116;
			LOC118 = 0;
			LOC118 = getcurrowner_265210();
			cp = copytype_218470(paramtype, LOC118, NIM_FALSE);
			(*cp).kind = ((NU8) 53);
			memset((void*)(&LOC119), 0, sizeof(LOC119));
			LOC119.ClPrc = addimplicitgenericimpl_436679; LOC119.ClEnv = HEX3Aenv_437430;
			result = LOC119.ClEnv? LOC119.ClPrc(cp, paramtypid, LOC119.ClEnv):((TMP3320)(LOC119.ClPrc))(cp, paramtypid);
			goto BeforeRet;
		}
		LA116: ;
		{
			NI i_437063;
			NI HEX3Atmp_437448;
			NI LOC121;
			NI res_437451;
			i_437063 = 0;
			HEX3Atmp_437448 = 0;
			LOC121 = 0;
			LOC121 = len_218339(paramtype);
			HEX3Atmp_437448 = (NI)(LOC121 - ((NI) 2));
			res_437451 = ((NI) 1);
			{
				while (1) {
					Ttype215828* lifted;
					if (!(res_437451 <= HEX3Atmp_437448)) goto LA123;
					i_437063 = res_437451;
					lifted = liftparamtype_436657((*HEX3Aenv_437430).c436659, prockind, (*HEX3Aenv_437430).genericparams436661, (*paramtype).sons->data[i_437063], (*HEX3Aenv_437430).paramname436663, (*HEX3Aenv_437430).info436664, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA126;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_437063]), lifted);
						result = paramtype;
						{
							Ttype215828* LOC130;
							NimStringDesc* LOC133;
							LOC130 = 0;
							LOC130 = lastson_218377(result);
							if (!!((((*LOC130).flags &(1U<<((NU)(((NU8) 19))&31U)))!=0))) goto LA131;
							LOC133 = 0;
							LOC133 = HEX24_188183(TMP3321);
							internalerror_188113(LOC133);
						}
						LA131: ;
					}
					LA126: ;
					res_437451 += ((NI) 1);
				} LA123: ;
			}
		}
		LOC134 = 0;
		LOC134 = lastson_218377(paramtype);
		liftbody = liftparamtype_436657((*HEX3Aenv_437430).c436659, prockind, (*HEX3Aenv_437430).genericparams436661, LOC134, (*HEX3Aenv_437430).paramname436663, (*HEX3Aenv_437430).info436664, NIM_TRUE);
		{
			if (!!((liftbody == NIM_NIL))) goto LA137;
			result = liftbody;
			{
				NimStringDesc* LOC143;
				if (!!((((*result).flags &(1U<<((NU)(((NU8) 19))&31U)))!=0))) goto LA141;
				LOC143 = 0;
				LOC143 = HEX24_188183(TMP3321);
				internalerror_188113(LOC143);
			}
			LA141: ;
		}
		LA137: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			NI i_437141;
			NI HEX3Atmp_437456;
			NI LOC146;
			NI res_437459;
			i_437141 = 0;
			HEX3Atmp_437456 = 0;
			LOC146 = 0;
			LOC146 = len_218339(paramtype);
			HEX3Atmp_437456 = (LOC146 - 1);
			res_437459 = ((NI) 1);
			{
				while (1) {
					Ttype215828* lifted;
					if (!(res_437459 <= HEX3Atmp_437456)) goto LA148;
					i_437141 = res_437459;
					lifted = liftparamtype_436657((*HEX3Aenv_437430).c436659, prockind, (*HEX3Aenv_437430).genericparams436661, (*paramtype).sons->data[i_437141], (*HEX3Aenv_437430).paramname436663, (*HEX3Aenv_437430).info436664, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA151;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_437141]), lifted);
					}
					LA151: ;
					res_437459 += ((NI) 1);
				} LA148: ;
			}
		}
	}
	break;
	case ((NU8) 52):
	case ((NU8) 51):
	case ((NU8) 55):
	case ((NU8) 56):
	case ((NU8) 57):
	{
		TY436680 LOC154;
		Tsym215822* LOC155;
		Ttype215828* LOC156;
		memset((void*)(&LOC154), 0, sizeof(LOC154));
		LOC154.ClPrc = addimplicitgenericimpl_436679; LOC154.ClEnv = HEX3Aenv_437430;
		LOC155 = 0;
		LOC155 = getcurrowner_265210();
		LOC156 = 0;
		LOC156 = copytype_218470(paramtype, LOC155, NIM_TRUE);
		result = LOC154.ClEnv? LOC154.ClPrc(LOC156, paramtypid, LOC154.ClEnv):((TMP3322)(LOC154.ClPrc))(LOC156, paramtypid);
	}
	break;
	case ((NU8) 12):
	{
		markused_363244((*HEX3Aenv_437430).info436664, (*paramtype).sym);
		{
			if (!(((*paramtype).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0)) goto LA160;
			(*paramtype).flags &= ~(((NU32)1) << ((((NU8) 25)) % (sizeof(NU32)*8)));
			(*(*paramtype).sym).kind = ((NU8) 7);
		}
		LA160: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, semproctypenode_437494)(Tcontext265020* c, Tnode215790* n, Tnode215790* genericparams, Ttype215828* prev, NU8 kind, NIM_BOOL istype) {
	Ttype215828* result;
	Intset212035 cl;
	Intset212035 check;
	NI counter;
	Ttype215828* r;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	checkminsonslen_265962(n, ((NI) 1));
	result = newproctype_437488(c, (*n).info, prev);
	{
		NIM_BOOL LOC3;
		NI LOC5;
		LOC3 = 0;
		LOC3 = !((genericparams == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = sonslen_218351(genericparams);
		LOC3 = (LOC5 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA6;
		chckNil((void*)(&cl));
		memset((void*)(&cl), 0, sizeof(cl));
		initintset_212885((&cl));
	}
	LA6: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_212885((&check));
	counter = ((NI) 0);
	{
		NI i_437530;
		NI HEX3Atmp_437971;
		NI LOC9;
		NI res_437974;
		i_437530 = 0;
		HEX3Atmp_437971 = 0;
		LOC9 = 0;
		LOC9 = len_216059(n);
		HEX3Atmp_437971 = (NI)(LOC9 - ((NI) 1));
		res_437974 = ((NI) 1);
		{
			while (1) {
				if (!(res_437974 <= HEX3Atmp_437971)) goto LA11;
				i_437530 = res_437974;
				{
					Tnode215790* a;
					Ttype215828* typ;
					Tnode215790* def;
					Tnode215790* constraint;
					NI length;
					NIM_BOOL hastype;
					NIM_BOOL hasdefault;
					a = (*n).kindU.S6.sons->data[i_437530];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA15;
						{
							NIM_BOOL LOC19;
							LOC19 = 0;
							LOC19 = ((*a).kind == ((NU8) 3));
							if (!(LOC19)) goto LA20;
							LOC19 = (((*(*a).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
							LA20: ;
							if (!LOC19) goto LA21;
							goto LA12;
						}
						LA21: ;
						illformedast_265950(a);
					}
					LA15: ;
					checkminsonslen_265962(a, ((NI) 3));
					typ = NIM_NIL;
					def = NIM_NIL;
					constraint = NIM_NIL;
					length = sonslen_218351(a);
					hastype = !(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)));
					hasdefault = !(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)));
					{
						if (!hastype) goto LA25;
						typ = semparamtype_437471(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], &constraint);
					}
					LA25: ;
					{
						if (!hasdefault) goto LA29;
						def = semexprwithtype_426208(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))], 0);
						{
							if (!(typ == NIM_NIL)) goto LA33;
							typ = (*def).typ;
						}
						goto LA31;
						LA33: ;
						{
							if (!!((def == NIM_NIL))) goto LA36;
							{
								NIM_BOOL LOC40;
								LOC40 = 0;
								LOC40 = containsgenerictype_249492(typ);
								if (!!(LOC40)) goto LA41;
								def = fitnode_426230(c, typ, def);
							}
							LA41: ;
						}
						goto LA31;
						LA36: ;
						LA31: ;
					}
					LA29: ;
					{
						NIM_BOOL LOC45;
						NU8 tdef;
						LOC45 = 0;
						LOC45 = !(hastype);
						if (!(LOC45)) goto LA46;
						LOC45 = !(hasdefault);
						LA46: ;
						if (!LOC45) goto LA47;
						{
							if (!istype) goto LA51;
							localerror_188085((*a).info, ((NimStringDesc*) &TMP3310));
						}
						LA51: ;
						{
							if (!((196608 &(1U<<((NU)(kind)&31U)))!=0)) goto LA55;
							tdef = ((NU8) 6);
						}
						goto LA53;
						LA55: ;
						{
							tdef = ((NU8) 58);
						}
						LA53: ;
						{
							NimStringDesc* LOC62;
							if (!(tdef == ((NU8) 58))) goto LA60;
							LOC62 = 0;
							LOC62 = rendertree_234044(n, 0);
							message_188095((*a).info, ((NU16) 251), LOC62);
						}
						LA60: ;
						typ = newtypes_265185(tdef, c);
					}
					LA47: ;
					{
						Ttype215828* LOC65;
						LOC65 = 0;
						LOC65 = skiptypes_219113(typ, 2048);
						if (!((*LOC65).kind == ((NU8) 3))) goto LA66;
						goto LA12;
					}
					LA66: ;
					{
						NI j_437658;
						NI HEX3Atmp_437964;
						NI res_437967;
						j_437658 = 0;
						HEX3Atmp_437964 = 0;
						HEX3Atmp_437964 = (NI)(length - ((NI) 3));
						res_437967 = ((NI) 0);
						{
							while (1) {
								Tsym215822* arg;
								Ttype215828* lifted;
								Ttype215828* finaltype;
								Tnode215790* LOC87;
								if (!(res_437967 <= HEX3Atmp_437964)) goto LA70;
								j_437658 = res_437967;
								arg = newsymg_426895(((NU8) 3), (*a).kindU.S6.sons->data[j_437658], c);
								lifted = liftparamtype_436657(c, kind, genericparams, typ, (*(*arg).name).s, (*arg).info, NIM_FALSE);
								{
									if (!!((lifted == NIM_NIL))) goto LA73;
									finaltype = lifted;
								}
								goto LA71;
								LA73: ;
								{
									finaltype = skipintlit_259651(typ);
								}
								LA71: ;
								asgnRefNoCycle((void**) (&(*arg).typ), finaltype);
								(*arg).position = counter;
								asgnRefNoCycle((void**) (&(*arg).constraint), constraint);
								counter += ((NI) 1);
								{
									NIM_BOOL LOC78;
									LOC78 = 0;
									LOC78 = !((def == NIM_NIL));
									if (!(LOC78)) goto LA79;
									LOC78 = !(((*def).kind == ((NU8) 1)));
									LA79: ;
									if (!LOC78) goto LA80;
									asgnRefNoCycle((void**) (&(*arg).ast), copytree_219822(def));
								}
								LA80: ;
								{
									NIM_BOOL LOC84;
									LOC84 = 0;
									LOC84 = containsorincl_212862((&check), (*(*arg).name).Sup.id);
									if (!LOC84) goto LA85;
									localerror_188080((*(*a).kindU.S6.sons->data[j_437658]).info, ((NU16) 41), (*(*arg).name).s);
								}
								LA85: ;
								LOC87 = 0;
								LOC87 = newsymnode_217234(arg);
								addson_217807((*result).n, LOC87);
								rawaddson_219408(result, finaltype);
								addparamorresult_428872(c, arg, kind);
								{
									if (!(gcmd_161123 == ((NU8) 7))) goto LA90;
								}
								LA90: ;
								res_437967 += ((NI) 1);
							} LA70: ;
						}
					}
				} LA12: ;
				res_437974 += ((NI) 1);
			} LA11: ;
		}
	}
	r = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA94;
		r = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	}
	LA94: ;
	{
		if (!!((r == NIM_NIL))) goto LA98;
		{
			Ttype215828* LOC102;
			LOC102 = 0;
			LOC102 = skiptypes_219113(r, 2048);
			if (!!(((*LOC102).kind == ((NU8) 3)))) goto LA103;
			{
				if (!((*r).kind == ((NU8) 58))) goto LA107;
				r = newtypes_265185(((NU8) 6), c);
			}
			goto LA105;
			LA107: ;
			{
				if (!!(((*r).kind == ((NU8) 6)))) goto LA110;
				{
					NIM_BOOL LOC114;
					Ttype215828* lifted;
					LOC114 = 0;
					LOC114 = ((*r).sym == NIM_NIL);
					if (LOC114) goto LA115;
					LOC114 = !((((*(*r).sym).flags &(1U<<((NU)(((NU8) 29))&31U)))!=0));
					LA115: ;
					if (!LOC114) goto LA116;
					lifted = liftparamtype_436657(c, kind, genericparams, r, ((NimStringDesc*) &TMP3182), (*(*n).kindU.S6.sons->data[((NI) 0)]).info, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA120;
						r = lifted;
						(*r).flags |= ((NU32)1)<<((((NU8) 10))%(sizeof(NU32)*8));
					}
					LA120: ;
				}
				LA116: ;
				r = skipintlit_259651(r);
				{
					if (!(kind == ((NU8) 14))) goto LA124;
					(*result).flags |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
				}
				LA124: ;
			}
			goto LA105;
			LA110: ;
			LA105: ;
			asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), r);
			asgnRefNoCycle((void**) (&(*(*result).n).typ), r);
		}
		LA103: ;
	}
	LA98: ;
	{
		if (!!((genericparams == NIM_NIL))) goto LA128;
		{
			Tnode215790* n_437931;
			n_437931 = 0;
			{
				NI i_437983;
				NI HEX3Atmp_437985;
				NI LOC132;
				NI res_437987;
				i_437983 = 0;
				HEX3Atmp_437985 = 0;
				LOC132 = 0;
				LOC132 = len_216059(genericparams);
				HEX3Atmp_437985 = (LOC132 - 1);
				res_437987 = ((NI) 0);
				{
					while (1) {
						if (!(res_437987 <= HEX3Atmp_437985)) goto LA134;
						i_437983 = res_437987;
						n_437931 = (*genericparams).kindU.S6.sons->data[i_437983];
						{
							if (!(((*(*(*n_437931).kindU.S4.sym).typ).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0)) goto LA137;
							(*(*n_437931).kindU.S4.sym).kind = ((NU8) 7);
							(*(*(*n_437931).kindU.S4.sym).typ).flags &= ~(((NU32)1) << ((((NU8) 25)) % (sizeof(NU32)*8)));
						}
						LA137: ;
						res_437987 += ((NI) 1);
					} LA134: ;
				}
			}
		}
	}
	LA128: ;
	return result;
}

N_NIMCALL(void, semparamlist_426254)(Tcontext265020* c, Tnode215790* n, Tnode215790* genericparams, Tsym215822* s) {
	asgnRefNoCycle((void**) (&(*s).typ), semproctypenode_437494(c, n, genericparams, NIM_NIL, (*s).kind, NIM_FALSE));
	{
		if (!!(((196608 &(1U<<((NU)((*s).kind)&31U)))!=0))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
			if (!(LOC7)) goto LA8;
			LOC7 = ((*(*(*s).typ).sons->data[((NI) 0)]).kind == ((NU8) 7));
			LA8: ;
			if (!LOC7) goto LA9;
			localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3323));
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode215790*, newparam_443672)(Templctx439942* c, Tnode215790* n, Tsym215822* s) {
	Tnode215790* result;
	Tsym215822* x;
	result = 0;
	(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	x = (*(*(*(*(*c).owner).typ).n).kindU.S6.sons->data[(NI)((*s).position + ((NI) 1))]).kindU.S4.sym;
	result = newsymnode_217241(x, (*n).info);
	return result;
}

N_NIMCALL(Tnode215790*, handlesym_444001)(Templctx439942* c, Tnode215790* n, Tsym215822* s) {
	Tnode215790* result;
	result = 0;
	result = n;
	{
		if (!!((s == NIM_NIL))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = ((*s).owner == (*c).owner);
			if (!(LOC7)) goto LA8;
			LOC7 = ((*s).kind == ((NU8) 3));
			LA8: ;
			if (!LOC7) goto LA9;
			result = newparam_443672(c, n, s);
		}
		goto LA5;
		LA9: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = contains_212811((*c).tobind, (*s).Sup.id);
			if (!LOC12) goto LA13;
			result = symchoice_439732((*c).c, n, s, ((NU8) 0));
		}
		goto LA5;
		LA13: ;
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC18;
			NI LOC19;
			Tnode215790* LOC23;
			LOC16 = 0;
			LOC16 = ((*s).kind == ((NU8) 17));
			if (!(LOC16)) goto LA17;
			LOC18 = 0;
			LOC19 = 0;
			LOC19 = len_218339((*s).typ);
			LOC18 = (LOC19 == ((NI) 1));
			if (LOC18) goto LA20;
			LOC18 = (((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
			LA20: ;
			LOC16 = LOC18;
			LA17: ;
			if (!LOC16) goto LA21;
			LOC23 = 0;
			LOC23 = semtemplateexpr_426999((*c).c, n, s, 512);
			result = sempatternbody_443658(c, LOC23);
		}
		goto LA5;
		LA21: ;
		{
		}
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode215790*, sembindstmt_439822)(Tcontext265020* c, Tnode215790* n, Intset212035* tobind) {
	Tnode215790* result;
	result = 0;
	{
		NI i_439847;
		NI HEX3Atmp_439890;
		NI LOC2;
		NI res_439893;
		i_439847 = 0;
		HEX3Atmp_439890 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_439890 = (LOC2 - 1);
		res_439893 = ((NI) 0);
		{
			while (1) {
				Tnode215790* a;
				Tsym215822* s;
				if (!(res_439893 <= HEX3Atmp_439890)) goto LA4;
				i_439847 = res_439893;
				a = (*n).kindU.S6.sons->data[i_439847];
				s = qualifiedlookup_270652(c, a, 2);
				{
					Tnode215790* sc;
					if (!!((s == NIM_NIL))) goto LA7;
					sc = symchoice_439732(c, n, s, ((NU8) 0));
					{
						if (!((*sc).kind == ((NU8) 3))) goto LA11;
						incl_212832(tobind, (*(*sc).kindU.S4.sym).Sup.id);
					}
					goto LA9;
					LA11: ;
					{
						{
							Tnode215790* x_439875;
							x_439875 = 0;
							{
								NI i_439883;
								NI HEX3Atmp_439885;
								NI LOC16;
								NI res_439887;
								i_439883 = 0;
								HEX3Atmp_439885 = 0;
								LOC16 = 0;
								LOC16 = len_216059(sc);
								HEX3Atmp_439885 = (LOC16 - 1);
								res_439887 = ((NI) 0);
								{
									while (1) {
										if (!(res_439887 <= HEX3Atmp_439885)) goto LA18;
										i_439883 = res_439887;
										x_439875 = (*sc).kindU.S6.sons->data[i_439883];
										incl_212832(tobind, (*(*x_439875).kindU.S4.sym).Sup.id);
										res_439887 += ((NI) 1);
									} LA18: ;
								}
							}
						}
					}
					LA9: ;
				}
				goto LA5;
				LA7: ;
				{
					illformedast_265950(a);
				}
				LA5: ;
				res_439893 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_217248(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode215790*, expectparam_444064)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* s;
	result = 0;
	s = qualifiedlookup_270652((*c).c, n, 0);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = !((s == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC4 = ((*s).owner == (*c).owner);
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = ((*s).kind == ((NU8) 3));
		LA6: ;
		if (!LOC3) goto LA7;
		result = newparam_443672(c, n, s);
	}
	goto LA1;
	LA7: ;
	{
		localerror_188080((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3155));
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, stupidstmtlistexpr_444106)(Tnode215790* n) {
	NIM_BOOL result;
{	result = 0;
	{
		NI i_444120;
		NI HEX3Atmp_444133;
		NI LOC2;
		NI res_444136;
		i_444120 = 0;
		HEX3Atmp_444133 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_444133 = (NI)(LOC2 - ((NI) 2));
		res_444136 = ((NI) 0);
		{
			while (1) {
				if (!(res_444136 <= HEX3Atmp_444133)) goto LA4;
				i_444120 = res_444136;
				{
					Tnode215790* LOC7;
					LOC7 = 0;
					LOC7 = HEX5BHEX5D_216238(n, i_444120);
					if (!!(((*LOC7).kind == ((NU8) 1) || (*LOC7).kind == ((NU8) 125)))) goto LA8;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA8: ;
				res_444136 += ((NI) 1);
			} LA4: ;
		}
	}
	result = NIM_TRUE;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, sempatternbody_443658)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym215822* s;
		s = qualifiedlookup_270652((*c).c, n, 0);
		result = handlesym_444001(c, n, s);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_439822((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 40):
	{
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = len_216059(n);
			if (!!((LOC7 == ((NI) 2)))) goto LA8;
			localerror_188080((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3155));
		}
		goto LA5;
		LA8: ;
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2))) goto LA11;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), expectparam_444064(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		}
		goto LA5;
		LA11: ;
		{
			NIM_BOOL LOC14;
			Tnode215790* opr;
			LOC14 = 0;
			LOC14 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 30));
			if (!(LOC14)) goto LA15;
			LOC14 = ((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
			LA15: ;
			if (!LOC14) goto LA16;
			opr = (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)];
			{
				if (!eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3159))) goto LA20;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]), expectparam_444064(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]));
			}
			goto LA18;
			LA20: ;
			{
				localerror_188080((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3155));
			}
			LA18: ;
		}
		goto LA5;
		LA16: ;
		{
			localerror_188080((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3155));
		}
		LA5: ;
	}
	break;
	case ((NU8) 115):
	case ((NU8) 126):
	{
		{
			NIM_BOOL LOC27;
			Tnode215790* LOC30;
			LOC27 = 0;
			LOC27 = stupidstmtlistexpr_444106(n);
			if (!LOC27) goto LA28;
			LOC30 = 0;
			LOC30 = lastson_218364(n);
			result = sempatternbody_443658(c, LOC30);
		}
		goto LA25;
		LA28: ;
		{
			{
				NI i_444202;
				NI HEX3Atmp_444375;
				NI LOC33;
				NI res_444378;
				i_444202 = 0;
				HEX3Atmp_444375 = 0;
				LOC33 = 0;
				LOC33 = sonslen_218351(n);
				HEX3Atmp_444375 = (NI)(LOC33 - ((NI) 1));
				res_444378 = ((NI) 0);
				{
					while (1) {
						if (!(res_444378 <= HEX3Atmp_444375)) goto LA35;
						i_444202 = res_444378;
						asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_444202]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[i_444202]));
						res_444378 += ((NI) 1);
					} LA35: ;
				}
			}
		}
		LA25: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		Tsym215822* s;
		s = qualifiedlookup_270652((*c).c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
		{
			if (!!((s == NIM_NIL))) goto LA39;
			{
				NIM_BOOL LOC43;
				LOC43 = 0;
				LOC43 = ((*s).owner == (*c).owner);
				if (!(LOC43)) goto LA44;
				LOC43 = ((*s).kind == ((NU8) 3));
				LA44: ;
				if (!LOC43) goto LA45;
			}
			goto LA41;
			LA45: ;
			{
				NIM_BOOL LOC48;
				LOC48 = 0;
				LOC48 = contains_212811((*c).tobind, (*s).Sup.id);
				if (!LOC48) goto LA49;
			}
			goto LA41;
			LA49: ;
			{
				NIM_BOOL LOC52;
				NIM_BOOL LOC54;
				NI LOC55;
				Tnode215790* LOC59;
				LOC52 = 0;
				LOC52 = ((*s).kind == ((NU8) 17));
				if (!(LOC52)) goto LA53;
				LOC54 = 0;
				LOC55 = 0;
				LOC55 = len_218339((*s).typ);
				LOC54 = (LOC55 == ((NI) 1));
				if (LOC54) goto LA56;
				LOC54 = (((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
				LA56: ;
				LOC52 = LOC54;
				LA53: ;
				if (!LOC52) goto LA57;
				LOC59 = 0;
				LOC59 = semtemplateexpr_426999((*c).c, n, s, 512);
				result = sempatternbody_443658(c, LOC59);
				goto BeforeRet;
			}
			goto LA41;
			LA57: ;
			LA41: ;
		}
		LA39: ;
		{
			NIM_BOOL LOC62;
			Tnode215790* opr;
			LOC62 = 0;
			LOC62 = ((*n).kind == ((NU8) 29));
			if (!(LOC62)) goto LA63;
			LOC62 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
			LA63: ;
			if (!LOC62) goto LA64;
			opr = (*n).kindU.S6.sons->data[((NI) 0)];
			{
				NIM_BOOL LOC68;
				NI LOC72;
				LOC68 = 0;
				LOC68 = eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3324));
				if (LOC68) goto LA69;
				LOC68 = eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3325));
				LA69: ;
				if (!LOC68) goto LA70;
				LOC72 = 0;
				LOC72 = len_216059(n);
				result = newnodei_217401(((NU8) 153), (*n).info, LOC72);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), opr);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), expectparam_444064(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA66;
			LA70: ;
			{
				NI LOC76;
				if (!eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3159))) goto LA74;
				LOC76 = 0;
				LOC76 = len_216059(n);
				result = newnodei_217401(((NU8) 153), (*n).info, LOC76);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), opr);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA66;
			LA74: ;
			LA66: ;
		}
		LA64: ;
		{
			NIM_BOOL LOC79;
			Tnode215790* opr;
			LOC79 = 0;
			LOC79 = ((*n).kind == ((NU8) 30));
			if (!(LOC79)) goto LA80;
			LOC79 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
			LA80: ;
			if (!LOC79) goto LA81;
			opr = (*n).kindU.S6.sons->data[((NI) 0)];
			{
				NI LOC87;
				if (!eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3326))) goto LA85;
				LOC87 = 0;
				LOC87 = len_216059(n);
				result = newnodei_217401(((NU8) 153), (*n).info, LOC87);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), opr);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				goto BeforeRet;
			}
			LA85: ;
		}
		LA81: ;
		{
			NI i_444338;
			NI HEX3Atmp_444383;
			NI LOC89;
			NI res_444386;
			i_444338 = 0;
			HEX3Atmp_444383 = 0;
			LOC89 = 0;
			LOC89 = sonslen_218351(n);
			HEX3Atmp_444383 = (NI)(LOC89 - ((NI) 1));
			res_444386 = ((NI) 0);
			{
				while (1) {
					if (!(res_444386 <= HEX3Atmp_444383)) goto LA91;
					i_444338 = res_444386;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_444338]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[i_444338]));
					res_444386 += ((NI) 1);
				} LA91: ;
			}
		}
	}
	break;
	default:
	{
		switch ((*n).kind) {
		case ((NU8) 45):
		case ((NU8) 53):
		{
			Tsym215822* s;
			s = qualifiedlookup_270652((*c).c, n, 0);
			{
				if (!!((s == NIM_NIL))) goto LA96;
				{
					NIM_BOOL LOC100;
					LOC100 = 0;
					LOC100 = contains_212811((*c).tobind, (*s).Sup.id);
					if (!LOC100) goto LA101;
					result = symchoice_439732((*c).c, n, s, ((NU8) 0));
					goto BeforeRet;
				}
				goto LA98;
				LA101: ;
				{
					result = newidentnode_217228((*s).name, (*n).info);
					goto BeforeRet;
				}
				LA98: ;
			}
			LA96: ;
		}
		break;
		case ((NU8) 37):
		{
			{
				NI LOC107;
				LOC107 = 0;
				LOC107 = len_216059(n);
				if (!(LOC107 == ((NI) 1))) goto LA108;
				result = sempatternbody_443658(c, (*n).kindU.S6.sons->data[((NI) 0)]);
				goto BeforeRet;
			}
			LA108: ;
		}
		break;
		default:
		{
		}
		break;
		}
		{
			NI i_444371;
			NI HEX3Atmp_444391;
			NI LOC112;
			NI res_444394;
			i_444371 = 0;
			HEX3Atmp_444391 = 0;
			LOC112 = 0;
			LOC112 = sonslen_218351(n);
			HEX3Atmp_444391 = (NI)(LOC112 - ((NI) 1));
			res_444394 = ((NI) 0);
			{
				while (1) {
					if (!(res_444394 <= HEX3Atmp_444391)) goto LA114;
					i_444371 = res_444394;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_444371]), sempatternbody_443658(c, (*n).kindU.S6.sons->data[i_444371]));
					res_444394 += ((NI) 1);
				} LA114: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, sempattern_441109)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tscope215816* LOC1;
	Templctx439942 ctx;
	Tnode215790* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_212885((&ctx.tobind));
	initintset_212885((&ctx.tomixin));
	initintset_212885((&ctx.toinject));
	ctx.c = c;
	ctx.owner = getcurrowner_265210();
	LOC2 = 0;
	LOC2 = sempatternbody_443658((&ctx), n);
	result = flattenstmts_240587(LOC2);
	{
		if (!((*result).kind == ((NU8) 115) || (*result).kind == ((NU8) 126))) goto LA5;
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_216059(result);
			if (!(LOC9 == ((NI) 1))) goto LA10;
			result = (*result).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA7;
		LA10: ;
		{
			NI LOC13;
			LOC13 = 0;
			LOC13 = len_216059(result);
			if (!(LOC13 == ((NI) 0))) goto LA14;
			localerror_188080((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3155));
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
	closescope_270068(c);
	return result;
}

N_NIMCALL(void, addgenericparamlisttoscope_454705)(Tcontext265020* c, Tnode215790* n) {
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_265950(n);
	}
	LA3: ;
	{
		NI i_454729;
		NI HEX3Atmp_454743;
		NI LOC6;
		NI res_454746;
		i_454729 = 0;
		HEX3Atmp_454743 = 0;
		LOC6 = 0;
		LOC6 = sonslen_218351(n);
		HEX3Atmp_454743 = (NI)(LOC6 - ((NI) 1));
		res_454746 = ((NI) 0);
		{
			while (1) {
				Tnode215790* a;
				if (!(res_454746 <= HEX3Atmp_454743)) goto LA8;
				i_454729 = res_454746;
				a = (*n).kindU.S6.sons->data[i_454729];
				{
					if (!((*a).kind == ((NU8) 3))) goto LA11;
					adddecl_270445(c, (*a).kindU.S4.sym);
				}
				goto LA9;
				LA11: ;
				{
					illformedast_265950(a);
				}
				LA9: ;
				res_454746 += ((NI) 1);
			} LA8: ;
		}
	}
}

N_NIMCALL(void, addparams_426260)(Tcontext265020* c, Tnode215790* n, NU8 kind) {
	{
		NI i_455714;
		NI HEX3Atmp_455728;
		NI LOC2;
		NI res_455731;
		i_455714 = 0;
		HEX3Atmp_455728 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_455728 = (NI)(LOC2 - ((NI) 1));
		res_455731 = ((NI) 1);
		{
			while (1) {
				if (!(res_455731 <= HEX3Atmp_455728)) goto LA4;
				i_455714 = res_455731;
				{
					if (!((*(*n).kindU.S6.sons->data[i_455714]).kind == ((NU8) 3))) goto LA7;
					addparamorresult_428872(c, (*(*n).kindU.S6.sons->data[i_455714]).kindU.S4.sym, kind);
				}
				goto LA5;
				LA7: ;
				{
					illformedast_265950(n);
				}
				LA5: ;
				res_455731 += ((NI) 1);
			} LA4: ;
		}
	}
}

static N_INLINE(NIM_BOOL, importantcomments_161154)(void) {
	NIM_BOOL result;
	result = 0;
	result = ((16640 &(1U<<((NU)(gcmd_161123)&31U)))!=0);
	return result;
}

static N_INLINE(NI, find_449720)(Tsym215822** a, NI aLen0, Tsym215822* item) {
	NI result;
{	result = 0;
	{
		Tsym215822* i_449754;
		NI i_449778;
		i_449754 = 0;
		i_449778 = ((NI) 0);
		{
			while (1) {
				if (!(i_449778 < aLen0)) goto LA3;
				i_449754 = a[i_449778];
				{
					if (!(i_449754 == item)) goto LA6;
					goto BeforeRet;
				}
				LA6: ;
				result += ((NI) 1);
				i_449778 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_449710)(Tsym215822** a, NI aLen0, Tsym215822* item) {
	NIM_BOOL result;
	NI LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = find_449720(a, aLen0, item);
	result = (((NI) 0) <= LOC1);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, destroycase_449391)(Tcontext265020* c, Tnode215790* n, Tnode215790* holder) {
	Tnode215790* result;
	NI nontrivialfields;
	Tnodeseq215784* LOC1;
	Tnodeseq215784* LOC2;
	TY383939 LOC3;
	Tnode215790* LOC4;
	result = 0;
	nontrivialfields = ((NI) 0);
	LOC1 = 0;
	LOC1 = (Tnodeseq215784*) newSeq((&NTI215784), 0);
	result = newnode_217601(((NU8) 97), (*n).info, LOC1, NIM_NIL);
	LOC2 = 0;
	LOC2 = (Tnodeseq215784*) newSeq((&NTI215784), 2);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = holder;
	LOC3[1] = (*n).kindU.S6.sons->data[((NI) 0)];
	asgnRefNoCycle((void**) (&LOC2->data[0]), LOC3[0]);
	asgnRefNoCycle((void**) (&LOC2->data[1]), LOC3[1]);
	LOC4 = 0;
	LOC4 = newnode_217601(((NU8) 45), (*n).info, LOC2, NIM_NIL);
	addson_217807(result, LOC4);
	{
		NI i_449440;
		NI HEX3Atmp_449510;
		NI LOC6;
		NI res_449513;
		i_449440 = 0;
		HEX3Atmp_449510 = 0;
		LOC6 = 0;
		LOC6 = len_216059(n);
		HEX3Atmp_449510 = (NI)(LOC6 - ((NI) 1));
		res_449513 = ((NI) 1);
		{
			while (1) {
				Tnode215790* ni;
				Tnode215790* casebranch;
				NI LOC9;
				Slice88082 LOC10;
				Tnodeseq215784* LOC11;
				Tnode215790* stmt;
				Tnode215790* LOC12;
				if (!(res_449513 <= HEX3Atmp_449510)) goto LA8;
				i_449440 = res_449513;
				ni = HEX5BHEX5D_216238(n, i_449440);
				LOC9 = 0;
				LOC9 = len_216059(ni);
				LOC10 = HEX2EHEX2E_102424(((NI) 0), (NI)(LOC9 - ((NI) 2)));
				LOC11 = 0;
				LOC11 = HEX5BHEX5D_388135((*ni).kindU.S6.sons, LOC10);
				casebranch = newnode_217601((*ni).kind, (*ni).info, LOC11, NIM_NIL);
				LOC12 = 0;
				LOC12 = lastson_218364(ni);
				stmt = destroyfieldorfields_449338(c, LOC12, holder);
				{
					Tnodeseq215784* LOC17;
					Tnode215790* LOC18;
					if (!(stmt == NIM_NIL)) goto LA15;
					LOC17 = 0;
					LOC17 = (Tnodeseq215784*) newSeq((&NTI215784), 0);
					LOC18 = 0;
					LOC18 = newnode_217601(((NU8) 115), (*ni).info, LOC17, NIM_NIL);
					addson_217807(casebranch, LOC18);
				}
				goto LA13;
				LA15: ;
				{
					NI LOC20;
					addson_217807(casebranch, stmt);
					LOC20 = 0;
					LOC20 = len_216059(stmt);
					nontrivialfields += LOC20;
				}
				LA13: ;
				addson_217807(result, casebranch);
				res_449513 += ((NI) 1);
			} LA8: ;
		}
	}
	{
		if (!(nontrivialfields == ((NI) 0))) goto LA23;
		result = NIM_NIL;
	}
	LA23: ;
	return result;
}

N_NIMCALL(Tnode215790*, destroysym_449343)(Tcontext265020* c, Tsym215822* field, Tnode215790* holder) {
	Tnode215790* result;
	Ttype215828* destructablet;
	result = 0;
	destructablet = instantiatedestructor_449191(c, (*field).typ);
	{
		Tnodeseq215784* LOC5;
		TY383939 LOC6;
		Tnodeseq215784* LOC7;
		TY383939 LOC8;
		if (!!((destructablet == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = (Tnodeseq215784*) newSeq((&NTI215784), 2);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = usesym_373801((*destructablet).destructor);
		LOC7 = 0;
		LOC7 = (Tnodeseq215784*) newSeq((&NTI215784), 2);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = holder;
		LOC8[1] = usesym_373801(field);
		asgnRefNoCycle((void**) (&LOC7->data[0]), LOC8[0]);
		asgnRefNoCycle((void**) (&LOC7->data[1]), LOC8[1]);
		LOC6[1] = newnode_217601(((NU8) 45), (*field).info, LOC7, NIM_NIL);
		asgnRefNoCycle((void**) (&LOC5->data[0]), LOC6[0]);
		asgnRefNoCycle((void**) (&LOC5->data[1]), LOC6[1]);
		result = newnode_217601(((NU8) 27), (*field).info, LOC5, NIM_NIL);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode215790*, destroyfieldorfields_449338)(Tcontext265020* c, Tnode215790* field, Tnode215790* holder) {
	Tnode215790* result;
	result = 0;
	switch ((*field).kind) {
	case ((NU8) 139):
	{
		Tnode215790* stmt_449530;
		stmt_449530 = destroycase_449391(c, field, holder);
		{
			if (!!((stmt_449530 == NIM_NIL))) goto LA4;
			{
				if (!(result == NIM_NIL)) goto LA8;
				result = newnode_216401(((NU8) 115));
			}
			LA8: ;
			addson_217807(result, stmt_449530);
		}
		LA4: ;
	}
	break;
	case ((NU8) 3):
	{
		Tnode215790* stmt_449557;
		stmt_449557 = destroysym_449343(c, (*field).kindU.S4.sym, holder);
		{
			if (!!((stmt_449557 == NIM_NIL))) goto LA13;
			{
				if (!(result == NIM_NIL)) goto LA17;
				result = newnode_216401(((NU8) 115));
			}
			LA17: ;
			addson_217807(result, stmt_449557);
		}
		LA13: ;
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode215790* son_449584;
			son_449584 = 0;
			{
				NI i_449623;
				NI HEX3Atmp_449625;
				NI LOC22;
				NI res_449627;
				i_449623 = 0;
				HEX3Atmp_449625 = 0;
				LOC22 = 0;
				LOC22 = len_216059(field);
				HEX3Atmp_449625 = (LOC22 - 1);
				res_449627 = ((NI) 0);
				{
					while (1) {
						Tnode215790* stmt_449586;
						if (!(res_449627 <= HEX3Atmp_449625)) goto LA24;
						i_449623 = res_449627;
						son_449584 = (*field).kindU.S6.sons->data[i_449623];
						stmt_449586 = destroyfieldorfields_449338(c, son_449584, holder);
						{
							if (!!((stmt_449586 == NIM_NIL))) goto LA27;
							{
								if (!(result == NIM_NIL)) goto LA31;
								result = newnode_216401(((NU8) 115));
							}
							LA31: ;
							addson_217807(result, stmt_449586);
						}
						LA27: ;
						res_449627 += ((NI) 1);
					} LA24: ;
				}
			}
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC38;
			if (!NIM_TRUE) goto LA36;
			LOC38 = 0;
			LOC38 = HEX24_188183(TMP3339);
			internalerror_188113(LOC38);
		}
		LA36: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode215790*, generatedestructor_449630)(Tcontext265020* c, Ttype215828* t) {
	Tnode215790* result;
	Tnode215790* destructedobj;
	Tlineinfo183337 LOC12;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*t).n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_283344((*(*t).n).kindU.S6.sons, NIM_NIL);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	{
		NimStringDesc* LOC11;
		if (!!(((*(*t).n).kind == ((NU8) 138)))) goto LA9;
		LOC11 = 0;
		LOC11 = HEX24_188183(TMP3337);
		internalerror_188113(LOC11);
	}
	LA9: ;
	LOC12 = unknownlineinfo_184090();
	destructedobj = newidentnode_217228(destructorparam_449189, LOC12);
	result = destroyfieldorfields_449338(c, (*t).n, destructedobj);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym215822*, symfromtype_427016)(Ttype215828* t, Tlineinfo183337 info) {
	Tsym215822* result;
	Tident190012* LOC5;
{	result = 0;
	{
		if (!!(((*t).sym == NIM_NIL))) goto LA3;
		result = (*t).sym;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getident_190441(((NimStringDesc*) &TMP3341));
	result = newsym_216684(((NU8) 7), LOC5, (*t).owner, info);
	(*result).flags |= ((NU32)1)<<((((NU8) 29))%(sizeof(NU32)*8));
	asgnRefNoCycle((void**) (&(*result).typ), t);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, symnodefromtype_427045)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info) {
	Tnode215790* result;
	Tsym215822* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = symfromtype_427016(t, info);
	result = newsymnode_217241(LOC1, info);
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_265524(c, t));
	return result;
}

N_NIMCALL(Tnode215790*, semproc_449166)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = semprocaux_456683(c, n, ((NU8) 12), TMP3342, ((NU8) 0));
	return result;
}

N_NIMCALL(Ttype215828*, instantiatedestructor_449191)(Tcontext265020* c, Ttype215828* typ) {
	Ttype215828* result;
	Ttype215828* t;
	Ttype215828* LOC1;
	Ttype215828* typeholdinguserdefinition;
{	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_219113(typ, IL64(211106232532992));
	t = skipgenericalias_246606(LOC1);
	{
		if (!((*t).kind == ((NU8) 11))) goto LA4;
		typeholdinguserdefinition = base_241021(t);
	}
	goto LA2;
	LA4: ;
	{
		typeholdinguserdefinition = t;
	}
	LA2: ;
	{
		if (!!(((*typeholdinguserdefinition).destructor == NIM_NIL))) goto LA9;
		{
			TY449706 LOC13;
			NIM_BOOL LOC14;
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = analyzingdestructor_449170;
			LOC13[1] = destructoristrivial_449171;
			LOC14 = 0;
			LOC14 = contains_449710(LOC13, 2, (*typeholdinguserdefinition).destructor);
			if (!!(LOC14)) goto LA15;
			result = typeholdinguserdefinition;
			goto BeforeRet;
		}
		goto LA11;
		LA15: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA11: ;
	}
	LA9: ;
	t = skiptypes_219113(t, 2048);
	switch ((*t).kind) {
	case ((NU8) 24):
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			Ttype215828* LOC21;
			LOC21 = 0;
			LOC21 = instantiatedestructor_449191(c, (*t).sons->data[((NI) 0)]);
			if (!!((LOC21 == NIM_NIL))) goto LA22;
			asgnRefNoCycle((void**) (&(*t).destructor), getcompilerproc_259746(((NimStringDesc*) &TMP3336)));
			result = t;
			goto BeforeRet;
		}
		goto LA19;
		LA22: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA19: ;
	}
	break;
	case ((NU8) 18):
	case ((NU8) 17):
	{
		Tnode215790* generated;
		asgnRefNoCycle((void**) (&(*t).destructor), analyzingdestructor_449170);
		generated = generatedestructor_449630(c, t);
		{
			Tlineinfo183337 i;
			Tnode215790* fulldef;
			Tnodeseq215784* LOC35;
			TY218053 LOC36;
			Tnodeseq215784* LOC37;
			TY383939 LOC38;
			Tnodeseq215784* LOC39;
			TY464931 LOC40;
			Ttype215828* LOC41;
			Tnodeseq215784* LOC42;
			TY231280 LOC43;
			Tnode215790* semantizeddef;
			Tnode215790* LOC44;
			if (!!((generated == NIM_NIL))) goto LA28;
			{
				NimStringDesc* LOC34;
				if (!!(!(((*t).sym == NIM_NIL)))) goto LA32;
				LOC34 = 0;
				LOC34 = HEX24_188183(TMP3340);
				internalerror_188113(LOC34);
			}
			LA32: ;
			i = (*(*t).sym).info;
			LOC35 = 0;
			LOC35 = (Tnodeseq215784*) newSeq((&NTI215784), 7);
			memset((void*)LOC36, 0, sizeof(LOC36));
			LOC36[0] = newidentnode_217228(destructorname_449188, i);
			LOC36[1] = emptynode_216801;
			LOC36[2] = emptynode_216801;
			LOC37 = 0;
			LOC37 = (Tnodeseq215784*) newSeq((&NTI215784), 2);
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = emptynode_216801;
			LOC39 = 0;
			LOC39 = (Tnodeseq215784*) newSeq((&NTI215784), 3);
			memset((void*)LOC40, 0, sizeof(LOC40));
			LOC40[0] = newidentnode_217228(destructorparam_449189, i);
			LOC41 = 0;
			LOC41 = makevartype_265491(c, t);
			LOC40[1] = symnodefromtype_427045(c, LOC41, (*(*t).sym).info);
			LOC40[2] = emptynode_216801;
			asgnRefNoCycle((void**) (&LOC39->data[0]), LOC40[0]);
			asgnRefNoCycle((void**) (&LOC39->data[1]), LOC40[1]);
			asgnRefNoCycle((void**) (&LOC39->data[2]), LOC40[2]);
			LOC38[1] = newnode_217601(((NU8) 35), i, LOC39, NIM_NIL);
			asgnRefNoCycle((void**) (&LOC37->data[0]), LOC38[0]);
			asgnRefNoCycle((void**) (&LOC37->data[1]), LOC38[1]);
			LOC36[3] = newnode_217601(((NU8) 76), i, LOC37, NIM_NIL);
			LOC42 = 0;
			LOC42 = (Tnodeseq215784*) newSeq((&NTI215784), 1);
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = destructorpragma_449190;
			asgnRefNoCycle((void**) (&LOC42->data[0]), LOC43[0]);
			LOC36[4] = newnode_217601(((NU8) 90), i, LOC42, NIM_NIL);
			LOC36[5] = emptynode_216801;
			LOC36[6] = generated;
			asgnRefNoCycle((void**) (&LOC35->data[0]), LOC36[0]);
			asgnRefNoCycle((void**) (&LOC35->data[1]), LOC36[1]);
			asgnRefNoCycle((void**) (&LOC35->data[2]), LOC36[2]);
			asgnRefNoCycle((void**) (&LOC35->data[3]), LOC36[3]);
			asgnRefNoCycle((void**) (&LOC35->data[4]), LOC36[4]);
			asgnRefNoCycle((void**) (&LOC35->data[5]), LOC36[5]);
			asgnRefNoCycle((void**) (&LOC35->data[6]), LOC36[6]);
			fulldef = newnode_217601(((NU8) 79), i, LOC35, NIM_NIL);
			semantizeddef = semproc_449166(c, fulldef);
			LOC44 = 0;
			LOC44 = HEX5BHEX5D_216238(semantizeddef, ((NI) 0));
			asgnRefNoCycle((void**) (&(*t).destructor), (*LOC44).kindU.S4.sym);
			result = t;
			goto BeforeRet;
		}
		goto LA26;
		LA28: ;
		{
			asgnRefNoCycle((void**) (&(*t).destructor), destructoristrivial_449171);
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA26: ;
	}
	break;
	default:
	{
		result = NIM_NIL;
		goto BeforeRet;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, dodestructorstuff_449195)(Tcontext265020* c, Tsym215822* s, Tnode215790* n) {
	Ttype215828* t;
{	t = skiptypes_219113((*(*s).typ).sons->data[((NI) 1)], 8388608);
	{
		if (!((*t).kind == ((NU8) 9))) goto LA3;
		{
			NI i_449229;
			NI HEX3Atmp_449322;
			NI LOC6;
			NI res_449325;
			i_449229 = 0;
			HEX3Atmp_449322 = 0;
			LOC6 = 0;
			LOC6 = sonslen_218327(t);
			HEX3Atmp_449322 = (LOC6 - 1);
			res_449325 = ((NI) 1);
			{
				while (1) {
					if (!(res_449325 <= HEX3Atmp_449322)) goto LA8;
					i_449229 = res_449325;
					{
						if (!!(((*(*t).sons->data[i_449229]).kind == ((NU8) 12)))) goto LA11;
						localerror_188080((*n).info, ((NU16) 207), ((NimStringDesc*) &TMP3155));
						goto BeforeRet;
					}
					LA11: ;
					res_449325 += ((NI) 1);
				} LA8: ;
			}
		}
		t = base_241021(t);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*t).kind == ((NU8) 54))) goto LA14;
		t = base_241021(t);
		{
			if (!!(((*t).kind == ((NU8) 10)))) goto LA18;
			localerror_188080((*n).info, ((NU16) 207), ((NimStringDesc*) &TMP3155));
			goto BeforeRet;
		}
		LA18: ;
	}
	goto LA1;
	LA14: ;
	LA1: ;
	asgnRefNoCycle((void**) (&(*t).destructor), s);
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA22;
		{
			NI i_449278;
			NI HEX3Atmp_449331;
			NI LOC25;
			NI res_449334;
			i_449278 = 0;
			HEX3Atmp_449331 = 0;
			LOC25 = 0;
			LOC25 = sonslen_218327(t);
			HEX3Atmp_449331 = (NI)(LOC25 - ((NI) 1));
			res_449334 = ((NI) 0);
			{
				while (1) {
					if (!(res_449334 <= HEX3Atmp_449331)) goto LA27;
					i_449278 = res_449334;
					{
						Ttype215828* destructablet;
						{
							if (!((*t).sons->data[i_449278] == NIM_NIL)) goto LA31;
							goto LA28;
						}
						LA31: ;
						destructablet = instantiatedestructor_449191(c, (*t).sons->data[i_449278]);
						{
							Tnodeseq215784* LOC37;
							TY383939 LOC38;
							Tnode215790* LOC39;
							Tnode215790* LOC40;
							if (!!((destructablet == NIM_NIL))) goto LA35;
							LOC37 = 0;
							LOC37 = (Tnodeseq215784*) newSeq((&NTI215784), 2);
							memset((void*)LOC38, 0, sizeof(LOC38));
							LOC38[0] = usesym_373801((*destructablet).destructor);
							LOC39 = 0;
							LOC39 = HEX5BHEX5D_216238((*n).kindU.S6.sons->data[((NI) 3)], ((NI) 1));
							LOC38[1] = HEX5BHEX5D_216238(LOC39, ((NI) 0));
							asgnRefNoCycle((void**) (&LOC37->data[0]), LOC38[0]);
							asgnRefNoCycle((void**) (&LOC37->data[1]), LOC38[1]);
							LOC40 = 0;
							LOC40 = newnode_217601(((NU8) 27), (*(*t).sym).info, LOC37, NIM_NIL);
							addson_217807((*n).kindU.S6.sons->data[((NI) 6)], LOC40);
						}
						LA35: ;
					} LA28: ;
					res_449334 += ((NI) 1);
				} LA27: ;
			}
		}
	}
	LA22: ;
	}BeforeRet: ;
}

static N_INLINE(NIM_BOOL, experimentalmode_265970)(Tcontext265020* c) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = gexperimentalmode_161138;
	if (LOC1) goto LA2;
	LOC1 = (((*(*c).module).flags &(1U<<((NU)(((NU8) 30))&31U)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, semoverride_456439)(Tcontext265020* c, Tsym215822* s, Tnode215790* n) {
	NimStringDesc* LOC1;
{	LOC1 = 0;
	LOC1 = nsuNormalize((*(*s).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3331))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3332))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3333))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3334))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3335))) goto LA4;
	goto LA5;
	LA2: ;
	{
		dodestructorstuff_449195(c, s, n);
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = experimentalmode_265970(c);
			if (!!(LOC10)) goto LA11;
			localerror_188085((*n).info, ((NimStringDesc*) &TMP3343));
		}
		LA11: ;
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA6;
	LA3: ;
	{
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC17;
			NI LOC18;
			Ttype215828* LOC20;
			Ttype215828* t;
			Ttype215828* LOC24;
			Ttype215828* LOC25;
			LOC16 = 0;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_218339((*s).typ);
			LOC17 = (LOC18 == ((NI) 2));
			if (!(LOC17)) goto LA19;
			LOC20 = 0;
			LOC20 = skiptypes_219113((*(*s).typ).sons->data[((NI) 1)], IL64(211106232576256));
			LOC17 = ((*LOC20).kind == ((NU8) 22) || (*LOC20).kind == ((NU8) 21));
			LA19: ;
			LOC16 = LOC17;
			if (!(LOC16)) goto LA21;
			LOC16 = sametype_245628((*(*s).typ).sons->data[((NI) 1)], (*(*s).typ).sons->data[((NI) 0)], 0);
			LA21: ;
			if (!LOC16) goto LA22;
			LOC24 = 0;
			LOC24 = skiptypes_219113((*(*s).typ).sons->data[((NI) 1)], IL64(211106232576256));
			LOC25 = 0;
			LOC25 = lastson_218377(LOC24);
			t = skiptypes_219113(LOC25, IL64(211106232576256));
			{
				while (1) {
					{
						if (!((*t).kind == ((NU8) 10))) goto LA30;
						t = lastson_218377(t);
					}
					goto LA28;
					LA30: ;
					{
						if (!((*t).kind == ((NU8) 9))) goto LA33;
						t = (*t).sons->data[((NI) 0)];
					}
					goto LA28;
					LA33: ;
					{
						goto LA26;
					}
					LA28: ;
				}
			} LA26: ;
			{
				if (!((*t).kind == ((NU8) 17) || (*t).kind == ((NU8) 13) || (*t).kind == ((NU8) 14))) goto LA38;
				{
					if (!(*t).deepcopy == 0) goto LA42;
					asgnRefNoCycle((void**) (&(*t).deepcopy), s);
				}
				goto LA40;
				LA42: ;
				{
					NimStringDesc* LOC45;
					NimStringDesc* LOC46;
					LOC45 = 0;
					LOC46 = 0;
					LOC46 = typetostring_241017(t, ((NU8) 0));
					LOC45 = rawNewString(LOC46->Sup.len + 35);
appendString(LOC45, ((NimStringDesc*) &TMP3344));
appendString(LOC45, LOC46);
					localerror_188080((*n).info, ((NU16) 4), LOC45);
				}
				LA40: ;
			}
			goto LA36;
			LA38: ;
			{
				NimStringDesc* LOC48;
				NimStringDesc* LOC49;
				LOC48 = 0;
				LOC49 = 0;
				LOC49 = typetostring_241017(t, ((NU8) 0));
				LOC48 = rawNewString(LOC49->Sup.len + 27);
appendString(LOC48, ((NimStringDesc*) &TMP3345));
appendString(LOC48, LOC49);
				localerror_188080((*n).info, ((NU16) 4), LOC48);
			}
			LA36: ;
		}
		goto LA14;
		LA22: ;
		{
			localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3346));
		}
		LA14: ;
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA6;
	LA4: ;
	{
		Ttype215828* t;
		{
			if (!((*s).magic == ((NU8) 6))) goto LA54;
			goto BeforeRet;
		}
		LA54: ;
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
		t = (*s).typ;
		{
			NIM_BOOL LOC58;
			NIM_BOOL LOC59;
			NI LOC60;
			Ttype215828* obj;
			Ttype215828* objb;
			LOC58 = 0;
			LOC59 = 0;
			LOC60 = 0;
			LOC60 = len_218339(t);
			LOC59 = (LOC60 == ((NI) 3));
			if (!(LOC59)) goto LA61;
			LOC59 = ((*t).sons->data[((NI) 0)] == NIM_NIL);
			LA61: ;
			LOC58 = LOC59;
			if (!(LOC58)) goto LA62;
			LOC58 = ((*(*t).sons->data[((NI) 1)]).kind == ((NU8) 23));
			LA62: ;
			if (!LOC58) goto LA63;
			obj = (*(*t).sons->data[((NI) 1)]).sons->data[((NI) 0)];
			{
				while (1) {
					(*obj).flags |= ((NU32)1)<<((((NU8) 26))%(sizeof(NU32)*8));
					{
						if (!((*obj).kind == ((NU8) 10))) goto LA69;
						obj = lastson_218377(obj);
					}
					goto LA67;
					LA69: ;
					{
						if (!((*obj).kind == ((NU8) 9))) goto LA72;
						obj = (*obj).sons->data[((NI) 0)];
					}
					goto LA67;
					LA72: ;
					{
						goto LA65;
					}
					LA67: ;
				}
			} LA65: ;
			objb = (*t).sons->data[((NI) 2)];
			{
				while (1) {
					{
						if (!((*objb).kind == ((NU8) 10))) goto LA79;
						objb = lastson_218377(objb);
					}
					goto LA77;
					LA79: ;
					{
						if (!((*objb).kind == ((NU8) 9))) goto LA82;
						objb = (*objb).sons->data[((NI) 0)];
					}
					goto LA77;
					LA82: ;
					{
						goto LA75;
					}
					LA77: ;
				}
			} LA75: ;
			{
				NIM_BOOL LOC87;
				LOC87 = 0;
				LOC87 = ((*obj).kind == ((NU8) 17) || (*obj).kind == ((NU8) 13));
				if (!(LOC87)) goto LA88;
				LOC87 = sametype_245628(obj, objb, 0);
				LA88: ;
				if (!LOC87) goto LA89;
				{
					if (!(*obj).assignment == 0) goto LA93;
					asgnRefNoCycle((void**) (&(*obj).assignment), s);
				}
				goto LA91;
				LA93: ;
				{
					NimStringDesc* LOC96;
					NimStringDesc* LOC97;
					LOC96 = 0;
					LOC97 = 0;
					LOC97 = typetostring_241017(obj, ((NU8) 0));
					LOC96 = rawNewString(LOC97->Sup.len + 28);
appendString(LOC96, ((NimStringDesc*) &TMP3347));
appendString(LOC96, LOC97);
					localerror_188080((*n).info, ((NU16) 4), LOC96);
				}
				LA91: ;
				goto BeforeRet;
			}
			LA89: ;
		}
		LA63: ;
		localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3348));
	}
	goto LA6;
	LA5: ;
	{
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 30))&31U)))!=0)) goto LA101;
			localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3349));
		}
		LA101: ;
	}
	LA6: ;
	}BeforeRet: ;
}

N_NIMCALL(void, typeallowedcheck_426948)(Tlineinfo183337 info, Ttype215828* typ, NU8 kind) {
	Ttype215828* t;
	t = typeallowed_249040(typ, kind);
	{
		if (!!((t == NIM_NIL))) goto LA3;
		{
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			if (!(t == typ)) goto LA7;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = typetostring_241017(typ, ((NU8) 0));
			LOC9 = rawNewString(LOC10->Sup.len + 16);
appendString(LOC9, ((NimStringDesc*) &TMP3350));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3288));
			localerror_188085(info, LOC9);
		}
		goto LA5;
		LA7: ;
		{
			NimStringDesc* LOC12;
			NimStringDesc* LOC13;
			NimStringDesc* LOC14;
			LOC12 = 0;
			LOC13 = 0;
			LOC13 = typetostring_241017(t, ((NU8) 0));
			LOC14 = 0;
			LOC14 = typetostring_241017(typ, ((NU8) 0));
			LOC12 = rawNewString(LOC13->Sup.len + LOC14->Sup.len + 36);
appendString(LOC12, ((NimStringDesc*) &TMP3350));
appendString(LOC12, LOC13);
appendString(LOC12, ((NimStringDesc*) &TMP3351));
appendString(LOC12, LOC14);
appendString(LOC12, ((NimStringDesc*) &TMP3288));
			localerror_188085(info, LOC12);
		}
		LA5: ;
	}
	LA3: ;
}

static N_INLINE(void, paramstypecheck_426977)(Tcontext265020* c, Ttype215828* typ) {
	typeallowedcheck_426948((*(*typ).n).info, typ, ((NU8) 12));
}

N_NIMCALL(void, activate_426282)(Tcontext265020* c, Tnode215790* n) {
}

N_NIMCALL(void, changetype_426235)(Tnode215790* n, Ttype215828* newtype, NIM_BOOL check) {
{	switch ((*n).kind) {
	case ((NU8) 39):
	case ((NU8) 41):
	{
		{
			NI i_461021;
			NI HEX3Atmp_461213;
			NI LOC3;
			NI res_461216;
			i_461021 = 0;
			HEX3Atmp_461213 = 0;
			LOC3 = 0;
			LOC3 = sonslen_218351(n);
			HEX3Atmp_461213 = (NI)(LOC3 - ((NI) 1));
			res_461216 = ((NI) 0);
			{
				while (1) {
					Ttype215828* LOC6;
					if (!(res_461216 <= HEX3Atmp_461213)) goto LA5;
					i_461021 = res_461216;
					LOC6 = 0;
					LOC6 = elemtype_241383(newtype);
					changetype_426235((*n).kindU.S6.sons->data[i_461021], LOC6, check);
					res_461216 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 37):
	{
		Ttype215828* tup;
		tup = skiptypes_219113(newtype, 2048);
		{
			if (!!(((*tup).kind == ((NU8) 18)))) goto LA10;
			{
				if (!((*tup).kind == ((NU8) 17))) goto LA14;
				goto BeforeRet;
			}
			LA14: ;
			globalerror_188076((*n).info, ((NimStringDesc*) &TMP3366));
		}
		goto LA8;
		LA10: ;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = sonslen_218351(n);
			LOC17 = (((NI) 0) < LOC18);
			if (!(LOC17)) goto LA19;
			LOC17 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 34));
			LA19: ;
			if (!LOC17) goto LA20;
			{
				NI i_461064;
				NI HEX3Atmp_461221;
				NI LOC23;
				NI res_461224;
				i_461064 = 0;
				HEX3Atmp_461221 = 0;
				LOC23 = 0;
				LOC23 = sonslen_218351(n);
				HEX3Atmp_461221 = (NI)(LOC23 - ((NI) 1));
				res_461224 = ((NI) 0);
				{
					while (1) {
						Tnode215790* m;
						if (!(res_461224 <= HEX3Atmp_461221)) goto LA25;
						i_461064 = res_461224;
						m = (*(*n).kindU.S6.sons->data[i_461064]).kindU.S6.sons->data[((NI) 0)];
						{
							if (!!(((*m).kind == ((NU8) 3)))) goto LA28;
							globalerror_188076((*m).info, ((NimStringDesc*) &TMP3367));
							goto BeforeRet;
						}
						LA28: ;
						{
							Tsym215822* f;
							if (!!(((*tup).n == NIM_NIL))) goto LA32;
							f = getsymfromlist_222135((*tup).n, (*(*m).kindU.S4.sym).name, ((NI) 0));
							{
								NimStringDesc* LOC38;
								if (!(f == NIM_NIL)) goto LA36;
								LOC38 = 0;
								LOC38 = rawNewString((*(*(*m).kindU.S4.sym).name).s->Sup.len + 20);
appendString(LOC38, ((NimStringDesc*) &TMP3368));
appendString(LOC38, (*(*(*m).kindU.S4.sym).name).s);
								globalerror_188076((*m).info, LOC38);
								goto BeforeRet;
							}
							LA36: ;
							changetype_426235((*(*n).kindU.S6.sons->data[i_461064]).kindU.S6.sons->data[((NI) 1)], (*f).typ, check);
						}
						goto LA30;
						LA32: ;
						{
							changetype_426235((*(*n).kindU.S6.sons->data[i_461064]).kindU.S6.sons->data[((NI) 1)], (*tup).sons->data[i_461064], check);
						}
						LA30: ;
						res_461224 += ((NI) 1);
					} LA25: ;
				}
			}
		}
		goto LA8;
		LA20: ;
		{
			{
				NI i_461122;
				NI HEX3Atmp_461229;
				NI LOC42;
				NI res_461232;
				i_461122 = 0;
				HEX3Atmp_461229 = 0;
				LOC42 = 0;
				LOC42 = sonslen_218351(n);
				HEX3Atmp_461229 = (NI)(LOC42 - ((NI) 1));
				res_461232 = ((NI) 0);
				{
					while (1) {
						if (!(res_461232 <= HEX3Atmp_461229)) goto LA44;
						i_461122 = res_461232;
						changetype_426235((*n).kindU.S6.sons->data[i_461122], (*tup).sons->data[i_461122], check);
						res_461232 += ((NI) 1);
					} LA44: ;
				}
			}
		}
		LA8: ;
	}
	break;
	case ((NU8) 5) ... ((NU8) 15):
	{
		{
			NIM_BOOL LOC48;
			NI64 value;
			LOC48 = 0;
			LOC48 = check;
			if (!(LOC48)) goto LA49;
			LOC48 = !(((*n).kind == ((NU8) 15)));
			LA49: ;
			if (!LOC48) goto LA50;
			value = (*n).kindU.S1.intval;
			{
				NIM_BOOL LOC54;
				NI64 LOC55;
				NI64 LOC57;
				NimStringDesc* LOC60;
				NimStringDesc* LOC61;
				NimStringDesc* LOC62;
				LOC54 = 0;
				LOC55 = 0;
				LOC55 = firstord_241001(newtype);
				LOC54 = (value < LOC55);
				if (LOC54) goto LA56;
				LOC57 = 0;
				LOC57 = lastord_241004(newtype);
				LOC54 = (LOC57 < value);
				LA56: ;
				if (!LOC54) goto LA58;
				LOC60 = 0;
				LOC61 = 0;
				LOC61 = nimInt64ToStr(value);
				LOC62 = 0;
				LOC62 = typetostring_241017(newtype, ((NU8) 0));
				LOC60 = rawNewString(LOC61->Sup.len + LOC62->Sup.len + 19);
appendString(LOC60, ((NimStringDesc*) &TMP3369));
appendString(LOC60, LOC61);
appendString(LOC60, ((NimStringDesc*) &TMP3370));
appendString(LOC60, LOC62);
				localerror_188080((*n).info, ((NU16) 4), LOC60);
			}
			LA58: ;
		}
		LA50: ;
	}
	break;
	default:
	{
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), newtype);
	}BeforeRet: ;
}

N_NIMCALL(void, fixabstracttype_461360)(Tcontext265020* c, Tnode215790* n) {
	{
		NI i_461382;
		NI HEX3Atmp_461602;
		NI LOC2;
		NI res_461605;
		i_461382 = 0;
		HEX3Atmp_461602 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_461602 = (LOC2 - 1);
		res_461605 = ((NI) 1);
		{
			while (1) {
				Tnode215790* it;
				if (!(res_461605 <= HEX3Atmp_461602)) goto LA4;
				i_461382 = res_461605;
				it = (*n).kindU.S6.sons->data[i_461382];
				{
					NIM_BOOL LOC7;
					Ttype215828* LOC9;
					LOC7 = 0;
					LOC7 = ((*it).kind == ((NU8) 59));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = skiptypes_219113((*it).typ, IL64(211106240964864));
					LOC7 = !(((*LOC9).kind == ((NU8) 27) || (*LOC9).kind == ((NU8) 48)));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						Ttype215828* LOC14;
						Ttype215828* s;
						LOC14 = 0;
						LOC14 = skiptypes_219113((*(*it).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964864));
						if (!((*LOC14).kind == ((NU8) 5) || (*LOC14).kind == ((NU8) 4) || (*LOC14).kind == ((NU8) 18) || (*LOC14).kind == ((NU8) 19))) goto LA15;
						s = skiptypes_219113((*it).typ, IL64(211106240964864));
						{
							if (!!(((*s).kind == ((NU8) 6)))) goto LA19;
							changetype_426235((*it).kindU.S6.sons->data[((NI) 1)], s, NIM_TRUE);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_461382]), (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA15: ;
				}
				LA10: ;
				res_461605 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(NU8, isassignable_461627)(Tcontext265020* c, Tnode215790* n, NIM_BOOL isunsafeaddr) {
	NU8 result;
	result = 0;
	result = isassignable_287808((*(*c).p).owner, n, isunsafeaddr);
	return result;
}

N_NIMCALL(void, performprocvarcheck_449090)(Tcontext265020* c, Tnode215790* n, Tsym215822* s) {
	NI smoduleid;
	Tsym215822* LOC1;
	LOC1 = 0;
	LOC1 = getmodule_222144(s);
	smoduleid = (*LOC1).Sup.id;
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = !((((*s).flags &(1U<<((NU)(((NU8) 17))&31U)))!=0));
		if (!(LOC5)) goto LA6;
		LOC5 = ((*(*s).typ).callconv == ((NU8) 0));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA7;
		LOC4 = !((smoduleid == (*(*c).module).Sup.id));
		LA7: ;
		if (!LOC4) goto LA8;
		{
			{
				Tsym215822* module_449128;
				Tsymseq215792* HEX3Atmp_449132;
				NI i_449135;
				NI L_449137;
				module_449128 = 0;
				HEX3Atmp_449132 = 0;
				HEX3Atmp_449132 = (*c).friendmodules;
				i_449135 = ((NI) 0);
				L_449137 = (HEX3Atmp_449132 ? HEX3Atmp_449132->Sup.len : 0);
				{
					while (1) {
						if (!(i_449135 < L_449137)) goto LA13;
						module_449128 = HEX3Atmp_449132->data[i_449135];
						{
							if (!(smoduleid == (*module_449128).Sup.id)) goto LA16;
							goto LA10;
						}
						LA16: ;
						i_449135 += ((NI) 1);
					} LA13: ;
				}
			}
			localerror_188080((*n).info, ((NU16) 138), (*(*s).name).s);
		} LA10: ;
	}
	LA8: ;
}

N_NIMCALL(void, semprocvarcheck_449138)(Tcontext265020* c, Tnode215790* n_449141) {
	Tnode215790* n;
	n = skipconv_250082(n_449141);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = ((61440 &(1U<<((NU)((*(*n).kindU.S4.sym).kind)&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		performprocvarcheck_449090(c, n, (*n).kindU.S4.sym);
	}
	LA5: ;
}

N_NIMCALL(Tnode215790*, newhiddenaddrtaken_461633)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 65));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (gcmd_161123 == ((NU8) 2));
		if (LOC5) goto LA6;
		LOC5 = (((*(*c).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA6: ;
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA7;
		checksonslen_265958(n, ((NI) 1));
		result = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA7: ;
	{
		Ttype215828* LOC10;
		LOC10 = 0;
		LOC10 = makevartype_265491(c, (*n).typ);
		result = newnodeit_217801(((NU8) 64), (*n).info, LOC10);
		addson_217807(result, n);
		{
			NU8 LOC13;
			LOC13 = 0;
			LOC13 = isassignable_461627(c, n, NIM_FALSE);
			if (!!(((6 &(1U<<((NU)(LOC13)&7U)))!=0))) goto LA14;
			localerror_188080((*n).info, ((NU16) 131), ((NimStringDesc*) &TMP3155));
		}
		LA14: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, analyseifaddresstaken_461679)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC4;
			Ttype215828* LOC6;
			LOC4 = 0;
			LOC4 = !(((*(*n).kindU.S4.sym).typ == NIM_NIL));
			if (!(LOC4)) goto LA5;
			LOC6 = 0;
			LOC6 = skiptypes_219113((*(*n).kindU.S4.sym).typ, IL64(211106232576000));
			LOC4 = !(((*LOC6).kind == ((NU8) 23)));
			LA5: ;
			if (!LOC4) goto LA7;
			(*(*n).kindU.S4.sym).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
			result = newhiddenaddrtaken_461633(c, n);
		}
		LA7: ;
	}
	break;
	case ((NU8) 45):
	{
		checksonslen_265958(n, ((NI) 2));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_188100((*n).info, ((NimStringDesc*) &TMP3372));
			goto BeforeRet;
		}
		LA12: ;
		{
			Ttype215828* LOC16;
			LOC16 = 0;
			LOC16 = skiptypes_219113((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym).typ, IL64(211106232576000));
			if (!!(((*LOC16).kind == ((NU8) 23)))) goto LA17;
			(*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
			result = newhiddenaddrtaken_461633(c, n);
		}
		LA17: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_265962(n, ((NI) 1));
		{
			Ttype215828* LOC22;
			LOC22 = 0;
			LOC22 = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576000));
			if (!!(((*LOC22).kind == ((NU8) 23)))) goto LA23;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3))) goto LA27;
				(*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
			}
			LA27: ;
			result = newhiddenaddrtaken_461633(c, n);
		}
		LA23: ;
	}
	break;
	default:
	{
		result = newhiddenaddrtaken_461633(c, n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, analyseifaddresstakenincall_461828)(Tcontext265020* c, Tnode215790* n) {
	Ttype215828* t;
{	checkminsonslen_265962(n, ((NI) 1));
	t = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 2048);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = ((TMP3371[(NU)((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic)>>3] &(1U<<((NU)((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic)&7U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NI i_461871;
			NI HEX3Atmp_461988;
			NI LOC8;
			NI res_461991;
			i_461871 = 0;
			HEX3Atmp_461988 = 0;
			LOC8 = 0;
			LOC8 = sonslen_218351(n);
			HEX3Atmp_461988 = (NI)(LOC8 - ((NI) 1));
			res_461991 = ((NI) 1);
			{
				while (1) {
					if (!(res_461991 <= HEX3Atmp_461988)) goto LA10;
					i_461871 = res_461991;
					{
						NIM_BOOL LOC13;
						NIM_BOOL LOC14;
						NI LOC15;
						Ttype215828* LOC18;
						LOC13 = 0;
						LOC14 = 0;
						LOC15 = 0;
						LOC15 = sonslen_218327(t);
						LOC14 = (i_461871 < LOC15);
						if (!(LOC14)) goto LA16;
						LOC14 = !(((*t).sons->data[i_461871] == NIM_NIL));
						LA16: ;
						LOC13 = LOC14;
						if (!(LOC13)) goto LA17;
						LOC18 = 0;
						LOC18 = skiptypes_219113((*t).sons->data[i_461871], IL64(211106232576000));
						LOC13 = ((*LOC18).kind == ((NU8) 23));
						LA17: ;
						if (!LOC13) goto LA19;
						{
							NU8 LOC23;
							LOC23 = 0;
							LOC23 = isassignable_461627(c, (*n).kindU.S6.sons->data[i_461871], NIM_FALSE);
							if (!!(((6 &(1U<<((NU)(LOC23)&7U)))!=0))) goto LA24;
							{
								if (!!(((*(*n).kindU.S6.sons->data[i_461871]).kind == ((NU8) 64)))) goto LA28;
								localerror_188080((*(*n).kindU.S6.sons->data[i_461871]).info, ((NU16) 131), ((NimStringDesc*) &TMP3155));
							}
							LA28: ;
						}
						LA24: ;
					}
					LA19: ;
					res_461991 += ((NI) 1);
				} LA10: ;
			}
		}
		goto BeforeRet;
	}
	LA5: ;
	{
		NI i_461940;
		NI HEX3Atmp_461996;
		NI LOC31;
		NI res_461999;
		i_461940 = 0;
		HEX3Atmp_461996 = 0;
		LOC31 = 0;
		LOC31 = sonslen_218351(n);
		HEX3Atmp_461996 = (NI)(LOC31 - ((NI) 1));
		res_461999 = ((NI) 1);
		{
			while (1) {
				if (!(res_461999 <= HEX3Atmp_461996)) goto LA33;
				i_461940 = res_461999;
				{
					if (!((*(*n).kindU.S6.sons->data[i_461940]).kind == ((NU8) 32))) goto LA36;
					analyseifaddresstakenincall_461828(c, (*n).kindU.S6.sons->data[i_461940]);
				}
				LA36: ;
				semprocvarcheck_449138(c, (*n).kindU.S6.sons->data[i_461940]);
				{
					NIM_BOOL LOC40;
					NI LOC41;
					Ttype215828* LOC43;
					LOC40 = 0;
					LOC41 = 0;
					LOC41 = sonslen_218327(t);
					LOC40 = (i_461940 < LOC41);
					if (!(LOC40)) goto LA42;
					LOC43 = 0;
					LOC43 = skiptypes_219113((*t).sons->data[i_461940], IL64(211106232576000));
					LOC40 = ((*LOC43).kind == ((NU8) 23));
					LA42: ;
					if (!LOC40) goto LA44;
					{
						if (!!(((*(*n).kindU.S6.sons->data[i_461940]).kind == ((NU8) 64)))) goto LA48;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_461940]), analyseifaddresstaken_461679(c, (*n).kindU.S6.sons->data[i_461940]));
					}
					LA48: ;
				}
				LA44: ;
				res_461999 += ((NI) 1);
			} LA33: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode215790*, semaddr_462003)(Tcontext265020* c, Tnode215790* n, NIM_BOOL isunsafeaddr) {
	Tnode215790* result;
	Tnode215790* x;
	result = 0;
	result = newnodei_217248(((NU8) 63), (*n).info);
	x = semexprwithtype_426208(c, n, 0);
	{
		if (!((*x).kind == ((NU8) 3))) goto LA3;
		(*(*x).kindU.S4.sym).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	LA3: ;
	{
		NU8 LOC7;
		LOC7 = 0;
		LOC7 = isassignable_461627(c, x, isunsafeaddr);
		if (!!(((6 &(1U<<((NU)(LOC7)&7U)))!=0))) goto LA8;
		localerror_188080((*n).info, ((NU16) 129), ((NimStringDesc*) &TMP3155));
	}
	LA8: ;
	add_216114(result, x);
	asgnRefNoCycle((void**) (&(*result).typ), makeptrtype_265181(c, (*x).typ));
	return result;
}

N_NIMCALL(Tnode215790*, semtypeof_462043)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* typexpr;
	Ttype215828* LOC1;
	result = 0;
	result = newnodei_217248(((NU8) 132), (*n).info);
	typexpr = semexprwithtype_426208(c, n, 4);
	add_216114(result, typexpr);
	LOC1 = 0;
	LOC1 = skiptypes_219113((*typexpr).typ, IL64(562949953421568));
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_265524(c, LOC1));
	return result;
}

N_NIMCALL(Tnode215790*, semderef_464709)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* t;
	result = 0;
	checksonslen_265958(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	result = n;
	t = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 8390656);
	switch ((*t).kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	{
		asgnRefNoCycle((void**) (&(*n).typ), lastson_218377(t));
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode215790*, semsymgenericinstantiation_459027)(Tcontext265020* c, Tnode215790* n, Tsym215822* s) {
	Tnode215790* result;
	result = 0;
	result = symchoice_439732(c, n, s, ((NU8) 0));
	return result;
}

N_NIMCALL(Tnode215790*, explicitgenericsym_432585)(Tcontext265020* c, Tnode215790* n, Tsym215822* s) {
	Tnode215790* result;
	Tcandidate363206 m;
	Tsym215822* newinst;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_363270(c, (&m), s, n, ((NI) -1));
	newinst = generateinstance_429238(c, s, m.bindings, (*n).info);
	markused_363244((*n).info, s);
	result = newsymnode_217241(newinst, (*n).info);
	return result;
}

N_NIMCALL(Tnode215790*, explicitgenericinsterror_432581)(Tnode215790* n) {
	Tnode215790* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = rendertree_234044(n, 0);
	localerror_188080((*n).info, ((NU16) 128), LOC1);
	result = n;
	return result;
}

N_NIMCALL(Tnode215790*, explicitgenericinstantiation_432602)(Tcontext265020* c, Tnode215790* n, Tsym215822* s_432606) {
	Tnode215790* result;
	Tsym215822* s;
	Tnode215790* a;
{	result = 0;
	{
		NI i_432810;
		NI HEX3Atmp_432884;
		NI LOC2;
		NI res_432887;
		i_432810 = 0;
		HEX3Atmp_432884 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_432884 = (NI)(LOC2 - ((NI) 1));
		res_432887 = ((NI) 1);
		{
			while (1) {
				if (!(res_432887 <= HEX3Atmp_432884)) goto LA4;
				i_432810 = res_432887;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_432810]).typ), semtypenode_426245(c, (*n).kindU.S6.sons->data[i_432810], NIM_NIL));
				res_432887 += ((NI) 1);
			} LA4: ;
		}
	}
	s = s_432606;
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	{
		if (!((*a).kind == ((NU8) 3))) goto LA7;
		{
			NI LOC11;
			NI LOC12;
			NI expected;
			NimStringDesc* LOC15;
			NimStringDesc* LOC16;
			NI LOC17;
			NimStringDesc* LOC18;
			NimStringDesc* LOC19;
			LOC11 = 0;
			LOC11 = safelen_216081((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC12 = 0;
			LOC12 = len_216059(n);
			if (!!((LOC11 == (NI)(LOC12 - ((NI) 1))))) goto LA13;
			expected = safelen_216081((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = rendertree_234044(n, 0);
			LOC17 = 0;
			LOC17 = len_216059(n);
			LOC18 = 0;
			LOC18 = nimIntToStr((NI)(LOC17 - ((NI) 1)));
			LOC19 = 0;
			LOC19 = nimIntToStr(expected);
			LOC15 = rawNewString(LOC16->Sup.len + LOC18->Sup.len + LOC19->Sup.len + 48);
appendString(LOC15, ((NimStringDesc*) &TMP3375));
appendString(LOC15, LOC16);
appendString(LOC15, ((NimStringDesc*) &TMP3376));
appendString(LOC15, LOC18);
appendString(LOC15, ((NimStringDesc*) &TMP3377));
appendString(LOC15, LOC19);
			localerror_188080((*n).info, ((NU16) 4), LOC15);
			result = n;
			goto BeforeRet;
		}
		LA13: ;
		result = explicitgenericsym_432585(c, n, s);
	}
	goto LA5;
	LA7: ;
	{
		if (!((*a).kind == ((NU8) 56) || (*a).kind == ((NU8) 57))) goto LA21;
		result = newnodei_217248((*a).kind, (*n).info);
		{
			NI i_432854;
			NI HEX3Atmp_432892;
			NI LOC24;
			NI res_432895;
			i_432854 = 0;
			HEX3Atmp_432892 = 0;
			LOC24 = 0;
			LOC24 = len_216059(a);
			HEX3Atmp_432892 = (NI)(LOC24 - ((NI) 1));
			res_432895 = ((NI) 0);
			{
				while (1) {
					Tsym215822* candidate;
					if (!(res_432895 <= HEX3Atmp_432892)) goto LA26;
					i_432854 = res_432895;
					candidate = (*(*a).kindU.S6.sons->data[i_432854]).kindU.S4.sym;
					{
						if (!((61440 &(1U<<((NU)((*candidate).kind)&31U)))!=0)) goto LA29;
						{
							NI LOC33;
							NI LOC34;
							Tnode215790* LOC37;
							LOC33 = 0;
							LOC33 = safelen_216081((*(*candidate).ast).kindU.S6.sons->data[((NI) 2)]);
							LOC34 = 0;
							LOC34 = len_216059(n);
							if (!(LOC33 == (NI)(LOC34 - ((NI) 1)))) goto LA35;
							LOC37 = 0;
							LOC37 = explicitgenericsym_432585(c, n, candidate);
							add_216114(result, LOC37);
						}
						LA35: ;
					}
					LA29: ;
					res_432895 += ((NI) 1);
				} LA26: ;
			}
		}
		{
			NIM_BOOL LOC40;
			NI LOC41;
			LOC40 = 0;
			LOC41 = 0;
			LOC41 = len_216059(result);
			LOC40 = (LOC41 == ((NI) 1));
			if (!(LOC40)) goto LA42;
			LOC40 = ((*a).kind == ((NU8) 56));
			LA42: ;
			if (!LOC40) goto LA43;
			result = HEX5BHEX5D_216238(result, ((NI) 0));
		}
		LA43: ;
	}
	goto LA5;
	LA21: ;
	{
		result = explicitgenericinsterror_432581(n);
	}
	LA5: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semsubscript_462062)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Ttype215828* arr;
{	result = 0;
	{
		NI LOC3;
		Tnode215790* x;
		Tnode215790* LOC10;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		x = semderef_464709(c, n);
		{
			if (!(x == NIM_NIL)) goto LA8;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA8: ;
		result = newnodeit_217801(((NU8) 47), (*x).info, (*x).typ);
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_216238(x, ((NI) 0));
		add_216114(result, LOC10);
		goto BeforeRet;
	}
	LA4: ;
	checkminsonslen_265962(n, ((NI) 2));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 1024));
	arr = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 14682112);
	switch ((*arr).kind) {
	case ((NU8) 16):
	case ((NU8) 27):
	case ((NU8) 48):
	case ((NU8) 4):
	case ((NU8) 24):
	case ((NU8) 28):
	case ((NU8) 29):
	{
		Ttype215828* indextype;
		Tnode215790* arg;
		{
			NI LOC14;
			LOC14 = 0;
			LOC14 = len_216059(n);
			if (!!((LOC14 == ((NI) 2)))) goto LA15;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA15: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_463787((*n).kindU.S6.sons->data[((NI) 0)]));
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_464760;
			NI HEX3Atmp_464895;
			NI LOC18;
			NI res_464898;
			i_464760 = 0;
			HEX3Atmp_464895 = 0;
			LOC18 = 0;
			LOC18 = sonslen_218351(n);
			HEX3Atmp_464895 = (NI)(LOC18 - ((NI) 1));
			res_464898 = ((NI) 1);
			{
				while (1) {
					if (!(res_464898 <= HEX3Atmp_464895)) goto LA20;
					i_464760 = res_464898;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_464760]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[i_464760], (flags & 36)));
					res_464898 += ((NI) 1);
				} LA20: ;
			}
		}
		{
			if (!((*arr).kind == ((NU8) 16))) goto LA23;
			indextype = (*arr).sons->data[((NI) 0)];
		}
		goto LA21;
		LA23: ;
		{
			indextype = getsystype_259130(((NU8) 31));
		}
		LA21: ;
		arg = indextypesmatch_426294(c, indextype, (*(*n).kindU.S6.sons->data[((NI) 1)]).typ, (*n).kindU.S6.sons->data[((NI) 1)]);
		{
			if (!!((arg == NIM_NIL))) goto LA28;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), arg);
			result = n;
			asgnRefNoCycle((void**) (&(*result).typ), elemtype_241383(arr));
		}
		LA28: ;
	}
	break;
	case ((NU8) 8):
	{
		Ttype215828* LOC31;
		result = n;
		LOC31 = 0;
		LOC31 = semtypenode_426245(c, n, NIM_NIL);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_265524(c, LOC31));
	}
	break;
	case ((NU8) 18):
	{
		checksonslen_265958(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_463787((*n).kindU.S6.sons->data[((NI) 0)]));
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semconstexpr_427473(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		{
			Ttype215828* LOC35;
			NI64 idx;
			LOC35 = 0;
			LOC35 = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, 1083392);
			if (!((*LOC35).kind >= ((NU8) 31) && (*LOC35).kind <= ((NU8) 35))) goto LA36;
			idx = getordvalue_241118((*n).kindU.S6.sons->data[((NI) 1)]);
			{
				NIM_BOOL LOC40;
				NI LOC42;
				LOC40 = 0;
				LOC40 = (IL64(0) <= idx);
				if (!(LOC40)) goto LA41;
				LOC42 = 0;
				LOC42 = sonslen_218327(arr);
				LOC40 = (idx < ((NI64) (LOC42)));
				LA41: ;
				if (!LOC40) goto LA43;
				asgnRefNoCycle((void**) (&(*n).typ), (*arr).sons->data[idx]);
			}
			goto LA38;
			LA43: ;
			{
				localerror_188080((*n).info, ((NU16) 190), ((NimStringDesc*) &TMP3155));
			}
			LA38: ;
		}
		goto LA33;
		LA36: ;
		{
			localerror_188080((*n).info, ((NU16) 87), ((NimStringDesc*) &TMP3155));
		}
		LA33: ;
		result = n;
	}
	break;
	default:
	{
		Tsym215822* s;
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3))) goto LA50;
			s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		}
		goto LA48;
		LA50: ;
		{
			Tnode215790* LOC53;
			Tnode215790* LOC56;
			LOC53 = 0;
			LOC53 = HEX5BHEX5D_216238(n, ((NI) 0));
			if (!((*LOC53).kind == ((NU8) 56) || (*LOC53).kind == ((NU8) 57))) goto LA54;
			LOC56 = 0;
			LOC56 = HEX5BHEX5D_216238((*n).kindU.S6.sons->data[((NI) 0)], ((NI) 0));
			s = (*LOC56).kindU.S4.sym;
		}
		goto LA48;
		LA54: ;
		{
			s = NIM_NIL;
		}
		LA48: ;
		{
			NIM_BOOL LOC60;
			LOC60 = 0;
			LOC60 = !((s == NIM_NIL));
			if (!(LOC60)) goto LA61;
			LOC60 = ((61440 &(1U<<((NU)((*s).kind)&31U)))!=0);
			LA61: ;
			if (!LOC60) goto LA62;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semsymgenericinstantiation_459027(c, (*n).kindU.S6.sons->data[((NI) 0)], s));
			result = explicitgenericinstantiation_432602(c, n, s);
		}
		goto LA58;
		LA62: ;
		{
			NIM_BOOL LOC65;
			Ttype215828* LOC69;
			LOC65 = 0;
			LOC65 = !((s == NIM_NIL));
			if (!(LOC65)) goto LA66;
			LOC65 = ((*s).kind == ((NU8) 7));
			LA66: ;
			if (!LOC65) goto LA67;
			LOC69 = 0;
			LOC69 = semtypenode_426245(c, n, NIM_NIL);
			result = symnodefromtype_427045(c, LOC69, (*n).info);
		}
		goto LA58;
		LA67: ;
		{
			asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		}
		LA58: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semarrget_462081)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tnode215790* oldbracketexpr;
	result = 0;
	result = newnodei_217248(((NU8) 42), (*n).info);
	{
		NI i_462113;
		Slice88082 HEX3Atmp_462126;
		NI LOC2;
		i_462113 = 0;
		memset((void*)(&HEX3Atmp_462126), 0, sizeof(HEX3Atmp_462126));
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_462126 = HEX2EHEX2E_102424(((NI) 1), (LOC2 - 1));
		{
			NI x_462130;
			NI HEX3Atmp_462132;
			NI HEX3Atmp_462134;
			NI res_462136;
			x_462130 = 0;
			HEX3Atmp_462132 = 0;
			HEX3Atmp_462134 = 0;
			HEX3Atmp_462132 = HEX3Atmp_462126.a;
			HEX3Atmp_462134 = HEX3Atmp_462126.b;
			res_462136 = HEX3Atmp_462132;
			{
				while (1) {
					Tnode215790* LOC6;
					if (!(res_462136 <= HEX3Atmp_462134)) goto LA5;
					x_462130 = res_462136;
					i_462113 = x_462130;
					LOC6 = 0;
					LOC6 = HEX5BHEX5D_216238(n, i_462113);
					add_216114(result, LOC6);
					res_462136 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	oldbracketexpr = (*(*c).p).bracketexpr;
	result = semsubscript_462062(c, result, flags);
	asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	{
		NimStringDesc* LOC11;
		NimStringDesc* LOC12;
		if (!result == 0) goto LA9;
		LOC11 = 0;
		LOC12 = 0;
		LOC12 = HEX24_234066(n);
		LOC11 = rawNewString(LOC12->Sup.len + 19);
appendString(LOC11, ((NimStringDesc*) &TMP3378));
appendString(LOC11, LOC12);
		localerror_188085((*n).info, LOC11);
		result = n;
	}
	LA9: ;
	return result;
}

static N_INLINE(Tnode215790*, skipaddr_462067)(Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 64))) goto LA3;
		result = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semarrput_462140)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tnode215790* b;
	Tnode215790* LOC1;
	Tnode215790* LOC2;
	result = 0;
	b = newnodei_217248(((NU8) 42), (*n).info);
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_216238(n, ((NI) 1));
	LOC2 = 0;
	LOC2 = skipaddr_462067(LOC1);
	add_216114(b, LOC2);
	{
		NI i_462159;
		NI HEX3Atmp_462165;
		NI LOC4;
		NI res_462168;
		i_462159 = 0;
		HEX3Atmp_462165 = 0;
		LOC4 = 0;
		LOC4 = len_216059(n);
		HEX3Atmp_462165 = (NI)(LOC4 - ((NI) 2));
		res_462168 = ((NI) 2);
		{
			while (1) {
				Tnode215790* LOC7;
				if (!(res_462168 <= HEX3Atmp_462165)) goto LA6;
				i_462159 = res_462168;
				LOC7 = 0;
				LOC7 = HEX5BHEX5D_216238(n, i_462159);
				add_216114(b, LOC7);
				res_462168 += ((NI) 1);
			} LA6: ;
		}
	}
	result = newnodei_217401(((NU8) 73), (*n).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), b);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), lastson_218364(n));
	result = semasgn_462057(c, result, ((NU8) 1));
	return result;
}

N_NIMCALL(Tnode215790*, semasgnopr_462172)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217401(((NU8) 73), (*n).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), HEX5BHEX5D_216238(n, ((NI) 1)));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), HEX5BHEX5D_216238(n, ((NI) 2)));
	result = semasgn_462057(c, result, ((NU8) 2));
	return result;
}

N_NIMCALL(Tnode215790*, semispartof_462179)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	NU8 r;
	Tnode215790* LOC1;
	Tnode215790* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_216238(n, ((NI) 1));
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_216238(n, ((NI) 2));
	r = ispartof_416328(LOC1, LOC2);
	result = newintnodet_276016(((NI64) (r)), n);
	return result;
}

N_NIMCALL(Tnode215790*, evaltypetrait_462217)(Tnode215790* trait, Ttype215828* operand, Tsym215822* context) {
	Tnode215790* result;
	Ttype215828* typ;
	NimStringDesc* LOC1;
	result = 0;
	typ = skiptypes_219113(operand, 256);
	LOC1 = 0;
	LOC1 = nsuNormalize((*(*(*trait).kindU.S4.sym).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3381))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3382))) goto LA3;
	goto LA4;
	LA2: ;
	{
		NimStringDesc* LOC7;
		LOC7 = 0;
		LOC7 = typetostring_241017(typ, ((NU8) 0));
		result = newstrnode_216678(((NU8) 20), LOC7);
		asgnRefNoCycle((void**) (&(*result).typ), newtype_218107(((NU8) 28), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA3: ;
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_218339(typ);
		result = newintnode_216660(((NU8) 6), ((NI64) ((NI)(LOC9 - ((NI) (((*typ).kind == ((NU8) 25))))))));
		asgnRefNoCycle((void**) (&(*result).typ), newtype_218107(((NU8) 31), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA4: ;
	{
		{
			NimStringDesc* LOC15;
			if (!NIM_TRUE) goto LA13;
			LOC15 = 0;
			LOC15 = HEX24_188183(TMP3383);
			internalerror_188113(LOC15);
		}
		LA13: ;
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode215790*, semtypetraits_462251)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* t;
	result = 0;
	checkminsonslen_265962(n, ((NI) 2));
	t = (*(*n).kindU.S6.sons->data[((NI) 1)]).typ;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = !((t == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*t).kind == ((NU8) 8));
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_188183(TMP3379);
		internalerror_188113(LOC7);
	}
	LA5: ;
	{
		NI LOC10;
		Tnode215790* LOC13;
		Tsym215822* LOC14;
		LOC10 = 0;
		LOC10 = sonslen_218327(t);
		if (!(((NI) 0) < LOC10)) goto LA11;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_216238(n, ((NI) 0));
		LOC14 = 0;
		LOC14 = getcurrowner_265210();
		result = evaltypetrait_462217(LOC13, t, LOC14);
	}
	goto LA8;
	LA11: ;
	{
		result = n;
	}
	LA8: ;
	return result;
}

N_NIMCALL(NI, expectintlit_462194)(Tcontext265020* c, Tnode215790* n) {
	NI result;
	Tnode215790* x;
	result = 0;
	x = (*c).semconstexpr(c, n);
	switch ((*x).kind) {
	case ((NU8) 6) ... ((NU8) 10):
	{
		result = ((NI) ((*x).kindU.S1.intval));
	}
	break;
	default:
	{
		localerror_188080((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3155));
	}
	break;
	}
	return result;
}

static N_INLINE(NI, tolinenumber_184415)(Tlineinfo183337 info) {
	NI result;
	result = 0;
	result = ((NI) (info.line));
	return result;
}

N_NIMCALL(Tnode215790*, seminstantiationinfo_462201)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	NI idx;
	NI usefullpaths;
	Tlineinfo183337 info;
	Tnode215790* filename;
	Ttype215828* LOC1;
	Tnode215790* line;
	Ttype215828* LOC7;
	NI LOC8;
	result = 0;
	result = newnodeit_217801(((NU8) 37), (*n).info, (*n).typ);
	idx = expectintlit_462194(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	usefullpaths = expectintlit_462194(c, (*n).kindU.S6.sons->data[((NI) 2)]);
	info = getinfocontext_184242(idx);
	LOC1 = 0;
	LOC1 = getsystype_259130(((NU8) 28));
	filename = newnodeit_217801(((NU8) 20), (*n).info, LOC1);
	{
		if (!!((usefullpaths == ((NI) 0)))) goto LA4;
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofullpath_184269(info.fileindex));
	}
	goto LA2;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofilename_184265(info.fileindex));
	}
	LA2: ;
	LOC7 = 0;
	LOC7 = getsystype_259130(((NU8) 31));
	line = newnodeit_217801(((NU8) 6), (*n).info, LOC7);
	LOC8 = 0;
	LOC8 = tolinenumber_184415(info);
	(*line).kindU.S1.intval = ((NI64) (LOC8));
	add_216114(result, filename);
	add_216114(result, line);
	return result;
}

N_NIMCALL(Tnode215790*, semord_462286)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	NI64 LOC1;
	NI64 LOC2;
	Ttype215828* LOC3;
	result = 0;
	result = n;
	LOC1 = 0;
	LOC1 = firstord_241001((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC2 = 0;
	LOC2 = lastord_241004((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC3 = 0;
	LOC3 = getsystype_259130(((NU8) 31));
	asgnRefNoCycle((void**) (&(*result).typ), makerangetype_265915(c, LOC1, LOC2, (*n).info, LOC3));
	return result;
}

N_NIMCALL(Tnode215790*, semlowhigh_460622)(Tcontext265020* c, Tnode215790* n, NU8 m) {
	Tnode215790* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_188080((*n).info, ((NU16) 73), optostr_460628[(m)- 7]);
	}
	goto LA1;
	LA4: ;
	{
		Ttype215828* typ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
		typ = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(2306054115455707392));
		switch ((*typ).kind) {
		case ((NU8) 24):
		case ((NU8) 28):
		case ((NU8) 29):
		case ((NU8) 27):
		case ((NU8) 48):
		{
			asgnRefNoCycle((void**) (&(*n).typ), getsystype_259130(((NU8) 31)));
		}
		break;
		case ((NU8) 4):
		case ((NU8) 16):
		{
			asgnRefNoCycle((void**) (&(*n).typ), (*typ).sons->data[((NI) 0)]);
		}
		break;
		case ((NU8) 31) ... ((NU8) 35):
		case ((NU8) 2):
		case ((NU8) 1):
		case ((NU8) 14):
		case ((NU8) 41):
		case ((NU8) 42):
		case ((NU8) 43):
		{
			asgnRefNoCycle((void**) (&(*n).typ), skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(2306054115454658816)));
		}
		break;
		case ((NU8) 12):
		{
			Tnode215790* LOC11;
			LOC11 = 0;
			LOC11 = copytree_219822(n);
			asgnRefNoCycle((void**) (&(*n).typ), maketypefromexpr_265557(c, LOC11));
		}
		break;
		default:
		{
			localerror_188080((*n).info, ((NU16) 71), optostr_460628[(m)- 7]);
		}
		break;
		}
	}
	LA1: ;
	result = n;
	return result;
}

N_NIMCALL(Tnode215790*, semshallowcopy_462352)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	result = 0;
	{
		NI LOC3;
		Tnode215790* LOC6;
		Tnode215790* LOC7;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		result = newnodei_217248(((NU8) 74), (*n).info);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 1));
		add_216114(result, LOC6);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_216238(n, ((NI) 2));
		add_216114(result, LOC7);
		result = semasgn_462057(c, result, ((NU8) 0));
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_426985(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, sembindsym_462293)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* sl;
	Tnode215790* ismixin;
	Tnode215790* id;
	Tident190012* LOC13;
	Tsym215822* s;
{	result = 0;
	result = copynode_219542(n);
	add_216114(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	sl = semconstexpr_427473(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	{
		if (!!(((*sl).kind == ((NU8) 20) || (*sl).kind == ((NU8) 21) || (*sl).kind == ((NU8) 22)))) goto LA3;
		localerror_188080((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 6), ((NimStringDesc*) &TMP3155));
		result = errornode_265905(c, n);
		goto BeforeRet;
	}
	LA3: ;
	ismixin = semconstexpr_427473(c, (*n).kindU.S6.sons->data[((NI) 2)]);
	{
		NIM_BOOL LOC7;
		NIM_BOOL LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = !(((*ismixin).kind == ((NU8) 6)));
		if (LOC8) goto LA9;
		LOC8 = ((*ismixin).kindU.S1.intval < IL64(0));
		LA9: ;
		LOC7 = LOC8;
		if (LOC7) goto LA10;
		LOC7 = (IL64(2) < (*ismixin).kindU.S1.intval);
		LA10: ;
		if (!LOC7) goto LA11;
		localerror_188080((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
		result = errornode_265905(c, n);
		goto BeforeRet;
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = getident_190441((*sl).kindU.S3.strval);
	id = newidentnode_217228(LOC13, (*n).info);
	s = qualifiedlookup_270652(c, id, 2);
	{
		Tnode215790* sc;
		if (!!((s == NIM_NIL))) goto LA16;
		sc = symchoice_439732(c, id, s, ((NU8) ((*ismixin).kindU.S1.intval)));
		add_216114(result, sc);
	}
	goto LA14;
	LA16: ;
	{
		localerror_188080((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 63), (*sl).kindU.S3.strval);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isnegative_462371)(Tnode215790* n_462373) {
	NIM_BOOL result;
	Tnode215790* n;
	result = 0;
	n = skipconv_250082(n_462373);
	{
		if (!((*n).kind >= ((NU8) 5) && (*n).kind <= ((NU8) 15))) goto LA3;
		result = ((*n).kindU.S1.intval < IL64(0));
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = ((*n).kind == ((NU8) 27) || (*n).kind == ((NU8) 29) || (*n).kind == ((NU8) 30) || (*n).kind == ((NU8) 31) || (*n).kind == ((NU8) 26) || (*n).kind == ((NU8) 28) || (*n).kind == ((NU8) 32));
		if (!(LOC6)) goto LA7;
		LOC6 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		LA7: ;
		if (!LOC6) goto LA8;
		result = ((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU8) 95) || (*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU8) 96));
	}
	goto LA1;
	LA8: ;
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isstrangearray_462357)(Ttype215828* t_462359) {
	NIM_BOOL result;
	Ttype215828* t;
	NIM_BOOL LOC1;
	NI64 LOC3;
	result = 0;
	t = skiptypes_219113(t_462359, IL64(211106232576256));
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 16));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = firstord_241001(t);
	LOC1 = !((LOC3 == IL64(0)));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode215790*, magicsafteroverloadresolution_462423)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tnode215790* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_216238(n, ((NI) 0));
	switch ((*(*LOC1).kindU.S4.sym).magic) {
	case ((NU8) 13):
	{
		Tnode215790* LOC3;
		checksonslen_265958(n, ((NI) 2));
		LOC3 = 0;
		LOC3 = HEX5BHEX5D_216238(n, ((NI) 0));
		result = semaddr_462003(c, (*n).kindU.S6.sons->data[((NI) 1)], eqStrings((*(*(*LOC3).kindU.S4.sym).name).s, ((NimStringDesc*) &TMP3374)));
	}
	break;
	case ((NU8) 14):
	{
		checksonslen_265958(n, ((NI) 2));
		result = semtypeof_462043(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 4):
	{
		result = semarrget_462081(c, n, flags);
	}
	break;
	case ((NU8) 5):
	{
		result = semarrput_462140(c, n, flags);
	}
	break;
	case ((NU8) 6):
	{
		result = semasgnopr_462172(c, n);
	}
	break;
	case ((NU8) 152):
	{
		result = semispartof_462179(c, n, flags);
	}
	break;
	case ((NU8) 10):
	{
		result = semtypetraits_462251(c, n);
	}
	break;
	case ((NU8) 153):
	{
		Tnode215790* LOC11;
		NimStringDesc* LOC12;
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_216238(n, ((NI) 1));
		LOC12 = 0;
		LOC12 = rendertree_234044(LOC11, 4);
		result = newstrnodet_276024(LOC12, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 28)));
	}
	break;
	case ((NU8) 251):
	{
		result = seminstantiationinfo_462201(c, n);
	}
	break;
	case ((NU8) 28):
	{
		result = semord_462286(c, n);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 7):
	{
		Tnode215790* LOC16;
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_216238(n, ((NI) 0));
		result = semlowhigh_460622(c, n, (*(*LOC16).kindU.S4.sym).magic);
	}
	break;
	case ((NU8) 18):
	{
		result = semshallowcopy_462352(c, n, flags);
	}
	break;
	case ((NU8) 241):
	{
		result = sembindsym_462293(c, n);
	}
	break;
	case ((NU8) 206):
	{
		Tnode215790* LOC20;
		result = n;
		LOC20 = 0;
		LOC20 = HEX5BHEX5D_216238(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*result).typ), (*LOC20).typ);
	}
	break;
	case ((NU8) 139):
	{
		result = n;
		{
			if (!!((*(*c).p).bracketexpr == 0)) goto LA24;
			{
				NIM_BOOL LOC28;
				NIM_BOOL LOC30;
				NI LOC31;
				LOC28 = 0;
				LOC28 = isnegative_462371((*n).kindU.S6.sons->data[((NI) 1)]);
				if (LOC28) goto LA29;
				LOC30 = 0;
				LOC31 = 0;
				LOC31 = len_216059(n);
				LOC30 = (((NI) 2) < LOC31);
				if (!(LOC30)) goto LA32;
				LOC30 = isnegative_462371((*n).kindU.S6.sons->data[((NI) 2)]);
				LA32: ;
				LOC28 = LOC30;
				LA29: ;
				if (!LOC28) goto LA33;
				localerror_188085((*n).info, ((NimStringDesc*) &TMP3386));
			}
			LA33: ;
		}
		LA24: ;
	}
	break;
	case ((NU8) 15):
	{
		Tnode215790* bracketexpr;
		{
			NI LOC38;
			LOC38 = 0;
			LOC38 = len_216059(n);
			if (!(LOC38 == ((NI) 3))) goto LA39;
			bracketexpr = (*n).kindU.S6.sons->data[((NI) 2)];
		}
		goto LA36;
		LA39: ;
		{
			bracketexpr = (*(*c).p).bracketexpr;
		}
		LA36: ;
		{
			if (!bracketexpr == 0) goto LA44;
			localerror_188085((*n).info, ((NimStringDesc*) &TMP3387));
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		goto LA42;
		LA44: ;
		{
			NU8 LOC47;
			NimStringDesc* LOC50;
			NimStringDesc* LOC51;
			LOC47 = 0;
			LOC47 = checkforsideeffects_287650(bracketexpr);
			if (!!((LOC47 == ((NU8) 2)))) goto LA48;
			LOC50 = 0;
			LOC50 = rendertree_234044(bracketexpr, 0);
			LOC51 = 0;
			LOC51 = nsuFormatSingleElem(((NimStringDesc*) &TMP3388), LOC50);
			localerror_188085((*n).info, LOC51);
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		goto LA42;
		LA48: ;
		{
			NIM_BOOL LOC53;
			NimStringDesc* LOC56;
			NimStringDesc* LOC57;
			LOC53 = 0;
			LOC53 = isstrangearray_462357((*bracketexpr).typ);
			if (!LOC53) goto LA54;
			LOC56 = 0;
			LOC56 = rendertree_234044(bracketexpr, 0);
			LOC57 = 0;
			LOC57 = nsuFormatSingleElem(((NimStringDesc*) &TMP3389), LOC56);
			localerror_188085((*n).info, LOC57);
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		goto LA42;
		LA54: ;
		{
			Tnode215790* lenexpr;
			Tident190012* LOC59;
			Tnode215790* LOC60;
			Tnode215790* lenexprb;
			lenexpr = newnodei_217248(((NU8) 27), (*n).info);
			LOC59 = 0;
			LOC59 = getident_190441(((NimStringDesc*) &TMP3390));
			LOC60 = 0;
			LOC60 = newidentnode_217228(LOC59, (*n).info);
			add_216114(lenexpr, LOC60);
			add_216114(lenexpr, bracketexpr);
			lenexprb = semexprwithtype_426208(c, lenexpr, 0);
			{
				NIM_BOOL LOC63;
				NIM_BOOL LOC65;
				NimStringDesc* LOC68;
				NimStringDesc* LOC69;
				LOC63 = 0;
				LOC63 = (*lenexprb).typ == 0;
				if (LOC63) goto LA64;
				LOC65 = 0;
				LOC65 = isordinaltype_241057((*lenexprb).typ);
				LOC63 = !(LOC65);
				LA64: ;
				if (!LOC63) goto LA66;
				LOC68 = 0;
				LOC68 = rendertree_234044(lenexpr, 0);
				LOC69 = 0;
				LOC69 = nsuFormatSingleElem(((NimStringDesc*) &TMP3391), LOC68);
				localerror_188085((*n).info, LOC69);
				result = (*n).kindU.S6.sons->data[((NI) 1)];
			}
			goto LA61;
			LA66: ;
			{
				Ttype215828* LOC71;
				Tsym215822* LOC72;
				Tnode215790* LOC73;
				LOC71 = 0;
				LOC71 = getsystype_259130(((NU8) 31));
				result = newnodeit_217801(((NU8) 27), (*n).info, LOC71);
				LOC72 = 0;
				LOC72 = getsysmagic_259079(((NimStringDesc*) &TMP3392), ((NU8) 45));
				LOC73 = 0;
				LOC73 = newsymnode_217241(LOC72, (*n).info);
				add_216114(result, LOC73);
				add_216114(result, lenexprb);
				add_216114(result, (*n).kindU.S6.sons->data[((NI) 1)]);
			}
			LA61: ;
		}
		LA42: ;
	}
	break;
	case ((NU8) 16):
	{
		Transformation422004 plugin;
		Tnode215790* LOC75;
		LOC75 = 0;
		LOC75 = HEX5BHEX5D_216238(n, ((NI) 0));
		plugin = getplugin_422073((*LOC75).kindU.S4.sym);
		{
			NimStringDesc* LOC80;
			Tnode215790* LOC81;
			if (!plugin == 0) goto LA78;
			LOC80 = 0;
			LOC81 = 0;
			LOC81 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC80 = rawNewString((*(*(*LOC81).kindU.S4.sym).name).s->Sup.len + 19);
appendString(LOC80, ((NimStringDesc*) &TMP3393));
appendString(LOC80, (*(*(*LOC81).kindU.S4.sym).name).s);
			localerror_188085((*n).info, LOC80);
			result = n;
		}
		goto LA76;
		LA78: ;
		{
			result = plugin(c, n);
		}
		LA76: ;
	}
	break;
	default:
	{
		result = n;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode215790*, fixuptypeaftereval_427201)(Tcontext265020* c, Tnode215790* evaluated, Tnode215790* eorig) {
	Tnode215790* result;
	result = 0;
	{
		if (!((*(*eorig).typ).kind == ((NU8) 6) || (*(*eorig).typ).kind == ((NU8) 7) || (*(*eorig).typ).kind == ((NU8) 8))) goto LA3;
		result = semexprwithtype_426208(c, evaluated, 0);
	}
	goto LA1;
	LA3: ;
	{
		Ttype215828* expectedtype;
		result = evaluated;
		expectedtype = skiptypes_219113((*eorig).typ, IL64(576460752303423488));
		annotatetype_419099(result, expectedtype);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, evalatcompiletime_462503)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* callee;
{	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*n).kind == ((NU8) 27) || (*n).kind == ((NU8) 29) || (*n).kind == ((NU8) 30) || (*n).kind == ((NU8) 31) || (*n).kind == ((NU8) 26) || (*n).kind == ((NU8) 28) || (*n).kind == ((NU8) 32)));
		if (LOC3) goto LA4;
		LOC3 = !(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	callee = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	{
		NIM_BOOL LOC9;
		NIM_BOOL LOC10;
		Tnode215790* call;
		NIM_BOOL allconst;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = !(((*callee).magic == ((NU8) 0)));
		if (!(LOC10)) goto LA11;
		LOC10 = ((TMP3394[(NU)((*callee).magic)>>3] &(1U<<((NU)((*callee).magic)&7U)))!=0);
		LA11: ;
		LOC9 = LOC10;
		if (!(LOC9)) goto LA12;
		LOC9 = !(((*n).typ == NIM_NIL));
		LA12: ;
		if (!LOC9) goto LA13;
		call = newnodeit_217801(((NU8) 27), (*n).info, (*n).typ);
		add_216114(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		allconst = NIM_TRUE;
		{
			NI i_462586;
			NI HEX3Atmp_462897;
			NI LOC16;
			NI res_462900;
			i_462586 = 0;
			HEX3Atmp_462897 = 0;
			LOC16 = 0;
			LOC16 = len_216059(n);
			HEX3Atmp_462897 = (LOC16 - 1);
			res_462900 = ((NI) 1);
			{
				while (1) {
					Tnode215790* a;
					if (!(res_462900 <= HEX3Atmp_462897)) goto LA18;
					i_462586 = res_462900;
					a = getconstexpr_276001((*c).module, (*n).kindU.S6.sons->data[i_462586]);
					{
						if (!(a == NIM_NIL)) goto LA21;
						allconst = NIM_FALSE;
						a = (*n).kindU.S6.sons->data[i_462586];
						{
							if (!((*a).kind == ((NU8) 58))) goto LA25;
							a = (*a).kindU.S6.sons->data[((NI) 1)];
						}
						LA25: ;
					}
					LA21: ;
					add_216114(call, a);
					res_462900 += ((NI) 1);
				} LA18: ;
			}
		}
		{
			if (!allconst) goto LA29;
			result = getconstexpr_276001((*c).module, call);
			{
				if (!result == 0) goto LA33;
				result = n;
			}
			goto LA31;
			LA33: ;
			{
				goto BeforeRet;
			}
			LA31: ;
		}
		LA29: ;
		asgnRefNoCycle((void**) (&(*result).typ), getintervaltype_276261((*callee).magic, call));
	}
	LA13: ;
	{
		{
			NI LOC39;
			Ttypeseq215824* LOC57;
			TY367877 LOC58;
			LOC39 = 0;
			LOC39 = len_216059(n);
			if (!(((NI) 1) < LOC39)) goto LA40;
			{
				NI i_462643;
				NI HEX3Atmp_462905;
				NI LOC43;
				NI res_462908;
				i_462643 = 0;
				HEX3Atmp_462905 = 0;
				LOC43 = 0;
				LOC43 = len_216059(n);
				HEX3Atmp_462905 = (LOC43 - 1);
				res_462908 = ((NI) 1);
				{
					while (1) {
						if (!(res_462908 <= HEX3Atmp_462905)) goto LA45;
						i_462643 = res_462908;
						{
							NIM_BOOL LOC48;
							NIM_BOOL LOC49;
							Tnode215790* LOC50;
							Tnode215790* LOC52;
							Tnode215790* LOC54;
							LOC48 = 0;
							LOC49 = 0;
							LOC50 = 0;
							LOC50 = HEX5BHEX5D_216238(n, i_462643);
							LOC49 = (*LOC50).typ == 0;
							if (LOC49) goto LA51;
							LOC52 = 0;
							LOC52 = HEX5BHEX5D_216238(n, i_462643);
							LOC49 = !(((*(*LOC52).typ).kind == ((NU8) 59)));
							LA51: ;
							LOC48 = LOC49;
							if (LOC48) goto LA53;
							LOC54 = 0;
							LOC54 = HEX5BHEX5D_216238(n, i_462643);
							LOC48 = !((((*(*LOC54).typ).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0));
							LA53: ;
							if (!LOC48) goto LA55;
							goto LA36;
						}
						LA55: ;
						res_462908 += ((NI) 1);
					} LA45: ;
				}
			}
			LOC57 = 0;
			LOC57 = (Ttypeseq215824*) newSeq((&NTI215824), 1);
			memset((void*)LOC58, 0, sizeof(LOC58));
			LOC58[0] = (*n).typ;
			asgnRefNoCycle((void**) (&LOC57->data[0]), LOC58[0]);
			asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_265601(c, ((NU8) 59), LOC57));
			(*(*n).typ).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
		}
		LA40: ;
	} LA36: ;
	{
		NIM_BOOL LOC61;
		NIM_BOOL LOC62;
		Tnode215790* call;
		LOC61 = 0;
		LOC62 = 0;
		LOC62 = !(((8389632 & (*callee).flags) == 0));
		if (!(LOC62)) goto LA63;
		LOC62 = ((48 & (*callee).flags) == 0);
		LA63: ;
		LOC61 = LOC62;
		if (!(LOC61)) goto LA64;
		LOC61 = !(((*n).typ == NIM_NIL));
		LA64: ;
		if (!LOC61) goto LA65;
		{
			NIM_BOOL LOC69;
			LOC69 = 0;
			LOC69 = !((((*callee).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0));
			if (!(LOC69)) goto LA70;
			LOC69 = !(((goptions_161119 &(1U<<((NU)(((NU8) 20))&31U)))!=0));
			LA70: ;
			if (!LOC69) goto LA71;
			goto BeforeRet;
		}
		LA71: ;
		{
			if (!!(((TMP3394[(NU)((*callee).magic)>>3] &(1U<<((NU)((*callee).magic)&7U)))!=0))) goto LA75;
			goto BeforeRet;
		}
		LA75: ;
		{
			NIM_BOOL LOC79;
			LOC79 = 0;
			LOC79 = !(((36864 &(1U<<((NU)((*callee).kind)&31U)))!=0));
			if (LOC79) goto LA80;
			LOC79 = isgenericroutine_220314(callee);
			LA80: ;
			if (!LOC79) goto LA81;
			goto BeforeRet;
		}
		LA81: ;
		{
			NIM_BOOL LOC85;
			Ttype215828* LOC87;
			LOC85 = 0;
			LOC85 = !(((*n).typ == NIM_NIL));
			if (!(LOC85)) goto LA86;
			LOC87 = 0;
			LOC87 = typeallowed_249040((*n).typ, ((NU8) 10));
			LOC85 = !((LOC87 == NIM_NIL));
			LA86: ;
			if (!LOC85) goto LA88;
			goto BeforeRet;
		}
		LA88: ;
		call = newnodeit_217801(((NU8) 27), (*n).info, (*n).typ);
		add_216114(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_462851;
			NI HEX3Atmp_462913;
			NI LOC91;
			NI res_462916;
			i_462851 = 0;
			HEX3Atmp_462913 = 0;
			LOC91 = 0;
			LOC91 = len_216059(n);
			HEX3Atmp_462913 = (LOC91 - 1);
			res_462916 = ((NI) 1);
			{
				while (1) {
					Tnode215790* a;
					if (!(res_462916 <= HEX3Atmp_462913)) goto LA93;
					i_462851 = res_462916;
					a = getconstexpr_276001((*c).module, (*n).kindU.S6.sons->data[i_462851]);
					{
						if (!(a == NIM_NIL)) goto LA96;
						result = n;
						goto BeforeRet;
					}
					LA96: ;
					add_216114(call, a);
					res_462916 += ((NI) 1);
				} LA93: ;
			}
		}
		{
			if (!(((*callee).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0)) goto LA100;
			result = evalstaticexpr_415620((*c).module, call, (*(*c).p).owner);
			{
				NimStringDesc* LOC106;
				if (!result == 0) goto LA104;
				LOC106 = 0;
				LOC106 = rendertree_234044(call, 0);
				localerror_188080((*n).info, ((NU16) 213), LOC106);
			}
			goto LA102;
			LA104: ;
			{
				result = fixuptypeaftereval_427201(c, result, n);
			}
			LA102: ;
		}
		goto LA98;
		LA100: ;
		{
			result = evalconstexpr_415615((*c).module, call);
			{
				if (!result == 0) goto LA111;
				result = n;
			}
			goto LA109;
			LA111: ;
			{
				result = fixuptypeaftereval_427201(c, result, n);
			}
			LA109: ;
		}
		LA98: ;
	}
	LA65: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, aftercallactions_463385)(Tcontext265020* c, Tnode215790* n, Tnode215790* orig, NU16 flags) {
	Tnode215790* result;
	Tsym215822* callee;
	result = 0;
	result = n;
	callee = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*callee).kind) {
	case ((NU8) 16):
	{
		result = semmacroexpr_427007(c, result, orig, callee, flags);
	}
	break;
	case ((NU8) 17):
	{
		result = semtemplateexpr_426999(c, result, callee, flags);
	}
	break;
	default:
	{
		semfinishoperands_369269(c, result);
		activate_426282(c, result);
		fixabstracttype_461360(c, result);
		analyseifaddresstakenincall_461828(c, result);
		{
			if (!!(((*callee).magic == ((NU8) 0)))) goto LA6;
			result = magicsafteroverloadresolution_462423(c, result, flags);
		}
		LA6: ;
	}
	break;
	}
	{
		if (!((*c).intypeclass == ((NI) 0))) goto LA10;
		result = evalatcompiletime_462503(c, result);
	}
	LA10: ;
	return result;
}

N_NIMCALL(Tnode215790*, semdirectop_426985)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tnode215790* norig;
	result = 0;
	norig = copytree_219822(n);
	result = semoverloadedcallanalyseeffects_462936(c, n, norig, flags);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		result = aftercallactions_463385(c, result, norig, flags);
	}
	goto LA1;
	LA3: ;
	{
		result = errornode_265905(c, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, evalpattern_427528)(Tcontext265020* c, Tnode215790* n, Tnode215790* orig) {
	Tnode215790* result;
	NimStringDesc* rule;
	Tsym215822* s;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 27));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_188183(TMP3364);
		internalerror_188113(LOC7);
	}
	LA5: ;
	rule = 0;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = ((goptions_161119 &(1U<<((NU)(((NU8) 12))&31U)))!=0);
		if (!(LOC10)) goto LA11;
		LOC10 = ((gnotes_184080 &((NU64)1<<((NU)((((NU16) 283)- 237))&63U)))!=0);
		LA11: ;
		if (!LOC10) goto LA12;
		rule = rendertree_234044(n, 4);
	}
	LA12: ;
	s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*s).kind) {
	case ((NU8) 16):
	{
		result = semmacroexpr_427007(c, n, orig, s, 0);
	}
	break;
	case ((NU8) 17):
	{
		result = semtemplateexpr_426999(c, n, s, 0);
	}
	break;
	default:
	{
		result = semdirectop_426985(c, n, 0);
	}
	break;
	}
	{
		NIM_BOOL LOC19;
		NimStringDesc* LOC23;
		NimStringDesc* LOC24;
		LOC19 = 0;
		LOC19 = ((goptions_161119 &(1U<<((NU)(((NU8) 12))&31U)))!=0);
		if (!(LOC19)) goto LA20;
		LOC19 = ((gnotes_184080 &((NU64)1<<((NU)((((NU16) 283)- 237))&63U)))!=0);
		LA20: ;
		if (!LOC19) goto LA21;
		LOC23 = 0;
		LOC24 = 0;
		LOC24 = rendertree_234044(result, 4);
		LOC23 = rawNewString(rule->Sup.len + LOC24->Sup.len + 7);
appendString(LOC23, rule);
appendString(LOC23, ((NimStringDesc*) &TMP3478));
appendString(LOC23, LOC24);
appendString(LOC23, ((NimStringDesc*) &TMP3288));
		message_188095((*orig).info, ((NU16) 283), LOC23);
	}
	LA21: ;
	return result;
}

N_NIMCALL(Tnode215790*, applypatterns_427609)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	{
		NI i_427640;
		NI HEX3Atmp_428013;
		NI res_428016;
		i_427640 = 0;
		HEX3Atmp_428013 = 0;
		HEX3Atmp_428013 = (((*c).patterns ? (*c).patterns->Sup.len : 0) - 1);
		res_428016 = HEX3Atmp_428013;
		{
			while (1) {
				Tsym215822* pattern;
				if (!(((NI) 0) <= res_428016)) goto LA3;
				i_427640 = res_428016;
				pattern = (*c).patterns->data[i_427640];
				{
					Tnode215790* x;
					if (!!(pattern == 0)) goto LA6;
					x = applyrule_418186(c, pattern, result);
					{
						if (!!(x == 0)) goto LA10;
						evaltemplatecounter_401328 += ((NI) 1);
						{
							if (!(((NI) 100) < evaltemplatecounter_401328)) goto LA14;
							globalerror_188071((*n).info, ((NU16) 188), ((NimStringDesc*) &TMP3155));
						}
						LA14: ;
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_427640]), NIM_NIL);
						{
							if (!((*x).kind == ((NU8) 115))) goto LA18;
							asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), evalpattern_427528(c, (*x).kindU.S6.sons->data[((NI) 1)], result));
							result = flattenstmts_240587(x);
						}
						goto LA16;
						LA18: ;
						{
							result = evalpattern_427528(c, x, result);
						}
						LA16: ;
						evaltemplatecounter_401328 -= ((NI) 1);
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_427640]), pattern);
					}
					LA10: ;
				}
				LA6: ;
				res_428016 -= ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode215790*, hlo_427524)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	(*c).hloloopdetector += ((NI) 1);
	{
		if (!(((NI) 300) < (*c).hloloopdetector)) goto LA3;
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 82):
	case ((NU8) 83):
	case ((NU8) 51) ... ((NU8) 52):
	case ((NU8) 79) ... ((NU8) 81):
	case ((NU8) 84):
	{
		result = n;
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC9;
			NIM_BOOL LOC10;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = ((*n).kind == ((NU8) 74) || (*n).kind == ((NU8) 73) || (*n).kind == ((NU8) 35) || (*n).kind == ((NU8) 36));
			if (!(LOC10)) goto LA11;
			LOC10 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
			LA11: ;
			LOC9 = LOC10;
			if (!(LOC9)) goto LA12;
			LOC9 = ((520 & (*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags) == 520);
			LA12: ;
			if (!LOC9) goto LA13;
			result = n;
			goto BeforeRet;
		}
		LA13: ;
		result = applypatterns_427609(c, n);
		{
			if (!(result == n)) goto LA17;
			{
				NI i_428112;
				NI HEX3Atmp_428129;
				NI LOC20;
				NI res_428132;
				i_428112 = 0;
				HEX3Atmp_428129 = 0;
				LOC20 = 0;
				LOC20 = safelen_216081(result);
				HEX3Atmp_428129 = (LOC20 - 1);
				res_428132 = ((NI) 0);
				{
					while (1) {
						Tnode215790* a;
						Tnode215790* h;
						if (!(res_428132 <= HEX3Atmp_428129)) goto LA22;
						i_428112 = res_428132;
						a = (*result).kindU.S6.sons->data[i_428112];
						h = hlo_427524(c, a);
						{
							if (!!((h == a))) goto LA25;
							asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_428112]), h);
						}
						LA25: ;
						res_428132 += ((NI) 1);
					} LA22: ;
				}
			}
		}
		goto LA15;
		LA17: ;
		{
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = isemptytype_220513((*n).typ);
				if (!(LOC30)) goto LA31;
				LOC30 = isemptytype_220513((*result).typ);
				LA31: ;
				if (!LOC30) goto LA32;
			}
			goto LA28;
			LA32: ;
			{
				result = fitnode_426230(c, (*n).typ, result);
			}
			LA28: ;
			result = commonoptimizations_387279((*c).module, result);
			result = hlo_427524(c, result);
			result = commonoptimizations_387279((*c).module, result);
		}
		LA15: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, hlobody_428136)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_161119 &(1U<<((NU)(((NU8) 21))&31U)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_427524(c, n);
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, popproccon_265303)(Tcontext265020* c) {
	asgnRef((void**) (&(*c).p), (*(*c).p).next);
}

N_NIMCALL(void, fixupinstantiatedsymbols_429024)(Tcontext265020* c, Tsym215822* s) {
	{
		NI i_429047;
		NI HEX3Atmp_429057;
		NI res_429060;
		i_429047 = 0;
		HEX3Atmp_429057 = 0;
		HEX3Atmp_429057 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_429060 = ((NI) 0);
		{
			while (1) {
				if (!(res_429060 <= HEX3Atmp_429057)) goto LA3;
				i_429047 = res_429060;
				{
					Tsym215822* oldprc;
					Tscope215816* LOC8;
					Tnode215790* n;
					Tnode215790* LOC9;
					if (!((*(*c).generics->data[i_429047].genericsym).Sup.id == (*s).Sup.id)) goto LA6;
					oldprc = (*(*c).generics->data[i_429047].inst).sym;
					pushinfocontext_184209((*oldprc).info);
					LOC8 = 0;
					LOC8 = openscope_270060(c);
					n = (*oldprc).ast;
					LOC9 = 0;
					LOC9 = getbody_255828(s);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_219822(LOC9));
					instantiatebody_428915(c, n, NIM_NIL, oldprc);
					closescope_270068(c);
					popinfocontext_184222();
				}
				LA6: ;
				res_429060 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(Tsym215822*, searchforborrowproc_432899)(Tcontext265020* c, Tscope215816* startscope, Tsym215822* fn) {
	Tsym215822* result;
	Tnode215790* call;
	NIM_BOOL hasdistinct;
	Tnode215790* LOC1;
	result = 0;
	call = newnodei_217248(((NU8) 27), (*fn).info);
	hasdistinct = NIM_FALSE;
	LOC1 = 0;
	LOC1 = newidentnode_217228((*fn).name, (*fn).info);
	add_216114(call, LOC1);
	{
		NI i_432930;
		NI HEX3Atmp_432985;
		NI LOC3;
		NI res_432988;
		i_432930 = 0;
		HEX3Atmp_432985 = 0;
		LOC3 = 0;
		LOC3 = len_216059((*(*fn).typ).n);
		HEX3Atmp_432985 = (LOC3 - 1);
		res_432988 = ((NI) 1);
		{
			while (1) {
				Tnode215790* param;
				Ttype215828* t;
				Ttype215828* LOC12;
				Tnode215790* LOC13;
				if (!(res_432988 <= HEX3Atmp_432985)) goto LA5;
				i_432930 = res_432988;
				param = (*(*(*fn).typ).n).kindU.S6.sons->data[i_432930];
				t = skiptypes_219113((*param).typ, IL64(211106240964608));
				{
					NIM_BOOL LOC8;
					LOC8 = 0;
					LOC8 = ((*t).kind == ((NU8) 13));
					if (LOC8) goto LA9;
					LOC8 = ((*(*param).typ).kind == ((NU8) 13));
					LA9: ;
					if (!LOC8) goto LA10;
					hasdistinct = NIM_TRUE;
				}
				LA10: ;
				LOC12 = 0;
				LOC12 = baseofdistinct_249496(t);
				LOC13 = 0;
				LOC13 = newnodeit_217801(((NU8) 1), (*fn).info, LOC12);
				add_216114(call, LOC13);
				res_432988 += ((NI) 1);
			} LA5: ;
		}
	}
	{
		Tnode215790* resolved;
		NU32 LOC18;
		if (!hasdistinct) goto LA16;
		LOC18 = 0;
		LOC18 |=((NU32)(1)<<(((*fn).kind)%(sizeof(NU32)*8)));
		resolved = semoverloadedcall_432544(c, call, call, LOC18);
		{
			if (!!((resolved == NIM_NIL))) goto LA21;
			result = (*(*resolved).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		}
		LA21: ;
	}
	LA16: ;
	return result;
}

N_NIMCALL(void, semborrow_455735)(Tcontext265020* c, Tnode215790* n, Tsym215822* s) {
	Tsym215822* b;
	b = searchforborrowproc_432899(c, (*(*c).currentscope).parent, s);
	{
		if (!!((b == NIM_NIL))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), newsymnode_217234(b));
	}
	goto LA1;
	LA3: ;
	{
		localerror_188080((*n).info, ((NU16) 143), ((NimStringDesc*) &TMP3155));
	}
	LA1: ;
}

N_NIMCALL(void, sideeffectscheck_429064)(Tcontext265020* c, Tsym215822* s) {
	{
		if (!((3072 & (*s).flags) == 3072)) goto LA3;
		localerror_188080((*s).info, ((NU16) 222), (*(*s).name).s);
	}
	LA3: ;
}

N_NIMCALL(Tnode215790*, semprocaux_456683)(Tcontext265020* c, Tnode215790* n, NU8 kind, Tspecialwords197006 validpragmas, NU8 phase) {
	Tnode215790* result;
	Tsym215822* s;
	NIM_BOOL typeisdetermined;
	NIM_BOOL isanon;
	Tscope215816* oldscope;
	Tscope215816* LOC19;
	Tnode215790* gp;
	Tsym215822* proto;
{	result = 0;
	result = semprocannotation_455862(c, n, validpragmas);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_265958(n, ((NI) 7));
	s = 0;
	typeisdetermined = NIM_FALSE;
	isanon = NIM_FALSE;
	{
		Tnode215790* LOC7;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_216238(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		{
			Tnode215790* LOC12;
			Tsym215822* LOC15;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_216238(n, ((NI) 0));
			if (!((*LOC12).kind == ((NU8) 1))) goto LA13;
			LOC15 = 0;
			LOC15 = getcurrowner_265210();
			s = newsym_216684(kind, idanon_190455, LOC15, (*n).info);
			isanon = NIM_TRUE;
		}
		goto LA10;
		LA13: ;
		{
			s = semidentdef_451639(c, (*n).kindU.S6.sons->data[((NI) 0)], kind);
		}
		LA10: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(s));
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	goto LA5;
	LA8: ;
	{
		Tnode215790* LOC18;
		LOC18 = 0;
		LOC18 = HEX5BHEX5D_216238(n, ((NI) 0));
		s = (*LOC18).kindU.S4.sym;
		asgnRefNoCycle((void**) (&(*s).owner), getcurrowner_265210());
		typeisdetermined = ((*s).typ == NIM_NIL);
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	LA5: ;
	oldscope = (*c).currentscope;
	pushowner_265212(s);
	LOC19 = 0;
	LOC19 = openscope_270060(c);
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA22;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericparamlist_439403(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA20;
	LA22: ;
	{
		gp = newnodei_217248(((NU8) 75), (*n).info);
	}
	LA20: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA27;
		semparamlist_426254(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI LOC31;
			LOC31 = 0;
			LOC31 = sonslen_218351(gp);
			if (!(((NI) 0) < LOC31)) goto LA32;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1))) goto LA36;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), gp);
			}
			LA36: ;
		}
		LA32: ;
	}
	goto LA25;
	LA27: ;
	{
		asgnRefNoCycle((void**) (&(*s).typ), newproctype_437488(c, (*n).info, NIM_NIL));
	}
	LA25: ;
	{
		if (!(((*(*s).typ).flags &(1U<<((NU)(((NU8) 28))&31U)))!=0)) goto LA41;
		(*s).flags |= ((NU32)1)<<((((NU8) 23))%(sizeof(NU32)*8));
	}
	LA41: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA45;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), sempattern_441109(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	LA45: ;
	{
		if (!((*s).kind == ((NU8) 14))) goto LA49;
		(*(*s).typ).flags |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
	}
	LA49: ;
	proto = searchforproc_279226(c, oldscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA53;
		{
			NIM_BOOL LOC57;
			LOC57 = 0;
			LOC57 = ((*s).kind == ((NU8) 14));
			if (!(LOC57)) goto LA58;
			LOC57 = ((*(*s).typ).callconv == ((NU8) 8));
			LA58: ;
			if (!LOC57) goto LA59;
		}
		goto LA55;
		LA59: ;
		{
			Toptionentry265002* LOC62;
			LOC62 = 0;
			LOC62 = lastoptionentry_265169(c);
			(*(*s).typ).callconv = (*LOC62).defaultcc;
		}
		LA55: ;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0)) goto LA65;
		}
		goto LA63;
		LA65: ;
		{
			if (!((258112 &(1U<<((NU)(kind)&31U)))!=0)) goto LA68;
			{
				if (!!(typeisdetermined)) goto LA72;
				addinterfaceoverloadablesymat_270542(c, oldscope, s);
			}
			LA72: ;
		}
		goto LA63;
		LA68: ;
		{
			{
				if (!!(typeisdetermined)) goto LA77;
				addinterfacedeclat_270491(c, oldscope, s);
			}
			LA77: ;
		}
		LA63: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA81;
			pragma_280070(c, s, (*n).kindU.S6.sons->data[((NI) 4)], validpragmas);
		}
		goto LA79;
		LA81: ;
		{
			implicitpragmas_283153(c, s, n, validpragmas);
		}
		LA79: ;
	}
	goto LA51;
	LA53: ;
	{
		Tscope215816* LOC93;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA87;
			localerror_188080((*(*n).kindU.S6.sons->data[((NI) 4)]).info, ((NU16) 140), ((NimStringDesc*) &TMP3155));
		}
		LA87: ;
		{
			if (!!((((*proto).flags &(1U<<((NU)(((NU8) 4))&31U)))!=0))) goto LA91;
			wrongredefinition_270432((*n).info, (*(*proto).name).s);
		}
		LA91: ;
		(*proto).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
		closescope_270068(c);
		LOC93 = 0;
		LOC93 = openscope_270060(c);
		{
			if (!!(((*(*(*proto).ast).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA96;
			addgenericparamlisttoscope_454705(c, (*(*proto).ast).kindU.S6.sons->data[((NI) 2)]);
		}
		LA96: ;
		addparams_426260(c, (*(*proto).typ).n, (*proto).kind);
		(*proto).info = (*s).info;
		asgnRefNoCycle((void**) (&(*s).typ), (*proto).typ);
		s = proto;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), (*(*proto).ast).kindU.S6.sons->data[((NI) 2)]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), (*(*proto).ast).kindU.S6.sons->data[((NI) 3)]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 4)]), (*(*proto).ast).kindU.S6.sons->data[((NI) 4)]);
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA100;
			internalerror_188100((*n).info, ((NimStringDesc*) &TMP3329));
		}
		LA100: ;
		asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym), proto);
		{
			NIM_BOOL LOC104;
			NimStringDesc* LOC108;
			LOC104 = 0;
			LOC104 = importantcomments_161154();
			if (!(LOC104)) goto LA105;
			LOC104 = !((*(*proto).ast).comment == 0);
			LA105: ;
			if (!LOC104) goto LA106;
			LOC108 = 0;
			LOC108 = (*n).comment; (*n).comment = copyStringRC1((*(*proto).ast).comment);
			if (LOC108) nimGCunrefNoCycle(LOC108);
		}
		LA106: ;
		asgnRefNoCycle((void**) (&(*proto).ast), n);
		popowner_265215();
		pushowner_265212(s);
	}
	LA51: ;
	(*s).options = goptions_161119;
	{
		NIM_BOOL LOC111;
		LOC111 = 0;
		LOC111 = (((*s).flags &(1U<<((NU)(((NU8) 30))&31U)))!=0);
		if (LOC111) goto LA112;
		LOC111 = ((NU8)((*(*s).name).s->data[((NI) 0)]) == (NU8)(61));
		LA112: ;
		if (!LOC111) goto LA113;
		semoverride_456439(c, s, n);
	}
	LA113: ;
	{
		NIM_BOOL usepseudogenerics;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA117;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0)) goto LA121;
			localerror_188080((*(*n).kindU.S6.sons->data[((NI) 6)]).info, ((NU16) 141), (*(*s).name).s);
		}
		LA121: ;
		usepseudogenerics = ((196608 &(1U<<((NU)(kind)&31U)))!=0);
		{
			NIM_BOOL LOC125;
			LOC125 = 0;
			LOC125 = ((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1));
			if (LOC125) goto LA126;
			LOC125 = usepseudogenerics;
			LA126: ;
			if (!LOC125) goto LA127;
			{
				if (!!(usepseudogenerics)) goto LA131;
				paramstypecheck_426977(c, (*s).typ);
			}
			LA131: ;
			pushproccon_265277(c, s);
			(*(*c).p).wasforwarded = !((proto == NIM_NIL));
			maybeaddresult_426265(c, s, n);
			{
				Tnode215790* sembody;
				Tnode215790* LOC137;
				if (!!((((*s).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0))) goto LA135;
				LOC137 = 0;
				LOC137 = semprocbody_426226(c, (*n).kindU.S6.sons->data[((NI) 6)]);
				sembody = hlobody_428136(c, LOC137);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_388498((*c).module, sembody, s));
			}
			LA135: ;
			popproccon_265303(c);
		}
		goto LA123;
		LA127: ;
		{
			Tscope215816* LOC147;
			{
				NIM_BOOL LOC141;
				Tident190012* LOC145;
				Tsym215822* LOC146;
				LOC141 = 0;
				LOC141 = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
				if (!(LOC141)) goto LA142;
				LOC141 = !((kind == ((NU8) 14)));
				LA142: ;
				if (!LOC141) goto LA143;
				LOC145 = 0;
				LOC145 = getident_190441(((NimStringDesc*) &TMP3197));
				LOC146 = 0;
				LOC146 = newsym_216684(((NU8) 0), LOC145, NIM_NIL, (*n).info);
				adddecl_270445(c, LOC146);
			}
			LA143: ;
			LOC147 = 0;
			LOC147 = openscope_270060(c);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semgenericstmt_433270(c, (*n).kindU.S6.sons->data[((NI) 6)]));
			closescope_270068(c);
			fixupinstantiatedsymbols_429024(c, s);
		}
		LA123: ;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0)) goto LA150;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), emptynode_216801);
		}
		LA150: ;
	}
	goto LA115;
	LA117: ;
	{
		{
			if (!!((proto == NIM_NIL))) goto LA155;
			localerror_188080((*n).info, ((NU16) 142), (*(*proto).name).s);
		}
		LA155: ;
		{
			NIM_BOOL LOC159;
			LOC159 = 0;
			LOC159 = ((67108896 & (*s).flags) == 0);
			if (!(LOC159)) goto LA160;
			LOC159 = ((*s).magic == ((NU8) 0));
			LA160: ;
			if (!LOC159) goto LA161;
			(*s).flags |= ((NU32)1)<<((((NU8) 4))%(sizeof(NU32)*8));
		}
		goto LA157;
		LA161: ;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0)) goto LA164;
			semborrow_455735(c, n, s);
		}
		goto LA157;
		LA164: ;
		LA157: ;
	}
	LA115: ;
	sideeffectscheck_429064(c, s);
	closescope_270068(c);
	popowner_265215();
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA168;
		(*c).patterns = (Tsymseq215792*) incrSeqV2(&((*c).patterns)->Sup, sizeof(Tsym215822*));
		asgnRefNoCycle((void**) (&(*c).patterns->data[(*c).patterns->Sup.len]), s);
		++(*c).patterns->Sup.len;
	}
	LA168: ;
	{
		if (!isanon) goto LA172;
		asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}
	LA172: ;
	{
		NIM_BOOL LOC176;
		NIM_BOOL LOC177;
		LOC176 = 0;
		LOC177 = 0;
		LOC177 = istoplevel_265966(c);
		if (!(LOC177)) goto LA178;
		LOC177 = !(((*s).kind == ((NU8) 14)));
		LA178: ;
		LOC176 = LOC177;
		if (!(LOC176)) goto LA179;
		LOC176 = ((*(*s).typ).callconv == ((NU8) 8));
		LA179: ;
		if (!LOC176) goto LA180;
		localerror_188085((*s).info, ((NimStringDesc*) &TMP3513));
	}
	LA180: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, determinetype_429695)(Tcontext265020* c, Tsym215822* s) {
	Tnode215790* LOC5;
{	{
		if (!!(((*s).typ == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = semprocaux_456683(c, (*s).ast, (*s).kind, TMP3514, ((NU8) 1));
	}BeforeRet: ;
}

N_NIMCALL(void, pickbestcandidate_429699)(Tcontext265020* c, Tnode215790* headsymbol, Tnode215790* n, Tnode215790* orig, Tnode215790* initialbinding, NU32 filter, Tcandidate363206* best, Tcandidate363206* alt, Tsymseq215792** errors) {
	Toverloaditer270296 o;
	Tsym215822* symx;
	NI symscope;
	TY429716* syms;
	Tcandidate363206 z;
{	memset((void*)(&o), 0, sizeof(o));
	symx = initoverloaditer_270890((&o), c, headsymbol);
	symscope = lastoverloadscope_271029((&o));
	syms = (TY429716*) newSeq((&NTI429716), 0);
	{
		while (1) {
			if (!!((symx == NIM_NIL))) goto LA2;
			{
				TY429717 LOC7;
				if (!((filter &(1U<<((NU)((*symx).kind)&31U)))!=0)) goto LA5;
				memset((void*)(&LOC7), 0, sizeof(LOC7));
				LOC7.Field0 = symx;
				LOC7.Field1 = lastoverloadscope_271029((&o));
				syms = (TY429716*) incrSeqV2(&(syms)->Sup, sizeof(TY429717));
				asgnRefNoCycle((void**) (&syms->data[syms->Sup.len].Field0), LOC7.Field0);
				syms->data[syms->Sup.len].Field1 = LOC7.Field1;
				++syms->Sup.len;
			}
			LA5: ;
			symx = nextoverloaditer_271041((&o), c, headsymbol);
		} LA2: ;
	}
	{
		if (!((syms ? syms->Sup.len : 0) == ((NI) 0))) goto LA10;
		goto BeforeRet;
	}
	LA10: ;
	memset((void*)(&z), 0, sizeof(z));
	initcandidate_363270(c, best, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	initcandidate_363270(c, alt, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	(*best).state = ((NU8) 2);
	{
		NI i_429805;
		NI HEX3Atmp_430024;
		NI res_430027;
		i_429805 = 0;
		HEX3Atmp_430024 = 0;
		HEX3Atmp_430024 = ((syms ? syms->Sup.len : 0) - 1);
		res_430027 = ((NI) 0);
		{
			while (1) {
				Tsym215822* sym;
				if (!(res_430027 <= HEX3Atmp_430024)) goto LA14;
				i_429805 = res_430027;
				sym = syms->data[i_429805].Field0;
				determinetype_429695(c, sym);
				initcandidate_363270(c, (&z), sym, initialbinding, syms->data[i_429805].Field1);
				z.calleesym = sym;
				matches_369311(c, n, orig, (&z));
				{
					NIM_BOOL LOC17;
					LOC17 = 0;
					LOC17 = HEX3DHEX3D_429811((*errors), NIM_NIL);
					if (!!(LOC17)) goto LA18;
					safeadd_429908(errors, sym);
					{
						NIM_BOOL LOC22;
						LOC22 = 0;
						LOC22 = HEX3DHEX3D_429811(z.errors, NIM_NIL);
						if (!!(LOC22)) goto LA23;
						{
							Tsym215822* err_429972;
							Tsymseq215792* HEX3Atmp_430018;
							NI i_430021;
							NI L_430023;
							err_429972 = 0;
							HEX3Atmp_430018 = 0;
							HEX3Atmp_430018 = z.errors;
							i_430021 = ((NI) 0);
							L_430023 = (HEX3Atmp_430018 ? HEX3Atmp_430018->Sup.len : 0);
							{
								while (1) {
									if (!(i_430021 < L_430023)) goto LA27;
									err_429972 = HEX3Atmp_430018->data[i_430021];
									(*errors) = (Tsymseq215792*) incrSeqV2(&((*errors))->Sup, sizeof(Tsym215822*));
									asgnRefNoCycle((void**) (&(*errors)->data[(*errors)->Sup.len]), err_429972);
									++(*errors)->Sup.len;
									i_430021 += ((NI) 1);
								} LA27: ;
							}
						}
					}
					LA23: ;
				}
				LA18: ;
				{
					if (!(z.state == ((NU8) 1))) goto LA30;
					{
						if (!((*sym).kind == ((NU8) 14))) goto LA34;
						z.exactmatches += ((NI) 200);
					}
					LA34: ;
					switch ((*best).state) {
					case ((NU8) 0):
					case ((NU8) 2):
					{
						genericAssign((void*)(&(*best)), (void*)(&z), (&NTI363206));
					}
					break;
					case ((NU8) 1):
					{
						NI cmp;
						cmp = cmpcandidates_363609((&(*best)), (&z));
						{
							if (!(cmp < ((NI) 0))) goto LA40;
							genericAssign((void*)(&(*best)), (void*)(&z), (&NTI363206));
						}
						goto LA38;
						LA40: ;
						{
							if (!(cmp == ((NI) 0))) goto LA43;
							genericAssign((void*)(&(*alt)), (void*)(&z), (&NTI363206));
						}
						goto LA38;
						LA43: ;
						{
						}
						LA38: ;
					}
					break;
					}
				}
				LA30: ;
				res_430027 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
}

static N_INLINE(NimStringDesc*, HEX5BHEX5D_88075)(NimStringDesc* s, Slice88082 x) {
	NimStringDesc* result;
	result = 0;
	result = copyStrLast(s, x.a, x.b);
	return result;
}

N_NIMCALL(NIM_BOOL, samemethoddispatcher_429637)(Tsym215822* a, Tsym215822* b) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		Tnode215790* aa;
		Tnode215790* bb;
		LOC3 = 0;
		LOC3 = ((*a).kind == ((NU8) 13));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*b).kind == ((NU8) 13));
		LA4: ;
		if (!LOC3) goto LA5;
		aa = lastson_218364((*a).ast);
		bb = lastson_218364((*b).ast);
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = ((*aa).kind == ((NU8) 3));
			if (!(LOC9)) goto LA10;
			LOC9 = ((*bb).kind == ((NU8) 3));
			LA10: ;
			if (!LOC9) goto LA11;
			{
				if (!((*aa).kindU.S4.sym == (*bb).kindU.S4.sym)) goto LA15;
				result = NIM_TRUE;
			}
			LA15: ;
		}
		goto LA7;
		LA11: ;
		{
		}
		LA7: ;
	}
	LA5: ;
	return result;
}

N_NIMCALL(void, resolveoverloads_430231)(Tcontext265020* c, Tnode215790* n, Tnode215790* orig, NU32 filter, Tsymseq215792** errors, Tcandidate363206* Result) {
	Tnode215790* initialbinding;
	Tcandidate363206 alt;
	Tnode215790* f;
	Tnodeseq215784* usedsyms;
	NU8 overloadsstate;
{	initialbinding = 0;
	memset((void*)(&alt), 0, sizeof(alt));
	f = (*n).kindU.S6.sons->data[((NI) 0)];
	{
		if (!((*f).kind == ((NU8) 42))) goto LA3;
		initialbinding = f;
		f = (*f).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		initialbinding = NIM_NIL;
	}
	LA1: ;
	usedsyms = 0;
	gatherusedsyms_430146(c, (&usedsyms));
	{
		NIM_BOOL LOC8;
		Tnode215790* hiddenarg;
		LOC8 = 0;
		LOC8 = HEX3DHEX3D_283344(usedsyms, NIM_NIL);
		if (!!(LOC8)) goto LA9;
		{
			if (!(((NI) 1) < (usedsyms ? usedsyms->Sup.len : 0))) goto LA13;
			hiddenarg = newnode_217601(((NU8) 56), (*n).info, usedsyms, NIM_NIL);
		}
		goto LA11;
		LA13: ;
		{
			hiddenarg = usedsyms->data[((NI) 0)];
		}
		LA11: ;
		insert_430284((&(*n).kindU.S6.sons), hiddenarg, ((NI) 1));
		insert_430284((&(*orig).kindU.S6.sons), hiddenarg, ((NI) 1));
		pickbestcandidate_429699(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
		{
			if (!!(((*Result).state == ((NU8) 1)))) goto LA18;
			delete_430831((&(*n).kindU.S6.sons), ((NI) 1));
			delete_430831((&(*orig).kindU.S6.sons), ((NI) 1));
		}
		goto LA16;
		LA18: ;
		{
			goto BeforeRet;
		}
		LA16: ;
	}
	LA9: ;
	pickbestcandidate_429699(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
	overloadsstate = (*Result).state;
	{
		if (!!((overloadsstate == ((NU8) 1)))) goto LA23;
		{
			Tnode215790* calleename;
			Tnode215790* LOC37;
			Slice88082 LOC38;
			TY464931 LOC39;
			Slice88082 LOC40;
			TY464931 LOC41;
			if (!(((*n).flags &(1U<<((NU)(((NU8) 9))&15U)))!=0)) goto LA27;
			{
				NIM_BOOL LOC31;
				NI LOC33;
				NimStringDesc* LOC36;
				LOC31 = 0;
				LOC31 = ((*f).kind == ((NU8) 2));
				if (!(LOC31)) goto LA32;
				LOC33 = 0;
				LOC33 = sonslen_218351(n);
				LOC31 = (((NI) 2) <= LOC33);
				LA32: ;
				if (!!(LOC31)) goto LA34;
				LOC36 = 0;
				LOC36 = HEX24_188183(TMP3515);
				internalerror_188113(LOC36);
			}
			LA34: ;
			LOC37 = 0;
			LOC37 = newstrnode_216678(((NU8) 20), (*(*f).kindU.S5.ident).s);
			calleename = withinfo_217223(LOC37, (*n).info);
			LOC38 = HEX2EHEX2E_102424(((NI) 0), ((NI) 1));
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = NIM_NIL;
			LOC39[1] = HEX5BHEX5D_216238(n, ((NI) 1));
			LOC39[2] = calleename;
			HEX5BHEX5DHEX3D_388186((&(*n).kindU.S6.sons), LOC38, LOC39, 3);
			LOC40 = HEX2EHEX2E_102424(((NI) 0), ((NI) 1));
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = NIM_NIL;
			LOC41[1] = HEX5BHEX5D_216238(orig, ((NI) 1));
			LOC41[2] = calleename;
			HEX5BHEX5DHEX3D_388186((&(*orig).kindU.S6.sons), LOC40, LOC41, 3);
			{
				Tnode215790* op_431550;
				Tident190012* LOC46;
				if (!(((*n).flags &(1U<<((NU)(((NU8) 11))&15U)))!=0)) goto LA44;
				LOC46 = 0;
				LOC46 = getident_190441(((NimStringDesc*) &TMP3517));
				op_431550 = newidentnode_217228(LOC46, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_431550);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_431550);
				pickbestcandidate_429699(c, op_431550, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA44: ;
			{
				Tnode215790* op_431567;
				Tident190012* LOC51;
				if (!((5 &(1U<<((NU)((*Result).state)&7U)))!=0)) goto LA49;
				LOC51 = 0;
				LOC51 = getident_190441(((NimStringDesc*) &TMP3518));
				op_431567 = newidentnode_217228(LOC51, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_431567);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_431567);
				pickbestcandidate_429699(c, op_431567, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA49: ;
		}
		goto LA25;
		LA27: ;
		{
			Tnode215790* calleename;
			Slice88082 LOC63;
			NimStringDesc* LOC64;
			Tnode215790* LOC65;
			Tnode215790* callop;
			Tident190012* LOC66;
			Slice88082 LOC67;
			TY464931 LOC68;
			Slice88082 LOC69;
			TY464931 LOC70;
			if (!(((*n).flags &(1U<<((NU)(((NU8) 10))&15U)))!=0)) goto LA53;
			{
				NIM_BOOL LOC57;
				NI LOC59;
				NimStringDesc* LOC62;
				LOC57 = 0;
				LOC57 = ((*f).kind == ((NU8) 2));
				if (!(LOC57)) goto LA58;
				LOC59 = 0;
				LOC59 = sonslen_218351(n);
				LOC57 = (LOC59 == ((NI) 3));
				LA58: ;
				if (!!(LOC57)) goto LA60;
				LOC62 = 0;
				LOC62 = HEX24_188183(TMP3519);
				internalerror_188113(LOC62);
			}
			LA60: ;
			LOC63 = HEX2EHEX2E_102424(((NI) 0), (NI)(((*(*f).kindU.S5.ident).s ? (*(*f).kindU.S5.ident).s->Sup.len : 0) - ((NI) 2)));
			LOC64 = 0;
			LOC64 = HEX5BHEX5D_88075((*(*f).kindU.S5.ident).s, LOC63);
			LOC65 = 0;
			LOC65 = newstrnode_216678(((NU8) 20), LOC64);
			calleename = withinfo_217223(LOC65, (*n).info);
			LOC66 = 0;
			LOC66 = getident_190441(((NimStringDesc*) &TMP3520));
			callop = newidentnode_217228(LOC66, (*n).info);
			LOC67 = HEX2EHEX2E_102424(((NI) 0), ((NI) 1));
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = callop;
			LOC68[1] = HEX5BHEX5D_216238(n, ((NI) 1));
			LOC68[2] = calleename;
			HEX5BHEX5DHEX3D_388186((&(*n).kindU.S6.sons), LOC67, LOC68, 3);
			LOC69 = HEX2EHEX2E_102424(((NI) 0), ((NI) 1));
			memset((void*)LOC70, 0, sizeof(LOC70));
			LOC70[0] = callop;
			LOC70[1] = HEX5BHEX5D_216238(orig, ((NI) 1));
			LOC70[2] = calleename;
			HEX5BHEX5DHEX3D_388186((&(*orig).kindU.S6.sons), LOC69, LOC70, 3);
			pickbestcandidate_429699(c, callop, n, orig, initialbinding, filter, Result, (&alt), errors);
		}
		goto LA25;
		LA53: ;
		LA25: ;
		{
			NIM_BOOL LOC73;
			LOC73 = 0;
			LOC73 = (overloadsstate == ((NU8) 0));
			if (!(LOC73)) goto LA74;
			LOC73 = ((*Result).state == ((NU8) 0));
			LA74: ;
			if (!LOC73) goto LA75;
			{
				NIM_BOOL LOC79;
				Tident190012* LOC83;
				LOC79 = 0;
				LOC79 = (((*n).flags &(1U<<((NU)(((NU8) 9))&15U)))!=0);
				if (!(LOC79)) goto LA80;
				LOC79 = !((((*n).flags &(1U<<((NU)(((NU8) 11))&15U)))!=0));
				LA80: ;
				if (!LOC79) goto LA81;
				LOC83 = 0;
				LOC83 = considerquotedident_270004(f);
				localerror_188080((*n).info, ((NU16) 64), (*LOC83).s);
			}
			goto LA77;
			LA81: ;
			{
				Tident190012* LOC85;
				LOC85 = 0;
				LOC85 = considerquotedident_270004(f);
				localerror_188080((*n).info, ((NU16) 65), (*LOC85).s);
			}
			LA77: ;
			goto BeforeRet;
		}
		goto LA71;
		LA75: ;
		{
			if (!!(((*Result).state == ((NU8) 1)))) goto LA87;
			{
				NimStringDesc* LOC93;
				if (!(((*n).flags &(1U<<((NU)(((NU8) 12))&15U)))!=0)) goto LA91;
				LOC93 = 0;
				LOC93 = rendertree_234044(n, 4);
				localerror_188080((*n).info, ((NU16) 92), LOC93);
			}
			goto LA89;
			LA91: ;
			{
				{
					if (!!(((1536 & (*n).flags) == 0))) goto LA97;
					delete_430831((&(*n).kindU.S6.sons), ((NI) 2));
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), f);
				}
				LA97: ;
				unsureAsgnRef((void**) (&(*errors)), (Tsymseq215792*) newSeq((&NTI215792), 0));
				pickbestcandidate_429699(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA89: ;
			goto BeforeRet;
		}
		goto LA71;
		LA87: ;
		LA71: ;
	}
	LA23: ;
	{
		NIM_BOOL LOC101;
		NIM_BOOL LOC102;
		NI LOC104;
		NIM_BOOL LOC106;
		LOC101 = 0;
		LOC102 = 0;
		LOC102 = (alt.state == ((NU8) 1));
		if (!(LOC102)) goto LA103;
		LOC104 = 0;
		LOC104 = cmpcandidates_363609(Result, (&alt));
		LOC102 = (LOC104 == ((NI) 0));
		LA103: ;
		LOC101 = LOC102;
		if (!(LOC101)) goto LA105;
		LOC106 = 0;
		LOC106 = samemethoddispatcher_429637((*Result).calleesym, alt.calleesym);
		LOC101 = !(LOC106);
		LA105: ;
		if (!LOC101) goto LA107;
		{
			NimStringDesc* LOC113;
			if (!!(((*Result).state == ((NU8) 1)))) goto LA111;
			LOC113 = 0;
			LOC113 = HEX24_188183(TMP3521);
			internalerror_188113(LOC113);
		}
		LA111: ;
		{
			if (!(((NI) 0) < (*c).compilescontextid)) goto LA116;
			globalerror_188071((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3522));
		}
		goto LA114;
		LA116: ;
		{
			NimStringDesc* args;
			NimStringDesc* LOC130;
			TY185156 LOC131;
			NimStringDesc* LOC132;
			if (!(gerrorcounter_184081 == ((NI) 0))) goto LA119;
			args = copyString(((NimStringDesc*) &TMP3523));
			{
				NI i_431827;
				NI HEX3Atmp_431835;
				NI LOC122;
				NI res_431838;
				i_431827 = 0;
				HEX3Atmp_431835 = 0;
				LOC122 = 0;
				LOC122 = sonslen_218351(n);
				HEX3Atmp_431835 = (NI)(LOC122 - ((NI) 1));
				res_431838 = ((NI) 1);
				{
					while (1) {
						NimStringDesc* LOC129;
						if (!(res_431838 <= HEX3Atmp_431835)) goto LA124;
						i_431827 = res_431838;
						{
							if (!(((NI) 1) < i_431827)) goto LA127;
							args = resizeString(args, 2);
appendString(args, ((NimStringDesc*) &TMP3524));
						}
						LA127: ;
						LOC129 = 0;
						LOC129 = typetostring_241017((*(*n).kindU.S6.sons->data[i_431827]).typ, ((NU8) 0));
						args = resizeString(args, LOC129->Sup.len + 0);
appendString(args, LOC129);
						res_431838 += ((NI) 1);
					} LA124: ;
				}
			}
			args = resizeString(args, 1);
appendString(args, ((NimStringDesc*) &TMP3177));
			LOC130 = 0;
			LOC130 = msgkindtostring_184743(((NU16) 136));
			memset((void*)LOC131, 0, sizeof(LOC131));
			LOC131[0] = getprocheader_241324((*Result).calleesym, ((NU8) 0));
			LOC131[1] = getprocheader_241324(alt.calleesym, ((NU8) 0));
			LOC131[2] = copyString(args);
			LOC132 = 0;
			LOC132 = nsuFormatOpenArray(LOC130, LOC131, 3);
			localerror_188080((*n).info, ((NU16) 4), LOC132);
		}
		goto LA114;
		LA119: ;
		LA114: ;
	}
	LA107: ;
	}BeforeRet: ;
}

N_NIMCALL(void, instgenericconverterssons_431875)(Tcontext265020* c, Tnode215790* n, Tcandidate363206* x) {
	{
		if (!(*x).genericconverter) goto LA3;
		{
			NI i_432019;
			NI HEX3Atmp_432022;
			NI LOC6;
			NI res_432025;
			i_432019 = 0;
			HEX3Atmp_432022 = 0;
			LOC6 = 0;
			LOC6 = len_216059(n);
			HEX3Atmp_432022 = (LOC6 - 1);
			res_432025 = ((NI) 1);
			{
				while (1) {
					if (!(res_432025 <= HEX3Atmp_432022)) goto LA8;
					i_432019 = res_432025;
					instgenericconvertersarg_431842(c, (*n).kindU.S6.sons->data[i_432019], x);
					res_432025 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA3: ;
}

N_NIMCALL(Tnode215790*, semresolvedcall_432088)(Tcontext265020* c, Tnode215790* n, Tcandidate363206* x) {
	Tnode215790* result;
	Tsym215822* finalcallee;
	Tnode215790* gp;
{	result = 0;
	finalcallee = (*x).calleesym;
	markused_363244((*(*n).kindU.S6.sons->data[((NI) 0)]).info, finalcallee);
	{
		if (!((*finalcallee).ast == NIM_NIL)) goto LA3;
		internalerror_188100((*n).info, ((NimStringDesc*) &TMP3525));
	}
	LA3: ;
	{
		if (!!(((*x).fauxmatch == ((NU8) 0)))) goto LA7;
		result = (*x).call;
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(finalcallee, (*(*result).kindU.S6.sons->data[((NI) 0)]).info));
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = containsgenerictype_249492((*result).typ);
			if (LOC11) goto LA12;
			LOC11 = ((*x).fauxmatch == ((NU8) 60));
			LA12: ;
			if (!LOC11) goto LA13;
			asgnRefNoCycle((void**) (&(*result).typ), newtypes_265185((*x).fauxmatch, c));
		}
		LA13: ;
		goto BeforeRet;
	}
	LA7: ;
	gp = (*(*finalcallee).ast).kindU.S6.sons->data[((NI) 2)];
	{
		if (!!(((*gp).kind == ((NU8) 1)))) goto LA17;
		{
			if (!!(((196608 &(1U<<((NU)((*(*x).calleesym).kind)&31U)))!=0))) goto LA21;
			{
				if (!((*(*x).calleesym).magic == ((NU8) 4) || (*(*x).calleesym).magic == ((NU8) 5))) goto LA25;
				finalcallee = (*x).calleesym;
			}
			goto LA23;
			LA25: ;
			{
				finalcallee = generateinstance_429238(c, (*x).calleesym, (*x).bindings, (*n).info);
			}
			LA23: ;
		}
		goto LA19;
		LA21: ;
		{
			{
				Tsym215822* s_432469;
				Tidtable215840 HEX3Atmp_432484;
				s_432469 = 0;
				memset((void*)(&HEX3Atmp_432484), 0, sizeof(HEX3Atmp_432484));
				HEX3Atmp_432484.counter = (*x).bindings.counter;
				HEX3Atmp_432484.data = (*x).bindings.data;
				{
					NimStringDesc* LOC34;
					if (!!(((*gp).kind == ((NU8) 75)))) goto LA32;
					LOC34 = 0;
					LOC34 = HEX24_188183(TMP3193);
					internalerror_188113(LOC34);
				}
				LA32: ;
				{
					NI i_432490;
					Tnode215790* a_432492;
					i_432490 = 0;
					a_432492 = 0;
					{
						NI i_432494;
						NI HEX3Atmp_432496;
						NI LOC37;
						NI res_432498;
						i_432494 = 0;
						HEX3Atmp_432496 = 0;
						LOC37 = 0;
						LOC37 = len_216059(gp);
						HEX3Atmp_432496 = (LOC37 - 1);
						res_432498 = ((NI) 0);
						{
							while (1) {
								if (!(res_432498 <= HEX3Atmp_432496)) goto LA39;
								i_432494 = res_432498;
								i_432490 = i_432494;
								a_432492 = (*gp).kindU.S6.sons->data[i_432494];
								{
									Tsym215822* q_432502;
									NU8 symkind_432504;
									Tsym215822* s_432506;
									Tsym215822* LOC55;
									Ttype215828* t_432508;
									Tidobj190006* LOC56;
									TNimObject* LOC57;
									{
										NimStringDesc* LOC45;
										if (!!(((*a_432492).kind == ((NU8) 3)))) goto LA43;
										LOC45 = 0;
										LOC45 = HEX24_188183(TMP3194);
										internalerror_188113(LOC45);
									}
									LA43: ;
									q_432502 = (*a_432492).kindU.S4.sym;
									{
										if (!!(((*(*q_432502).typ).kind == ((NU8) 8) || (*(*q_432502).typ).kind == ((NU8) 12) || (*(*q_432502).typ).kind == ((NU8) 49) || (*(*q_432502).typ).kind >= ((NU8) 51) && (*(*q_432502).typ).kind <= ((NU8) 59)))) goto LA48;
										goto LA40;
									}
									LA48: ;
									{
										if (!((*(*q_432502).typ).kind == ((NU8) 59))) goto LA52;
										symkind_432504 = ((NU8) 10);
									}
									goto LA50;
									LA52: ;
									{
										symkind_432504 = ((NU8) 7);
									}
									LA50: ;
									LOC55 = 0;
									LOC55 = getcurrowner_265210();
									s_432506 = newsym_216684(symkind_432504, (*q_432502).name, LOC55, (*q_432502).info);
									(*s_432506).flags = ((*s_432506).flags | 5);
									LOC56 = 0;
									LOC56 = &(*q_432502).typ->Sup;
									LOC57 = 0;
									LOC57 = idtableget_222107(HEX3Atmp_432484, LOC56);
									t_432508 = ((Ttype215828*) (LOC57));
									{
										if (!(t_432508 == NIM_NIL)) goto LA60;
										{
											if (!(((*(*q_432502).typ).flags &(1U<<((NU)(((NU8) 10))&31U)))!=0)) goto LA64;
											t_432508 = (*q_432502).typ;
										}
										goto LA62;
										LA64: ;
										{
											localerror_188080((*a_432492).info, ((NU16) 128), (*(*s_432506).name).s);
											t_432508 = errortype_265901(c);
										}
										LA62: ;
									}
									goto LA58;
									LA60: ;
									{
										if (!((*t_432508).kind == ((NU8) 12))) goto LA68;
										localerror_188080((*a_432492).info, ((NU16) 128), (*(*q_432502).name).s);
										t_432508 = errortype_265901(c);
									}
									goto LA58;
									LA68: ;
									{
										if (!((*t_432508).kind == ((NU8) 9))) goto LA71;
										t_432508 = generatetypeinstance_286450(c, HEX3Atmp_432484, (*a_432492).info, t_432508);
									}
									goto LA58;
									LA71: ;
									LA58: ;
									asgnRefNoCycle((void**) (&(*s_432506).typ), t_432508);
									{
										if (!((*t_432508).kind == ((NU8) 59))) goto LA75;
										asgnRefNoCycle((void**) (&(*s_432506).ast), (*t_432508).n);
									}
									LA75: ;
									s_432469 = s_432506;
									switch ((*s_432469).kind) {
									case ((NU8) 10):
									{
										add_216114((*x).call, (*s_432469).ast);
									}
									break;
									case ((NU8) 7):
									{
										Tnode215790* LOC79;
										LOC79 = 0;
										LOC79 = newsymnode_217241(s_432469, (*n).info);
										add_216114((*x).call, LOC79);
									}
									break;
									default:
									{
										{
											NimStringDesc* LOC85;
											if (!NIM_TRUE) goto LA83;
											LOC85 = 0;
											LOC85 = HEX24_188183(TMP3526);
											internalerror_188113(LOC85);
										}
										LA83: ;
									}
									break;
									}
								} LA40: ;
								res_432498 += ((NI) 1);
							} LA39: ;
						}
					}
				}
			}
		}
		LA19: ;
	}
	LA17: ;
	result = (*x).call;
	instgenericconverterssons_431875(c, result, x);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(finalcallee, (*(*result).kindU.S6.sons->data[((NI) 0)]).info));
	asgnRefNoCycle((void**) (&(*result).typ), (*(*finalcallee).typ).sons->data[((NI) 0)]);
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, canderef_432509)(Tnode215790* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NI LOC2;
	Ttype215828* t;
	Tnode215790* LOC4;
	NIM_BOOL LOC5;
	Ttype215828* LOC7;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = len_216059(n);
	LOC1 = (((NI) 2) <= LOC2);
	if (!(LOC1)) goto LA3;
	LOC4 = 0;
	LOC4 = HEX5BHEX5D_216238(n, ((NI) 1));
	t = (*LOC4).typ;
	LOC5 = 0;
	LOC5 = !((t == NIM_NIL));
	if (!(LOC5)) goto LA6;
	LOC7 = 0;
	LOC7 = skiptypes_219113(t, 2048);
	LOC5 = ((*LOC7).kind == ((NU8) 21) || (*LOC7).kind == ((NU8) 22));
	LA6: ;
	LOC1 = LOC5;
	LA3: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode215790*, tryderef_432539)(Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* LOC1;
	result = 0;
	result = newnodei_217248(((NU8) 65), (*n).info);
	LOC1 = 0;
	LOC1 = skiptypes_219113((*n).typ, IL64(211106232576256));
	asgnRefNoCycle((void**) (&(*result).typ), (*LOC1).sons->data[((NI) 0)]);
	addson_217807(result, n);
	return result;
}

N_NIMCALL(void, notfounderror_430031)(Tcontext265020* c, Tnode215790* n_430034, Tsymseq215792* errors) {
	NimStringDesc* proto;
	NU8 prefer;
	NimStringDesc* result;
	NimStringDesc* LOC36;
	NimStringDesc* candidates;
{	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((NI) 0) < (*c).compilescontextid);
		if (!(LOC3)) goto LA4;
		LOC3 = !(((gglobaloptions_161121 &(1U<<((NU)(((NU8) 6))&31U)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		globalerror_188071((*n_430034).info, ((NU16) 133), ((NimStringDesc*) &TMP3155));
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		Tnode215790* LOC13;
		NimStringDesc* LOC14;
		LOC9 = 0;
		LOC9 = errors == 0;
		if (LOC9) goto LA10;
		LOC9 = ((errors ? errors->Sup.len : 0) == ((NI) 0));
		LA10: ;
		if (!LOC9) goto LA11;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_216238(n_430034, ((NI) 0));
		LOC14 = 0;
		LOC14 = rendertree_234044(LOC13, 0);
		localerror_188080((*n_430034).info, ((NU16) 92), LOC14);
		goto BeforeRet;
	}
	LA11: ;
	proto = describeargs_363731(c, n_430034, ((NI) 1), ((NU8) 0));
	prefer = ((NU8) 0);
	{
		Tsym215822* err_430073;
		NI i_430137;
		NI L_430139;
		err_430073 = 0;
		i_430137 = ((NI) 0);
		L_430139 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* errproto;
				Tnode215790* n;
				if (!(i_430137 < L_430139)) goto LA17;
				err_430073 = errors->data[i_430137];
				errproto = copyString(((NimStringDesc*) &TMP3155));
				n = (*(*err_430073).typ).n;
				{
					NI i_430089;
					NI HEX3Atmp_430128;
					NI LOC19;
					NI res_430131;
					i_430089 = 0;
					HEX3Atmp_430128 = 0;
					LOC19 = 0;
					LOC19 = len_216059(n);
					HEX3Atmp_430128 = (NI)(LOC19 - ((NI) 1));
					res_430131 = ((NI) 1);
					{
						while (1) {
							Tnode215790* p;
							if (!(res_430131 <= HEX3Atmp_430128)) goto LA21;
							i_430089 = res_430131;
							p = (*n).kindU.S6.sons->data[i_430089];
							{
								NimStringDesc* LOC26;
								if (!((*p).kind == ((NU8) 3))) goto LA24;
								LOC26 = 0;
								LOC26 = typetostring_241017((*(*p).kindU.S4.sym).typ, ((NU8) 0));
								errproto = resizeString(errproto, LOC26->Sup.len + 0);
appendString(errproto, LOC26);
								{
									NI LOC29;
									LOC29 = 0;
									LOC29 = len_216059(n);
									if (!!((i_430089 == (NI)(LOC29 - ((NI) 1))))) goto LA30;
									errproto = resizeString(errproto, 2);
appendString(errproto, ((NimStringDesc*) &TMP3524));
								}
								LA30: ;
							}
							LA24: ;
							res_430131 += ((NI) 1);
						} LA21: ;
					}
				}
				{
					if (!eqStrings(errproto, proto)) goto LA34;
					prefer = ((NU8) 3);
					goto LA15;
				}
				LA34: ;
				i_430137 += ((NI) 1);
			} LA17: ;
		}
	} LA15: ;
	result = msgkindtostring_184743(((NU16) 133));
	LOC36 = 0;
	LOC36 = describeargs_363731(c, n_430034, ((NI) 1), prefer);
	result = resizeString(result, LOC36->Sup.len + 0);
appendString(result, LOC36);
	result = addChar(result, 41);
	candidates = copyString(((NimStringDesc*) &TMP3155));
	{
		Tsym215822* err_430114;
		NI i_430143;
		NI L_430145;
		err_430114 = 0;
		i_430143 = ((NI) 0);
		L_430145 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC40;
				if (!(i_430143 < L_430145)) goto LA39;
				err_430114 = errors->data[i_430143];
				LOC40 = 0;
				LOC40 = getprocheader_241324(err_430114, prefer);
				candidates = resizeString(candidates, LOC40->Sup.len + 0);
appendString(candidates, LOC40);
				candidates = resizeString(candidates, 1);
appendString(candidates, ((NimStringDesc*) &TMP3527));
				i_430143 += ((NI) 1);
			} LA39: ;
		}
	}
	{
		NimStringDesc* LOC45;
		NimStringDesc* LOC46;
		if (!!(((candidates) && (candidates)->Sup.len == 0))) goto LA43;
		LOC45 = 0;
		LOC46 = 0;
		LOC46 = msgkindtostring_184743(((NU16) 134));
		LOC45 = rawNewString(LOC46->Sup.len + candidates->Sup.len + 2);
appendString(LOC45, ((NimStringDesc*) &TMP3527));
appendString(LOC45, LOC46);
appendString(LOC45, ((NimStringDesc*) &TMP3527));
appendString(LOC45, candidates);
		result = resizeString(result, LOC45->Sup.len + 0);
appendString(result, LOC45);
	}
	LA43: ;
	{
		NIM_BOOL LOC49;
		LOC49 = 0;
		LOC49 = (((NI) 0) < (*c).compilescontextid);
		if (!(LOC49)) goto LA50;
		LOC49 = ((gglobaloptions_161121 &(1U<<((NU)(((NU8) 6))&31U)))!=0);
		LA50: ;
		if (!LOC49) goto LA51;
		globalerror_188071((*n_430034).info, ((NU16) 4), result);
	}
	goto LA47;
	LA51: ;
	{
		localerror_188080((*n_430034).info, ((NU16) 4), result);
	}
	LA47: ;
	}BeforeRet: ;
}

N_NIMCALL(Tnode215790*, semoverloadedcall_432544)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, NU32 filter) {
	Tnode215790* result;
	Tsymseq215792* errors;
	Tcandidate363206 r_432553;
	result = 0;
	errors = 0;
	memset((void*)(&r_432553), 0, sizeof(r_432553));
	chckNil((void*)(&r_432553));
	memset((void*)(&r_432553), 0, sizeof(r_432553));
	resolveoverloads_430231(c, n, norig, filter, (&errors), (&r_432553));
	{
		if (!(r_432553.state == ((NU8) 1))) goto LA3;
		result = semresolvedcall_432088(c, n, (&r_432553));
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		Tcandidate363206 r;
		LOC6 = 0;
		LOC6 = experimentalmode_265970(c);
		if (!(LOC6)) goto LA7;
		LOC6 = canderef_432509(n);
		LA7: ;
		if (!LOC6) goto LA8;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_432539((*n).kindU.S6.sons->data[((NI) 1)]));
		memset((void*)(&r), 0, sizeof(r));
		chckNil((void*)(&r));
		memset((void*)(&r), 0, sizeof(r));
		resolveoverloads_430231(c, n, norig, filter, (&errors), (&r));
		{
			if (!(r.state == ((NU8) 1))) goto LA12;
			result = semresolvedcall_432088(c, n, (&r));
		}
		goto LA10;
		LA12: ;
		{
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)]);
			notfounderror_430031(c, n, errors);
		}
		LA10: ;
	}
	goto LA1;
	LA8: ;
	{
		notfounderror_430031(c, n, errors);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semoverloadedcallanalyseeffects_462936)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, NU16 flags) {
	Tnode215790* result;
{	result = 0;
	{
		if (!!(((flags & 6) == 0))) goto LA3;
		result = semoverloadedcall_432544(c, n, norig, 258048);
	}
	goto LA1;
	LA3: ;
	{
		result = semoverloadedcall_432544(c, n, norig, 241664);
	}
	LA1: ;
	{
		Tsym215822* callee;
		if (!!((result == NIM_NIL))) goto LA8;
		{
			if (!!(((*(*result).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_188113(((NimStringDesc*) &TMP3528));
			goto BeforeRet;
		}
		LA12: ;
		callee = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		switch ((*callee).kind) {
		case ((NU8) 16):
		case ((NU8) 17):
		{
		}
		break;
		default:
		{
			{
				NIM_BOOL LOC18;
				Tsym215822* LOC22;
				LOC18 = 0;
				LOC18 = ((*callee).kind == ((NU8) 14));
				if (!(LOC18)) goto LA19;
				LOC18 = ((*callee).Sup.id == (*(*(*c).p).owner).Sup.id);
				LA19: ;
				if (!LOC18) goto LA20;
				localerror_188080((*n).info, ((NU16) 26), (*(*callee).name).s);
				LOC22 = 0;
				LOC22 = errorsym_270243(c, n);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(LOC22));
			}
			LA20: ;
			{
				if (!!((((*callee).flags &(1U<<((NU)(((NU8) 10))&31U)))!=0))) goto LA25;
				{
					if (!!(((2080 & (*callee).flags) == 0))) goto LA29;
					(*(*(*c).p).owner).flags |= ((NU32)1)<<((((NU8) 11))%(sizeof(NU32)*8));
				}
				LA29: ;
			}
			LA25: ;
		}
		break;
		}
	}
	LA8: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, propertywriteaccess_464921)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, Tnode215790* a) {
	Tnode215790* result;
	Tident190012* id;
	Tnode215790* LOC1;
	Tnode215790* setterid;
	NimStringDesc* LOC2;
	Tident190012* LOC3;
	Tnode215790* aorig;
	Tnodeseq215784* LOC4;
	TY464931 LOC5;
	Tnode215790* LOC6;
	Tnode215790* orig;
	Tnodeseq215784* LOC7;
	TY464931 LOC8;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_216238(a, ((NI) 1));
	id = considerquotedident_270004(LOC1);
	LOC2 = 0;
	LOC2 = rawNewString((*id).s->Sup.len + 1);
appendString(LOC2, (*id).s);
appendChar(LOC2, 61);
	LOC3 = 0;
	LOC3 = getident_190441(LOC2);
	setterid = newidentnode_217228(LOC3, (*n).info);
	aorig = HEX5BHEX5D_216238(norig, ((NI) 0));
	LOC4 = 0;
	LOC4 = (Tnodeseq215784*) newSeq((&NTI215784), 3);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = setterid;
	LOC5[1] = HEX5BHEX5D_216238(a, ((NI) 0));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_216238(n, ((NI) 1));
	LOC5[2] = semexpr_426201(c, LOC6, 0);
	asgnRefNoCycle((void**) (&LOC4->data[0]), LOC5[0]);
	asgnRefNoCycle((void**) (&LOC4->data[1]), LOC5[1]);
	asgnRefNoCycle((void**) (&LOC4->data[2]), LOC5[2]);
	result = newnode_217601(((NU8) 27), (*n).info, LOC4, NIM_NIL);
	(*result).flags |= ((NU16)1)<<((((NU8) 10))%(sizeof(NU16)*8));
	LOC7 = 0;
	LOC7 = (Tnodeseq215784*) newSeq((&NTI215784), 3);
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = setterid;
	LOC8[1] = HEX5BHEX5D_216238(aorig, ((NI) 0));
	LOC8[2] = HEX5BHEX5D_216238(norig, ((NI) 1));
	asgnRefNoCycle((void**) (&LOC7->data[0]), LOC8[0]);
	asgnRefNoCycle((void**) (&LOC7->data[1]), LOC8[1]);
	asgnRefNoCycle((void**) (&LOC7->data[2]), LOC8[2]);
	orig = newnode_217601(((NU8) 27), (*n).info, LOC7, NIM_NIL);
	result = semoverloadedcallanalyseeffects_462936(c, result, orig, 0);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		result = aftercallactions_463385(c, result, norig, 0);
	}
	LA11: ;
	return result;
}

static N_INLINE(NIM_BOOL, issymchoice_460453)(Tnode215790* n) {
	NIM_BOOL result;
	result = 0;
	result = ((*n).kind == ((NU8) 56) || (*n).kind == ((NU8) 57));
	return result;
}

N_NIMCALL(Tnode215790*, dottransformation_464646)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode215790* LOC6;
		Tnode215790* LOC7;
		LOC3 = 0;
		LOC3 = issymchoice_460453((*n).kindU.S6.sons->data[((NI) 1)]);
		if (!LOC3) goto LA4;
		result = newnodei_217248(((NU8) 25), (*n).info);
		addson_217807(result, (*n).kindU.S6.sons->data[((NI) 1)]);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 0));
		LOC7 = 0;
		LOC7 = copytree_219822(LOC6);
		addson_217807(result, LOC7);
	}
	goto LA1;
	LA4: ;
	{
		Tident190012* i;
		Tnode215790* LOC9;
		Tnode215790* LOC10;
		Tnode215790* LOC11;
		Tnode215790* LOC12;
		i = considerquotedident_270004((*n).kindU.S6.sons->data[((NI) 1)]);
		result = newnodei_217248(((NU8) 25), (*n).info);
		(*result).flags |= ((NU16)1)<<((((NU8) 9))%(sizeof(NU16)*8));
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_216238(n, ((NI) 1));
		LOC10 = 0;
		LOC10 = newidentnode_217228(i, (*LOC9).info);
		addson_217807(result, LOC10);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_216238(n, ((NI) 0));
		LOC12 = 0;
		LOC12 = copytree_219822(LOC11);
		addson_217807(result, LOC12);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, buildoverloadedsubscripts_464683)(Tnode215790* n, Tident190012* ident) {
	Tnode215790* result;
	Tnode215790* LOC1;
	result = 0;
	result = newnodei_217248(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = newidentnode_217228(ident, (*n).info);
	add_216114(result, LOC1);
	{
		NI i_464699;
		NI HEX3Atmp_464702;
		NI LOC3;
		NI res_464705;
		i_464699 = 0;
		HEX3Atmp_464702 = 0;
		LOC3 = 0;
		LOC3 = len_216059(n);
		HEX3Atmp_464702 = (NI)(LOC3 - ((NI) 1));
		res_464705 = ((NI) 0);
		{
			while (1) {
				Tnode215790* LOC6;
				if (!(res_464705 <= HEX3Atmp_464702)) goto LA5;
				i_464699 = res_464705;
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_216238(n, i_464699);
				add_216114(result, LOC6);
				res_464705 += ((NI) 1);
			} LA5: ;
		}
	}
	return result;
}

N_NIMCALL(void, typemismatch_426316)(Tnode215790* n, Ttype215828* formal, Ttype215828* actual) {
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		NimStringDesc* LOC10;
		TY184752 LOC11;
		NimStringDesc* LOC12;
		LOC3 = 0;
		LOC3 = !(((*formal).kind == ((NU8) 50)));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*actual).kind == ((NU8) 50)));
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = msgkindtostring_184743(((NU16) 133));
		LOC9 = 0;
		LOC9 = typetostring_241017(actual, ((NU8) 0));
		LOC10 = 0;
		LOC10 = msgkindtostring_184743(((NU16) 135));
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = typetostring_241017(formal, ((NU8) 0));
		LOC12 = 0;
		LOC12 = nsuFormatOpenArray(LOC10, LOC11, 1);
		LOC7 = rawNewString(LOC8->Sup.len + LOC9->Sup.len + LOC12->Sup.len + 2);
appendString(LOC7, LOC8);
appendString(LOC7, LOC9);
appendString(LOC7, ((NimStringDesc*) &TMP3532));
appendString(LOC7, LOC12);
		localerror_188080((*n).info, ((NU16) 4), LOC7);
	}
	LA5: ;
}

N_NIMCALL(Ttype215828*, newproctype_452767)(Tlineinfo183337 info, Tsym215822* owner) {
	Ttype215828* result;
	Tnode215790* LOC1;
	result = 0;
	result = newtype_218107(((NU8) 25), owner);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_217248(((NU8) 76), info));
	rawaddson_219408(result, NIM_NIL);
	LOC1 = 0;
	LOC1 = newnodei_217248(((NU8) 152), info);
	addson_217807((*result).n, LOC1);
	return result;
}

N_NIMCALL(void, addparam_452772)(Ttype215828* proctype, Tsym215822* param) {
	NI LOC1;
	Tnode215790* LOC2;
	LOC1 = 0;
	LOC1 = len_218339(proctype);
	(*param).position = (NI)(LOC1 - ((NI) 1));
	LOC2 = 0;
	LOC2 = newsymnode_217234(param);
	addson_217807((*proctype).n, LOC2);
	rawaddson_219408(proctype, (*param).typ);
}

N_NIMCALL(Tnode215790*, newasgnstmt_452069)(Tnode215790* le, Tnode215790* ri) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217401(((NU8) 73), (*le).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), le);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), ri);
	return result;
}

N_NIMCALL(void, defaultop_452603)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y) {
	{
		Tnode215790* LOC5;
		if (!!(((*c).kind == ((NU8) 2)))) goto LA3;
		LOC5 = 0;
		LOC5 = newasgnstmt_452069(x, y);
		add_216114(body, LOC5);
	}
	LA3: ;
}

N_NIMCALL(Tnode215790*, genbuiltin_452653)(NU8 magic, NimStringDesc* name, Tnode215790* i) {
	Tnode215790* result;
	Tsym215822* LOC1;
	Tnode215790* LOC2;
	result = 0;
	result = newnodei_217248(((NU8) 27), (*i).info);
	LOC1 = 0;
	LOC1 = createmagic_220600(name, magic);
	LOC2 = 0;
	LOC2 = newsymnode_217234(LOC1);
	add_216114(result, LOC2);
	add_216114(result, i);
	return result;
}

N_NIMCALL(Tnode215790*, newseqcall_452680)(Tcontext265020* c, Tnode215790* x, Tnode215790* y) {
	Tnode215790* result;
	Tnode215790* lencall;
	result = 0;
	result = genbuiltin_452653(((NU8) 31), ((NimStringDesc*) &TMP3536), x);
	lencall = genbuiltin_452653(((NU8) 35), ((NimStringDesc*) &TMP3537), y);
	asgnRefNoCycle((void**) (&(*lencall).typ), getsystype_259130(((NU8) 31)));
	add_216114(result, lencall);
	return result;
}

N_NIMCALL(void, addvar_452621)(Tnode215790* father, Tnode215790* v, Tnode215790* value) {
	Tnode215790* vpart;
	vpart = newnodei_217401(((NU8) 35), (*v).info, ((NI) 3));
	asgnRefNoCycle((void**) (&(*vpart).kindU.S6.sons->data[((NI) 0)]), v);
	asgnRefNoCycle((void**) (&(*vpart).kindU.S6.sons->data[((NI) 1)]), emptynode_216801);
	asgnRefNoCycle((void**) (&(*vpart).kindU.S6.sons->data[((NI) 2)]), value);
	addson_217807(father, vpart);
}

N_NIMCALL(Tnode215790*, declarecounter_452630)(Tliftctx451895* c, Tnode215790* body, NI64 first) {
	Tnode215790* result;
	Tsym215822* temp;
	Tident190012* LOC1;
	Tnode215790* v;
	Tnode215790* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_190441(((NimStringDesc*) &TMP3538));
	temp = newsym_216684(((NU8) 5), LOC1, (*c).fn, (*c).info);
	asgnRefNoCycle((void**) (&(*temp).typ), getsystype_259130(((NU8) 31)));
	(*temp).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	v = newnodei_217248(((NU8) 99), (*c).info);
	result = newsymnode_217234(temp);
	LOC2 = 0;
	LOC2 = newintlit_379359(first);
	addvar_452621(v, result, LOC2);
	add_216114(body, v);
	return result;
}

N_NIMCALL(Tnode215790*, genwhileloop_452662)(Tliftctx451895* c, Tnode215790* i, Tnode215790* dest) {
	Tnode215790* result;
	Tnode215790* cmp;
	Tnode215790* LOC1;
	result = 0;
	result = newnodei_217401(((NU8) 96), (*c).info, ((NI) 2));
	cmp = genbuiltin_452653(((NU8) 70), ((NimStringDesc*) &TMP3539), i);
	LOC1 = 0;
	LOC1 = genhigh_379363(dest);
	add_216114(cmp, LOC1);
	asgnRefNoCycle((void**) (&(*cmp).typ), getsystype_259130(((NU8) 1)));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), cmp);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), newnodei_217248(((NU8) 115), (*c).info));
	return result;
}

N_NIMCALL(Tnode215790*, at_451915)(Tnode215790* a, Tnode215790* i, Ttype215828* elemtype) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217401(((NU8) 42), (*a).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), a);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), i);
	asgnRefNoCycle((void**) (&(*result).typ), elemtype);
	return result;
}

N_NIMCALL(void, addincstmt_452673)(Tnode215790* body, Tnode215790* i) {
	Tnode215790* inccall;
	Tnode215790* LOC1;
	inccall = genbuiltin_452653(((NU8) 26), ((NimStringDesc*) &TMP3541), i);
	LOC1 = 0;
	LOC1 = newintlit_379359(IL64(1));
	add_216114(inccall, LOC1);
	add_216114(body, inccall);
}

N_NIMCALL(Tnode215790*, newdestructorcall_452076)(Tsym215822* op, Tnode215790* x) {
	Tnode215790* result;
	Tnode215790* LOC1;
	result = 0;
	result = newnodeit_217801(((NU8) 27), (*x).info, (*(*op).typ).sons->data[((NI) 0)]);
	LOC1 = 0;
	LOC1 = newsymnode_217234(op);
	add_216114(result, LOC1);
	add_216114(result, x);
	return result;
}

N_NIMCALL(Tnode215790*, genaddr_452032)(Tcontext265020* c, Tnode215790* x) {
	Tnode215790* result;
	result = 0;
	{
		if (!((*x).kind == ((NU8) 65))) goto LA3;
		checksonslen_265958(x, ((NI) 1));
		result = (*x).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		Ttype215828* LOC6;
		LOC6 = 0;
		LOC6 = makevartype_265491(c, (*x).typ);
		result = newnodeit_217801(((NU8) 64), (*x).info, LOC6);
		addson_217807(result, x);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, newasgncall_452047)(Tcontext265020* c, Tsym215822* op, Tnode215790* x, Tnode215790* y) {
	Tnode215790* result;
	Tnode215790* LOC5;
	Tnode215790* LOC6;
	result = 0;
	{
		if (!(((*op).flags &(1U<<((NU)(((NU8) 20))&31U)))!=0)) goto LA3;
		localerror_188080((*x).info, ((NU16) 226), (*(*op).name).s);
	}
	LA3: ;
	result = newnodei_217248(((NU8) 27), (*x).info);
	LOC5 = 0;
	LOC5 = newsymnode_217234(op);
	add_216114(result, LOC5);
	LOC6 = 0;
	LOC6 = genaddr_452032(c, x);
	add_216114(result, LOC6);
	add_216114(result, y);
	return result;
}

N_NIMCALL(Tnode215790*, newdeepcopycall_452084)(Tsym215822* op, Tnode215790* x, Tnode215790* y) {
	Tnode215790* result;
	Tnode215790* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newdestructorcall_452076(op, y);
	result = newasgnstmt_452069(x, LOC1);
	return result;
}

N_NIMCALL(NIM_BOOL, consideroverloadedop_452090)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y) {
	NIM_BOOL result;
{	result = 0;
	switch ((*c).kind) {
	case ((NU8) 2):
	{
		Tsym215822* op;
		op = (*t).destructor;
		{
			Tnode215790* LOC6;
			if (!!((op == NIM_NIL))) goto LA4;
			markused_363244((*c).info, op);
			LOC6 = 0;
			LOC6 = newdestructorcall_452076(op, x);
			add_216114(body, LOC6);
			result = NIM_TRUE;
		}
		LA4: ;
	}
	break;
	case ((NU8) 0):
	{
		{
			Tsym215822* op;
			Tnode215790* LOC27;
			if (!(((*t).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0)) goto LA10;
			op = 0;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = sametype_245628(t, (*c).asgnfortype, 0);
				if (!LOC14) goto LA15;
				{
					if (!(*c).recurse) goto LA19;
					op = (*c).fn;
				}
				goto LA17;
				LA19: ;
				{
					(*c).recurse = NIM_TRUE;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA17: ;
			}
			goto LA12;
			LA15: ;
			{
				op = (*t).assignment;
				{
					if (!(op == NIM_NIL)) goto LA25;
					op = liftbody_451910((*c).c, t, (*c).info);
				}
				LA25: ;
			}
			LA12: ;
			markused_363244((*c).info, op);
			LOC27 = 0;
			LOC27 = newasgncall_452047((*c).c, op, x, y);
			add_216114(body, LOC27);
			result = NIM_TRUE;
		}
		LA10: ;
	}
	break;
	case ((NU8) 1):
	{
		Tsym215822* op;
		op = (*t).deepcopy;
		{
			Tnode215790* LOC33;
			if (!!((op == NIM_NIL))) goto LA31;
			markused_363244((*c).info, op);
			LOC33 = 0;
			LOC33 = newdeepcopycall_452084(op, x, y);
			add_216114(body, LOC33);
			result = NIM_TRUE;
		}
		LA31: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, dotfield_451960)(Tnode215790* x, Tsym215822* f) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217401(((NU8) 45), (*x).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), x);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), newsymnode_217241(f, (*x).info));
	asgnRefNoCycle((void**) (&(*result).typ), (*f).typ);
	return result;
}

N_NIMCALL(void, liftbodyobj_451968)(Tliftctx451895* c, Tnode215790* n, Tnode215790* body, Tnode215790* x, Tnode215790* y) {
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		Tsym215822* f;
		Tnode215790* LOC2;
		Tnode215790* LOC3;
		f = (*n).kindU.S4.sym;
		LOC2 = 0;
		LOC2 = dotfield_451960(x, f);
		LOC3 = 0;
		LOC3 = dotfield_451960(y, f);
		liftbodyaux_451902(c, (*f).typ, body, LOC2, LOC3);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		Tnode215790* LOC6;
		Tnode215790* casestmt;
		Tnode215790* access;
		Tnode215790* LOC7;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 0));
		liftbodyobj_451968(c, LOC6, body, x, y);
		casestmt = newnodei_217248(((NU8) 97), (*c).info);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_216238(n, ((NI) 0));
		access = dotfield_451960(x, (*LOC7).kindU.S4.sym);
		add_216114(casestmt, access);
		{
			NI i_452003;
			NI HEX3Atmp_452014;
			NI LOC9;
			NI res_452017;
			i_452003 = 0;
			HEX3Atmp_452014 = 0;
			LOC9 = 0;
			LOC9 = len_216059(n);
			HEX3Atmp_452014 = (LOC9 - 1);
			res_452017 = ((NI) 1);
			{
				while (1) {
					Tnode215790* branch;
					Tnode215790* LOC12;
					NI L;
					Tnode215790* LOC13;
					Tnode215790* LOC14;
					if (!(res_452017 <= HEX3Atmp_452014)) goto LA11;
					i_452003 = res_452017;
					LOC12 = 0;
					LOC12 = HEX5BHEX5D_216238(n, i_452003);
					branch = copytree_219822(LOC12);
					L = len_216059(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_217248(((NU8) 115), (*c).info));
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_216238(n, i_452003);
					LOC14 = 0;
					LOC14 = lastson_218364(LOC13);
					liftbodyobj_451968(c, LOC14, (*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))], x, y);
					add_216114(casestmt, branch);
					res_452017 += ((NI) 1);
				} LA11: ;
			}
		}
		add_216114(body, casestmt);
		localerror_188085((*c).info, ((NimStringDesc*) &TMP3542));
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode215790* t_452012;
			t_452012 = 0;
			{
				NI i_452025;
				NI HEX3Atmp_452027;
				NI LOC18;
				NI res_452029;
				i_452025 = 0;
				HEX3Atmp_452027 = 0;
				LOC18 = 0;
				LOC18 = len_216059(n);
				HEX3Atmp_452027 = (LOC18 - 1);
				res_452029 = ((NI) 0);
				{
					while (1) {
						if (!(res_452029 <= HEX3Atmp_452027)) goto LA20;
						i_452025 = res_452029;
						t_452012 = (*n).kindU.S6.sons->data[i_452025];
						liftbodyobj_451968(c, t_452012, body, x, y);
						res_452029 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_265954(n);
	}
	break;
	}
}

N_NIMCALL(void, liftbodytup_451923)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y) {
	{
		NI i_451948;
		NI HEX3Atmp_451953;
		NI LOC2;
		NI res_451956;
		i_451948 = 0;
		HEX3Atmp_451953 = 0;
		LOC2 = 0;
		LOC2 = len_218339(t);
		HEX3Atmp_451953 = (LOC2 - 1);
		res_451956 = ((NI) 0);
		{
			while (1) {
				Tnode215790* lit;
				Tnode215790* LOC5;
				Tnode215790* LOC6;
				if (!(res_451956 <= HEX3Atmp_451953)) goto LA4;
				i_451948 = res_451956;
				lit = newintlit_379359(((NI64) (i_451948)));
				LOC5 = 0;
				LOC5 = at_451915(x, lit, (*t).sons->data[i_451948]);
				LOC6 = 0;
				LOC6 = at_451915(y, lit, (*t).sons->data[i_451948]);
				liftbodyaux_451902(c, (*t).sons->data[i_451948], body, LOC5, LOC6);
				res_451956 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, liftbodyaux_451902)(Tliftctx451895* c, Ttype215828* t, Tnode215790* body, Tnode215790* x, Tnode215790* y) {
	switch ((*t).kind) {
	case ((NU8) 0):
	case ((NU8) 3):
	{
	}
	break;
	case ((NU8) 26):
	case ((NU8) 19):
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 14):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 29):
	case ((NU8) 21):
	case ((NU8) 28):
	case ((NU8) 22):
	{
		defaultop_452603(c, t, body, x, y);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	case ((NU8) 24):
	{
		{
			Tnode215790* i;
			NI64 LOC13;
			Tnode215790* whileloop;
			Ttype215828* elemtype;
			Tnode215790* LOC14;
			Tnode215790* LOC15;
			if (!(((*t).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0)) goto LA6;
			{
				Tnode215790* LOC12;
				if (!((*t).kind == ((NU8) 24))) goto LA10;
				LOC12 = 0;
				LOC12 = newseqcall_452680((*c).c, x, y);
				add_216114(body, LOC12);
			}
			LA10: ;
			LOC13 = 0;
			LOC13 = firstord_241001(t);
			i = declarecounter_452630(c, body, LOC13);
			whileloop = genwhileloop_452662(c, i, x);
			elemtype = lastson_218377(t);
			LOC14 = 0;
			LOC14 = at_451915(x, i, elemtype);
			LOC15 = 0;
			LOC15 = at_451915(y, i, elemtype);
			liftbodyaux_451902(c, elemtype, (*whileloop).kindU.S6.sons->data[((NI) 1)], LOC14, LOC15);
			addincstmt_452673((*whileloop).kindU.S6.sons->data[((NI) 1)], i);
			add_216114(body, whileloop);
		}
		goto LA4;
		LA6: ;
		{
			defaultop_452603(c, t, body, x, y);
		}
		LA4: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 13):
	{
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = consideroverloadedop_452090(c, t, body, x, y);
			if (!!(LOC20)) goto LA21;
			{
				if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA25;
				liftbodyaux_451902(c, (*t).sons->data[((NI) 0)], body, x, y);
			}
			LA25: ;
			{
				if (!((*t).kind == ((NU8) 17))) goto LA29;
				liftbodyobj_451968(c, (*t).n, body, x, y);
			}
			LA29: ;
		}
		LA21: ;
	}
	break;
	case ((NU8) 18):
	{
		liftbodytup_451923(c, t, body, x, y);
	}
	break;
	case ((NU8) 25):
	{
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = !(((*t).callconv == ((NU8) 8)));
			if (LOC35) goto LA36;
			LOC35 = !(((*c).kind == ((NU8) 1)));
			LA36: ;
			if (!LOC35) goto LA37;
			defaultop_452603(c, t, body, x, y);
		}
		goto LA33;
		LA37: ;
		{
			Tnode215790* call;
			Tsym215822* LOC40;
			Tnode215790* LOC41;
			call = newnodei_217401(((NU8) 27), (*c).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*call).typ), t);
			LOC40 = 0;
			LOC40 = createmagic_220600(((NimStringDesc*) &TMP3543), ((NU8) 202));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(LOC40));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 1)]), y);
			LOC41 = 0;
			LOC41 = newasgnstmt_452069(x, call);
			add_216114(body, LOC41);
		}
		LA33: ;
	}
	break;
	case ((NU8) 48):
	case ((NU8) 27):
	{
		localerror_188080((*c).info, ((NU16) 4), ((NimStringDesc*) &TMP3544));
	}
	break;
	case ((NU8) 60):
	case ((NU8) 49):
	case ((NU8) 50):
	case ((NU8) 51):
	case ((NU8) 52):
	case ((NU8) 53):
	case ((NU8) 54):
	case ((NU8) 55):
	case ((NU8) 56):
	case ((NU8) 57):
	case ((NU8) 58):
	case ((NU8) 47):
	case ((NU8) 12):
	case ((NU8) 10):
	case ((NU8) 5):
	case ((NU8) 6):
	case ((NU8) 7):
	case ((NU8) 8):
	case ((NU8) 9):
	case ((NU8) 45):
	case ((NU8) 46):
	case ((NU8) 30):
	{
		NimStringDesc* LOC44;
		NimStringDesc* LOC45;
		LOC44 = 0;
		LOC45 = 0;
		LOC45 = typetostring_241017(t, ((NU8) 0));
		LOC44 = rawNewString(LOC45->Sup.len + 31);
appendString(LOC44, ((NimStringDesc*) &TMP3545));
appendString(LOC44, LOC45);
		internalerror_188100((*c).info, LOC44);
	}
	break;
	case ((NU8) 15):
	case ((NU8) 20):
	case ((NU8) 11):
	case ((NU8) 61):
	case ((NU8) 59):
	case ((NU8) 23):
	{
		Ttype215828* LOC47;
		LOC47 = 0;
		LOC47 = lastson_218377(t);
		liftbodyaux_451902(c, LOC47, body, x, y);
	}
	break;
	}
}

static N_INLINE(Tnode215790*, newderef_377006)(Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = newnodeit_217801(((NU8) 65), (*n).info, (*(*n).typ).sons->data[((NI) 0)]);
	addson_217807(result, n);
	return result;
}

N_NIMCALL(Tsym215822*, liftbody_451910)(Tcontext265020* c, Ttype215828* typ, Tlineinfo183337 info) {
	Tsym215822* result;
	Tliftctx451895 a;
	Tnode215790* body;
	Tident190012* LOC1;
	Tsym215822* dest;
	Tident190012* LOC2;
	Tsym215822* src;
	Tident190012* LOC3;
	Tnode215790* LOC4;
	Tnode215790* LOC5;
	Tnode215790* LOC6;
	Tnode215790* n;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	a.info = info;
	body = newnodei_217248(((NU8) 115), info);
	LOC1 = 0;
	LOC1 = getident_190441(((NimStringDesc*) &TMP3533));
	result = newsym_216684(((NU8) 12), LOC1, (*typ).owner, info);
	a.fn = result;
	a.asgnfortype = typ;
	LOC2 = 0;
	LOC2 = getident_190441(((NimStringDesc*) &TMP3534));
	dest = newsym_216684(((NU8) 3), LOC2, result, info);
	LOC3 = 0;
	LOC3 = getident_190441(((NimStringDesc*) &TMP3535));
	src = newsym_216684(((NU8) 3), LOC3, result, info);
	asgnRefNoCycle((void**) (&(*dest).typ), makevartype_265491(c, typ));
	asgnRefNoCycle((void**) (&(*src).typ), typ);
	asgnRefNoCycle((void**) (&(*result).typ), newproctype_452767(info, (*typ).owner));
	addparam_452772((*result).typ, dest);
	addparam_452772((*result).typ, src);
	LOC4 = 0;
	LOC4 = newsymnode_217234(dest);
	LOC5 = 0;
	LOC5 = newderef_377006(LOC4);
	LOC6 = 0;
	LOC6 = newsymnode_217234(src);
	liftbodyaux_451902((&a), typ, body, LOC5, LOC6);
	n = newnodei_217401(((NU8) 79), info, ((NI) 7));
	{
		NI i_452814;
		NI HEX3Atmp_452823;
		NI LOC8;
		NI res_452826;
		i_452814 = 0;
		HEX3Atmp_452823 = 0;
		LOC8 = 0;
		LOC8 = len_216059(n);
		HEX3Atmp_452823 = (LOC8 - 1);
		res_452826 = ((NI) 0);
		{
			while (1) {
				if (!(res_452826 <= HEX3Atmp_452823)) goto LA10;
				i_452814 = res_452826;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_452814]), emptynode_216801);
				res_452826 += ((NI) 1);
			} LA10: ;
		}
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(result));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), (*(*result).typ).n);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), body);
	asgnRefNoCycle((void**) (&(*result).ast), n);
	asgnRefNoCycle((void**) (&(*typ).assignment), result);
	return result;
}

N_NIMCALL(Tsym215822*, getasgnorliftbody_452830)(Tcontext265020* c, Ttype215828* typ, Tlineinfo183337 info) {
	Tsym215822* result;
	Ttype215828* t;
	result = 0;
	t = skiptypes_219113(typ, 8390656);
	result = (*t).assignment;
	{
		if (!result == 0) goto LA3;
		result = liftbody_451910(c, t, info);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode215790*, overloadedasgn_452847)(Tcontext265020* c, Tnode215790* dest, Tnode215790* src) {
	Tnode215790* result;
	Tsym215822* a;
	result = 0;
	a = getasgnorliftbody_452830(c, (*dest).typ, (*dest).info);
	result = newasgncall_452047(c, a, dest, src);
	return result;
}

N_NIMCALL(Tnode215790*, takeimplicitaddr_464984)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	NU8 valid;
	Ttype215828* LOC20;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 64):
	case ((NU8) 63):
	{
		result = n;
		goto BeforeRet;
	}
	break;
	case ((NU8) 65):
	case ((NU8) 47):
	{
		result = (*n).kindU.S6.sons->data[((NI) 0)];
		goto BeforeRet;
	}
	break;
	case ((NU8) 42):
	{
		{
			NI LOC6;
			LOC6 = 0;
			LOC6 = len_216059(n);
			if (!(LOC6 == ((NI) 1))) goto LA7;
			result = (*n).kindU.S6.sons->data[((NI) 0)];
			goto BeforeRet;
		}
		LA7: ;
	}
	break;
	default:
	{
	}
	break;
	}
	valid = isassignable_461627(c, n, NIM_FALSE);
	{
		if (!!((valid == ((NU8) 1)))) goto LA12;
		{
			NimStringDesc* LOC18;
			if (!(valid == ((NU8) 2))) goto LA16;
			LOC18 = 0;
			LOC18 = rendertree_234044(n, 4);
			localerror_188080((*n).info, ((NU16) 130), LOC18);
		}
		goto LA14;
		LA16: ;
		{
			localerror_188080((*n).info, ((NU16) 129), ((NimStringDesc*) &TMP3155));
		}
		LA14: ;
	}
	LA12: ;
	LOC20 = 0;
	LOC20 = makeptrtype_265181(c, (*n).typ);
	result = newnodeit_217801(((NU8) 64), (*n).info, LOC20);
	add_216114(result, n);
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, asgntoresultvar_465012)(Tcontext265020* c, Tnode215790* n, Tnode215790* le, Tnode215790* ri) {
	{
		Tnode215790* x;
		if (!((*le).kind == ((NU8) 65))) goto LA3;
		x = (*le).kindU.S6.sons->data[((NI) 0)];
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC8;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = ((*(*x).typ).kind == ((NU8) 23));
			if (!(LOC8)) goto LA9;
			LOC8 = ((*x).kind == ((NU8) 3));
			LA9: ;
			LOC7 = LOC8;
			if (!(LOC7)) goto LA10;
			LOC7 = ((*(*x).kindU.S4.sym).kind == ((NU8) 11));
			LA10: ;
			if (!LOC7) goto LA11;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), x);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), takeimplicitaddr_464984(c, ri));
			(*(*x).typ).flags |= ((NU32)1)<<((((NU8) 18))%(sizeof(NU32)*8));
		}
		LA11: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode215790*, semasgn_462057)(Tcontext265020* c, Tnode215790* n, NU8 mode) {
	Tnode215790* result;
	Tnode215790* a;
	Ttype215828* le;
{	result = 0;
	checksonslen_265958(n, ((NI) 2));
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	switch ((*a).kind) {
	case ((NU8) 45):
	{
		Tnode215790* norig;
		norig = copytree_219822(n);
		a = builtinfieldaccess_463890(c, a, 1);
		{
			Tnode215790* LOC6;
			Tnode215790* LOC11;
			if (!(a == NIM_NIL)) goto LA4;
			LOC6 = 0;
			LOC6 = HEX5BHEX5D_216238(n, ((NI) 0));
			a = propertywriteaccess_464921(c, n, norig, LOC6);
			{
				if (!!((a == NIM_NIL))) goto LA9;
				result = a;
				goto BeforeRet;
			}
			LA9: ;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_216238(n, ((NI) 0));
			a = dottransformation_464646(c, LOC11);
			{
				if (!((*a).kind == ((NU8) 25))) goto LA14;
				(*a).kind = ((NU8) 27);
				a = semexprwithtype_426208(c, a, 1);
			}
			LA14: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 42):
	{
		Tnode215790* oldbracketexpr;
		oldbracketexpr = (*(*c).p).bracketexpr;
		a = semsubscript_462062(c, a, 1);
		{
			NIM_BOOL LOC19;
			Tident190012* LOC23;
			Tnode215790* LOC24;
			LOC19 = 0;
			LOC19 = (a == NIM_NIL);
			if (!(LOC19)) goto LA20;
			LOC19 = !((mode == ((NU8) 1)));
			LA20: ;
			if (!LOC19) goto LA21;
			LOC23 = 0;
			LOC23 = getident_190441(((NimStringDesc*) &TMP3529));
			result = buildoverloadedsubscripts_464683((*n).kindU.S6.sons->data[((NI) 0)], LOC23);
			LOC24 = 0;
			LOC24 = HEX5BHEX5D_216238(n, ((NI) 1));
			add_216114(result, LOC24);
			result = semexprnotype_426215(c, result);
			asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
			goto BeforeRet;
		}
		goto LA17;
		LA21: ;
		{
			NimStringDesc* LOC28;
			Tnode215790* LOC29;
			NimStringDesc* LOC30;
			if (!(a == NIM_NIL)) goto LA26;
			LOC28 = 0;
			LOC29 = 0;
			LOC29 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC30 = 0;
			LOC30 = HEX24_234066(LOC29);
			LOC28 = rawNewString(LOC30->Sup.len + 19);
appendString(LOC28, ((NimStringDesc*) &TMP3378));
appendString(LOC28, LOC30);
			localerror_188085((*n).info, LOC28);
			result = n;
			goto BeforeRet;
		}
		goto LA17;
		LA26: ;
		LA17: ;
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	}
	break;
	case ((NU8) 40):
	{
		Tident190012* LOC32;
		Tnode215790* LOC33;
		LOC32 = 0;
		LOC32 = getident_190441(((NimStringDesc*) &TMP3530));
		result = buildoverloadedsubscripts_464683((*n).kindU.S6.sons->data[((NI) 0)], LOC32);
		LOC33 = 0;
		LOC33 = HEX5BHEX5D_216238(n, ((NI) 1));
		add_216114(result, LOC33);
		result = semexprnotype_426215(c, result);
		goto BeforeRet;
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC37;
			Tnode215790* LOC40;
			LOC37 = 0;
			LOC37 = len_216059(a);
			if (!(((NI) 2) <= LOC37)) goto LA38;
			LOC40 = 0;
			LOC40 = lowertupleunpackingforasgn_377261(n, (*(*c).p).owner);
			result = semstmt_426250(c, LOC40);
			goto BeforeRet;
		}
		goto LA35;
		LA38: ;
		{
			a = semexprwithtype_426208(c, a, 1);
		}
		LA35: ;
	}
	break;
	default:
	{
		a = semexprwithtype_426208(c, a, 1);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	le = (*a).typ;
	{
		NIM_BOOL LOC45;
		Ttype215828* LOC46;
		NU8 LOC48;
		NimStringDesc* LOC51;
		LOC45 = 0;
		LOC46 = 0;
		LOC46 = skiptypes_219113(le, 2048);
		LOC45 = !(((*LOC46).kind == ((NU8) 23)));
		if (!(LOC45)) goto LA47;
		LOC48 = 0;
		LOC48 = isassignable_461627(c, a, NIM_FALSE);
		LOC45 = (LOC48 == ((NU8) 0));
		LA47: ;
		if (!LOC45) goto LA49;
		LOC51 = 0;
		LOC51 = rendertree_234044(a, 4);
		localerror_188080((*a).info, ((NU16) 180), LOC51);
	}
	goto LA43;
	LA49: ;
	{
		Tnode215790* lhs;
		NIM_BOOL lhsisresult;
		NIM_BOOL LOC53;
		Tnode215790* rhs;
		NU16 LOC55;
		lhs = (*n).kindU.S6.sons->data[((NI) 0)];
		LOC53 = 0;
		LOC53 = ((*lhs).kind == ((NU8) 3));
		if (!(LOC53)) goto LA54;
		LOC53 = ((*(*lhs).kindU.S4.sym).kind == ((NU8) 11));
		LA54: ;
		lhsisresult = LOC53;
		{
			if (!lhsisresult) goto LA58;
			LOC55 = 64;
		}
		goto LA56;
		LA58: ;
		{
			LOC55 = 0;
		}
		LA56: ;
		rhs = semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 1)], LOC55);
		{
			if (!lhsisresult) goto LA63;
			asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_448802);
			{
				NIM_BOOL LOC67;
				NIM_BOOL LOC69;
				LOC67 = 0;
				LOC67 = !(((*(*(*c).p).owner).kind == ((NU8) 16)));
				if (!(LOC67)) goto LA68;
				LOC69 = 0;
				LOC69 = ismetatype_216803((*(*lhs).kindU.S4.sym).typ);
				if (!(LOC69)) goto LA70;
				LOC69 = !(((*(*(*lhs).kindU.S4.sym).typ).kind == ((NU8) 8)));
				LA70: ;
				LOC67 = LOC69;
				LA68: ;
				if (!LOC67) goto LA71;
				{
					NU8 LOC75;
					LOC75 = 0;
					LOC75 = cmptypes_367484(c, (*lhs).typ, (*rhs).typ);
					if (!(LOC75 == ((NU8) 8))) goto LA76;
					{
						NimStringDesc* LOC82;
						if (!!(!(((*(*c).p).resultsym == NIM_NIL)))) goto LA80;
						LOC82 = 0;
						LOC82 = HEX24_188183(TMP3531);
						internalerror_188113(LOC82);
					}
					LA80: ;
					asgnRefNoCycle((void**) (&(*lhs).typ), (*rhs).typ);
					asgnRefNoCycle((void**) (&(*(*(*c).p).resultsym).typ), (*rhs).typ);
					asgnRefNoCycle((void**) (&(*(*(*(*c).p).owner).typ).sons->data[((NI) 0)]), (*rhs).typ);
				}
				goto LA73;
				LA76: ;
				{
					typemismatch_426316(n, (*lhs).typ, (*rhs).typ);
				}
				LA73: ;
			}
			LA71: ;
		}
		LA63: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), fitnode_426230(c, le, rhs));
		{
			NIM_BOOL LOC86;
			NIM_BOOL LOC87;
			LOC86 = 0;
			LOC87 = 0;
			LOC87 = (((*(*lhs).typ).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0);
			if (!(LOC87)) goto LA88;
			LOC87 = !(lhsisresult);
			LA88: ;
			LOC86 = LOC87;
			if (!(LOC86)) goto LA89;
			LOC86 = !((mode == ((NU8) 2)));
			LA89: ;
			if (!LOC86) goto LA90;
			result = overloadedasgn_452847(c, lhs, (*n).kindU.S6.sons->data[((NI) 1)]);
			goto BeforeRet;
		}
		LA90: ;
		fixabstracttype_461360(c, n);
		asgntoresultvar_465012(c, n, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA43: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semprocbody_426226)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tscope215816* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	result = semexpr_426201(c, n, 0);
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC6;
		LOC4 = 0;
		LOC4 = !(((*(*c).p).resultsym == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC6 = 0;
		LOC6 = isemptytype_220513((*result).typ);
		LOC4 = !(LOC6);
		LA5: ;
		if (!LOC4) goto LA7;
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = ((*result).kind == ((NU8) 3));
			if (!(LOC11)) goto LA12;
			LOC11 = ((*result).kindU.S4.sym == (*(*c).p).resultsym);
			LA12: ;
			if (!LOC11) goto LA13;
		}
		goto LA9;
		LA13: ;
		{
			if (!((*result).kind == ((NU8) 23))) goto LA16;
			asgnRefNoCycle((void**) (&(*result).typ), NIM_NIL);
		}
		goto LA9;
		LA16: ;
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = ((*result).kind == ((NU8) 126));
			if (!(LOC19)) goto LA20;
			LOC19 = ((*(*result).typ).kind == ((NU8) 5));
			LA20: ;
			if (!LOC19) goto LA21;
			fixniltype_450276(result);
		}
		goto LA9;
		LA21: ;
		{
			Tnode215790* a;
			a = newnodei_217401(((NU8) 73), (*n).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234((*(*c).p).resultsym));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), result);
			result = semasgn_462057(c, a, ((NU8) 0));
		}
		LA9: ;
	}
	goto LA2;
	LA7: ;
	{
		discardcheck_450323(c, result);
	}
	LA2: ;
	{
		NIM_BOOL LOC27;
		NIM_BOOL LOC28;
		LOC27 = 0;
		LOC28 = 0;
		LOC28 = !(((196608 &(1U<<((NU)((*(*(*c).p).owner).kind)&31U)))!=0));
		if (!(LOC28)) goto LA29;
		LOC28 = !(((*(*c).p).resultsym == NIM_NIL));
		LA29: ;
		LOC27 = LOC28;
		if (!(LOC27)) goto LA30;
		LOC27 = ismetatype_216803((*(*(*c).p).resultsym).typ);
		LA30: ;
		if (!LOC27) goto LA31;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = isemptytype_220513((*result).typ);
			if (!LOC35) goto LA36;
			asgnRefNoCycle((void**) (&(*(*(*c).p).resultsym).typ), errortype_265901(c));
			asgnRefNoCycle((void**) (&(*(*(*(*c).p).owner).typ).sons->data[((NI) 0)]), NIM_NIL);
		}
		goto LA33;
		LA36: ;
		{
			localerror_188080((*(*(*c).p).resultsym).info, ((NU16) 231), ((NimStringDesc*) &TMP3155));
		}
		LA33: ;
	}
	LA31: ;
	closescope_270068(c);
	return result;
}

N_NIMCALL(void, instantiatebody_428915)(Tcontext265020* c, Tnode215790* n, Tnode215790* params, Tsym215822* result) {
	{
		Tnode215790* b;
		Tidtable215840 symmap;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA3;
		(*c).ingenericinst += ((NI) 1);
		b = (*n).kindU.S6.sons->data[((NI) 6)];
		memset((void*)(&symmap), 0, sizeof(symmap));
		initidtable_219033((&symmap));
		{
			if (!!((params == NIM_NIL))) goto LA7;
			{
				NI i_428974;
				NI HEX3Atmp_429017;
				NI LOC10;
				NI res_429020;
				i_428974 = 0;
				HEX3Atmp_429017 = 0;
				LOC10 = 0;
				LOC10 = len_216059(params);
				HEX3Atmp_429017 = (LOC10 - 1);
				res_429020 = ((NI) 1);
				{
					while (1) {
						Tsym215822* param;
						Tnode215790* LOC13;
						if (!(res_429020 <= HEX3Atmp_429017)) goto LA12;
						i_428974 = res_429020;
						LOC13 = 0;
						LOC13 = HEX5BHEX5D_216238(params, i_428974);
						param = (*LOC13).kindU.S4.sym;
						{
							Tnode215790* LOC18;
							Tidobj190006* LOC19;
							Tnode215790* LOC20;
							TNimObject* LOC21;
							if (!(((*param).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0)) goto LA16;
							LOC18 = 0;
							LOC18 = HEX5BHEX5D_216238(params, i_428974);
							LOC19 = 0;
							LOC19 = &(*LOC18).kindU.S4.sym->Sup;
							LOC20 = 0;
							LOC20 = HEX5BHEX5D_216238((*(*result).typ).n, (NI)((*param).position + ((NI) 1)));
							LOC21 = 0;
							LOC21 = &(*LOC20).kindU.S4.sym->Sup.Sup;
							idtableput_222115((&symmap), LOC19, LOC21);
						}
						LA16: ;
						res_429020 += ((NI) 1);
					} LA12: ;
				}
			}
		}
		LA7: ;
		freshgensyms_428801(b, result, (&symmap));
		b = semprocbody_426226(c, b);
		b = hlobody_428136(c, b);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_388498((*c).module, b, result));
		(*result).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
		(*c).ingenericinst -= ((NI) 1);
	}
	LA3: ;
}

static N_INLINE(Tsym215822*, pop_385840)(Tsymseq215792** s) {
	Tsym215822* result;
	NI L;
	result = 0;
	L = (NI)(((*s) ? (*s)->Sup.len : 0) - ((NI) 1));
	result = (*s)->data[L];
	(*s) = (Tsymseq215792*) setLengthSeq(&((*s))->Sup, sizeof(Tsym215822*), ((NI) (L)));
	return result;
}

N_NIMCALL(NIM_BOOL, hasobjparam_457627)(Tsym215822* s) {
	NIM_BOOL result;
	Ttype215828* t;
{	result = 0;
	t = (*s).typ;
	{
		NI col_457644;
		NI HEX3Atmp_457655;
		NI LOC2;
		NI res_457658;
		col_457644 = 0;
		HEX3Atmp_457655 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218327(t);
		HEX3Atmp_457655 = (NI)(LOC2 - ((NI) 1));
		res_457658 = ((NI) 1);
		{
			while (1) {
				if (!(res_457658 <= HEX3Atmp_457655)) goto LA4;
				col_457644 = res_457658;
				{
					Ttype215828* LOC7;
					LOC7 = 0;
					LOC7 = skiptypes_219113((*t).sons->data[col_457644], IL64(211106247215360));
					if (!((*LOC7).kind == ((NU8) 17))) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_457658 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmethod_426290)(Tcontext265020* c, Tsym215822* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = hasobjparam_457627(s);
		if (!LOC3) goto LA4;
		methoddef_375628(s, NIM_FALSE);
	}
	LA4: ;
}

N_NIMCALL(Tsym215822*, generateinstance_429238)(Tcontext265020* c, Tsym215822* fn, Tidtable215840 pt, Tlineinfo183337 info) {
	Tsym215822* result;
	Tnode215790* n;
	Tsym215822* LOC10;
	NI oldintypeclass;
	Tscope215816* oldscope;
	Tscope215816* LOC14;
	Tnode215790* gp;
	Tinstantiation215812* entry;
	NI i;
	NI LOC20;
	NI LOC21;
	Tsym215822* oldprc;
	Tsym215822* LOC93;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(!(((196608 &(1U<<((NU)((*fn).kind)&31U)))!=0)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_188183(TMP3189);
		internalerror_188113(LOC5);
	}
	LA3: ;
	{
		if (!(((NI) 1000) < (*c).instcounter)) goto LA8;
		internalerror_188100((*(*fn).ast).info, ((NimStringDesc*) &TMP3191));
	}
	LA8: ;
	(*c).instcounter += ((NI) 1);
	n = copytree_219822((*fn).ast);
	LOC10 = 0;
	LOC10 = getmodule_222144(fn);
	(*c).friendmodules = (Tsymseq215792*) incrSeqV2(&((*c).friendmodules)->Sup, sizeof(Tsym215822*));
	asgnRefNoCycle((void**) (&(*c).friendmodules->data[(*c).friendmodules->Sup.len]), LOC10);
	++(*c).friendmodules->Sup.len;
	oldintypeclass = (*c).intypeclass;
	(*c).intypeclass = ((NI) 0);
	oldscope = (*c).currentscope;
	{
		while (1) {
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = istoplevel_265966(c);
			if (!!(LOC13)) goto LA12;
			asgnRef((void**) (&(*c).currentscope), (*(*c).currentscope).parent);
		} LA12: ;
	}
	result = copysym_218601(fn, NIM_FALSE);
	(*result).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	asgnRefNoCycle((void**) (&(*result).owner), fn);
	asgnRefNoCycle((void**) (&(*result).ast), n);
	pushowner_265212(result);
	LOC14 = 0;
	LOC14 = openscope_270060(c);
	gp = (*n).kindU.S6.sons->data[((NI) 2)];
	{
		NimStringDesc* LOC19;
		if (!!(!(((*gp).kind == ((NU8) 1))))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX24_188183(TMP3192);
		internalerror_188113(LOC19);
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(result));
	pushinfocontext_184209(info);
	entry = new_429322();
	asgnRefNoCycle((void**) (&(*entry).sym), result);
	i = ((NI) 0);
	LOC20 = 0;
	LOC20 = len_218339((*fn).typ);
	LOC21 = 0;
	LOC21 = len_216059(gp);
	if ((*entry).concretetypes) nimGCunrefNoCycle((*entry).concretetypes);
	(*entry).concretetypes = (Ttypeseq215824*) newSeqRC1((&NTI215824), ((NI) ((NI)((NI)(LOC20 + LOC21) - ((NI) 1)))));
	{
		Tsym215822* s_429425;
		s_429425 = 0;
		{
			NimStringDesc* LOC27;
			if (!!(((*gp).kind == ((NU8) 75)))) goto LA25;
			LOC27 = 0;
			LOC27 = HEX24_188183(TMP3193);
			internalerror_188113(LOC27);
		}
		LA25: ;
		{
			NI i_429610;
			Tnode215790* a_429612;
			i_429610 = 0;
			a_429612 = 0;
			{
				NI i_429614;
				NI HEX3Atmp_429616;
				NI LOC30;
				NI res_429618;
				i_429614 = 0;
				HEX3Atmp_429616 = 0;
				LOC30 = 0;
				LOC30 = len_216059(gp);
				HEX3Atmp_429616 = (LOC30 - 1);
				res_429618 = ((NI) 0);
				{
					while (1) {
						if (!(res_429618 <= HEX3Atmp_429616)) goto LA32;
						i_429614 = res_429618;
						i_429610 = i_429614;
						a_429612 = (*gp).kindU.S6.sons->data[i_429614];
						{
							Tsym215822* q_429622;
							NU8 symkind_429624;
							Tsym215822* s_429626;
							Tsym215822* LOC48;
							Ttype215828* t_429628;
							Tidobj190006* LOC49;
							TNimObject* LOC50;
							{
								NimStringDesc* LOC38;
								if (!!(((*a_429612).kind == ((NU8) 3)))) goto LA36;
								LOC38 = 0;
								LOC38 = HEX24_188183(TMP3194);
								internalerror_188113(LOC38);
							}
							LA36: ;
							q_429622 = (*a_429612).kindU.S4.sym;
							{
								if (!!(((*(*q_429622).typ).kind == ((NU8) 8) || (*(*q_429622).typ).kind == ((NU8) 12) || (*(*q_429622).typ).kind == ((NU8) 49) || (*(*q_429622).typ).kind >= ((NU8) 51) && (*(*q_429622).typ).kind <= ((NU8) 59)))) goto LA41;
								goto LA33;
							}
							LA41: ;
							{
								if (!((*(*q_429622).typ).kind == ((NU8) 59))) goto LA45;
								symkind_429624 = ((NU8) 10);
							}
							goto LA43;
							LA45: ;
							{
								symkind_429624 = ((NU8) 7);
							}
							LA43: ;
							LOC48 = 0;
							LOC48 = getcurrowner_265210();
							s_429626 = newsym_216684(symkind_429624, (*q_429622).name, LOC48, (*q_429622).info);
							(*s_429626).flags = ((*s_429626).flags | 5);
							LOC49 = 0;
							LOC49 = &(*q_429622).typ->Sup;
							LOC50 = 0;
							LOC50 = idtableget_222107(pt, LOC49);
							t_429628 = ((Ttype215828*) (LOC50));
							{
								if (!(t_429628 == NIM_NIL)) goto LA53;
								{
									if (!(((*(*q_429622).typ).flags &(1U<<((NU)(((NU8) 10))&31U)))!=0)) goto LA57;
									t_429628 = (*q_429622).typ;
								}
								goto LA55;
								LA57: ;
								{
									localerror_188080((*a_429612).info, ((NU16) 128), (*(*s_429626).name).s);
									t_429628 = errortype_265901(c);
								}
								LA55: ;
							}
							goto LA51;
							LA53: ;
							{
								if (!((*t_429628).kind == ((NU8) 12))) goto LA61;
								localerror_188080((*a_429612).info, ((NU16) 128), (*(*q_429622).name).s);
								t_429628 = errortype_265901(c);
							}
							goto LA51;
							LA61: ;
							{
								if (!((*t_429628).kind == ((NU8) 9))) goto LA64;
								t_429628 = generatetypeinstance_286450(c, pt, (*a_429612).info, t_429628);
							}
							goto LA51;
							LA64: ;
							LA51: ;
							asgnRefNoCycle((void**) (&(*s_429626).typ), t_429628);
							{
								if (!((*t_429628).kind == ((NU8) 59))) goto LA68;
								asgnRefNoCycle((void**) (&(*s_429626).ast), (*t_429628).n);
							}
							LA68: ;
							s_429425 = s_429626;
							adddecl_270445(c, s_429425);
							asgnRefNoCycle((void**) (&(*entry).concretetypes->data[i]), (*s_429425).typ);
							i += ((NI) 1);
						} LA33: ;
						res_429618 += ((NI) 1);
					} LA32: ;
				}
			}
		}
	}
	pushproccon_265277(c, result);
	instantiateproctype_429115(c, pt, result, info);
	{
		NI j_429446;
		NI HEX3Atmp_429630;
		NI LOC71;
		NI res_429633;
		j_429446 = 0;
		HEX3Atmp_429630 = 0;
		LOC71 = 0;
		LOC71 = len_218339((*result).typ);
		HEX3Atmp_429630 = (NI)(LOC71 - ((NI) 1));
		res_429633 = ((NI) 1);
		{
			while (1) {
				if (!(res_429633 <= HEX3Atmp_429630)) goto LA73;
				j_429446 = res_429633;
				asgnRefNoCycle((void**) (&(*entry).concretetypes->data[i]), (*(*result).typ).sons->data[j_429446]);
				i += ((NI) 1);
				res_429633 += ((NI) 1);
			} LA73: ;
		}
	}
	{
		if (!(((*(*result).typ).flags &(1U<<((NU)(((NU8) 28))&31U)))!=0)) goto LA76;
		(*result).flags |= ((NU32)1)<<((((NU8) 23))%(sizeof(NU32)*8));
	}
	LA76: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), emptynode_216801);
	oldprc = genericcacheget_428386(fn, (*entry), (*c).compilescontextid);
	{
		Tinstantiationpair265010 LOC82;
		if (!(oldprc == NIM_NIL)) goto LA80;
		(*entry).compilesid = (*c).compilescontextid;
		safeadd_429495((&(*fn).kindU.S2.procinstcache), entry);
		memset((void*)(&LOC82), 0, sizeof(LOC82));
		makeinstpair_265153(fn, entry, (&LOC82));
		(*c).generics = (TY265140*) incrSeqV2(&((*c).generics)->Sup, sizeof(Tinstantiationpair265010));
		asgnRefNoCycle((void**) (&(*c).generics->data[(*c).generics->Sup.len].genericsym), LOC82.genericsym);
		asgnRefNoCycle((void**) (&(*c).generics->data[(*c).generics->Sup.len].inst), LOC82.inst);
		++(*c).generics->Sup.len;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA85;
			pragma_280070(c, result, (*n).kindU.S6.sons->data[((NI) 4)], TMP3280);
		}
		LA85: ;
		{
			Tnode215790* LOC91;
			if (!(*n).kindU.S6.sons->data[((NI) 6)] == 0) goto LA89;
			LOC91 = 0;
			LOC91 = getbody_255828(fn);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_219822(LOC91));
		}
		LA89: ;
		instantiatebody_428915(c, n, (*(*fn).typ).n, result);
		sideeffectscheck_429064(c, result);
		paramstypecheck_426977(c, (*result).typ);
	}
	goto LA78;
	LA80: ;
	{
		result = oldprc;
	}
	LA78: ;
	popproccon_265303(c);
	popinfocontext_184222();
	closescope_270068(c);
	popowner_265215();
	asgnRef((void**) (&(*c).currentscope), oldscope);
	LOC93 = 0;
	LOC93 = pop_385840((&(*c).friendmodules));
	(*c).instcounter -= ((NI) 1);
	(*c).intypeclass = oldintypeclass;
	{
		if (!((*result).kind == ((NU8) 13))) goto LA96;
		finishmethod_426290(c, result);
	}
	LA96: ;
	return result;
}

N_NIMCALL(void, instgenericconvertersarg_431842)(Tcontext265020* c, Tnode215790* a, Tcandidate363206* x) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tsym215822* finalcallee;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = ((*a).kind == ((NU8) 32));
		if (!(LOC4)) goto LA5;
		LOC4 = ((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = isgenericroutine_220314((*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		LA6: ;
		if (!LOC3) goto LA7;
		finalcallee = generateinstance_429238(c, (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym, (*x).bindings, (*a).info);
		asgnRefNoCycle((void**) (&(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym), finalcallee);
		asgnRefNoCycle((void**) (&(*(*a).kindU.S6.sons->data[((NI) 0)]).typ), (*finalcallee).typ);
	}
	LA7: ;
}

N_NIMCALL(Tnode215790*, indextypesmatch_426294)(Tcontext265020* c, Ttype215828* f, Ttype215828* a, Tnode215790* arg) {
	Tnode215790* result;
	Tcandidate363206 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_363257(c, (&m), f);
	result = paramtypesmatch_368299((&m), f, a, arg, NIM_NIL);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = m.genericconverter;
		if (!(LOC3)) goto LA4;
		LOC3 = !((result == NIM_NIL));
		LA4: ;
		if (!LOC3) goto LA5;
		instgenericconvertersarg_431842(c, result, (&m));
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode215790*, fitnode_426230)(Tcontext265020* c, Ttype215828* formal, Tnode215790* arg) {
	Tnode215790* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!(*arg).typ == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_234044(arg, 4);
		localerror_188080((*arg).info, ((NU16) 94), LOC5);
		result = copynode_219542(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	goto LA1;
	LA3: ;
	{
		result = indextypesmatch_426294(c, formal, (*arg).typ, arg);
		{
			if (!(result == NIM_NIL)) goto LA9;
			typemismatch_426316(arg, formal, (*arg).typ);
			result = copytree_219822(arg);
			asgnRefNoCycle((void**) (&(*result).typ), formal);
		}
		goto LA7;
		LA9: ;
		{
			Tnode215790* x;
			x = skipconv_250082(result);
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = ((*x).kind == ((NU8) 37));
				if (!(LOC14)) goto LA15;
				LOC14 = !(((*formal).kind == ((NU8) 6)));
				LA15: ;
				if (!LOC14) goto LA16;
				changetype_426235(x, formal, NIM_TRUE);
			}
			goto LA12;
			LA16: ;
			{
				result = skiphiddensubconv_250201(result);
			}
			LA12: ;
		}
		LA7: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semconstboolexpr_433240)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* nn;
	Ttype215828* LOC1;
{	result = 0;
	nn = semexprwithtype_426208(c, n, 0);
	LOC1 = 0;
	LOC1 = getsystype_259130(((NU8) 1));
	result = fitnode_426230(c, LOC1, nn);
	{
		if (!(result == NIM_NIL)) goto LA4;
		localerror_188080((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
		result = nn;
		goto BeforeRet;
	}
	LA4: ;
	result = getconstexpr_276001((*c).module, result);
	{
		if (!(result == NIM_NIL)) goto LA8;
		localerror_188080((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
		result = nn;
	}
	LA8: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, forcebool_433223)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_259130(((NU8) 1));
	result = fitnode_426230(c, LOC1, n);
	{
		if (!(result == NIM_NIL)) goto LA4;
		result = n;
	}
	LA4: ;
	return result;
}

N_NIMCALL(Tnode215790*, sembranchrange_435452)(Tcontext265020* c, Tnode215790* t, Tnode215790* a, Tnode215790* b, NI64* covered) {
	Tnode215790* result;
	Tnode215790* ac;
	Tnode215790* bc;
	Tnode215790* at;
	Tnode215790* LOC1;
	Tnode215790* bt;
	Tnode215790* LOC2;
	result = 0;
	checkminsonslen_265962(t, ((NI) 1));
	ac = semconstexpr_427473(c, a);
	bc = semconstexpr_427473(c, b);
	LOC1 = 0;
	LOC1 = fitnode_426230(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, ac);
	at = skipconvtaketype_250108(LOC1);
	LOC2 = 0;
	LOC2 = fitnode_426230(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, bc);
	bt = skipconvtaketype_250108(LOC2);
	result = newnodei_217248(((NU8) 44), (*a).info);
	add_216114(result, at);
	add_216114(result, bt);
	{
		NIM_BOOL LOC5;
		LOC5 = 0;
		LOC5 = emptyrange_261019(ac, bc);
		if (!LOC5) goto LA6;
		localerror_188080((*b).info, ((NU16) 110), ((NimStringDesc*) &TMP3155));
	}
	goto LA3;
	LA6: ;
	{
		NI64 LOC9;
		NI64 LOC10;
		LOC9 = 0;
		LOC9 = getordvalue_241118(bc);
		LOC10 = 0;
		LOC10 = getordvalue_241118(ac);
		(*covered) = (NI64)((NI64)((NI64)((*covered) + LOC9) - LOC10) + IL64(1));
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode215790*, semcasebranchrange_435471)(Tcontext265020* c, Tnode215790* t, Tnode215790* b, NI64* covered) {
	Tnode215790* result;
	result = 0;
	checksonslen_265958(b, ((NI) 3));
	result = sembranchrange_435452(c, t, (*b).kindU.S6.sons->data[((NI) 1)], (*b).kindU.S6.sons->data[((NI) 2)], covered);
	return result;
}

N_NIMCALL(Tnode215790*, semcasebranchsetelem_435481)(Tcontext265020* c, Tnode215790* t, Tnode215790* b, NI64* covered) {
	Tnode215790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_240470(b);
		if (!LOC3) goto LA4;
		checksonslen_265958(b, ((NI) 3));
		result = sembranchrange_435452(c, t, (*b).kindU.S6.sons->data[((NI) 1)], (*b).kindU.S6.sons->data[((NI) 2)], covered);
	}
	goto LA1;
	LA4: ;
	{
		if (!((*b).kind == ((NU8) 44))) goto LA7;
		checksonslen_265958(b, ((NI) 2));
		result = sembranchrange_435452(c, t, (*b).kindU.S6.sons->data[((NI) 0)], (*b).kindU.S6.sons->data[((NI) 1)], covered);
	}
	goto LA1;
	LA7: ;
	{
		result = fitnode_426230(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, b);
		(*covered) += ((NI) 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, checkforoverlap_435401)(Tcontext265020* c, Tnode215790* t, NI currentex, NI branchindex) {
	Tnode215790* ex;
	Tnode215790* LOC1;
	Tnode215790* LOC2;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_216238(t, branchindex);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_216238(LOC1, currentex);
	ex = skipconv_250082(LOC2);
	{
		NI i_435420;
		NI res_435448;
		i_435420 = 0;
		res_435448 = ((NI) 1);
		{
			while (1) {
				if (!(res_435448 <= branchindex)) goto LA5;
				i_435420 = res_435448;
				{
					NI j_435433;
					NI HEX3Atmp_435439;
					NI LOC7;
					NI res_435442;
					j_435433 = 0;
					HEX3Atmp_435439 = 0;
					LOC7 = 0;
					LOC7 = sonslen_218351((*t).kindU.S6.sons->data[i_435420]);
					HEX3Atmp_435439 = (NI)(LOC7 - ((NI) 2));
					res_435442 = ((NI) 0);
					{
						while (1) {
							if (!(res_435442 <= HEX3Atmp_435439)) goto LA9;
							j_435433 = res_435442;
							{
								NIM_BOOL LOC12;
								LOC12 = 0;
								LOC12 = (i_435420 == branchindex);
								if (!(LOC12)) goto LA13;
								LOC12 = (j_435433 == currentex);
								LA13: ;
								if (!LOC12) goto LA14;
								goto LA6;
							}
							LA14: ;
							{
								Tnode215790* LOC18;
								NIM_BOOL LOC19;
								LOC18 = 0;
								LOC18 = skipconv_250082((*(*t).kindU.S6.sons->data[i_435420]).kindU.S6.sons->data[j_435433]);
								LOC19 = 0;
								LOC19 = overlap_261006(LOC18, ex);
								if (!LOC19) goto LA20;
								localerror_188080((*ex).info, ((NU16) 109), ((NimStringDesc*) &TMP3155));
							}
							LA20: ;
							res_435442 += ((NI) 1);
						} LA9: ;
					}
				} LA6: ;
				res_435448 += ((NI) 1);
			} LA5: ;
		}
	}
}

N_NIMCALL(void, semcasebranch_435512)(Tcontext265020* c, Tnode215790* t, Tnode215790* branch, NI branchindex, NI64* covered) {
{	{
		NI i_435531;
		NI HEX3Atmp_435623;
		NI LOC2;
		NI res_435626;
		i_435531 = 0;
		HEX3Atmp_435623 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(branch);
		HEX3Atmp_435623 = (NI)(LOC2 - ((NI) 2));
		res_435626 = ((NI) 0);
		{
			while (1) {
				Tnode215790* b;
				if (!(res_435626 <= HEX3Atmp_435623)) goto LA4;
				i_435531 = res_435626;
				b = (*branch).kindU.S6.sons->data[i_435531];
				{
					if (!((*b).kind == ((NU8) 44))) goto LA7;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_435531]), b);
				}
				goto LA5;
				LA7: ;
				{
					NIM_BOOL LOC10;
					LOC10 = 0;
					LOC10 = isrange_240470(b);
					if (!LOC10) goto LA11;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_435531]), semcasebranchrange_435471(c, t, b, covered));
				}
				goto LA5;
				LA11: ;
				{
					Tnode215790* r;
					r = semconstexpr_427473(c, b);
					{
						NIM_BOOL LOC16;
						NIM_BOOL LOC17;
						NI LOC19;
						NI LOC21;
						LOC16 = 0;
						LOC17 = 0;
						LOC17 = ((*r).kind == ((NU8) 39) || (*r).kind == ((NU8) 41));
						if (!(LOC17)) goto LA18;
						LOC19 = 0;
						LOC19 = len_216059(r);
						LOC17 = (LOC19 == ((NI) 0));
						LA18: ;
						LOC16 = LOC17;
						if (!(LOC16)) goto LA20;
						LOC21 = 0;
						LOC21 = sonslen_218351(branch);
						LOC16 = (LOC21 == ((NI) 2));
						LA20: ;
						if (!LOC16) goto LA22;
						delson_219495(branch, ((NI) 0));
						goto BeforeRet;
					}
					goto LA14;
					LA22: ;
					{
						NIM_BOOL LOC25;
						NI LOC27;
						Tnode215790* LOC30;
						LOC25 = 0;
						LOC25 = !(((*r).kind == ((NU8) 39) || (*r).kind == ((NU8) 41)));
						if (LOC25) goto LA26;
						LOC27 = 0;
						LOC27 = len_216059(r);
						LOC25 = (LOC27 == ((NI) 0));
						LA26: ;
						if (!LOC25) goto LA28;
						checkminsonslen_265962(t, ((NI) 1));
						LOC30 = 0;
						LOC30 = fitnode_426230(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, r);
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_435531]), skipconv_250082(LOC30));
						(*covered) += ((NI) 1);
					}
					goto LA14;
					LA28: ;
					{
						Tnode215790* LOC32;
						LOC32 = 0;
						LOC32 = HEX5BHEX5D_216238(r, ((NI) 0));
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_435531]), semcasebranchsetelem_435481(c, t, LOC32, covered));
						{
							NI j_435598;
							NI HEX3Atmp_435616;
							NI LOC34;
							NI res_435619;
							j_435598 = 0;
							HEX3Atmp_435616 = 0;
							LOC34 = 0;
							LOC34 = len_216059(r);
							HEX3Atmp_435616 = (LOC34 - 1);
							res_435619 = ((NI) 1);
							{
								while (1) {
									Tnode215790* LOC37;
									Tnode215790* LOC38;
									NI L;
									Tnode215790* LOC39;
									if (!(res_435619 <= HEX3Atmp_435616)) goto LA36;
									j_435598 = res_435619;
									LOC37 = 0;
									LOC37 = HEX5BHEX5D_216238(r, j_435598);
									LOC38 = 0;
									LOC38 = semcasebranchsetelem_435481(c, t, LOC37, covered);
									add_216114(branch, LOC38);
									L = len_216059(branch);
									LOC39 = 0;
									LOC39 = (*branch).kindU.S6.sons->data[(NI)(L - ((NI) 2))];
									asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), (*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]);
									asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), LOC39);
									res_435619 += ((NI) 1);
								} LA36: ;
							}
						}
					}
					LA14: ;
				}
				LA5: ;
				checkforoverlap_435401(c, t, i_435531, branchindex);
				res_435626 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordcase_435640)(Tcontext265020* c, Tnode215790* n, Intset212035* check, NI* pos, Tnode215790* father, Ttype215828* rectype) {
	Tnode215790* a;
	NI64 covered;
	Ttype215828* typ;
	NIM_BOOL chckcovered;
{	a = copynode_219542(n);
	checkminsonslen_265962(n, ((NI) 2));
	semrecordnodeaux_435630(c, (*n).kindU.S6.sons->data[((NI) 0)], check, pos, a, rectype);
	{
		if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA3;
		internalerror_188113(((NimStringDesc*) &TMP3547));
		goto BeforeRet;
	}
	LA3: ;
	(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags |= ((NU32)1)<<((((NU8) 18))%(sizeof(NU32)*8));
	covered = IL64(0);
	typ = skiptypes_219113((*(*a).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106240964608));
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isordinaltype_241057(typ);
		if (!!(LOC7)) goto LA8;
		localerror_188080((*n).info, ((NU16) 112), ((NimStringDesc*) &TMP3155));
	}
	goto LA5;
	LA8: ;
	{
		NI64 LOC11;
		NimStringDesc* LOC14;
		LOC11 = 0;
		LOC11 = firstord_241001(typ);
		if (!!((LOC11 == IL64(0)))) goto LA12;
		LOC14 = 0;
		LOC14 = rawNewString((*(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s->Sup.len + 32);
appendString(LOC14, ((NimStringDesc*) &TMP3548));
appendString(LOC14, (*(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
appendString(LOC14, ((NimStringDesc*) &TMP3549));
		localerror_188080((*n).info, ((NU16) 4), LOC14);
	}
	goto LA5;
	LA12: ;
	{
		NI64 LOC16;
		LOC16 = 0;
		LOC16 = lengthord_241007(typ);
		if (!(IL64(32767) < LOC16)) goto LA17;
		localerror_188080((*n).info, ((NU16) 114), (*(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	goto LA5;
	LA17: ;
	LA5: ;
	chckcovered = NIM_TRUE;
	{
		NI i_435710;
		NI HEX3Atmp_435719;
		NI LOC20;
		NI res_435722;
		i_435710 = 0;
		HEX3Atmp_435719 = 0;
		LOC20 = 0;
		LOC20 = sonslen_218351(n);
		HEX3Atmp_435719 = (NI)(LOC20 - ((NI) 1));
		res_435722 = ((NI) 1);
		{
			while (1) {
				Tnode215790* b;
				NI LOC26;
				Tnode215790* LOC27;
				if (!(res_435722 <= HEX3Atmp_435719)) goto LA22;
				i_435710 = res_435722;
				b = copytree_219822((*n).kindU.S6.sons->data[i_435710]);
				addson_217807(a, b);
				switch ((*(*n).kindU.S6.sons->data[i_435710]).kind) {
				case ((NU8) 85):
				{
					checkminsonslen_265962(b, ((NI) 2));
					semcasebranch_435512(c, a, b, i_435710, (&covered));
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_265958(b, ((NI) 1));
				}
				break;
				default:
				{
					illformedast_265950(n);
				}
				break;
				}
				LOC26 = 0;
				LOC26 = sonslen_218351(b);
				delson_219495(b, (NI)(LOC26 - ((NI) 1)));
				LOC27 = 0;
				LOC27 = lastson_218364((*n).kindU.S6.sons->data[i_435710]);
				semrecordnodeaux_435630(c, LOC27, check, pos, b, rectype);
				res_435722 += ((NI) 1);
			} LA22: ;
		}
	}
	{
		NIM_BOOL LOC30;
		NI64 LOC32;
		LOC30 = 0;
		LOC30 = chckcovered;
		if (!(LOC30)) goto LA31;
		LOC32 = 0;
		LOC32 = lengthord_241007((*(*a).kindU.S6.sons->data[((NI) 0)]).typ);
		LOC30 = !((covered == LOC32));
		LA31: ;
		if (!LOC30) goto LA33;
		localerror_188080((*a).info, ((NU16) 155), ((NimStringDesc*) &TMP3155));
	}
	LA33: ;
	addson_217807(father, a);
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordnodeaux_435630)(Tcontext265020* c, Tnode215790* n, Intset212035* check, NI* pos, Tnode215790* father, Ttype215828* rectype) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 140):
	{
		Tnode215790* branch;
		branch = NIM_NIL;
		{
			NI i_435760;
			NI HEX3Atmp_436213;
			NI LOC7;
			NI res_436216;
			i_435760 = 0;
			HEX3Atmp_436213 = 0;
			LOC7 = 0;
			LOC7 = sonslen_218351(n);
			HEX3Atmp_436213 = (NI)(LOC7 - ((NI) 1));
			res_436216 = ((NI) 0);
			{
				while (1) {
					Tnode215790* it;
					NI idx;
					if (!(res_436216 <= HEX3Atmp_436213)) goto LA9;
					i_435760 = res_436216;
					it = (*n).kindU.S6.sons->data[i_435760];
					{
						if (!(it == NIM_NIL)) goto LA12;
						illformedast_265950(n);
					}
					LA12: ;
					idx = ((NI) 1);
					switch ((*it).kind) {
					case ((NU8) 86):
					{
						checksonslen_265958(it, ((NI) 2));
						{
							Tnode215790* e;
							if (!((*c).ingenericcontext == ((NI) 0))) goto LA17;
							e = semconstboolexpr_433240(c, (*it).kindU.S6.sons->data[((NI) 0)]);
							{
								if (!!(((*e).kind == ((NU8) 6)))) goto LA21;
								internalerror_188100((*e).info, ((NimStringDesc*) &TMP3546));
							}
							goto LA19;
							LA21: ;
							{
								NIM_BOOL LOC24;
								LOC24 = 0;
								LOC24 = !(((*e).kindU.S1.intval == IL64(0)));
								if (!(LOC24)) goto LA25;
								LOC24 = (branch == NIM_NIL);
								LA25: ;
								if (!LOC24) goto LA26;
								branch = (*it).kindU.S6.sons->data[((NI) 1)];
							}
							goto LA19;
							LA26: ;
							LA19: ;
						}
						goto LA15;
						LA17: ;
						{
							Tnode215790* LOC29;
							LOC29 = 0;
							LOC29 = semexprwithtype_426208(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_433223(c, LOC29));
						}
						LA15: ;
					}
					break;
					case ((NU8) 88):
					{
						checksonslen_265958(it, ((NI) 1));
						{
							if (!(branch == NIM_NIL)) goto LA33;
							branch = (*it).kindU.S6.sons->data[((NI) 0)];
						}
						LA33: ;
						idx = ((NI) 0);
					}
					break;
					default:
					{
						illformedast_265950(n);
					}
					break;
					}
					{
						Intset212035 newcheck;
						NI newpos;
						Tnode215790* newf;
						if (!(((NI) 0) < (*c).ingenericcontext)) goto LA38;
						memset((void*)(&newcheck), 0, sizeof(newcheck));
						assign_212910((&newcheck), (*check));
						newpos = (*pos);
						newf = newnodei_217248(((NU8) 138), (*n).info);
						semrecordnodeaux_435630(c, (*it).kindU.S6.sons->data[idx], (&newcheck), (&newpos), newf, rectype);
						{
							NI LOC42;
							LOC42 = 0;
							LOC42 = len_216059(newf);
							if (!(LOC42 == ((NI) 1))) goto LA43;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), HEX5BHEX5D_216238(newf, ((NI) 0)));
						}
						goto LA40;
						LA43: ;
						{
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), newf);
						}
						LA40: ;
					}
					LA38: ;
					res_436216 += ((NI) 1);
				} LA9: ;
			}
		}
		{
			if (!(((NI) 0) < (*c).ingenericcontext)) goto LA48;
			addson_217807(father, n);
		}
		goto LA46;
		LA48: ;
		{
			if (!!((branch == NIM_NIL))) goto LA51;
			semrecordnodeaux_435630(c, branch, check, pos, father, rectype);
		}
		goto LA46;
		LA51: ;
		LA46: ;
	}
	break;
	case ((NU8) 139):
	{
		semrecordcase_435640(c, n, check, pos, father, rectype);
	}
	break;
	case ((NU8) 23):
	{
		{
			Tnode215790* LOC59;
			if (!!(((*father).kind == ((NU8) 138)))) goto LA57;
			LOC59 = 0;
			LOC59 = newnodei_217248(((NU8) 138), (*n).info);
			addson_217807(father, LOC59);
		}
		LA57: ;
	}
	break;
	case ((NU8) 138):
	{
		Tnode215790* a;
		{
			if (!((*father).kind == ((NU8) 138))) goto LA63;
			a = father;
		}
		goto LA61;
		LA63: ;
		{
			a = copynode_219542(n);
		}
		LA61: ;
		{
			NI i_435867;
			NI HEX3Atmp_436221;
			NI LOC67;
			NI res_436224;
			i_435867 = 0;
			HEX3Atmp_436221 = 0;
			LOC67 = 0;
			LOC67 = sonslen_218351(n);
			HEX3Atmp_436221 = (NI)(LOC67 - ((NI) 1));
			res_436224 = ((NI) 0);
			{
				while (1) {
					if (!(res_436224 <= HEX3Atmp_436221)) goto LA69;
					i_435867 = res_436224;
					semrecordnodeaux_435630(c, (*n).kindU.S6.sons->data[i_435867], check, pos, a, rectype);
					res_436224 += ((NI) 1);
				} LA69: ;
			}
		}
		{
			if (!!((a == father))) goto LA72;
			addson_217807(father, a);
		}
		LA72: ;
	}
	break;
	case ((NU8) 35):
	{
		NI length;
		Tnode215790* a;
		Ttype215828* typ;
		Tsym215822* rec;
		checkminsonslen_265962(n, ((NI) 3));
		length = sonslen_218351(n);
		a = 0;
		{
			NIM_BOOL LOC77;
			LOC77 = 0;
			LOC77 = !(((*father).kind == ((NU8) 138)));
			if (!(LOC77)) goto LA78;
			LOC77 = (((NI) 4) <= length);
			LA78: ;
			if (!LOC77) goto LA79;
			a = newnodei_217248(((NU8) 138), (*n).info);
		}
		goto LA75;
		LA79: ;
		{
			a = emptynode_216801;
		}
		LA75: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA84;
			localerror_188080((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 179), ((NimStringDesc*) &TMP3155));
		}
		LA84: ;
		typ = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1))) goto LA88;
			localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
			typ = errortype_265901(c);
		}
		goto LA86;
		LA88: ;
		{
			typ = semtypenode_426245(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
			propagatetoowner_219190(rectype, typ);
		}
		LA86: ;
		rec = (*rectype).sym;
		{
			NI i_435926;
			NI HEX3Atmp_436231;
			NI LOC92;
			NI res_436234;
			i_435926 = 0;
			HEX3Atmp_436231 = 0;
			LOC92 = 0;
			LOC92 = sonslen_218351(n);
			HEX3Atmp_436231 = (NI)(LOC92 - ((NI) 3));
			res_436234 = ((NI) 0);
			{
				while (1) {
					Tsym215822* f;
					if (!(res_436234 <= HEX3Atmp_436231)) goto LA94;
					i_435926 = res_436234;
					f = semidentwithpragma_426938(c, ((NU8) 18), (*n).kindU.S6.sons->data[i_435926], 2);
					suggestsym_373436((*(*n).kindU.S6.sons->data[i_435926]).info, f, NIM_TRUE);
					asgnRefNoCycle((void**) (&(*f).typ), typ);
					(*f).position = (*pos);
					{
						NIM_BOOL LOC97;
						NIM_BOOL LOC98;
						LOC97 = 0;
						LOC98 = 0;
						LOC98 = !((rec == NIM_NIL));
						if (!(LOC98)) goto LA99;
						LOC98 = !(((96 & (*rec).flags) == 0));
						LA99: ;
						LOC97 = LOC98;
						if (!(LOC97)) goto LA100;
						LOC97 = ((*f).loc.r == NIM_NIL);
						LA100: ;
						if (!LOC97) goto LA101;
						asgnRefNoCycle((void**) (&(*f).loc.r), rope_170277((*(*f).name).s));
						(*f).flags = ((*f).flags | (96 & (*rec).flags));
					}
					LA101: ;
					(*pos) += ((NI) 1);
					{
						NIM_BOOL LOC105;
						LOC105 = 0;
						LOC105 = containsorincl_212862(check, (*(*f).name).Sup.id);
						if (!LOC105) goto LA106;
						localerror_188080((*(*n).kindU.S6.sons->data[i_435926]).info, ((NU16) 41), (*(*f).name).s);
					}
					LA106: ;
					{
						Tnode215790* LOC112;
						if (!((*a).kind == ((NU8) 1))) goto LA110;
						LOC112 = 0;
						LOC112 = newsymnode_217234(f);
						addson_217807(father, LOC112);
					}
					goto LA108;
					LA110: ;
					{
						Tnode215790* LOC114;
						LOC114 = 0;
						LOC114 = newsymnode_217234(f);
						addson_217807(a, LOC114);
					}
					LA108: ;
					res_436234 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			if (!!(((*a).kind == ((NU8) 1)))) goto LA117;
			addson_217807(father, a);
		}
		LA117: ;
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	default:
	{
		illformedast_265950(n);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Ttype215828*, semobjectnode_436413)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	Intset212035 check;
	NI pos;
	Ttype215828* base;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_433301(c, ((NU8) 17));
		goto BeforeRet;
	}
	LA4: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_212885((&check));
	pos = ((NI) 0);
	base = NIM_NIL;
	checksonslen_265958(n, ((NI) 3));
	{
		Ttype215828* LOC10;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA8;
		LOC10 = 0;
		LOC10 = semtypenode_426245(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		base = skiptypesornil_219129(LOC10, IL64(211106247215360));
		{
			if (!base == 0) goto LA13;
			localerror_188080((*n).info, ((NU16) 127), ((NimStringDesc*) &TMP3184));
		}
		goto LA11;
		LA13: ;
		{
			Ttype215828* concretebase;
			concretebase = skipgenericinvocation_436311(base);
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = ((*concretebase).kind == ((NU8) 17));
				if (!(LOC18)) goto LA19;
				LOC18 = !((((*concretebase).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0));
				LA19: ;
				if (!LOC18) goto LA20;
				addinheritedfields_436336(c, (&check), (&pos), concretebase);
			}
			goto LA16;
			LA20: ;
			{
				{
					if (!!(((*concretebase).kind == ((NU8) 50)))) goto LA25;
					localerror_188080((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 125), ((NimStringDesc*) &TMP3155));
				}
				LA25: ;
				base = NIM_NIL;
			}
			LA16: ;
		}
		LA11: ;
	}
	LA8: ;
	{
		if (!!(((*n).kind == ((NU8) 133)))) goto LA29;
		internalerror_188100((*n).info, ((NimStringDesc*) &TMP3188));
	}
	LA29: ;
	result = neworprevtype_433274(((NU8) 17), prev, c);
	rawaddson_219408(result, base);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_217248(((NU8) 138), (*n).info));
	semrecordnodeaux_435630(c, (*n).kindU.S6.sons->data[((NI) 2)], (&check), (&pos), (*result).n, result);
	{
		Tsym215822* s;
		Tident190012* LOC35;
		Tnode215790* LOC36;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA33;
		LOC35 = 0;
		LOC35 = getident_190441(((NimStringDesc*) &TMP3550));
		LOC36 = 0;
		LOC36 = newidentnode_217228(LOC35, (*n).info);
		s = newsyms_426889(((NU8) 7), LOC36, c);
		asgnRefNoCycle((void**) (&(*s).typ), result);
		pragma_280070(c, s, (*n).kindU.S6.sons->data[((NI) 0)], TMP3551);
	}
	LA33: ;
	{
		NIM_BOOL LOC39;
		LOC39 = 0;
		LOC39 = (base == NIM_NIL);
		if (!(LOC39)) goto LA40;
		LOC39 = !((((*result).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0));
		LA40: ;
		if (!LOC39) goto LA41;
		(*result).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	}
	LA41: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, semtuple_435032)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	Ttype215828* typ;
	Intset212035 check;
	NI counter;
	result = 0;
	typ = 0;
	result = neworprevtype_433274(((NU8) 18), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_217248(((NU8) 138), (*n).info));
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_212885((&check));
	counter = ((NI) 0);
	{
		NI i_435052;
		NI HEX3Atmp_435211;
		NI LOC2;
		NI res_435214;
		i_435052 = 0;
		HEX3Atmp_435211 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_435211 = (NI)(LOC2 - ((NI) 1));
		res_435214 = ((NI) 0);
		{
			while (1) {
				Tnode215790* a;
				NI length;
				if (!(res_435214 <= HEX3Atmp_435211)) goto LA4;
				i_435052 = res_435214;
				a = (*n).kindU.S6.sons->data[i_435052];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA7;
					illformedast_265950(a);
				}
				LA7: ;
				checkminsonslen_265962(a, ((NI) 3));
				length = sonslen_218351(a);
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA11;
					typ = semtypenode_426245(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
				}
				goto LA9;
				LA11: ;
				{
					localerror_188080((*a).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
					typ = errortype_265901(c);
				}
				LA9: ;
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA16;
					localerror_188080((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 179), ((NimStringDesc*) &TMP3155));
				}
				LA16: ;
				{
					NI j_435098;
					NI HEX3Atmp_435204;
					NI res_435207;
					j_435098 = 0;
					HEX3Atmp_435204 = 0;
					HEX3Atmp_435204 = (NI)(length - ((NI) 3));
					res_435207 = ((NI) 0);
					{
						while (1) {
							Tsym215822* field;
							if (!(res_435207 <= HEX3Atmp_435204)) goto LA20;
							j_435098 = res_435207;
							field = newsymg_426895(((NU8) 18), (*a).kindU.S6.sons->data[j_435098], c);
							asgnRefNoCycle((void**) (&(*field).typ), typ);
							(*field).position = counter;
							counter += ((NI) 1);
							{
								NIM_BOOL LOC23;
								LOC23 = 0;
								LOC23 = containsorincl_212862((&check), (*(*field).name).Sup.id);
								if (!LOC23) goto LA24;
								localerror_188080((*(*a).kindU.S6.sons->data[j_435098]).info, ((NU16) 41), (*(*field).name).s);
							}
							goto LA21;
							LA24: ;
							{
								Tnode215790* LOC27;
								LOC27 = 0;
								LOC27 = newsymnode_217234(field);
								addson_217807((*result).n, LOC27);
								addsonskipintlit_259678(result, typ);
							}
							LA21: ;
							{
								if (!(gcmd_161123 == ((NU8) 7))) goto LA30;
							}
							LA30: ;
							res_435207 += ((NI) 1);
						} LA20: ;
					}
				}
				res_435214 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Ttype215828*, semtypeclass_438321)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	Tnode215790* pragmas;
	Tnode215790* inherited;
	result = 0;
	{
		if (!(((*n).flags &(1U<<((NU)(((NU8) 1))&15U)))!=0)) goto LA3;
		message_188095((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3552));
	}
	LA3: ;
	result = neworprevtype_433274(((NU8) 52), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), n);
	pragmas = HEX5BHEX5D_216238(n, ((NI) 1));
	inherited = HEX5BHEX5D_216238(n, ((NI) 2));
	{
		if (!!(((*inherited).kind == ((NU8) 1)))) goto LA7;
		{
			Tnode215790* n_438357;
			Tnodeseq215784* HEX3Atmp_438371;
			NI i_438374;
			NI L_438376;
			n_438357 = 0;
			HEX3Atmp_438371 = 0;
			HEX3Atmp_438371 = (*inherited).kindU.S6.sons;
			i_438374 = ((NI) 0);
			L_438376 = (HEX3Atmp_438371 ? HEX3Atmp_438371->Sup.len : 0);
			{
				while (1) {
					Ttype215828* typ;
					if (!(i_438374 < L_438376)) goto LA11;
					n_438357 = HEX3Atmp_438371->data[i_438374];
					typ = semtypenode_426245(c, n_438357, NIM_NIL);
					safeadd_284485((&(*result).sons), typ);
					i_438374 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Ttype215828*, semvartype_433772)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	{
		NI LOC3;
		Ttype215828* base;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		result = neworprevtype_433274(((NU8) 23), prev, c);
		base = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!((*base).kind == ((NU8) 23))) goto LA8;
			localerror_188080((*n).info, ((NU16) 202), ((NimStringDesc*) &TMP3155));
			base = (*base).sons->data[((NI) 0)];
		}
		LA8: ;
		addsonskipintlit_259678(result, base);
	}
	goto LA1;
	LA4: ;
	{
		result = newconstraint_433301(c, ((NU8) 23));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, semdistinct_433789)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	Ttype215828* LOC6;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_216059(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_433301(c, ((NU8) 13));
		goto BeforeRet;
	}
	LA4: ;
	result = neworprevtype_433274(((NU8) 13), prev, c);
	LOC6 = 0;
	LOC6 = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	addsonskipintlit_259678(result, LOC6);
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_216059(n);
		if (!(((NI) 1) < LOC9)) goto LA10;
		asgnRefNoCycle((void**) (&(*result).n), HEX5BHEX5D_216238(n, ((NI) 1)));
	}
	LA10: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, semproctypewithscope_438377)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev, NU8 kind) {
	Ttype215828* result;
	Tscope215816* LOC1;
	Tsym215822* s;
	Tident190012* LOC2;
	Tnode215790* LOC3;
	result = 0;
	checksonslen_265958(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	result = semproctypenode_437494(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL, prev, kind, NIM_TRUE);
	LOC2 = 0;
	LOC2 = getident_190441(((NimStringDesc*) &TMP3550));
	LOC3 = 0;
	LOC3 = newidentnode_217228(LOC2, (*n).info);
	s = newsyms_426889(kind, LOC3, c);
	asgnRefNoCycle((void**) (&(*s).typ), result);
	{
		NIM_BOOL LOC6;
		NI LOC8;
		LOC6 = 0;
		LOC6 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1));
		if (LOC6) goto LA7;
		LOC8 = 0;
		LOC8 = len_216059((*n).kindU.S6.sons->data[((NI) 1)]);
		LOC6 = (LOC8 == ((NI) 0));
		LA7: ;
		if (!LOC6) goto LA9;
		{
			if (!((*result).callconv == ((NU8) 0))) goto LA13;
			(*result).callconv = ((NU8) 8);
		}
		LA13: ;
	}
	goto LA4;
	LA9: ;
	{
		pragma_280070(c, s, (*n).kindU.S6.sons->data[((NI) 1)], TMP3553);
		seteffectsforproctype_348006(result, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA4: ;
	closescope_270068(c);
	return result;
}

N_NIMCALL(Ttype215828*, semenum_433306)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	NI64 counter;
	NI64 x;
	Tsym215822* e;
	Ttype215828* base;
	NIM_BOOL ispure;
	NIM_BOOL LOC19;
	NIM_BOOL hasnull;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_433301(c, ((NU8) 14));
		goto BeforeRet;
	}
	goto LA1;
	LA4: ;
	{
		NI LOC7;
		LOC7 = 0;
		LOC7 = sonslen_218351(n);
		if (!(LOC7 == ((NI) 1))) goto LA8;
		result = errortype_265901(c);
		goto BeforeRet;
	}
	goto LA1;
	LA8: ;
	LA1: ;
	counter = 0;
	x = 0;
	e = 0;
	base = 0;
	counter = IL64(0);
	base = NIM_NIL;
	result = neworprevtype_433274(((NU8) 14), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_217248(((NU8) 150), (*n).info));
	checkminsonslen_265962(n, ((NI) 1));
	{
		NI64 LOC18;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA12;
		base = semtypenode_426245(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 14)))) goto LA16;
			localerror_188080((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 126), ((NimStringDesc*) &TMP3155));
		}
		LA16: ;
		LOC18 = 0;
		LOC18 = lastord_241004(base);
		counter = (NI64)(LOC18 + IL64(1));
	}
	LA12: ;
	rawaddson_219408(result, base);
	LOC19 = 0;
	LOC19 = !(((*result).sym == NIM_NIL));
	if (!(LOC19)) goto LA20;
	LOC19 = (((*(*result).sym).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0);
	LA20: ;
	ispure = LOC19;
	hasnull = NIM_FALSE;
	{
		NI i_433376;
		NI HEX3Atmp_433637;
		NI LOC22;
		NI res_433640;
		i_433376 = 0;
		HEX3Atmp_433637 = 0;
		LOC22 = 0;
		LOC22 = sonslen_218351(n);
		HEX3Atmp_433637 = (NI)(LOC22 - ((NI) 1));
		res_433640 = ((NI) 1);
		{
			while (1) {
				Tnode215790* LOC72;
				if (!(res_433640 <= HEX3Atmp_433637)) goto LA24;
				i_433376 = res_433640;
				switch ((*(*n).kindU.S6.sons->data[i_433376]).kind) {
				case ((NU8) 151):
				{
					Tnode215790* v;
					Tnode215790* strval;
					Ttype215828* LOC26;
					e = newsyms_426889(((NU8) 19), (*(*n).kindU.S6.sons->data[i_433376]).kindU.S6.sons->data[((NI) 0)], c);
					v = semconstexpr_427473(c, (*(*n).kindU.S6.sons->data[i_433376]).kindU.S6.sons->data[((NI) 1)]);
					strval = NIM_NIL;
					LOC26 = 0;
					LOC26 = skiptypes_219113((*v).typ, IL64(211106232576000));
					switch ((*LOC26).kind) {
					case ((NU8) 18):
					{
						{
							NI LOC30;
							LOC30 = 0;
							LOC30 = sonslen_218351(v);
							if (!(LOC30 == ((NI) 2))) goto LA31;
							strval = (*v).kindU.S6.sons->data[((NI) 1)];
							{
								Ttype215828* LOC35;
								LOC35 = 0;
								LOC35 = skiptypes_219113((*strval).typ, IL64(211106232576256));
								if (!((*LOC35).kind == ((NU8) 28) || (*LOC35).kind == ((NU8) 29))) goto LA36;
								x = getordvalue_241118((*v).kindU.S6.sons->data[((NI) 0)]);
							}
							goto LA33;
							LA36: ;
							{
								localerror_188080((*strval).info, ((NU16) 6), ((NimStringDesc*) &TMP3155));
							}
							LA33: ;
						}
						goto LA28;
						LA31: ;
						{
							localerror_188080((*v).info, ((NU16) 115), ((NimStringDesc*) &TMP3155));
						}
						LA28: ;
					}
					break;
					case ((NU8) 28):
					case ((NU8) 29):
					{
						strval = v;
						x = counter;
					}
					break;
					default:
					{
						x = getordvalue_241118(v);
					}
					break;
					}
					{
						if (!!((i_433376 == ((NI) 1)))) goto LA44;
						{
							if (!!((x == counter))) goto LA48;
							(*result).flags |= ((NU32)1)<<((((NU8) 5))%(sizeof(NU32)*8));
						}
						LA48: ;
						{
							if (!(x < counter)) goto LA52;
							localerror_188080((*(*n).kindU.S6.sons->data[i_433376]).info, ((NU16) 149), (*(*e).name).s);
							x = counter;
						}
						LA52: ;
					}
					LA44: ;
					asgnRefNoCycle((void**) (&(*e).ast), strval);
					counter = x;
				}
				break;
				case ((NU8) 3):
				{
					e = (*(*n).kindU.S6.sons->data[i_433376]).kindU.S4.sym;
				}
				break;
				case ((NU8) 2):
				case ((NU8) 53):
				{
					e = newsyms_426889(((NU8) 19), (*n).kindU.S6.sons->data[i_433376], c);
				}
				break;
				default:
				{
					Tnode215790* LOC57;
					LOC57 = 0;
					LOC57 = HEX5BHEX5D_216238(n, i_433376);
					illformedast_265950(LOC57);
				}
				break;
				}
				asgnRefNoCycle((void**) (&(*e).typ), result);
				(*e).position = ((NI) (counter));
				{
					if (!((*e).position == ((NI) 0))) goto LA60;
					hasnull = NIM_TRUE;
				}
				LA60: ;
				{
					NIM_BOOL LOC64;
					LOC64 = 0;
					LOC64 = !(((*result).sym == NIM_NIL));
					if (!(LOC64)) goto LA65;
					LOC64 = (((*(*result).sym).flags &(1U<<((NU)(((NU8) 1))&31U)))!=0);
					LA65: ;
					if (!LOC64) goto LA66;
					(*e).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
					(*e).flags |= ((NU32)1)<<((((NU8) 1))%(sizeof(NU32)*8));
					{
						if (!!(ispure)) goto LA70;
						strtableadd_222061((&(*(*c).module).kindU.S3.tab), e);
					}
					LA70: ;
				}
				LA66: ;
				LOC72 = 0;
				LOC72 = newsymnode_217234(e);
				addson_217807((*result).n, LOC72);
				{
					NIM_BOOL LOC75;
					LOC75 = 0;
					LOC75 = !((((*e).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0));
					if (!(LOC75)) goto LA76;
					LOC75 = !(ispure);
					LA76: ;
					if (!LOC75) goto LA77;
					adddecl_270445(c, e);
				}
				LA77: ;
				counter += ((NI) 1);
				res_433640 += ((NI) 1);
			} LA24: ;
		}
	}
	{
		if (!!(hasnull)) goto LA81;
		(*result).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
	}
	LA81: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype215828*, semstmtlisttype_437990)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	NI length;
	result = 0;
	checkminsonslen_265962(n, ((NI) 1));
	length = sonslen_218351(n);
	{
		NI i_438008;
		NI HEX3Atmp_438014;
		NI res_438017;
		i_438008 = 0;
		HEX3Atmp_438014 = 0;
		HEX3Atmp_438014 = (NI)(length - ((NI) 2));
		res_438017 = ((NI) 0);
		{
			while (1) {
				if (!(res_438017 <= HEX3Atmp_438014)) goto LA3;
				i_438008 = res_438017;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_438008]), semstmt_426250(c, (*n).kindU.S6.sons->data[i_438008]));
				res_438017 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		if (!(((NI) 0) < length)) goto LA6;
		result = semtypenode_426245(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))], prev);
		asgnRefNoCycle((void**) (&(*n).typ), result);
		asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ), result);
	}
	goto LA4;
	LA6: ;
	{
		result = NIM_NIL;
	}
	LA4: ;
	return result;
}

N_NIMCALL(Ttype215828*, semblocktype_438021)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	Tscope215816* LOC1;
	result = 0;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_265958(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	{
		Tsym215822* LOC6;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1) || (*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA4;
		LOC6 = 0;
		LOC6 = newsyms_426889(((NU8) 21), (*n).kindU.S6.sons->data[((NI) 0)], c);
		adddecl_270445(c, LOC6);
	}
	LA4: ;
	result = semstmtlisttype_437990(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
	asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 1)]).typ), result);
	asgnRefNoCycle((void**) (&(*n).typ), result);
	closescope_270068(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Ttype215828*, semtypenode_426245)(Tcontext265020* c, Tnode215790* n, Ttype215828* prev) {
	Ttype215828* result;
	result = 0;
	result = NIM_NIL;
	{
		if (!(gcmd_161123 == ((NU8) 14))) goto LA3;
		suggestexpr_373810(c, n);
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 132):
	{
		Tnode215790* typexpr;
		checksonslen_265958(n, ((NI) 1));
		typexpr = semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 4);
		result = (*typexpr).typ;
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC10;
			LOC10 = 0;
			LOC10 = sonslen_218351(n);
			if (!(LOC10 == ((NI) 1))) goto LA11;
			result = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		}
		goto LA8;
		LA11: ;
		{
			result = semanontuple_435005(c, n, prev);
		}
		LA8: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		Tnode215790* x;
		Tident190012* ident;
		x = HEX5BHEX5D_216238(n, ((NI) 0));
		switch ((*x).kind) {
		case ((NU8) 2):
		{
			ident = (*x).kindU.S5.ident;
		}
		break;
		case ((NU8) 3):
		{
			ident = (*(*x).kindU.S4.sym).name;
		}
		break;
		case ((NU8) 56):
		case ((NU8) 57):
		{
			Tnode215790* LOC18;
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_216238(x, ((NI) 0));
			ident = (*(*LOC18).kindU.S4.sym).name;
		}
		break;
		default:
		{
			ident = NIM_NIL;
		}
		break;
		}
		{
			NIM_BOOL LOC22;
			Tnode215790* b;
			LOC22 = 0;
			LOC22 = !((ident == NIM_NIL));
			if (!(LOC22)) goto LA23;
			LOC22 = eqStrings((*ident).s, ((NimStringDesc*) &TMP3157));
			LA23: ;
			if (!LOC22) goto LA24;
			b = newnodei_217248(((NU8) 42), (*n).info);
			{
				NI i_438667;
				Slice88082 HEX3Atmp_439269;
				NI LOC27;
				i_438667 = 0;
				memset((void*)(&HEX3Atmp_439269), 0, sizeof(HEX3Atmp_439269));
				LOC27 = 0;
				LOC27 = len_216059(n);
				HEX3Atmp_439269 = HEX2EHEX2E_102424(((NI) 1), (LOC27 - 1));
				{
					NI x_439273;
					NI HEX3Atmp_439275;
					NI HEX3Atmp_439277;
					NI res_439279;
					x_439273 = 0;
					HEX3Atmp_439275 = 0;
					HEX3Atmp_439277 = 0;
					HEX3Atmp_439275 = HEX3Atmp_439269.a;
					HEX3Atmp_439277 = HEX3Atmp_439269.b;
					res_439279 = HEX3Atmp_439275;
					{
						while (1) {
							Tnode215790* LOC31;
							if (!(res_439279 <= HEX3Atmp_439277)) goto LA30;
							x_439273 = res_439279;
							i_438667 = x_439273;
							LOC31 = 0;
							LOC31 = HEX5BHEX5D_216238(n, i_438667);
							add_216114(b, LOC31);
							res_439279 += ((NI) 1);
						} LA30: ;
					}
				}
			}
			result = semtypenode_426245(c, b, prev);
		}
		goto LA20;
		LA24: ;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = !((ident == NIM_NIL));
			if (!(LOC33)) goto LA34;
			LOC33 = ((*ident).Sup.id == ((NI) 75));
			LA34: ;
			if (!LOC33) goto LA35;
			result = semrangeaux_433798(c, n, prev);
		}
		goto LA20;
		LA35: ;
		{
			NIM_BOOL LOC38;
			Tnode215790* LOC39;
			NI LOC41;
			LOC38 = 0;
			LOC39 = 0;
			LOC39 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC38 = ((*LOC39).kind == ((NU8) 23));
			if (!(LOC38)) goto LA40;
			LOC41 = 0;
			LOC41 = len_216059(n);
			LOC38 = (LOC41 == ((NI) 2));
			LA40: ;
			if (!LOC38) goto LA42;
			result = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
			{
				Ttype215828* LOC46;
				LOC46 = 0;
				LOC46 = skiptypes_219113(result, 2048);
				if (!((*LOC46).kind >= ((NU8) 9) && (*LOC46).kind <= ((NU8) 10) || (*LOC46).kind == ((NU8) 12) || (*LOC46).kind >= ((NU8) 21) && (*LOC46).kind <= ((NU8) 22) || (*LOC46).kind >= ((NU8) 24) && (*LOC46).kind <= ((NU8) 26) || (*LOC46).kind >= ((NU8) 28) && (*LOC46).kind <= ((NU8) 29) || (*LOC46).kind == ((NU8) 50))) goto LA47;
				{
					if (!(((*result).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0)) goto LA51;
					result = freshtype_438308(result, prev);
					(*result).flags &= ~(((NU32)1) << ((((NU8) 16)) % (sizeof(NU32)*8)));
				}
				LA51: ;
			}
			goto LA44;
			LA47: ;
			{
				localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3158));
			}
			LA44: ;
		}
		goto LA20;
		LA42: ;
		{
			Tnode215790* LOC55;
			LOC55 = 0;
			LOC55 = HEX5BHEX5D_216238(n, ((NI) 0));
			if (!!(((*LOC55).kind == ((NU8) 2) || (*LOC55).kind == ((NU8) 3) || (*LOC55).kind == ((NU8) 53) || (*LOC55).kind == ((NU8) 57) || (*LOC55).kind == ((NU8) 56)))) goto LA56;
			result = semtypeexpr_438291(c, n);
		}
		goto LA20;
		LA56: ;
		{
			Tident190012* op;
			op = considerquotedident_270004((*n).kindU.S6.sons->data[((NI) 0)]);
			{
				NIM_BOOL LOC61;
				Ttype215828* t1;
				Ttype215828* t2;
				LOC61 = 0;
				LOC61 = ((*op).Sup.id == ((NI) 2) || (*op).Sup.id == ((NI) 49));
				if (LOC61) goto LA62;
				LOC61 = eqStrings((*op).s, ((NimStringDesc*) &TMP3159));
				LA62: ;
				if (!LOC61) goto LA63;
				checksonslen_265958(n, ((NI) 3));
				t1 = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
				t2 = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
				{
					if (!(t1 == NIM_NIL)) goto LA67;
					localerror_188080((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
					result = neworprevtype_433274(((NU8) 50), prev, c);
				}
				goto LA65;
				LA67: ;
				{
					if (!(t2 == NIM_NIL)) goto LA70;
					localerror_188080((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
					result = neworprevtype_433274(((NU8) 50), prev, c);
				}
				goto LA65;
				LA70: ;
				{
					{
						if (!((*op).Sup.id == ((NI) 2))) goto LA75;
						result = makeandtype_265640(c, t1, t2);
					}
					goto LA73;
					LA75: ;
					{
						result = makeortype_265707(c, t1, t2);
					}
					LA73: ;
				}
				LA65: ;
			}
			goto LA59;
			LA63: ;
			{
				NI LOC81;
				if (!((*op).Sup.id == ((NI) 45))) goto LA79;
				LOC81 = 0;
				LOC81 = len_216059(n);
				switch (LOC81) {
				case ((NI) 3):
				{
					result = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					{
						NIM_BOOL LOC85;
						Ttype215828* LOC86;
						LOC85 = 0;
						LOC86 = 0;
						LOC86 = skiptypes_219113(result, 2048);
						LOC85 = ((*LOC86).kind >= ((NU8) 9) && (*LOC86).kind <= ((NU8) 10) || (*LOC86).kind == ((NU8) 12) || (*LOC86).kind >= ((NU8) 21) && (*LOC86).kind <= ((NU8) 22) || (*LOC86).kind >= ((NU8) 24) && (*LOC86).kind <= ((NU8) 26) || (*LOC86).kind >= ((NU8) 28) && (*LOC86).kind <= ((NU8) 29) || (*LOC86).kind == ((NU8) 50));
						if (!(LOC85)) goto LA87;
						LOC85 = ((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 23));
						LA87: ;
						if (!LOC85) goto LA88;
						result = freshtype_438308(result, prev);
						(*result).flags |= ((NU32)1)<<((((NU8) 16))%(sizeof(NU32)*8));
					}
					goto LA83;
					LA88: ;
					{
						localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3158));
					}
					LA83: ;
				}
				break;
				case ((NI) 2):
				{
					Ttype215828* negated;
					negated = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					result = makenottype_265774(c, negated);
				}
				break;
				default:
				{
					localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3158));
				}
				break;
				}
			}
			goto LA59;
			LA79: ;
			{
				if (!((*op).Sup.id == ((NI) 52))) goto LA94;
				result = semanyref_433690(c, n, ((NU8) 21), prev);
			}
			goto LA59;
			LA94: ;
			{
				if (!((*op).Sup.id == ((NI) 54))) goto LA97;
				result = semanyref_433690(c, n, ((NU8) 22), prev);
			}
			goto LA59;
			LA97: ;
			{
				Tnode215790* typexpr;
				if (!((*op).Sup.id == ((NI) 62))) goto LA100;
				checksonslen_265958(n, ((NI) 2));
				typexpr = semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 1)], 4);
				result = (*typexpr).typ;
			}
			goto LA59;
			LA100: ;
			{
				result = semtypeexpr_438291(c, n);
			}
			LA59: ;
		}
		LA20: ;
	}
	break;
	case ((NU8) 93):
	{
		Tnode215790* whenresult;
		whenresult = semwhen_426990(c, n, NIM_FALSE);
		{
			if (!((*whenresult).kind == ((NU8) 115))) goto LA106;
			(*whenresult).kind = ((NU8) 128);
		}
		LA106: ;
		result = semtypenode_426245(c, whenresult, prev);
	}
	break;
	case ((NU8) 42):
	{
		Tsym215822* s;
		checkminsonslen_265962(n, ((NI) 2));
		s = semtypeident_434341(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		switch ((*s).magic) {
		case ((NU8) 164):
		{
			result = semarray_434289(c, n, prev);
		}
		break;
		case ((NU8) 165):
		{
			result = semcontainer_433670(c, n, ((NU8) 27), ((NimStringDesc*) &TMP3162), prev);
		}
		break;
		case ((NU8) 166):
		{
			result = semrange_434078(c, n, prev);
		}
		break;
		case ((NU8) 167):
		{
			result = semset_433644(c, n, prev);
		}
		break;
		case ((NU8) 170):
		{
			result = semordinal_434323(c, n, prev);
		}
		break;
		case ((NU8) 168):
		{
			result = semcontainer_433670(c, n, ((NU8) 24), ((NimStringDesc*) &TMP3166), prev);
		}
		break;
		case ((NU8) 169):
		{
			result = semvarargs_433680(c, n, prev);
		}
		break;
		case ((NU8) 195):
		{
			Tnode215790* LOC117;
			Ttype215828* LOC118;
			LOC117 = 0;
			LOC117 = HEX5BHEX5D_216238(n, ((NI) 1));
			LOC118 = 0;
			LOC118 = semtypenode_426245(c, LOC117, NIM_NIL);
			result = maketypedesc_265524(c, LOC118);
		}
		break;
		case ((NU8) 193):
		{
			result = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
			{
				Tsym215822* LOC124;
				if (!!((result == NIM_NIL))) goto LA122;
				LOC124 = 0;
				LOC124 = getcurrowner_265210();
				result = copytype_218470(result, LOC124, NIM_FALSE);
				{
					NI i_438943;
					NI HEX3Atmp_439284;
					NI LOC126;
					NI res_439287;
					i_438943 = 0;
					HEX3Atmp_439284 = 0;
					LOC126 = 0;
					LOC126 = len_216059(n);
					HEX3Atmp_439284 = (NI)(LOC126 - ((NI) 1));
					res_439287 = ((NI) 1);
					{
						while (1) {
							Ttype215828* LOC129;
							if (!(res_439287 <= HEX3Atmp_439284)) goto LA128;
							i_438943 = res_439287;
							LOC129 = 0;
							LOC129 = semtypenode_426245(c, (*n).kindU.S6.sons->data[i_438943], NIM_NIL);
							rawaddson_219408(result, LOC129);
							res_439287 += ((NI) 1);
						} LA128: ;
					}
				}
			}
			LA122: ;
		}
		break;
		default:
		{
			result = semgeneric_438065(c, n, s, prev);
		}
		break;
		}
	}
	break;
	case ((NU8) 45):
	{
		Tnode215790* typeexpr;
		typeexpr = semexpr_426201(c, n, 0);
		{
			if (!!(((*(*typeexpr).typ).kind == ((NU8) 8)))) goto LA134;
			localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
			result = errortype_265901(c);
		}
		goto LA132;
		LA134: ;
		{
			result = base_241021((*typeexpr).typ);
			{
				NIM_BOOL LOC139;
				Tnode215790* preprocessed;
				Tnode215790* LOC142;
				LOC139 = 0;
				LOC139 = ismetatype_216803(result);
				if (!LOC139) goto LA140;
				preprocessed = semgenericstmt_433270(c, n);
				LOC142 = 0;
				LOC142 = copytree_219822(preprocessed);
				result = maketypefromexpr_265557(c, LOC142);
			}
			LA140: ;
		}
		LA132: ;
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	{
		Tsym215822* s;
		s = semtypeident_434341(c, n);
		{
			if (!((*s).typ == NIM_NIL)) goto LA146;
			{
				if (!!(((*s).kind == ((NU8) 0)))) goto LA150;
				localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
			}
			LA150: ;
			result = neworprevtype_433274(((NU8) 50), prev, c);
		}
		goto LA144;
		LA146: ;
		{
			NIM_BOOL LOC153;
			LOC153 = 0;
			LOC153 = ((*s).kind == ((NU8) 3));
			if (!(LOC153)) goto LA154;
			LOC153 = ((*(*s).typ).kind == ((NU8) 8));
			LA154: ;
			if (!LOC153) goto LA155;
			{
				NIM_BOOL LOC159;
				Ttype215828* LOC160;
				NimStringDesc* LOC164;
				LOC159 = 0;
				LOC160 = 0;
				LOC160 = base_241021((*s).typ);
				LOC159 = !(((*LOC160).kind == ((NU8) 0)));
				if (!(LOC159)) goto LA161;
				LOC159 = (prev == NIM_NIL);
				LA161: ;
				if (!!(LOC159)) goto LA162;
				LOC164 = 0;
				LOC164 = HEX24_188183(TMP3183);
				internalerror_188113(LOC164);
			}
			LA162: ;
			result = base_241021((*s).typ);
		}
		goto LA144;
		LA155: ;
		{
			if (!(prev == NIM_NIL)) goto LA166;
			result = (*s).typ;
		}
		goto LA144;
		LA166: ;
		{
			assigntype_218389(prev, (*s).typ);
			{
				if (!!(((*(*s).typ).kind == ((NU8) 1) || (*(*s).typ).kind == ((NU8) 2) || (*(*s).typ).kind >= ((NU8) 31) && (*(*s).typ).kind <= ((NU8) 35) || (*(*s).typ).kind >= ((NU8) 36) && (*(*s).typ).kind <= ((NU8) 39) || (*(*s).typ).kind >= ((NU8) 40) && (*(*s).typ).kind <= ((NU8) 44)))) goto LA171;
				(*prev).Sup.id = (*(*s).typ).Sup.id;
			}
			LA171: ;
			result = prev;
		}
		LA144: ;
	}
	break;
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC176;
			Ttype215828* t;
			LOC176 = 0;
			LOC176 = ((*(*n).kindU.S4.sym).kind == ((NU8) 7));
			if (!(LOC176)) goto LA177;
			LOC176 = !(((*(*n).kindU.S4.sym).typ == NIM_NIL));
			LA177: ;
			if (!LOC176) goto LA178;
			t = (*(*n).kindU.S4.sym).typ;
			{
				if (!(prev == NIM_NIL)) goto LA182;
				result = t;
			}
			goto LA180;
			LA182: ;
			{
				assigntype_218389(prev, t);
				result = prev;
			}
			LA180: ;
			markused_363244((*n).info, (*n).kindU.S4.sym);
		}
		goto LA174;
		LA178: ;
		{
			{
				if (!!(((*(*n).kindU.S4.sym).kind == ((NU8) 0)))) goto LA188;
				localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
			}
			LA188: ;
			result = neworprevtype_433274(((NU8) 50), prev, c);
		}
		LA174: ;
	}
	break;
	case ((NU8) 133):
	{
		result = semobjectnode_436413(c, n, prev);
	}
	break;
	case ((NU8) 134):
	{
		result = semtuple_435032(c, n, prev);
	}
	break;
	case ((NU8) 135):
	{
		result = newconstraint_433301(c, ((NU8) 18));
	}
	break;
	case ((NU8) 136):
	{
		result = semtypeclass_438321(c, n, prev);
	}
	break;
	case ((NU8) 141):
	{
		result = semanyref_433690(c, n, ((NU8) 22), prev);
	}
	break;
	case ((NU8) 142):
	{
		result = semanyref_433690(c, n, ((NU8) 21), prev);
	}
	break;
	case ((NU8) 143):
	{
		result = semvartype_433772(c, n, prev);
	}
	break;
	case ((NU8) 146):
	{
		result = semdistinct_433789(c, n, prev);
	}
	break;
	case ((NU8) 137):
	{
		Ttype215828* base;
		result = neworprevtype_433274(((NU8) 59), prev, c);
		base = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		rawaddson_219408(result, base);
		(*result).flags |= ((NU32)1)<<((((NU8) 22))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 148):
	{
		{
			NI LOC202;
			Ttype215828* child;
			LOC202 = 0;
			LOC202 = sonslen_218351(n);
			if (!(LOC202 == ((NI) 0))) goto LA203;
			result = newtypes_265185(((NU8) 51), c);
			child = newtypes_265185(((NU8) 25), c);
			(*child).flags |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
			addsonskipintlit_259678(result, child);
		}
		goto LA200;
		LA203: ;
		{
			result = semproctypewithscope_438377(c, n, prev, ((NU8) 14));
			(*result).flags |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
			{
				NIM_BOOL LOC208;
				Tnode215790* LOC209;
				Tnode215790* LOC211;
				LOC208 = 0;
				LOC209 = 0;
				LOC209 = lastson_218364(n);
				LOC208 = ((*LOC209).kind == ((NU8) 90));
				if (!(LOC208)) goto LA210;
				LOC211 = 0;
				LOC211 = lastson_218364(n);
				LOC208 = haspragma_283324(LOC211, ((NU16) 136));
				LA210: ;
				if (!LOC208) goto LA212;
				(*result).callconv = ((NU8) 5);
			}
			goto LA206;
			LA212: ;
			{
				(*result).callconv = ((NU8) 8);
			}
			LA206: ;
		}
		LA200: ;
	}
	break;
	case ((NU8) 147):
	{
		{
			NI LOC218;
			LOC218 = 0;
			LOC218 = sonslen_218351(n);
			if (!(LOC218 == ((NI) 0))) goto LA219;
			result = newconstraint_433301(c, ((NU8) 25));
		}
		goto LA216;
		LA219: ;
		{
			result = semproctypewithscope_438377(c, n, prev, ((NU8) 12));
		}
		LA216: ;
	}
	break;
	case ((NU8) 150):
	{
		result = semenum_433306(c, n, prev);
	}
	break;
	case ((NU8) 4):
	{
		result = (*n).typ;
	}
	break;
	case ((NU8) 128):
	{
		result = semstmtlisttype_437990(c, n, prev);
	}
	break;
	case ((NU8) 129):
	{
		result = semblocktype_438021(c, n, prev);
	}
	break;
	case ((NU8) 149):
	{
		checksonslen_265958(n, ((NI) 1));
		result = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		result = freshtype_438308(result, prev);
		(*result).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	break;
	default:
	{
		localerror_188080((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
		result = neworprevtype_433274(((NU8) 50), prev, c);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), result);
	return result;
}

N_NIMCALL(Tnode215790*, semaftermacrocall_432992)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags) {
	Tnode215790* result;
	Tsym215822* LOC5;
	Tsym215822* LOC19;
	result = 0;
	evaltemplatecounter_401328 += ((NI) 1);
	{
		if (!(((NI) 100) < evaltemplatecounter_401328)) goto LA3;
		globalerror_188071((*s).info, ((NU16) 188), ((NimStringDesc*) &TMP3155));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getmodule_222144((*s).owner);
	(*c).friendmodules = (Tsymseq215792*) incrSeqV2(&((*c).friendmodules)->Sup, sizeof(Tsym215822*));
	asgnRefNoCycle((void**) (&(*c).friendmodules->data[(*c).friendmodules->Sup.len]), LOC5);
	++(*c).friendmodules->Sup.len;
	result = n;
	{
		if (!((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL)) goto LA8;
		result = semstmt_426250(c, result);
	}
	goto LA6;
	LA8: ;
	{
		switch ((*(*(*s).typ).sons->data[((NI) 0)]).kind) {
		case ((NU8) 6):
		{
			result = semexpr_426201(c, result, flags);
		}
		break;
		case ((NU8) 7):
		{
			result = semstmt_426250(c, result);
		}
		break;
		case ((NU8) 8):
		{
			Ttype215828* typ;
			{
				if (!((*n).kind == ((NU8) 115))) goto LA16;
				(*result).kind = ((NU8) 128);
			}
			LA16: ;
			typ = semtypenode_426245(c, result, NIM_NIL);
			asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_265524(c, typ));
		}
		break;
		default:
		{
			result = semexpr_426201(c, result, flags);
			result = fitnode_426230(c, (*(*s).typ).sons->data[((NI) 0)], result);
		}
		break;
		}
	}
	LA6: ;
	evaltemplatecounter_401328 -= ((NI) 1);
	LOC19 = 0;
	LOC19 = pop_385840((&(*c).friendmodules));
	return result;
}

N_NIMCALL(Tnode215790*, semmacroexpr_427007)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, Tsym215822* sym, NU16 flags) {
	Tnode215790* result;
	result = 0;
	pushinfocontext_184209((*norig).info);
	markused_363244((*n).info, sym);
	{
		if (!(sym == (*(*c).p).owner)) goto LA3;
		globalerror_188071((*n).info, ((NU16) 26), (*(*sym).name).s);
	}
	LA3: ;
	result = evalmacrocall_415669((*c).module, n, norig, sym);
	{
		if (!!(((flags &(1U<<((NU)(((NU8) 9))&15U)))!=0))) goto LA7;
		result = semaftermacrocall_432992(c, result, sym, flags);
	}
	LA7: ;
	popinfocontext_184222();
	return result;
}

N_NIMCALL(Tnode215790*, semsym_459040)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags) {
	Tnode215790* result;
{	result = 0;
	switch ((*s).kind) {
	case ((NU8) 10):
	{
		Ttype215828* LOC2;
		markused_363244((*n).info, s);
		LOC2 = 0;
		LOC2 = skiptypes_219113((*s).typ, IL64(211106232576000));
		switch ((*LOC2).kind) {
		case ((NU8) 5):
		case ((NU8) 2):
		case ((NU8) 31) ... ((NU8) 35):
		case ((NU8) 36) ... ((NU8) 39):
		case ((NU8) 18):
		case ((NU8) 19):
		case ((NU8) 40) ... ((NU8) 44):
		{
			{
				if (!((*s).magic == ((NU8) 0))) goto LA6;
				result = inlineconst_459033(n, s);
			}
			goto LA4;
			LA6: ;
			{
				result = newsymnode_217241(s, (*n).info);
			}
			LA4: ;
		}
		break;
		case ((NU8) 4):
		case ((NU8) 24):
		{
			{
				NI LOC12;
				LOC12 = 0;
				LOC12 = len_216059((*s).ast);
				if (!(LOC12 == ((NI) 0))) goto LA13;
				result = inlineconst_459033(n, s);
			}
			goto LA10;
			LA13: ;
			{
				result = newsymnode_217241(s, (*n).info);
			}
			LA10: ;
		}
		break;
		default:
		{
			result = newsymnode_217241(s, (*n).info);
		}
		break;
		}
	}
	break;
	case ((NU8) 16):
	{
		result = semmacroexpr_427007(c, n, n, s, flags);
	}
	break;
	case ((NU8) 17):
	{
		result = semtemplateexpr_426999(c, n, s, flags);
	}
	break;
	case ((NU8) 3):
	{
		markused_363244((*n).info, s);
		{
			NIM_BOOL LOC22;
			LOC22 = 0;
			LOC22 = ((*(*s).typ).kind == ((NU8) 59));
			if (!(LOC22)) goto LA23;
			LOC22 = !(((*(*s).typ).n == NIM_NIL));
			LA23: ;
			if (!LOC22) goto LA24;
			result = (*(*s).typ).n;
			goto BeforeRet;
		}
		goto LA20;
		LA24: ;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0)) goto LA27;
			{
				Tnode215790* realparam;
				Tnode215790* LOC40;
				if (!(*(*c).p).wasforwarded) goto LA31;
				realparam = HEX5BHEX5D_216238((*(*(*(*c).p).owner).typ).n, (NI)((*s).position + ((NI) 1)));
				{
					NIM_BOOL LOC35;
					NimStringDesc* LOC39;
					LOC35 = 0;
					LOC35 = ((*realparam).kind == ((NU8) 3));
					if (!(LOC35)) goto LA36;
					LOC35 = ((*(*realparam).kindU.S4.sym).kind == ((NU8) 3));
					LA36: ;
					if (!!(LOC35)) goto LA37;
					LOC39 = 0;
					LOC39 = HEX24_188183(TMP3556);
					internalerror_188113(LOC39);
				}
				LA37: ;
				LOC40 = 0;
				LOC40 = HEX5BHEX5D_216238((*(*(*(*c).p).owner).typ).n, (NI)((*s).position + ((NI) 1)));
				result = newsymnode_217241((*LOC40).kindU.S4.sym, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA31: ;
			{
				Tsym215822* u;
				if (!((*(*(*c).p).owner).kind == ((NU8) 16))) goto LA42;
				u = searchinscopes_270131(c, (*s).name);
				{
					NIM_BOOL LOC46;
					NIM_BOOL LOC47;
					NimStringDesc* LOC52;
					LOC46 = 0;
					LOC47 = 0;
					LOC47 = !((u == NIM_NIL));
					if (!(LOC47)) goto LA48;
					LOC47 = ((*u).kind == ((NU8) 3));
					LA48: ;
					LOC46 = LOC47;
					if (!(LOC46)) goto LA49;
					LOC46 = ((*u).owner == (*s).owner);
					LA49: ;
					if (!!(LOC46)) goto LA50;
					LOC52 = 0;
					LOC52 = HEX24_188183(TMP3557);
					internalerror_188113(LOC52);
				}
				LA50: ;
				result = newsymnode_217241(u, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA42: ;
			LA29: ;
		}
		goto LA20;
		LA27: ;
		LA20: ;
		result = newsymnode_217241(s, (*n).info);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 9):
	case ((NU8) 11):
	case ((NU8) 20):
	{
		{
			if (!((*s).magic == ((NU8) 254))) goto LA56;
			localerror_188085((*n).info, ((NimStringDesc*) &TMP3558));
		}
		LA56: ;
		markused_363244((*n).info, s);
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0)) goto LA60;
			(*(*(*c).p).owner).flags |= ((NU32)1)<<((((NU8) 11))%(sizeof(NU32)*8));
		}
		LA60: ;
		result = newsymnode_217241(s, (*n).info);
	}
	break;
	case ((NU8) 4):
	{
		{
			if (!((*(*s).typ).kind == ((NU8) 59))) goto LA65;
			result = newsymnode_217241(s, (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
		}
		goto LA63;
		LA65: ;
		{
			if (!!(((*s).ast == NIM_NIL))) goto LA68;
			result = semexpr_426201(c, (*s).ast, 0);
		}
		goto LA63;
		LA68: ;
		{
			asgnRefNoCycle((void**) (&(*n).typ), (*s).typ);
			result = n;
			goto BeforeRet;
		}
		LA63: ;
	}
	break;
	case ((NU8) 7):
	{
		markused_363244((*n).info, s);
		{
			NIM_BOOL LOC74;
			LOC74 = 0;
			LOC74 = ((*(*s).typ).kind == ((NU8) 59));
			if (!(LOC74)) goto LA75;
			LOC74 = !(((*(*s).typ).n == NIM_NIL));
			LA75: ;
			if (!LOC74) goto LA76;
			result = (*(*s).typ).n;
			goto BeforeRet;
		}
		LA76: ;
		result = newsymnode_217241(s, (*n).info);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_265524(c, (*s).typ));
	}
	break;
	default:
	{
		markused_363244((*n).info, s);
		result = newsymnode_217241(s, (*n).info);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, markindirect_265924)(Tcontext265020* c, Tsym215822* s) {
	{
		if (!((61440 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA3;
		(*s).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	LA3: ;
}

N_NIMCALL(Tnode215790*, semfieldaccess_458811)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	result = 0;
	result = builtinfieldaccess_463890(c, n, flags);
	{
		if (!(result == NIM_NIL)) goto LA3;
		result = dottransformation_464646(c, n);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, maybelifttype_460467)(Ttype215828** t, Tcontext265020* c, Tlineinfo183337 info) {
	Tscope215816* LOC1;
	Ttype215828* lifted;
	Tnode215790* LOC2;
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	LOC2 = 0;
	LOC2 = newnodei_217248(((NU8) 152), info);
	lifted = liftparamtype_436657(c, ((NU8) 7), LOC2, (*t), ((NimStringDesc*) &TMP3561), info, NIM_FALSE);
	closescope_270068(c);
	{
		if (!!((lifted == NIM_NIL))) goto LA5;
		unsureAsgnRef((void**) (&(*t)), lifted);
	}
	LA5: ;
}

N_NIMCALL(Tnode215790*, inferwithmetatype_426388)(Tcontext265020* c, Ttype215828* formal, Tnode215790* arg, NIM_BOOL coercedistincts) {
	Tnode215790* result;
	Tcandidate363206 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_363257(c, (&m), formal);
	m.coercedistincts = coercedistincts;
	result = paramtypesmatch_368299((&m), formal, (*arg).typ, arg, NIM_NIL);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = m.genericconverter;
		if (!(LOC3)) goto LA4;
		LOC3 = !((result == NIM_NIL));
		LA4: ;
		if (!LOC3) goto LA5;
		instgenericconvertersarg_431842(c, result, (&m));
	}
	LA5: ;
	{
		Ttype215828* LOC11;
		if (!!((result == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = skiptypes_219113(formal, IL64(18014398509481984));
		asgnRefNoCycle((void**) (&(*result).typ), generatetypeinstance_286450(c, m.bindings, (*arg).info, LOC11));
	}
	goto LA7;
	LA9: ;
	{
		typemismatch_426316(arg, formal, (*arg).typ);
		result = copytree_219822(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	LA7: ;
	return result;
}

N_NIMCALL(NU8, checkconversionbetweenobjects_460206)(Ttype215828* castdest, Ttype215828* src) {
	NU8 result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = inheritancediff_247442(castdest, src);
		if (!(LOC3 == ((NI) 2147483647))) goto LA4;
		result = ((NU8) 2);
	}
	goto LA1;
	LA4: ;
	{
		result = ((NU8) 0);
	}
	LA1: ;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, checkconvertible_460217)(Tcontext265020* c, Ttype215828* castdest, Ttype215828* src) {
	NU8 result;
	Ttype215828* d;
	Ttype215828* s;
{	result = 0;
	result = ((NU8) 0);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametype_245628(castdest, src, 0);
		if (!(LOC3)) goto LA4;
		LOC3 = ((*castdest).sym == (*src).sym);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!!(((*castdest).kind >= ((NU8) 1) && (*castdest).kind <= ((NU8) 2) || (*castdest).kind == ((NU8) 14) || (*castdest).kind == ((NU8) 20) || (*castdest).kind >= ((NU8) 31) && (*castdest).kind <= ((NU8) 44)))) goto LA9;
			result = ((NU8) 1);
		}
		LA9: ;
		goto BeforeRet;
	}
	LA5: ;
	d = skiptypes_219113(castdest, IL64(211106240964864));
	s = skiptypes_219113(src, IL64(211106240964608));
	{
		while (1) {
			NIM_BOOL LOC13;
			NIM_BOOL LOC14;
			LOC13 = 0;
			LOC14 = 0;
			LOC14 = !((d == NIM_NIL));
			if (!(LOC14)) goto LA15;
			LOC14 = ((*d).kind == ((NU8) 21) || (*d).kind == ((NU8) 22));
			LA15: ;
			LOC13 = LOC14;
			if (!(LOC13)) goto LA16;
			LOC13 = ((*d).kind == (*s).kind);
			LA16: ;
			if (!LOC13) goto LA12;
			d = lastson_218377(d);
			s = lastson_218377(s);
		} LA12: ;
	}
	{
		if (!(d == NIM_NIL)) goto LA19;
		result = ((NU8) 2);
	}
	goto LA17;
	LA19: ;
	{
		NIM_BOOL LOC22;
		LOC22 = 0;
		LOC22 = ((*d).kind == ((NU8) 17));
		if (!(LOC22)) goto LA23;
		LOC22 = ((*s).kind == ((NU8) 17));
		LA23: ;
		if (!LOC22) goto LA24;
		result = checkconversionbetweenobjects_460206(d, s);
	}
	goto LA17;
	LA24: ;
	{
		NIM_BOOL LOC27;
		Ttype215828* LOC28;
		Ttype215828* LOC30;
		LOC27 = 0;
		LOC28 = 0;
		LOC28 = skiptypes_219113(castdest, IL64(211106242013440));
		LOC27 = ((*LOC28).kind == ((NU8) 1) || (*LOC28).kind == ((NU8) 14) || (*LOC28).kind == ((NU8) 2) || (*LOC28).kind >= ((NU8) 31) && (*LOC28).kind <= ((NU8) 44));
		if (!(LOC27)) goto LA29;
		LOC30 = 0;
		LOC30 = skiptypes_219113(src, IL64(211106242013184));
		LOC27 = ((*LOC30).kind == ((NU8) 1) || (*LOC30).kind == ((NU8) 14) || (*LOC30).kind == ((NU8) 2) || (*LOC30).kind >= ((NU8) 31) && (*LOC30).kind <= ((NU8) 44));
		LA29: ;
		if (!LOC27) goto LA31;
	}
	goto LA17;
	LA31: ;
	{
		NU8 LOC34;
		LOC34 = 0;
		LOC34 = cmptypes_367484(c, d, s);
		switch (LOC34) {
		case ((NU8) 0):
		case ((NU8) 8):
		{
			{
				NIM_BOOL LOC38;
				LOC38 = 0;
				LOC38 = comparetypes_247404(castdest, src, ((NU8) 1), 0);
				if (!!(LOC38)) goto LA39;
				result = ((NU8) 2);
			}
			LA39: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA17: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semconv_460486)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* targettype;
	Ttype215828* LOC6;
	Tnode215790* LOC7;
	Tnode215790* LOC8;
	Tnode215790* op;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_188080((*n).info, ((NU16) 165), ((NimStringDesc*) &TMP3155));
		result = n;
		goto BeforeRet;
	}
	LA4: ;
	result = newnodei_217248(((NU8) 60), (*n).info);
	LOC6 = 0;
	LOC6 = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	targettype = skiptypes_219113(LOC6, 256);
	LOC7 = 0;
	LOC7 = HEX5BHEX5D_216238(n, ((NI) 0));
	maybelifttype_460467(&targettype, c, (*LOC7).info);
	LOC8 = 0;
	LOC8 = copytree_219822((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_217807(result, LOC8);
	op = semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	{
		NIM_BOOL LOC11;
		Tnode215790* final;
		LOC11 = 0;
		LOC11 = ismetatype_216803(targettype);
		if (!LOC11) goto LA12;
		final = inferwithmetatype_426388(c, targettype, op, NIM_TRUE);
		addson_217807(result, final);
		asgnRefNoCycle((void**) (&(*result).typ), (*final).typ);
		goto BeforeRet;
	}
	LA12: ;
	asgnRefNoCycle((void**) (&(*result).typ), targettype);
	addson_217807(result, op);
	{
		NIM_BOOL LOC16;
		NU8 status;
		LOC16 = 0;
		LOC16 = issymchoice_460453(op);
		if (!!(LOC16)) goto LA17;
		status = checkconvertible_460217(c, (*result).typ, (*op).typ);
		switch (status) {
		case ((NU8) 0):
		{
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = ((*op).kind == ((NU8) 3));
				if (!(LOC22)) goto LA23;
				LOC22 = isgenericroutine_220314((*op).kindU.S4.sym);
				LA23: ;
				if (!LOC22) goto LA24;
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), fitnode_426230(c, (*result).typ, (*result).kindU.S6.sons->data[((NI) 1)]));
			}
			LA24: ;
		}
		break;
		case ((NU8) 1):
		{
			NimStringDesc* LOC27;
			LOC27 = 0;
			LOC27 = typetostring_241017((*result).typ, ((NU8) 0));
			message_188095((*n).info, ((NU16) 273), LOC27);
		}
		break;
		case ((NU8) 2):
		{
			NimStringDesc* LOC29;
			TY185169 LOC30;
			NimStringDesc* LOC31;
			LOC29 = 0;
			LOC29 = msgkindtostring_184743(((NU16) 146));
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = typetostring_241017((*op).typ, ((NU8) 0));
			LOC30[1] = typetostring_241017((*result).typ, ((NU8) 0));
			LOC31 = 0;
			LOC31 = nsuFormatOpenArray(LOC29, LOC30, 2);
			localerror_188080((*n).info, ((NU16) 4), LOC31);
		}
		break;
		}
	}
	goto LA14;
	LA17: ;
	{
		{
			NI i_460528;
			NI HEX3Atmp_460606;
			NI LOC34;
			NI res_460609;
			i_460528 = 0;
			HEX3Atmp_460606 = 0;
			LOC34 = 0;
			LOC34 = sonslen_218351(op);
			HEX3Atmp_460606 = (NI)(LOC34 - ((NI) 1));
			res_460609 = ((NI) 0);
			{
				while (1) {
					Tnode215790* it;
					NU8 status;
					if (!(res_460609 <= HEX3Atmp_460606)) goto LA36;
					i_460528 = res_460609;
					it = (*op).kindU.S6.sons->data[i_460528];
					status = checkconvertible_460217(c, (*result).typ, (*it).typ);
					{
						if (!((3 &(1U<<((NU)(status)&7U)))!=0)) goto LA39;
						markused_363244((*n).info, (*it).kindU.S4.sym);
						markindirect_265924(c, (*it).kindU.S4.sym);
						result = it;
						goto BeforeRet;
					}
					LA39: ;
					res_460609 += ((NI) 1);
				} LA36: ;
			}
		}
		localerror_188080((*n).info, ((NU16) 66), (*(*(*(*op).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, checkinitialized_467334)(Tnode215790* n, Intset212035 ids, Tlineinfo183337 info) {
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		{
			NI i_467350;
			NI HEX3Atmp_467435;
			NI LOC3;
			NI res_467438;
			i_467350 = 0;
			HEX3Atmp_467435 = 0;
			LOC3 = 0;
			LOC3 = sonslen_218351(n);
			HEX3Atmp_467435 = (NI)(LOC3 - ((NI) 1));
			res_467438 = ((NI) 0);
			{
				while (1) {
					if (!(res_467438 <= HEX3Atmp_467435)) goto LA5;
					i_467350 = res_467438;
					checkinitialized_467334((*n).kindU.S6.sons->data[i_467350], ids, info);
					res_467438 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA9;
			internalerror_188100(info, ((NimStringDesc*) &TMP3563));
		}
		LA9: ;
		checkinitialized_467334((*n).kindU.S6.sons->data[((NI) 0)], ids, info);
	}
	break;
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC14;
			NIM_BOOL LOC16;
			NimStringDesc* LOC19;
			LOC14 = 0;
			LOC14 = !(((196608 & (*(*(*n).kindU.S4.sym).typ).flags) == 0));
			if (!(LOC14)) goto LA15;
			LOC16 = 0;
			LOC16 = contains_212811(ids, (*(*(*n).kindU.S4.sym).name).Sup.id);
			LOC14 = !(LOC16);
			LA15: ;
			if (!LOC14) goto LA17;
			LOC19 = 0;
			LOC19 = rawNewString((*(*(*n).kindU.S4.sym).name).s->Sup.len + 23);
appendString(LOC19, ((NimStringDesc*) &TMP3564));
appendString(LOC19, (*(*(*n).kindU.S4.sym).name).s);
			message_188095(info, ((NU16) 4), LOC19);
		}
		LA17: ;
	}
	break;
	default:
	{
		internalerror_188100(info, ((NimStringDesc*) &TMP3563));
	}
	break;
	}
}

N_NIMCALL(Tnode215790*, semobjconstr_463060)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Ttype215828* t;
	Ttype215828* objtype;
	Intset212035 ids;
{	result = 0;
	t = semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	result = n;
	asgnRefNoCycle((void**) (&(*result).typ), t);
	(*result).kind = ((NU8) 38);
	t = skiptypes_219113(t, 2048);
	{
		if (!((*t).kind == ((NU8) 22))) goto LA3;
		t = skiptypes_219113((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		if (!!(((*t).kind == ((NU8) 17)))) goto LA7;
		localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3562));
		goto BeforeRet;
	}
	LA7: ;
	objtype = t;
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_212885((&ids));
	{
		NI i_467490;
		NI HEX3Atmp_467605;
		NI LOC10;
		NI res_467608;
		i_467490 = 0;
		HEX3Atmp_467605 = 0;
		LOC10 = 0;
		LOC10 = len_216059(n);
		HEX3Atmp_467605 = (LOC10 - 1);
		res_467608 = ((NI) 1);
		{
			while (1) {
				Tnode215790* it;
				Tident190012* id;
				Tnode215790* e;
				Tnode215790* check;
				Tsym215822* f;
				if (!(res_467608 <= HEX3Atmp_467605)) goto LA12;
				i_467490 = res_467608;
				it = (*n).kindU.S6.sons->data[i_467490];
				{
					if (!!(((*it).kind == ((NU8) 34)))) goto LA15;
					localerror_188080((*n).info, ((NU16) 174), ((NimStringDesc*) &TMP3155));
					goto LA9;
				}
				LA15: ;
				id = considerquotedident_270004((*it).kindU.S6.sons->data[((NI) 0)]);
				{
					NIM_BOOL LOC19;
					LOC19 = 0;
					LOC19 = containsorincl_212862((&ids), (*id).Sup.id);
					if (!LOC19) goto LA20;
					localerror_188080((*it).info, ((NU16) 90), (*id).s);
				}
				LA20: ;
				e = semexprwithtype_426208(c, (*it).kindU.S6.sons->data[((NI) 1)], (flags & 64));
				check = NIM_NIL;
				f = 0;
				t = objtype;
				{
					while (1) {
						check = NIM_NIL;
						f = lookupinrecordandbuildcheck_463601(c, it, (*t).n, id, &check);
						{
							if (!!((f == NIM_NIL))) goto LA26;
							goto LA22;
						}
						LA26: ;
						{
							if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA30;
							goto LA22;
						}
						LA30: ;
						t = skiptypes_219113((*t).sons->data[((NI) 0)], 2048);
					}
				} LA22: ;
				{
					NIM_BOOL LOC34;
					LOC34 = 0;
					LOC34 = !((f == NIM_NIL));
					if (!(LOC34)) goto LA35;
					LOC34 = fieldvisible_370259(c, f);
					LA35: ;
					if (!LOC34) goto LA36;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(f));
					e = fitnode_426230(c, (*f).typ, e);
					{
						if (!!((check == NIM_NIL))) goto LA40;
						asgnRefNoCycle((void**) (&(*check).kindU.S6.sons->data[((NI) 0)]), (*it).kindU.S6.sons->data[((NI) 0)]);
						add_216114(it, check);
					}
					LA40: ;
				}
				goto LA32;
				LA36: ;
				{
					localerror_188080((*it).info, ((NU16) 84), (*id).s);
				}
				LA32: ;
				asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), e);
				res_467608 += ((NI) 1);
			} LA12: ;
		}
	} LA9: ;
	{
		if (!(((*objtype).flags &(1U<<((NU)(((NU8) 17))&31U)))!=0)) goto LA45;
		{
			while (1) {
				checkinitialized_467334((*objtype).n, ids, (*n).info);
				{
					if (!((*objtype).sons->data[((NI) 0)] == NIM_NIL)) goto LA51;
					goto LA47;
				}
				LA51: ;
				objtype = skiptypes_219113((*objtype).sons->data[((NI) 0)], 2048);
			}
		} LA47: ;
	}
	LA45: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym215822*, lookupfordefined_465660)(Tcontext265020* c, Tident190012* i, NIM_BOOL onlycurrentscope) {
	Tsym215822* result;
	result = 0;
	{
		if (!onlycurrentscope) goto LA3;
		result = localsearchinscope_270126(c, i);
	}
	goto LA1;
	LA3: ;
	{
		result = searchinscopes_270131(c, i);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym215822*, lookupfordefined_465666)(Tcontext265020* c, Tnode215790* n, NIM_BOOL onlycurrentscope) {
	Tsym215822* result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		result = lookupfordefined_465660(c, (*n).kindU.S5.ident, onlycurrentscope);
	}
	break;
	case ((NU8) 45):
	{
		Tsym215822* m;
		result = NIM_NIL;
		{
			if (!onlycurrentscope) goto LA5;
			goto BeforeRet;
		}
		LA5: ;
		checksonslen_265958(n, ((NI) 2));
		m = lookupfordefined_465666(c, (*n).kindU.S6.sons->data[((NI) 0)], onlycurrentscope);
		{
			NIM_BOOL LOC9;
			Tident190012* ident;
			Tnode215790* LOC13;
			LOC9 = 0;
			LOC9 = !((m == NIM_NIL));
			if (!(LOC9)) goto LA10;
			LOC9 = ((*m).kind == ((NU8) 6));
			LA10: ;
			if (!LOC9) goto LA11;
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_216238(n, ((NI) 1));
			ident = considerquotedident_270004(LOC13);
			{
				if (!(m == (*c).module)) goto LA16;
				result = strtableget_222066((*(*c).toplevelscope).symbols, ident);
			}
			goto LA14;
			LA16: ;
			{
				result = strtableget_222066((*m).kindU.S3.tab, ident);
			}
			LA14: ;
		}
		LA11: ;
	}
	break;
	case ((NU8) 53):
	{
		Tident190012* LOC20;
		LOC20 = 0;
		LOC20 = considerquotedident_270004(n);
		result = lookupfordefined_465660(c, LOC20, onlycurrentscope);
	}
	break;
	case ((NU8) 3):
	{
		result = (*n).kindU.S4.sym;
	}
	break;
	case ((NU8) 57):
	case ((NU8) 56):
	{
		result = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	}
	break;
	default:
	{
		NimStringDesc* LOC24;
		LOC24 = 0;
		LOC24 = rendertree_234044(n, 0);
		localerror_188080((*n).info, ((NU16) 20), LOC24);
		result = NIM_NIL;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semdefined_465712)(Tcontext265020* c, Tnode215790* n, NIM_BOOL onlycurrentscope) {
	Tnode215790* result;
	result = 0;
	checksonslen_265958(n, ((NI) 2));
	result = newintnode_216660(((NU8) 6), IL64(0));
	{
		NIM_BOOL LOC3;
		Tnode215790* LOC5;
		Tident190012* LOC6;
		LOC3 = 0;
		LOC3 = !(onlycurrentscope);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = HEX5BHEX5D_216238(n, ((NI) 0));
		LOC6 = 0;
		LOC6 = considerquotedident_270004(LOC5);
		LOC3 = eqStrings((*LOC6).s, ((NimStringDesc*) &TMP3565));
		LA4: ;
		if (!LOC3) goto LA7;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA11;
			localerror_188085((*n).info, ((NimStringDesc*) &TMP3566));
		}
		goto LA9;
		LA11: ;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = isdefined_191140((*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident);
			if (!LOC14) goto LA15;
			(*result).kindU.S1.intval = IL64(1);
		}
		goto LA9;
		LA15: ;
		LA9: ;
	}
	goto LA1;
	LA7: ;
	{
		Tsym215822* LOC18;
		LOC18 = 0;
		LOC18 = lookupfordefined_465666(c, (*n).kindU.S6.sons->data[((NI) 1)], onlycurrentscope);
		if (!!((LOC18 == NIM_NIL))) goto LA19;
		(*result).kindU.S1.intval = IL64(1);
	}
	goto LA1;
	LA19: ;
	LA1: ;
	(*result).info = (*n).info;
	asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 1)));
	return result;
}

N_NIMCALL(Tnode215790*, setms_466534)(Tnode215790* n, Tsym215822* s) {
	Tnode215790* result;
	result = 0;
	result = n;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(s));
	(*(*n).kindU.S6.sons->data[((NI) 0)]).info = (*n).info;
	return result;
}

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

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

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

static N_INLINE(NimStringDesc*, getcurrentexceptionmsg_87205)(void) {
	NimStringDesc* result;
	Exception* e;
{	result = 0;
	e = getCurrentException();
	{
		if (!(e == NIM_NIL)) goto LA3;
		result = copyString(((NimStringDesc*) &TMP3155));
	}
	goto LA1;
	LA3: ;
	{
		result = copyString((*e).message);
	}
	LA1: ;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currexception_19439), NIM_NIL);
}

N_NIMCALL(Tnode215790*, tryexpr_426275)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* volatile result;
	NI olderrorcount;
	NI olderrormax;
	NI oldcompilesid;
	Tscope215816* oldscope;
	Tscope215816* LOC1;
	NI oldownerlen;
	TY265140* oldgenerics;
	NU8 olderroroutputs;
	NI oldcontextlen;
	NI oldingenericcontext;
	NI oldinunrolledcontext;
	NI oldingenericinst;
	Tproccon265008* oldproccon;
	NimStringDesc* err;
	TSafePoint TMP3567;
	result = 0;
	olderrorcount = gerrorcounter_184081;
	olderrormax = gerrormax_184084;
	oldcompilesid = (*c).compilescontextid;
	(*c).compilescontextidgenerator += ((NI) 1);
	(*c).compilescontextid = (*c).compilescontextidgenerator;
	gerrormax_184084 = ((NI) 2147483647);
	oldscope = (*c).currentscope;
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	oldownerlen = (gowners_265234 ? gowners_265234->Sup.len : 0);
	oldgenerics = (*c).generics;
	olderroroutputs = erroroutputs_184113;
	erroroutputs_184113 = 0;
	oldcontextlen = getinfocontextlen_184185();
	oldingenericcontext = (*c).ingenericcontext;
	oldinunrolledcontext = (*c).inunrolledcontext;
	oldingenericinst = (*c).ingenericinst;
	oldproccon = (*c).p;
	if ((*c).generics) nimGCunrefNoCycle((*c).generics);
	(*c).generics = (TY265140*) newSeqRC1((&NTI265140), 0);
	err = 0;
	pushSafePoint(&TMP3567);
	TMP3567.status = setjmp(TMP3567.context);
	if (TMP3567.status == 0) {
		result = semexpr_426201(c, n, flags);
		{
			if (!!((gerrorcounter_184081 == olderrorcount))) goto LA5;
			result = NIM_NIL;
		}
		LA5: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI183343))) {
			TMP3567.status = 0;
			{
				if (!((gglobaloptions_161121 &(1U<<((NU)(((NU8) 6))&31U)))!=0)) goto LA11;
				err = getcurrentexceptionmsg_87205();
			}
			LA11: ;
			popCurrentException();
		}
	}
	if (TMP3567.status != 0) reraiseException();
	(*c).compilescontextid = oldcompilesid;
	genericSeqAssign((&(*c).generics), oldgenerics, (&NTI265140));
	(*c).ingenericcontext = oldingenericcontext;
	(*c).inunrolledcontext = oldinunrolledcontext;
	(*c).ingenericinst = oldingenericinst;
	asgnRef((void**) (&(*c).p), oldproccon);
	setinfocontextlen_184196(oldcontextlen);
	gowners_265234 = (Tsymseq215792*) setLengthSeq(&(gowners_265234)->Sup, sizeof(Tsym215822*), ((NI) (oldownerlen)));
	asgnRef((void**) (&(*c).currentscope), oldscope);
	erroroutputs_184113 = olderroroutputs;
	gerrorcounter_184081 = olderrorcount;
	gerrormax_184084 = olderrormax;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = ((gglobaloptions_161121 &(1U<<((NU)(((NU8) 6))&31U)))!=0);
		if (!(LOC15)) goto LA16;
		LOC15 = !(err == 0);
		LA16: ;
		if (!LOC15) goto LA17;
		localerror_188085((*n).info, err);
	}
	LA17: ;
	return result;
}

N_NIMCALL(Tnode215790*, semcompiles_466441)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tnode215790* LOC6;
	Tnode215790* LOC7;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		result = semdirectop_426985(c, n, flags);
		goto BeforeRet;
	}
	LA4: ;
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_216238(n, ((NI) 1));
	LOC7 = 0;
	LOC7 = tryexpr_426275(c, LOC6, flags);
	result = newintnode_216660(((NU8) 6), ((NI64) (!((LOC7 == NIM_NIL)))));
	(*result).info = (*n).info;
	asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 1)));
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semsizeof_460666)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_188080((*n).info, ((NU16) 73), ((NimStringDesc*) &TMP3568));
	}
	goto LA1;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_259130(((NU8) 31)));
	result = n;
	return result;
}

N_NIMCALL(Tnode215790*, isopimpl_426995)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* t1;
	Tnode215790* LOC16;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC6;
		Tnode215790* LOC8;
		Tnode215790* LOC10;
		Tnode215790* LOC12;
		NimStringDesc* LOC15;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = sonslen_218351(n);
		LOC5 = (LOC6 == ((NI) 3));
		if (!(LOC5)) goto LA7;
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_216238(n, ((NI) 1));
		LOC5 = !(((*LOC8).typ == NIM_NIL));
		LA7: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA9;
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_216238(n, ((NI) 1));
		LOC4 = ((*(*LOC10).typ).kind == ((NU8) 8));
		LA9: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA11;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_216238(n, ((NI) 2));
		LOC3 = ((*LOC12).kind >= ((NU8) 20) && (*LOC12).kind <= ((NU8) 22) || (*LOC12).kind == ((NU8) 4));
		LA11: ;
		if (!!(LOC3)) goto LA13;
		LOC15 = 0;
		LOC15 = HEX24_188183(TMP3570);
		internalerror_188113(LOC15);
	}
	LA13: ;
	LOC16 = 0;
	LOC16 = HEX5BHEX5D_216238(n, ((NI) 1));
	t1 = skiptypes_219113((*LOC16).typ, IL64(2305843009213694208));
	{
		Tnode215790* LOC19;
		Tnode215790* LOC22;
		NimStringDesc* LOC23;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_216238(n, ((NI) 2));
		if (!((*LOC19).kind >= ((NU8) 20) && (*LOC19).kind <= ((NU8) 22))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_216238(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = nsuNormalize((*LOC22).kindU.S3.strval);
		if (eqStrings(LOC23, ((NimStringDesc*) &TMP3571))) goto LA24;
		goto LA25;
		LA24: ;
		{
			Ttype215828* t;
			NIM_BOOL LOC28;
			NIM_BOOL LOC29;
			t = skiptypes_219113(t1, IL64(211106233624832));
			LOC28 = 0;
			LOC29 = 0;
			LOC29 = ((*t).kind == ((NU8) 25));
			if (!(LOC29)) goto LA30;
			LOC29 = ((*t).callconv == ((NU8) 8));
			LA30: ;
			LOC28 = LOC29;
			if (!(LOC28)) goto LA31;
			LOC28 = !((((*t).flags &(1U<<((NU)(((NU8) 14))&31U)))!=0));
			LA31: ;
			result = newintnode_216660(((NU8) 6), ((NI64) (LOC28)));
		}
		goto LA26;
		LA25: ;
		{
			result = newintnode_216660(((NU8) 6), IL64(0));
		}
		LA26: ;
	}
	goto LA17;
	LA20: ;
	{
		Ttype215828* t2;
		Tnode215790* LOC34;
		Tcandidate363206 m;
		NIM_BOOL match;
		NU8 LOC35;
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_216238(n, ((NI) 2));
		t2 = skiptypes_219113((*LOC34).typ, 256);
		maybelifttype_460467(&t2, c, (*n).info);
		memset((void*)(&m), 0, sizeof(m));
		initcandidate_363257(c, (&m), t2);
		LOC35 = 0;
		LOC35 = typerel_363805((&m), t2, t1, NIM_TRUE);
		match = (((NU8) 3) <= LOC35);
		result = newintnode_216660(((NU8) 6), ((NI64) (match)));
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	return result;
}

N_NIMCALL(Tnode215790*, semis_460880)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* LOC6;
	Ttype215828* lhstype;
	Tnode215790* LOC14;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!!((LOC3 == ((NI) 3)))) goto LA4;
		localerror_188080((*n).info, ((NU16) 209), ((NimStringDesc*) &TMP3569));
	}
	LA4: ;
	result = n;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_259130(((NU8) 1)));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_216238(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_426208(c, LOC6, 34));
	{
		Tnode215790* LOC9;
		Ttype215828* t2;
		Tnode215790* LOC12;
		Tnode215790* LOC13;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_216238(n, ((NI) 2));
		if (!!(((*LOC9).kind >= ((NU8) 20) && (*LOC9).kind <= ((NU8) 22)))) goto LA10;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_216238(n, ((NI) 2));
		t2 = semtypenode_426245(c, LOC12, NIM_NIL);
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_216238(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), newnodeit_217801(((NU8) 4), (*LOC13).info, t2));
	}
	LA10: ;
	LOC14 = 0;
	LOC14 = HEX5BHEX5D_216238(n, ((NI) 1));
	lhstype = (*LOC14).typ;
	{
		Tnode215790* LOC19;
		if (!!(((*lhstype).kind == ((NU8) 8)))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_216238(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), maketypesymnode_265548(c, lhstype, (*LOC19).info));
	}
	goto LA15;
	LA17: ;
	{
		Ttype215828* LOC21;
		LOC21 = 0;
		LOC21 = base_241021(lhstype);
		if (!((*LOC21).kind == ((NU8) 0))) goto LA22;
		goto BeforeRet;
	}
	goto LA15;
	LA22: ;
	LA15: ;
	{
		Tnode215790* LOC26;
		Ttype215828* LOC27;
		NIM_BOOL LOC28;
		LOC26 = 0;
		LOC26 = HEX5BHEX5D_216238(n, ((NI) 1));
		LOC27 = 0;
		LOC27 = base_241021((*LOC26).typ);
		LOC28 = 0;
		LOC28 = containsgenerictype_249492(LOC27);
		if (!!(LOC28)) goto LA29;
		result = isopimpl_426995(c, n);
	}
	LA29: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semof_460674)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	{
		NI LOC3;
		Ttype215828* a;
		Ttype215828* b;
		Ttype215828* x;
		Ttype215828* y;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 2)], 32));
		a = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256320));
		b = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106247256320));
		x = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256064));
		y = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106247256064));
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = ((*x).kind == ((NU8) 8));
			if (LOC8) goto LA9;
			LOC8 = !(((*y).kind == ((NU8) 8)));
			LA9: ;
			if (!LOC8) goto LA10;
			localerror_188080((*n).info, ((NU16) 210), ((NimStringDesc*) &TMP3572));
		}
		goto LA6;
		LA10: ;
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = !(((*b).kind == ((NU8) 17)));
			if (LOC13) goto LA14;
			LOC13 = !(((*a).kind == ((NU8) 17)));
			LA14: ;
			if (!LOC13) goto LA15;
			localerror_188080((*n).info, ((NU16) 210), ((NimStringDesc*) &TMP3572));
		}
		goto LA6;
		LA15: ;
		{
			NI diff;
			diff = inheritancediff_247442(a, b);
			{
				NimStringDesc* LOC22;
				if (!(diff <= ((NI) 0))) goto LA20;
				LOC22 = 0;
				LOC22 = rendertree_234044(n, 0);
				message_188095((*n).info, ((NU16) 281), LOC22);
				result = newintnode_216660(((NU8) 6), IL64(1));
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 1)));
				goto BeforeRet;
			}
			goto LA18;
			LA20: ;
			{
				NimStringDesc* LOC26;
				if (!(diff == ((NI) 2147483647))) goto LA24;
				LOC26 = 0;
				LOC26 = typetostring_241017(a, ((NU8) 0));
				localerror_188080((*n).info, ((NU16) 211), LOC26);
			}
			goto LA18;
			LA24: ;
			LA18: ;
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_188080((*n).info, ((NU16) 209), ((NimStringDesc*) &TMP3572));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_259130(((NU8) 1)));
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym215822*, expectmacroortemplatecall_426981)(Tcontext265020* c, Tnode215790* n) {
	Tsym215822* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		Tsym215822* expandedsym;
		Tnode215790* LOC6;
		LOC3 = 0;
		LOC3 = iscallexpr_216042(n);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 0));
		expandedsym = qualifiedlookup_270652(c, LOC6, 2);
		{
			Tnode215790* LOC11;
			NimStringDesc* LOC12;
			Tnode215790* LOC13;
			if (!(expandedsym == NIM_NIL)) goto LA9;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC12 = 0;
			LOC12 = rendertree_234044(LOC11, 0);
			localerror_188080((*n).info, ((NU16) 63), LOC12);
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_216238(n, ((NI) 0));
			result = errorsym_270243(c, LOC13);
			goto BeforeRet;
		}
		LA9: ;
		{
			Tnode215790* LOC18;
			if (!!(((196608 &(1U<<((NU)((*expandedsym).kind)&31U)))!=0))) goto LA16;
			localerror_188080((*n).info, ((NU16) 221), (*(*expandedsym).name).s);
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_216238(n, ((NI) 0));
			result = errorsym_270243(c, LOC18);
			goto BeforeRet;
		}
		LA16: ;
		result = expandedsym;
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rendertree_234044(n, 0);
		localerror_188080((*n).info, ((NU16) 221), LOC20);
		result = errorsym_270243(c, n);
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semexpandtoast_465875)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* macrocall;
	Tsym215822* expandedsym;
{	result = 0;
	macrocall = HEX5BHEX5D_216238(n, ((NI) 1));
	expandedsym = expectmacroortemplatecall_426981(c, macrocall);
	{
		if (!((*expandedsym).kind == ((NU8) 0))) goto LA3;
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(expandedsym, (*macrocall).info));
	markused_363244((*n).info, expandedsym);
	{
		NI i_466013;
		NI HEX3Atmp_466049;
		NI LOC6;
		NI res_466052;
		i_466013 = 0;
		HEX3Atmp_466049 = 0;
		LOC6 = 0;
		LOC6 = len_216059(macrocall);
		HEX3Atmp_466049 = (NI)(LOC6 - ((NI) 1));
		res_466052 = ((NI) 1);
		{
			while (1) {
				Tnode215790* LOC9;
				if (!(res_466052 <= HEX3Atmp_466049)) goto LA8;
				i_466013 = res_466052;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_216238(macrocall, i_466013);
				asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[i_466013]), semexprwithtype_426208(c, LOC9, 0));
				res_466052 += ((NI) 1);
			} LA8: ;
		}
	}
	{
		NimStringDesc* LOC14;
		if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU8) 23)))) goto LA12;
		LOC14 = 0;
		LOC14 = HEX24_188183(TMP3573);
		internalerror_188113(LOC14);
	}
	LA12: ;
	{
		Tsym215822* LOC17;
		LOC17 = 0;
		LOC17 = getcompilerproc_259746(((NimStringDesc*) &TMP3198));
		if (!!((LOC17 == NIM_NIL))) goto LA18;
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_259125(((NimStringDesc*) &TMP3199)));
	}
	goto LA15;
	LA18: ;
	{
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_259125(((NimStringDesc*) &TMP3200)));
	}
	LA15: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semexpandtoast_466056)(Tcontext265020* c, Tnode215790* n, Tsym215822* magicsym, NU16 flags) {
	Tnode215790* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(magicsym, (*n).info));
		result = semexpandtoast_465875(c, n);
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_426985(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstring_465778)(Tcontext265020* c, Tnode215790* n_465781) {
	NimStringDesc* result;
	Tnode215790* n;
{	result = 0;
	n = semconstexpr_427473(c, n_465781);
	{
		if (!((*n).kind >= ((NU8) 20) && (*n).kind <= ((NU8) 22))) goto LA3;
		result = copyString((*n).kindU.S3.strval);
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		localerror_188080((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3155));
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, processquotations_466066)(Tnode215790** n, NimStringDesc* op, Tnodeseq215784** quotes, Tnodeseq215784** ids) {
{	{
		if (!((*(*n)).kind == ((NU8) 30))) goto LA3;
		checksonslen_265958((*n), ((NI) 2));
		{
			Tnode215790* LOC7;
			NimStringDesc* examinedop;
			Tnode215790* LOC10;
			LOC7 = 0;
			LOC7 = HEX5BHEX5D_216238((*n), ((NI) 0));
			if (!((*LOC7).kind == ((NU8) 2))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX5BHEX5D_216238((*n), ((NI) 0));
			examinedop = copyString((*(*LOC10).kindU.S5.ident).s);
			{
				Tnode215790* LOC15;
				NimStringDesc* LOC16;
				Tident190012* LOC17;
				if (!eqStrings(examinedop, op)) goto LA13;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_216238((*n), ((NI) 1));
				(*quotes) = (Tnodeseq215784*) incrSeqV2(&((*quotes))->Sup, sizeof(Tnode215790*));
				asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len]), LOC15);
				++(*quotes)->Sup.len;
				LOC16 = 0;
				LOC16 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
				LOC17 = 0;
				LOC17 = getident_190441(LOC16);
				unsureAsgnRef((void**) (&(*n)), newidentnode_217228(LOC17, (*(*n)).info));
				(*ids) = (Tnodeseq215784*) incrSeqV2(&((*ids))->Sup, sizeof(Tnode215790*));
				asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len]), (*n));
				++(*ids)->Sup.len;
				goto BeforeRet;
			}
			goto LA11;
			LA13: ;
			{
				NIM_BOOL LOC19;
				NimStringDesc* LOC22;
				Tident190012* LOC23;
				LOC19 = 0;
				LOC19 = nsuStartsWith(examinedop, op);
				if (!LOC19) goto LA20;
				LOC22 = 0;
				LOC22 = copyStr(examinedop, (op ? op->Sup.len : 0));
				LOC23 = 0;
				LOC23 = getident_190441(LOC22);
				asgnRefNoCycle((void**) (&(*(*n)).kindU.S6.sons->data[((NI) 0)]), newidentnode_217228(LOC23, (*(*n)).info));
			}
			goto LA11;
			LA20: ;
			LA11: ;
		}
		LA8: ;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC25;
		Tnode215790* LOC29;
		NimStringDesc* LOC30;
		Tident190012* LOC31;
		LOC25 = 0;
		LOC25 = ((*(*n)).kind == ((NU8) 53));
		if (!(LOC25)) goto LA26;
		LOC25 = eqStrings(op, ((NimStringDesc*) &TMP3575));
		LA26: ;
		if (!LOC25) goto LA27;
		LOC29 = 0;
		LOC29 = HEX5BHEX5D_216238((*n), ((NI) 0));
		(*quotes) = (Tnodeseq215784*) incrSeqV2(&((*quotes))->Sup, sizeof(Tnode215790*));
		asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len]), LOC29);
		++(*quotes)->Sup.len;
		LOC30 = 0;
		LOC30 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
		LOC31 = 0;
		LOC31 = getident_190441(LOC30);
		unsureAsgnRef((void**) (&(*n)), newidentnode_217228(LOC31, (*(*n)).info));
		(*ids) = (Tnodeseq215784*) incrSeqV2(&((*ids))->Sup, sizeof(Tnode215790*));
		asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len]), (*n));
		++(*ids)->Sup.len;
		goto BeforeRet;
	}
	goto LA1;
	LA27: ;
	LA1: ;
	{
		NI i_466191;
		NI HEX3Atmp_466195;
		NI LOC33;
		NI res_466198;
		i_466191 = 0;
		HEX3Atmp_466195 = 0;
		LOC33 = 0;
		LOC33 = safelen_216081((*n));
		HEX3Atmp_466195 = (LOC33 - 1);
		res_466198 = ((NI) 0);
		{
			while (1) {
				if (!(res_466198 <= HEX3Atmp_466195)) goto LA35;
				i_466191 = res_466198;
				processquotations_466066(&(*(*n)).kindU.S6.sons->data[i_466191], op, quotes, ids);
				res_466198 += ((NI) 1);
			} LA35: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tsym215822*, newanonsym_465807)(NU8 kind, Tlineinfo183337 info, Tsym215822* owner) {
	Tsym215822* result;
	result = 0;
	result = newsym_216684(kind, idanon_190455, owner, info);
	(*result).flags = IL64(2147483648);
	return result;
}

N_NIMCALL(Tnode215790*, semtemplbodydirty_443146)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym215822* s;
		s = qualifiedlookup_270652((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA4;
			{
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = ((*s).owner == (*c).owner);
				if (!(LOC8)) goto LA9;
				LOC8 = ((*s).kind == ((NU8) 3));
				LA9: ;
				if (!LOC8) goto LA10;
				result = newsymnode_217241(s, (*n).info);
			}
			goto LA6;
			LA10: ;
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = contains_212811((*c).tobind, (*s).Sup.id);
				if (!LOC13) goto LA14;
				result = symchoice_439732((*c).c, n, s, ((NU8) 0));
			}
			goto LA6;
			LA14: ;
			LA6: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbodydirty_443146(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_439822((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC22;
			Tsym215822* s;
			LOC22 = 0;
			LOC22 = ((*n).kind == ((NU8) 45));
			if (LOC22) goto LA23;
			LOC22 = ((*n).kind == ((NU8) 53));
			LA23: ;
			if (!LOC22) goto LA24;
			s = qualifiedlookup_270652((*c).c, n, 0);
			{
				NIM_BOOL LOC28;
				LOC28 = 0;
				LOC28 = !((s == NIM_NIL));
				if (!(LOC28)) goto LA29;
				LOC28 = contains_212811((*c).tobind, (*s).Sup.id);
				LA29: ;
				if (!LOC28) goto LA30;
				result = symchoice_439732((*c).c, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			LA30: ;
		}
		LA24: ;
		result = n;
		{
			NI i_443285;
			NI HEX3Atmp_443289;
			NI LOC33;
			NI res_443292;
			i_443285 = 0;
			HEX3Atmp_443289 = 0;
			LOC33 = 0;
			LOC33 = sonslen_218351(n);
			HEX3Atmp_443289 = (NI)(LOC33 - ((NI) 1));
			res_443292 = ((NI) 0);
			{
				while (1) {
					if (!(res_443292 <= HEX3Atmp_443289)) goto LA35;
					i_443285 = res_443292;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_443285]), semtemplbodydirty_443146(c, (*n).kindU.S6.sons->data[i_443285]));
					res_443292 += ((NI) 1);
				} LA35: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semtemplsymbol_440602)(Tcontext265020* c, Tnode215790* n, Tsym215822* s) {
	Tnode215790* result;
	result = 0;
	(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	switch ((*s).kind) {
	case ((NU8) 0):
	{
		result = n;
	}
	break;
	case ((NU8) 12):
	case ((NU8) 13):
	case ((NU8) 14):
	case ((NU8) 15):
	case ((NU8) 6):
	case ((NU8) 17):
	case ((NU8) 16):
	{
		result = symchoice_439732(c, n, s, ((NU8) 1));
	}
	break;
	case ((NU8) 4):
	{
		result = newsymnodetypedesc_277496(s, (*n).info);
	}
	break;
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	case ((NU8) 7):
	{
		result = newsymnodetypedesc_277496(s, (*n).info);
	}
	break;
	default:
	{
		result = newsymnode_217241(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, openscope_440055)(Templctx439942* c) {
	Tscope215816* LOC1;
	LOC1 = 0;
	LOC1 = openscope_270060((*c).c);
}

N_NIMCALL(void, closescope_440059)(Templctx439942* c) {
	closescope_270068((*c).c);
}

N_NIMCALL(Tnode215790*, semtemplbodyscope_440063)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	openscope_440055(c);
	result = semtemplbody_440050(c, n);
	closescope_440059(c);
	return result;
}

N_NIMCALL(NU8, symbinding_439680)(Tnode215790* n) {
	NU8 result;
{	result = 0;
	{
		NI i_439695;
		NI HEX3Atmp_439720;
		NI LOC2;
		NI res_439723;
		i_439695 = 0;
		HEX3Atmp_439720 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_439720 = (NI)(LOC2 - ((NI) 1));
		res_439723 = ((NI) 0);
		{
			while (1) {
				Tnode215790* it;
				Tnode215790* key;
				if (!(res_439723 <= HEX3Atmp_439720)) goto LA4;
				i_439695 = res_439723;
				it = (*n).kindU.S6.sons->data[i_439695];
				{
					if (!((*it).kind == ((NU8) 34))) goto LA7;
					key = (*it).kindU.S6.sons->data[((NI) 0)];
				}
				goto LA5;
				LA7: ;
				{
					key = it;
				}
				LA5: ;
				{
					NU16 LOC14;
					if (!((*key).kind == ((NU8) 2))) goto LA12;
					LOC14 = 0;
					LOC14 = whichkeyword_197362((*key).kindU.S5.ident);
					switch (LOC14) {
					case ((NU16) 184):
					{
						result = ((NU8) 1);
						goto BeforeRet;
					}
					break;
					case ((NU16) 185):
					{
						result = ((NU8) 2);
						goto BeforeRet;
					}
					break;
					default:
					{
					}
					break;
					}
				}
				LA12: ;
				res_439723 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, onlyreplaceparams_440069)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	{
		Tsym215822* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_270652((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA7;
			{
				NIM_BOOL LOC11;
				LOC11 = 0;
				LOC11 = ((*s).owner == (*c).owner);
				if (!(LOC11)) goto LA12;
				LOC11 = ((*s).kind == ((NU8) 3));
				LA12: ;
				if (!LOC11) goto LA13;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_217241(s, (*n).info);
			}
			LA13: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_440219;
			NI HEX3Atmp_440223;
			NI LOC17;
			NI res_440226;
			i_440219 = 0;
			HEX3Atmp_440223 = 0;
			LOC17 = 0;
			LOC17 = safelen_216081(n);
			HEX3Atmp_440223 = (LOC17 - 1);
			res_440226 = ((NI) 0);
			{
				while (1) {
					if (!(res_440226 <= HEX3Atmp_440223)) goto LA19;
					i_440219 = res_440226;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_440219]), onlyreplaceparams_440069(c, (*n).kindU.S6.sons->data[i_440219]));
					res_440226 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, getidentnode_439957)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 31):
	{
		result = getidentnode_439957(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 43):
	{
		result = getidentnode_439957(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 2):
	{
		Tsym215822* s;
		result = n;
		s = qualifiedlookup_270652((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA6;
			{
				NIM_BOOL LOC10;
				LOC10 = 0;
				LOC10 = ((*s).owner == (*c).owner);
				if (!(LOC10)) goto LA11;
				LOC10 = ((*s).kind == ((NU8) 3));
				LA11: ;
				if (!LOC10) goto LA12;
				result = newsymnode_217241(s, (*n).info);
			}
			LA12: ;
		}
		LA6: ;
	}
	break;
	case ((NU8) 53):
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illformedast_265950(n);
		result = n;
	}
	break;
	}
	return result;
}

static N_INLINE(NIM_BOOL, istemplparam_440001)(Templctx439942* c, Tnode215790* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = ((*n).kind == ((NU8) 3));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*(*n).kindU.S4.sym).kind == ((NU8) 3));
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC2 = ((*(*n).kindU.S4.sym).owner == (*c).owner);
	LA5: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA6;
	LOC1 = !((((*(*n).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0));
	LA6: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, replaceidentbysym_439932)(Tnode215790** n, Tnode215790* s) {
	switch ((*(*n)).kind) {
	case ((NU8) 31):
	{
		replaceidentbysym_439932(&(*(*n)).kindU.S6.sons->data[((NI) 1)], s);
	}
	break;
	case ((NU8) 43):
	{
		replaceidentbysym_439932(&(*(*n)).kindU.S6.sons->data[((NI) 0)], s);
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	case ((NU8) 3):
	{
		unsureAsgnRef((void**) (&(*n)), s);
	}
	break;
	default:
	{
		illformedast_265950((*n));
	}
	break;
	}
}

N_NIMCALL(Tsym215822*, newgensym_440230)(NU8 kind, Tnode215790* n, Templctx439942* c) {
	Tsym215822* result;
	Tident190012* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_270004(n);
	result = newsym_216684(kind, LOC1, (*c).owner, (*n).info);
	(*result).flags |= ((NU32)1)<<((((NU8) 31))%(sizeof(NU32)*8));
	(*result).flags |= ((NU32)1)<<((((NU8) 21))%(sizeof(NU32)*8));
	return result;
}

N_NIMCALL(void, addlocaldecl_440259)(Templctx439942* c, Tnode215790** n, NU8 k) {
{	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode215790* x;
		Tnode215790* ident;
		LOC3 = 0;
		LOC3 = ((*(*n)).kind == ((NU8) 43));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_439680((*(*n)).kindU.S6.sons->data[((NI) 1)]);
		LOC3 = (LOC5 == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA6;
		x = HEX5BHEX5D_216238((*n), ((NI) 0));
		{
			while (1) {
				switch ((*x).kind) {
				case ((NU8) 31):
				{
					x = HEX5BHEX5D_216238(x, ((NI) 1));
				}
				break;
				case ((NU8) 43):
				{
					x = HEX5BHEX5D_216238(x, ((NI) 0));
				}
				break;
				case ((NU8) 2):
				{
					goto LA8;
				}
				break;
				case ((NU8) 53):
				{
					unsureAsgnRef((void**) (&(*n)), onlyreplaceparams_440069(c, (*n)));
					goto BeforeRet;
				}
				break;
				default:
				{
					illformedast_265950(x);
				}
				break;
				}
			}
		} LA8: ;
		ident = getidentnode_439957(c, x);
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = istemplparam_440001((&(*c)), ident);
			if (!!(LOC17)) goto LA18;
			incl_212832((&(*c).toinject), (*(*x).kindU.S5.ident).Sup.id);
		}
		goto LA15;
		LA18: ;
		{
			replaceidentbysym_439932(n, ident);
		}
		LA15: ;
	}
	goto LA1;
	LA6: ;
	{
		Tnode215790* ident;
		ident = getidentnode_439957(c, (*n));
		{
			NIM_BOOL LOC24;
			Tsym215822* s;
			Tident190012* LOC27;
			LOC24 = 0;
			LOC24 = istemplparam_440001((&(*c)), ident);
			if (!!(LOC24)) goto LA25;
			LOC27 = 0;
			LOC27 = considerquotedident_270004(ident);
			s = localsearchinscope_270126((*c).c, LOC27);
			{
				NIM_BOOL LOC30;
				NIM_BOOL LOC31;
				Tnode215790* LOC36;
				LOC30 = 0;
				LOC31 = 0;
				LOC31 = !((s == NIM_NIL));
				if (!(LOC31)) goto LA32;
				LOC31 = ((*s).owner == (*c).owner);
				LA32: ;
				LOC30 = LOC31;
				if (!(LOC30)) goto LA33;
				LOC30 = (((*s).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0);
				LA33: ;
				if (!LOC30) goto LA34;
				LOC36 = 0;
				LOC36 = newsymnode_217241(s, (*(*n)).info);
				replaceidentbysym_439932(n, LOC36);
			}
			goto LA28;
			LA34: ;
			{
				Tsym215822* local;
				Tnode215790* LOC38;
				local = newgensym_440230(k, ident, c);
				addprelimdecl_270451((*c).c, local);
				LOC38 = 0;
				LOC38 = newsymnode_217241(local, (*(*n)).info);
				replaceidentbysym_439932(n, LOC38);
			}
			LA28: ;
		}
		goto LA22;
		LA25: ;
		{
			replaceidentbysym_439932(n, ident);
		}
		LA22: ;
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(void, semtemplsomedecl_441025)(Templctx439942* c, Tnode215790* n, NU8 symkind, NI start) {
	{
		NI i_441043;
		NI HEX3Atmp_441102;
		NI LOC2;
		NI res_441105;
		i_441043 = 0;
		HEX3Atmp_441102 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_441102 = (NI)(LOC2 - ((NI) 1));
		res_441105 = start;
		{
			while (1) {
				if (!(res_441105 <= HEX3Atmp_441102)) goto LA4;
				i_441043 = res_441105;
				{
					Tnode215790* a;
					NI L;
					a = (*n).kindU.S6.sons->data[i_441043];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						NIM_BOOL LOC12;
						LOC12 = 0;
						LOC12 = !(((*a).kind == ((NU8) 35)));
						if (!(LOC12)) goto LA13;
						LOC12 = !(((*a).kind == ((NU8) 36)));
						LA13: ;
						if (!LOC12) goto LA14;
						illformedast_265950(a);
					}
					LA14: ;
					checkminsonslen_265962(a, ((NI) 3));
					L = sonslen_218351(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					{
						NI j_441089;
						NI HEX3Atmp_441095;
						NI res_441098;
						j_441089 = 0;
						HEX3Atmp_441095 = 0;
						HEX3Atmp_441095 = (NI)(L - ((NI) 3));
						res_441098 = ((NI) 0);
						{
							while (1) {
								if (!(res_441098 <= HEX3Atmp_441095)) goto LA18;
								j_441089 = res_441098;
								addlocaldecl_440259(c, &(*a).kindU.S6.sons->data[j_441089], symkind);
								res_441098 += ((NI) 1);
							} LA18: ;
						}
					}
				} LA5: ;
				res_441105 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode215790*, semroutineintemplname_440619)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	{
		Tsym215822* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_270652((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA7;
			{
				NIM_BOOL LOC11;
				NIM_BOOL LOC13;
				LOC11 = 0;
				LOC11 = ((*s).owner == (*c).owner);
				if (!(LOC11)) goto LA12;
				LOC13 = 0;
				LOC13 = ((*s).kind == ((NU8) 3));
				if (LOC13) goto LA14;
				LOC13 = (((*s).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0);
				LA14: ;
				LOC11 = LOC13;
				LA12: ;
				if (!LOC11) goto LA15;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_217241(s, (*n).info);
			}
			LA15: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_440812;
			NI HEX3Atmp_440816;
			NI LOC19;
			NI res_440819;
			i_440812 = 0;
			HEX3Atmp_440816 = 0;
			LOC19 = 0;
			LOC19 = safelen_216081(n);
			HEX3Atmp_440816 = (NI)(LOC19 - ((NI) 1));
			res_440819 = ((NI) 0);
			{
				while (1) {
					if (!(res_440819 <= HEX3Atmp_440816)) goto LA21;
					i_440812 = res_440819;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_440812]), semroutineintemplname_440619(c, (*n).kindU.S6.sons->data[i_440812]));
					res_440819 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semroutineintemplbody_440823)(Templctx439942* c, Tnode215790* n, NU8 k) {
	Tnode215790* result;
	result = 0;
	result = n;
	checksonslen_265958(n, ((NI) 7));
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode215790* ident;
		LOC3 = 0;
		LOC3 = !(((*n).kind == ((NU8) 51) || (*n).kind == ((NU8) 52)));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_439680((*n).kindU.S6.sons->data[((NI) 4)]);
		LOC3 = (LOC5 == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA6;
		ident = getidentnode_439957(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NIM_BOOL LOC10;
			Tsym215822* s;
			LOC10 = 0;
			LOC10 = istemplparam_440001((&(*c)), ident);
			if (!!(LOC10)) goto LA11;
			s = newgensym_440230(k, ident, c);
			asgnRefNoCycle((void**) (&(*s).ast), n);
			addprelimdecl_270451((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		goto LA8;
		LA11: ;
		{
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), ident);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semroutineintemplname_440619(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	LA1: ;
	openscope_440055(c);
	{
		NI i_441015;
		NI res_441021;
		i_441015 = 0;
		res_441021 = ((NI) 1);
		{
			while (1) {
				if (!(res_441021 <= ((NI) 6))) goto LA17;
				i_441015 = res_441021;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_441015]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[i_441015]));
				res_441021 += ((NI) 1);
			} LA17: ;
		}
	}
	closescope_440059(c);
	return result;
}

N_NIMCALL(Tnode215790*, semtemplbodysons_441113)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	{
		NI i_441137;
		NI HEX3Atmp_441141;
		NI LOC2;
		NI res_441144;
		i_441137 = 0;
		HEX3Atmp_441141 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_441141 = (LOC2 - 1);
		res_441144 = ((NI) 0);
		{
			while (1) {
				if (!(res_441144 <= HEX3Atmp_441141)) goto LA4;
				i_441137 = res_441144;
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_441137]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[i_441137]));
				res_441144 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(NIM_BOOL, oprisroof_441426)(Tnode215790* n) {
	NIM_BOOL result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		result = eqStrings((*(*n).kindU.S5.ident).s, ((NimStringDesc*) &TMP3178));
	}
	break;
	case ((NU8) 3):
	{
		result = eqStrings((*(*(*n).kindU.S4.sym).name).s, ((NimStringDesc*) &TMP3178));
	}
	break;
	case ((NU8) 53):
	{
		{
			NI LOC6;
			LOC6 = 0;
			LOC6 = len_216059(n);
			if (!(LOC6 == ((NI) 1))) goto LA7;
			result = oprisroof_441426((*n).kindU.S6.sons->data[((NI) 0)]);
		}
		LA7: ;
	}
	break;
	case ((NU8) 57):
	case ((NU8) 56):
	{
		result = oprisroof_441426((*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode215790*, semtemplbody_440050)(Templctx439942* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym215822* s;
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = contains_212811((*c).toinject, (*(*n).kindU.S5.ident).Sup.id);
			if (!LOC4) goto LA5;
			result = n;
			goto BeforeRet;
		}
		LA5: ;
		s = qualifiedlookup_270652((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA9;
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = ((*s).owner == (*c).owner);
				if (!(LOC13)) goto LA14;
				LOC13 = ((*s).kind == ((NU8) 3));
				LA14: ;
				if (!LOC13) goto LA15;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_217241(s, (*n).info);
			}
			goto LA11;
			LA15: ;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = contains_212811((*c).tobind, (*s).Sup.id);
				if (!LOC18) goto LA19;
				result = symchoice_439732((*c).c, n, s, ((NU8) 0));
			}
			goto LA11;
			LA19: ;
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = contains_212811((*c).tomixin, (*(*s).name).Sup.id);
				if (!LOC22) goto LA23;
				result = symchoice_439732((*c).c, n, s, ((NU8) 2));
			}
			goto LA11;
			LA23: ;
			{
				NIM_BOOL LOC26;
				LOC26 = 0;
				LOC26 = ((*s).owner == (*c).owner);
				if (!(LOC26)) goto LA27;
				LOC26 = (((*s).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0);
				LA27: ;
				if (!LOC26) goto LA28;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_217241(s, (*n).info);
			}
			goto LA11;
			LA28: ;
			{
				result = semtemplsymbol_440602((*c).c, n, s);
			}
			LA11: ;
		}
		LA9: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbody_440050(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_439822((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_439897((*c).c, n, (&(*c).tomixin));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_442015;
			NI HEX3Atmp_443004;
			NI LOC37;
			NI res_443007;
			i_442015 = 0;
			HEX3Atmp_443004 = 0;
			LOC37 = 0;
			LOC37 = sonslen_218351(n);
			HEX3Atmp_443004 = (NI)(LOC37 - ((NI) 1));
			res_443007 = ((NI) 0);
			{
				while (1) {
					Tnode215790* it;
					if (!(res_443007 <= HEX3Atmp_443004)) goto LA39;
					i_442015 = res_443007;
					it = (*n).kindU.S6.sons->data[i_442015];
					{
						NI LOC42;
						LOC42 = 0;
						LOC42 = len_216059(it);
						if (!(LOC42 == ((NI) 2))) goto LA43;
						openscope_440055(c);
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semtemplbody_440050(c, (*it).kindU.S6.sons->data[((NI) 0)]));
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semtemplbody_440050(c, (*it).kindU.S6.sons->data[((NI) 1)]));
						closescope_440059(c);
					}
					goto LA40;
					LA43: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_442015]), semtemplbodyscope_440063(c, it));
					}
					LA40: ;
					res_443007 += ((NI) 1);
				} LA39: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		openscope_440055(c);
		{
			NI i_442415;
			NI HEX3Atmp_443012;
			NI LOC48;
			NI res_443015;
			i_442415 = 0;
			HEX3Atmp_443012 = 0;
			LOC48 = 0;
			LOC48 = sonslen_218351(n);
			HEX3Atmp_443012 = (NI)(LOC48 - ((NI) 1));
			res_443015 = ((NI) 0);
			{
				while (1) {
					if (!(res_443015 <= HEX3Atmp_443012)) goto LA50;
					i_442415 = res_443015;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_442415]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[i_442415]));
					res_443015 += ((NI) 1);
				} LA50: ;
			}
		}
		closescope_440059(c);
	}
	break;
	case ((NU8) 97):
	{
		openscope_440055(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_442431;
			NI HEX3Atmp_443028;
			NI LOC53;
			NI res_443031;
			i_442431 = 0;
			HEX3Atmp_443028 = 0;
			LOC53 = 0;
			LOC53 = sonslen_218351(n);
			HEX3Atmp_443028 = (NI)(LOC53 - ((NI) 1));
			res_443031 = ((NI) 1);
			{
				while (1) {
					Tnode215790* a;
					NI L;
					if (!(res_443031 <= HEX3Atmp_443028)) goto LA55;
					i_442431 = res_443031;
					a = (*n).kindU.S6.sons->data[i_442431];
					checkminsonslen_265962(a, ((NI) 1));
					L = sonslen_218351(a);
					{
						NI j_442446;
						NI HEX3Atmp_443021;
						NI res_443024;
						j_442446 = 0;
						HEX3Atmp_443021 = 0;
						HEX3Atmp_443021 = (NI)(L - ((NI) 2));
						res_443024 = ((NI) 0);
						{
							while (1) {
								if (!(res_443024 <= HEX3Atmp_443021)) goto LA58;
								j_442446 = res_443024;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_442446]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[j_442446]));
								res_443024 += ((NI) 1);
							} LA58: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_440063(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_443031 += ((NI) 1);
				} LA55: ;
			}
		}
		closescope_440059(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		L = sonslen_218351(n);
		openscope_440055(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
		{
			NI i_442465;
			NI HEX3Atmp_443036;
			NI res_443039;
			i_442465 = 0;
			HEX3Atmp_443036 = 0;
			HEX3Atmp_443036 = (NI)(L - ((NI) 3));
			res_443039 = ((NI) 0);
			{
				while (1) {
					if (!(res_443039 <= HEX3Atmp_443036)) goto LA62;
					i_442465 = res_443039;
					addlocaldecl_440259(c, &(*n).kindU.S6.sons->data[i_442465], ((NU8) 20));
					res_443039 += ((NI) 1);
				} LA62: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
		closescope_440059(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		checksonslen_265958(n, ((NI) 2));
		openscope_440055(c);
		{
			Tsym215822* s;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA66;
			s = newgensym_440230(((NU8) 21), (*n).kindU.S6.sons->data[((NI) 0)], c);
			addprelimdecl_270451((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA66: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		closescope_440059(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_265962(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbodyscope_440063(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_442618;
			NI HEX3Atmp_443052;
			NI LOC70;
			NI res_443055;
			i_442618 = 0;
			HEX3Atmp_443052 = 0;
			LOC70 = 0;
			LOC70 = sonslen_218351(n);
			HEX3Atmp_443052 = (NI)(LOC70 - ((NI) 1));
			res_443055 = ((NI) 1);
			{
				while (1) {
					Tnode215790* a;
					NI L;
					if (!(res_443055 <= HEX3Atmp_443052)) goto LA72;
					i_442618 = res_443055;
					a = (*n).kindU.S6.sons->data[i_442618];
					checkminsonslen_265962(a, ((NI) 1));
					L = sonslen_218351(a);
					{
						NI j_442633;
						NI HEX3Atmp_443045;
						NI res_443048;
						j_442633 = 0;
						HEX3Atmp_443045 = 0;
						HEX3Atmp_443045 = (NI)(L - ((NI) 2));
						res_443048 = ((NI) 0);
						{
							while (1) {
								if (!(res_443048 <= HEX3Atmp_443045)) goto LA75;
								j_442633 = res_443048;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_442633]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[j_442633]));
								res_443048 += ((NI) 1);
							} LA75: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_440063(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_443055 += ((NI) 1);
				} LA72: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	{
		semtemplsomedecl_441025(c, n, ((NU8) 8), ((NI) 0));
	}
	break;
	case ((NU8) 100):
	{
		semtemplsomedecl_441025(c, n, ((NU8) 9), ((NI) 0));
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_265962(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		semtemplsomedecl_441025(c, n, ((NU8) 3), ((NI) 1));
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_442651;
			NI HEX3Atmp_443061;
			NI LOC81;
			NI res_443064;
			i_442651 = 0;
			HEX3Atmp_443061 = 0;
			LOC81 = 0;
			LOC81 = sonslen_218351(n);
			HEX3Atmp_443061 = (NI)(LOC81 - ((NI) 1));
			res_443064 = ((NI) 0);
			{
				while (1) {
					if (!(res_443064 <= HEX3Atmp_443061)) goto LA83;
					i_442651 = res_443064;
					{
						Tnode215790* a;
						a = (*n).kindU.S6.sons->data[i_442651];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA87;
							goto LA84;
						}
						LA87: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA91;
							illformedast_265950(a);
						}
						LA91: ;
						checksonslen_265958(a, ((NI) 3));
						addlocaldecl_440259(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[((NI) 1)]));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[((NI) 2)]));
					} LA84: ;
					res_443064 += ((NI) 1);
				} LA83: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_442689;
			NI HEX3Atmp_443070;
			NI LOC95;
			NI res_443073;
			i_442689 = 0;
			HEX3Atmp_443070 = 0;
			LOC95 = 0;
			LOC95 = sonslen_218351(n);
			HEX3Atmp_443070 = (NI)(LOC95 - ((NI) 1));
			res_443073 = ((NI) 0);
			{
				while (1) {
					if (!(res_443073 <= HEX3Atmp_443070)) goto LA97;
					i_442689 = res_443073;
					{
						Tnode215790* a;
						a = (*n).kindU.S6.sons->data[i_442689];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA101;
							goto LA98;
						}
						LA101: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA105;
							illformedast_265950(a);
						}
						LA105: ;
						checksonslen_265958(a, ((NI) 3));
						addlocaldecl_440259(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					} LA98: ;
					res_443073 += ((NI) 1);
				} LA97: ;
			}
		}
		{
			NI i_442723;
			NI HEX3Atmp_443079;
			NI LOC108;
			NI res_443082;
			i_442723 = 0;
			HEX3Atmp_443079 = 0;
			LOC108 = 0;
			LOC108 = sonslen_218351(n);
			HEX3Atmp_443079 = (NI)(LOC108 - ((NI) 1));
			res_443082 = ((NI) 0);
			{
				while (1) {
					if (!(res_443082 <= HEX3Atmp_443079)) goto LA110;
					i_442723 = res_443082;
					{
						Tnode215790* a;
						a = (*n).kindU.S6.sons->data[i_442723];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA114;
							goto LA111;
						}
						LA114: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA118;
							illformedast_265950(a);
						}
						LA118: ;
						checksonslen_265958(a, ((NI) 3));
						{
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA122;
							openscope_440055(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[((NI) 1)]));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[((NI) 2)]));
							closescope_440059(c);
						}
						goto LA120;
						LA122: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_440050(c, (*a).kindU.S6.sons->data[((NI) 2)]));
						}
						LA120: ;
					} LA111: ;
					res_443082 += ((NI) 1);
				} LA110: ;
			}
		}
	}
	break;
	case ((NU8) 79):
	case ((NU8) 51):
	case ((NU8) 52):
	{
		result = semroutineintemplbody_440823(c, n, ((NU8) 12));
	}
	break;
	case ((NU8) 80):
	{
		result = semroutineintemplbody_440823(c, n, ((NU8) 13));
	}
	break;
	case ((NU8) 84):
	{
		result = semroutineintemplbody_440823(c, n, ((NU8) 14));
	}
	break;
	case ((NU8) 83):
	{
		result = semroutineintemplbody_440823(c, n, ((NU8) 17));
	}
	break;
	case ((NU8) 82):
	{
		result = semroutineintemplbody_440823(c, n, ((NU8) 16));
	}
	break;
	case ((NU8) 81):
	{
		result = semroutineintemplbody_440823(c, n, ((NU8) 15));
	}
	break;
	case ((NU8) 43):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 31):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semtemplbody_440050(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	break;
	case ((NU8) 90):
	{
		result = onlyreplaceparams_440069(c, n);
	}
	break;
	case ((NU8) 42):
	{
		Tident190012* LOC135;
		Tnode215790* LOC136;
		Tnode215790* n0;
		Tnode215790* old_442796;
		result = newnodei_217248(((NU8) 27), (*n).info);
		LOC135 = 0;
		LOC135 = getident_190441(((NimStringDesc*) &TMP3157));
		LOC136 = 0;
		LOC136 = newidentnode_217228(LOC135, (*n).info);
		add_216114(result, LOC136);
		{
			NI i_442791;
			Slice88082 HEX3Atmp_443087;
			NI LOC138;
			i_442791 = 0;
			memset((void*)(&HEX3Atmp_443087), 0, sizeof(HEX3Atmp_443087));
			LOC138 = 0;
			LOC138 = len_216059(n);
			HEX3Atmp_443087 = HEX2EHEX2E_102424(((NI) 0), (LOC138 - 1));
			{
				NI x_443091;
				NI HEX3Atmp_443093;
				NI HEX3Atmp_443095;
				NI res_443097;
				x_443091 = 0;
				HEX3Atmp_443093 = 0;
				HEX3Atmp_443095 = 0;
				HEX3Atmp_443093 = HEX3Atmp_443087.a;
				HEX3Atmp_443095 = HEX3Atmp_443087.b;
				res_443097 = HEX3Atmp_443093;
				{
					while (1) {
						Tnode215790* LOC142;
						if (!(res_443097 <= HEX3Atmp_443095)) goto LA141;
						x_443091 = res_443097;
						i_442791 = x_443091;
						LOC142 = 0;
						LOC142 = HEX5BHEX5D_216238(n, i_442791);
						add_216114(result, LOC142);
						res_443097 += ((NI) 1);
					} LA141: ;
				}
			}
		}
		n0 = semtemplbody_440050(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		old_442796 = (*c).bracketexpr;
		unsureAsgnRef((void**) (&(*c).bracketexpr), n0);
		result = semtemplbodysons_441113(c, result);
		unsureAsgnRef((void**) (&(*c).bracketexpr), old_442796);
	}
	break;
	case ((NU8) 40):
	{
		Tident190012* LOC144;
		Tnode215790* LOC145;
		result = newnodei_217248(((NU8) 27), (*n).info);
		LOC144 = 0;
		LOC144 = getident_190441(((NimStringDesc*) &TMP3179));
		LOC145 = 0;
		LOC145 = newidentnode_217228(LOC144, (*n).info);
		add_216114(result, LOC145);
		{
			NI i_442824;
			Slice88082 HEX3Atmp_443102;
			NI LOC147;
			i_442824 = 0;
			memset((void*)(&HEX3Atmp_443102), 0, sizeof(HEX3Atmp_443102));
			LOC147 = 0;
			LOC147 = len_216059(n);
			HEX3Atmp_443102 = HEX2EHEX2E_102424(((NI) 0), (LOC147 - 1));
			{
				NI x_443106;
				NI HEX3Atmp_443108;
				NI HEX3Atmp_443110;
				NI res_443112;
				x_443106 = 0;
				HEX3Atmp_443108 = 0;
				HEX3Atmp_443110 = 0;
				HEX3Atmp_443108 = HEX3Atmp_443102.a;
				HEX3Atmp_443110 = HEX3Atmp_443102.b;
				res_443112 = HEX3Atmp_443108;
				{
					while (1) {
						Tnode215790* LOC151;
						if (!(res_443112 <= HEX3Atmp_443110)) goto LA150;
						x_443106 = res_443112;
						i_442824 = x_443106;
						LOC151 = 0;
						LOC151 = HEX5BHEX5D_216238(n, i_442824);
						add_216114(result, LOC151);
						res_443112 += ((NI) 1);
					} LA150: ;
				}
			}
		}
		result = semtemplbodysons_441113(c, result);
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		Tnode215790* a;
		Tnode215790* b;
		NU8 k;
		checksonslen_265958(n, ((NI) 2));
		a = (*n).kindU.S6.sons->data[((NI) 0)];
		b = (*n).kindU.S6.sons->data[((NI) 1)];
		k = (*a).kind;
		switch (k) {
		case ((NU8) 42):
		{
			Tident190012* LOC154;
			Tnode215790* LOC155;
			Tnode215790* a0;
			Tnode215790* old_442864;
			result = newnodei_217248(((NU8) 27), (*n).info);
			LOC154 = 0;
			LOC154 = getident_190441(((NimStringDesc*) &TMP3181));
			LOC155 = 0;
			LOC155 = newidentnode_217228(LOC154, (*n).info);
			add_216114(result, LOC155);
			{
				NI i_442858;
				Slice88082 HEX3Atmp_443117;
				NI LOC157;
				i_442858 = 0;
				memset((void*)(&HEX3Atmp_443117), 0, sizeof(HEX3Atmp_443117));
				LOC157 = 0;
				LOC157 = len_216059(a);
				HEX3Atmp_443117 = HEX2EHEX2E_102424(((NI) 0), (LOC157 - 1));
				{
					NI x_443121;
					NI HEX3Atmp_443123;
					NI HEX3Atmp_443125;
					NI res_443127;
					x_443121 = 0;
					HEX3Atmp_443123 = 0;
					HEX3Atmp_443125 = 0;
					HEX3Atmp_443123 = HEX3Atmp_443117.a;
					HEX3Atmp_443125 = HEX3Atmp_443117.b;
					res_443127 = HEX3Atmp_443123;
					{
						while (1) {
							Tnode215790* LOC161;
							if (!(res_443127 <= HEX3Atmp_443125)) goto LA160;
							x_443121 = res_443127;
							i_442858 = x_443121;
							LOC161 = 0;
							LOC161 = HEX5BHEX5D_216238(a, i_442858);
							add_216114(result, LOC161);
							res_443127 += ((NI) 1);
						} LA160: ;
					}
				}
			}
			add_216114(result, b);
			a0 = semtemplbody_440050(c, (*a).kindU.S6.sons->data[((NI) 0)]);
			old_442864 = (*c).bracketexpr;
			unsureAsgnRef((void**) (&(*c).bracketexpr), a0);
			result = semtemplbodysons_441113(c, result);
			unsureAsgnRef((void**) (&(*c).bracketexpr), old_442864);
		}
		break;
		case ((NU8) 40):
		{
			Tident190012* LOC163;
			Tnode215790* LOC164;
			result = newnodei_217248(((NU8) 27), (*n).info);
			LOC163 = 0;
			LOC163 = getident_190441(((NimStringDesc*) &TMP3180));
			LOC164 = 0;
			LOC164 = newidentnode_217228(LOC163, (*n).info);
			add_216114(result, LOC164);
			{
				NI i_442892;
				Slice88082 HEX3Atmp_443132;
				NI LOC166;
				i_442892 = 0;
				memset((void*)(&HEX3Atmp_443132), 0, sizeof(HEX3Atmp_443132));
				LOC166 = 0;
				LOC166 = len_216059(a);
				HEX3Atmp_443132 = HEX2EHEX2E_102424(((NI) 0), (LOC166 - 1));
				{
					NI x_443136;
					NI HEX3Atmp_443138;
					NI HEX3Atmp_443140;
					NI res_443142;
					x_443136 = 0;
					HEX3Atmp_443138 = 0;
					HEX3Atmp_443140 = 0;
					HEX3Atmp_443138 = HEX3Atmp_443132.a;
					HEX3Atmp_443140 = HEX3Atmp_443132.b;
					res_443142 = HEX3Atmp_443138;
					{
						while (1) {
							Tnode215790* LOC170;
							if (!(res_443142 <= HEX3Atmp_443140)) goto LA169;
							x_443136 = res_443142;
							i_442892 = x_443136;
							LOC170 = 0;
							LOC170 = HEX5BHEX5D_216238(a, i_442892);
							add_216114(result, LOC170);
							res_443142 += ((NI) 1);
						} LA169: ;
					}
				}
			}
			add_216114(result, b);
			result = semtemplbodysons_441113(c, result);
		}
		break;
		default:
		{
			result = semtemplbodysons_441113(c, n);
		}
		break;
		}
	}
	break;
	case ((NU8) 26) ... ((NU8) 30):
	case ((NU8) 32):
	{
		result = semtemplbodysons_441113(c, n);
		{
			NIM_BOOL LOC175;
			NIM_BOOL LOC176;
			NI LOC178;
			LOC175 = 0;
			LOC176 = 0;
			LOC176 = !(((*c).bracketexpr == NIM_NIL));
			if (!(LOC176)) goto LA177;
			LOC178 = 0;
			LOC178 = len_216059(n);
			LOC176 = (LOC178 == ((NI) 2));
			LA177: ;
			LOC175 = LOC176;
			if (!(LOC175)) goto LA179;
			LOC175 = oprisroof_441426((*n).kindU.S6.sons->data[((NI) 0)]);
			LA179: ;
			if (!LOC175) goto LA180;
			add_216114(result, (*c).bracketexpr);
		}
		LA180: ;
	}
	break;
	case ((NU8) 45):
	case ((NU8) 53):
	{
		Tsym215822* s;
		s = qualifiedlookup_270652((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA185;
			{
				NIM_BOOL LOC189;
				NIM_BOOL LOC190;
				NIM_BOOL LOC191;
				NI LOC195;
				LOC189 = 0;
				LOC190 = 0;
				LOC191 = 0;
				LOC191 = ((*s).owner == (*c).owner);
				if (!(LOC191)) goto LA192;
				LOC191 = ((*s).kind == ((NU8) 3));
				LA192: ;
				LOC190 = LOC191;
				if (!(LOC190)) goto LA193;
				LOC190 = ((*n).kind == ((NU8) 53));
				LA193: ;
				LOC189 = LOC190;
				if (!(LOC189)) goto LA194;
				LOC195 = 0;
				LOC195 = len_216059(n);
				LOC189 = (LOC195 == ((NI) 1));
				LA194: ;
				if (!LOC189) goto LA196;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_217241(s, (*n).info);
				goto BeforeRet;
			}
			goto LA187;
			LA196: ;
			{
				NIM_BOOL LOC199;
				LOC199 = 0;
				LOC199 = contains_212811((*c).tobind, (*s).Sup.id);
				if (!LOC199) goto LA200;
				result = symchoice_439732((*c).c, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			goto LA187;
			LA200: ;
			{
				NIM_BOOL LOC203;
				LOC203 = 0;
				LOC203 = contains_212811((*c).tomixin, (*(*s).name).Sup.id);
				if (!LOC203) goto LA204;
				result = symchoice_439732((*c).c, n, s, ((NU8) 2));
				goto BeforeRet;
			}
			goto LA187;
			LA204: ;
			{
				result = symchoice_439732((*c).c, n, s, ((NU8) 1));
				goto BeforeRet;
			}
			LA187: ;
		}
		LA185: ;
		result = semtemplbodysons_441113(c, n);
	}
	break;
	default:
	{
		result = semtemplbodysons_441113(c, n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semtemplatedef_443296)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* s;
	Tscope215816* LOC7;
	Tnode215790* gp;
	Templctx439942 ctx;
	Tsym215822* proto;
	result = 0;
	s = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_265966(c);
		if (!LOC3) goto LA4;
		s = semidentvis_426932(c, ((NU8) 17), (*n).kindU.S6.sons->data[((NI) 0)], 2);
		(*s).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
	}
	goto LA1;
	LA4: ;
	{
		s = semidentvis_426932(c, ((NU8) 17), (*n).kindU.S6.sons->data[((NI) 0)], 0);
	}
	LA1: ;
	pushowner_265212(s);
	LOC7 = 0;
	LOC7 = openscope_270060(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA10;
		pragma_280070(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3579);
	}
	LA10: ;
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA14;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericparamlist_439403(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA12;
	LA14: ;
	{
		gp = newnodei_217248(((NU8) 75), (*n).info);
	}
	LA12: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA19;
		semparamlist_426254(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI i_443450;
			NI HEX3Atmp_443650;
			NI LOC22;
			NI res_443653;
			i_443450 = 0;
			HEX3Atmp_443650 = 0;
			LOC22 = 0;
			LOC22 = len_216059((*(*s).typ).n);
			HEX3Atmp_443650 = (NI)(LOC22 - ((NI) 1));
			res_443653 = ((NI) 1);
			{
				while (1) {
					if (!(res_443653 <= HEX3Atmp_443650)) goto LA24;
					i_443450 = res_443653;
					(*(*(*(*(*s).typ).n).kindU.S6.sons->data[i_443450]).kindU.S4.sym).flags &= ~(((NU32)1) << ((((NU8) 31)) % (sizeof(NU32)*8)));
					res_443653 += ((NI) 1);
				} LA24: ;
			}
		}
		{
			NI LOC27;
			LOC27 = 0;
			LOC27 = sonslen_218351(gp);
			if (!(((NI) 0) < LOC27)) goto LA28;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1))) goto LA32;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), gp);
			}
			LA32: ;
		}
		LA28: ;
		{
			if (!((*(*(*n).kindU.S6.sons->data[((NI) 3)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1))) goto LA36;
			asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[((NI) 0)]), newtypes_265185(((NU8) 7), c));
			asgnRefNoCycle((void**) (&(*(*(*s).typ).n).kindU.S6.sons->data[((NI) 0)]), newnodeit_217801(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]));
		}
		LA36: ;
	}
	goto LA17;
	LA19: ;
	{
		Ttype215828* LOC39;
		Tnode215790* LOC40;
		asgnRefNoCycle((void**) (&(*s).typ), newtypes_265185(((NU8) 25), c));
		asgnRefNoCycle((void**) (&(*(*s).typ).n), newnodei_217248(((NU8) 76), (*n).info));
		LOC39 = 0;
		LOC39 = newtypes_265185(((NU8) 7), c);
		rawaddson_219408((*s).typ, LOC39);
		LOC40 = 0;
		LOC40 = newnodeit_217801(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]);
		addson_217807((*(*s).typ).n, LOC40);
	}
	LA17: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA43;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), sempattern_441109(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	LA43: ;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_212885((&ctx.tobind));
	initintset_212885((&ctx.tomixin));
	initintset_212885((&ctx.toinject));
	ctx.c = c;
	ctx.owner = s;
	{
		if (!(((*s).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0)) goto LA47;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semtemplbodydirty_443146((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	goto LA45;
	LA47: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semtemplbody_440050((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	LA45: ;
	closescope_270068(c);
	popowner_265215();
	asgnRefNoCycle((void**) (&(*s).ast), n);
	result = n;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA52;
		localerror_188080((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA52: ;
	proto = searchforproc_279226(c, (*c).currentscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA56;
		addinterfaceoverloadablesymat_270542(c, (*c).currentscope, s);
	}
	goto LA54;
	LA56: ;
	{
		symtabreplace_225803((&(*(*c).currentscope).symbols), proto, s);
	}
	LA54: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA61;
		(*c).patterns = (Tsymseq215792*) incrSeqV2(&((*c).patterns)->Sup, sizeof(Tsym215822*));
		asgnRefNoCycle((void**) (&(*c).patterns->data[(*c).patterns->Sup.len]), s);
		++(*c).patterns->Sup.len;
	}
	LA61: ;
	return result;
}

N_NIMCALL(Tsym215822*, getmagicsym_465795)(NU8 magic) {
	Tsym215822* result;
	Tident190012* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_190441(reprEnum(magic, (&NTI215521)));
	result = newsym_216684(((NU8) 12), LOC1, systemmodule_259007, gcodegenlineinfo_184058);
	(*result).magic = magic;
	return result;
}

N_NIMCALL(Tnode215790*, semquoteast_426286)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* doblk;
	NI LOC10;
	NimStringDesc* op;
	Tnodeseq215784* quotes;
	Tnodeseq215784* ids;
	Tsym215822* LOC28;
	Tsym215822* LOC29;
	Tnode215790* tmpl;
	Tnodeseq215784* LOC41;
	TY383939 LOC42;
	Tsym215822* LOC43;
	result = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		NimStringDesc* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_216059(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = len_216059(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!!(LOC3)) goto LA7;
		LOC9 = 0;
		LOC9 = HEX24_188183(TMP3574);
		internalerror_188113(LOC9);
	}
	LA7: ;
	LOC10 = 0;
	{
		if (!NIM_FALSE) goto LA13;
		LOC10 = ((NI) -1);
	}
	goto LA11;
	LA13: ;
	{
		NI LOC16;
		LOC16 = 0;
		LOC16 = len_216059(n);
		LOC10 = (NI)(LOC16 + ((NI) -1));
	}
	LA11: ;
	doblk = HEX5BHEX5D_216238(n, LOC10);
	{
		NI LOC19;
		Tnode215790* LOC22;
		LOC19 = 0;
		LOC19 = len_216059(n);
		if (!(LOC19 == ((NI) 3))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_216238(n, ((NI) 1));
		op = expectstring_465778(c, LOC22);
	}
	goto LA17;
	LA20: ;
	{
		op = copyString(((NimStringDesc*) &TMP3575));
	}
	LA17: ;
	quotes = newseq_466233(((NI) 1));
	ids = newseq_466233(((NI) 0));
	{
		if (!!(((*doblk).kind == ((NU8) 52)))) goto LA26;
		localerror_188080((*n).info, ((NU16) 193), ((NimStringDesc*) &TMP3576));
	}
	LA26: ;
	processquotations_466066(&(*doblk).kindU.S6.sons->data[((NI) 6)], op, (&quotes), (&ids));
	LOC28 = 0;
	LOC28 = getcurrowner_265210();
	LOC29 = 0;
	LOC29 = newanonsym_465807(((NU8) 17), (*n).info, LOC28);
	asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(LOC29));
	{
		Tnode215790* LOC34;
		Tsym215822* LOC35;
		Tnode215790* LOC36;
		Tsym215822* LOC37;
		Tnode215790* LOC38;
		Tnode215790* LOC39;
		Tnode215790* LOC40;
		if (!(((NI) 0) < (ids ? ids->Sup.len : 0))) goto LA32;
		asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 3)]), newnodei_217248(((NU8) 76), (*n).info));
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_216238(doblk, ((NI) 3));
		LOC35 = 0;
		LOC35 = getsyssym_259041(((NimStringDesc*) &TMP3577));
		LOC36 = 0;
		LOC36 = newsymnode_217234(LOC35);
		add_216114(LOC34, LOC36);
		LOC37 = 0;
		LOC37 = getsyssym_259041(((NimStringDesc*) &TMP3578));
		LOC38 = 0;
		LOC38 = newsymnode_217234(LOC37);
		ids = (Tnodeseq215784*) incrSeqV2(&(ids)->Sup, sizeof(Tnode215790*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len]), LOC38);
		++ids->Sup.len;
		ids = (Tnodeseq215784*) incrSeqV2(&(ids)->Sup, sizeof(Tnode215790*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len]), emptynode_216801);
		++ids->Sup.len;
		LOC39 = 0;
		LOC39 = HEX5BHEX5D_216238(doblk, ((NI) 3));
		LOC40 = 0;
		LOC40 = newnode_217601(((NU8) 35), (*n).info, ids, NIM_NIL);
		add_216114(LOC39, LOC40);
	}
	LA32: ;
	tmpl = semtemplatedef_443296(c, doblk);
	asgnRefNoCycle((void**) (&quotes->data[((NI) 0)]), HEX5BHEX5D_216238(tmpl, ((NI) 0)));
	LOC41 = 0;
	LOC41 = (Tnodeseq215784*) newSeq((&NTI215784), 2);
	memset((void*)LOC42, 0, sizeof(LOC42));
	LOC43 = 0;
	LOC43 = getmagicsym_465795(((NU8) 23));
	LOC42[0] = newsymnode_217234(LOC43);
	LOC42[1] = newnode_217601(((NU8) 27), (*n).info, quotes, NIM_NIL);
	asgnRefNoCycle((void**) (&LOC41->data[0]), LOC42[0]);
	asgnRefNoCycle((void**) (&LOC41->data[1]), LOC42[1]);
	result = newnode_217601(((NU8) 27), (*n).info, LOC41, NIM_NIL);
	result = semexpandtoast_465875(c, result);
	return result;
}

N_NIMCALL(Ttype215828*, createflowvar_466475)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info) {
	Ttype215828* result;
	Tsym215822* LOC1;
	result = 0;
	result = newtype_218107(((NU8) 9), (*c).module);
	LOC1 = 0;
	LOC1 = getcompilerproc_259746(((NimStringDesc*) &TMP3583));
	addsonskipintlit_259678(result, (*LOC1).typ);
	addsonskipintlit_259678(result, t);
	result = instgenericcontainer_429096(c, info, result, NIM_FALSE);
	return result;
}

N_NIMCALL(Tsym215822*, instantiatecreateflowvarcall_466482)(Tcontext265020* c, Ttype215828* t, Tlineinfo183337 info) {
	Tsym215822* result;
	Tsym215822* sym;
	Tidtable215840 bindings;
	Tnode215790* LOC5;
	Tidobj190006* LOC6;
	TNimObject* LOC7;
	result = 0;
	sym = getcompilerproc_259746(((NimStringDesc*) &TMP3584));
	{
		if (!(sym == NIM_NIL)) goto LA3;
		localerror_188080(info, ((NU16) 68), ((NimStringDesc*) &TMP3584));
	}
	LA3: ;
	memset((void*)(&bindings), 0, sizeof(bindings));
	initidtable_219033((&bindings));
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_216238((*sym).ast, ((NI) 2));
	LOC6 = 0;
	LOC6 = &(*(*LOC5).kindU.S6.sons->data[((NI) 0)]).typ->Sup;
	LOC7 = 0;
	LOC7 = &t->Sup.Sup;
	idtableput_222115((&bindings), LOC6, LOC7);
	result = (*c).semgenerateinstance.ClEnv? (*c).semgenerateinstance.ClPrc(c, sym, bindings, info, (*c).semgenerateinstance.ClEnv):((TMP3585)((*c).semgenerateinstance.ClPrc))(c, sym, bindings, info);
	{
		if (!(((*result).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0)) goto LA10;
		(*result).flags = ((*result).flags & ~ 65632);
		asgnRefNoCycle((void**) (&(*result).loc.r), NIM_NIL);
	}
	LA10: ;
	return result;
}

N_NIMCALL(Tnode215790*, semmagic_466541)(Tcontext265020* c, Tnode215790* n, Tsym215822* s, NU16 flags) {
	Tnode215790* result;
	result = 0;
	result = n;
	switch ((*s).magic) {
	case ((NU8) 13):
	{
		checksonslen_265958(n, ((NI) 2));
		result = semaddr_462003(c, (*n).kindU.S6.sons->data[((NI) 1)], eqStrings((*(*s).name).s, ((NimStringDesc*) &TMP3374)));
	}
	break;
	case ((NU8) 14):
	{
		checksonslen_265958(n, ((NI) 2));
		result = semtypeof_462043(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 1):
	{
		Tnode215790* LOC4;
		LOC4 = 0;
		LOC4 = setms_466534(n, s);
		result = semdefined_465712(c, LOC4, NIM_FALSE);
	}
	break;
	case ((NU8) 2):
	{
		Tnode215790* LOC6;
		LOC6 = 0;
		LOC6 = setms_466534(n, s);
		result = semdefined_465712(c, LOC6, NIM_TRUE);
	}
	break;
	case ((NU8) 3):
	{
		Tnode215790* LOC8;
		LOC8 = 0;
		LOC8 = setms_466534(n, s);
		result = semcompiles_466441(c, LOC8, flags);
	}
	break;
	case ((NU8) 7):
	{
		Tnode215790* LOC10;
		LOC10 = 0;
		LOC10 = setms_466534(n, s);
		result = semlowhigh_460622(c, LOC10, ((NU8) 7));
	}
	break;
	case ((NU8) 8):
	{
		Tnode215790* LOC12;
		LOC12 = 0;
		LOC12 = setms_466534(n, s);
		result = semlowhigh_460622(c, LOC12, ((NU8) 8));
	}
	break;
	case ((NU8) 9):
	{
		Tnode215790* LOC14;
		LOC14 = 0;
		LOC14 = setms_466534(n, s);
		result = semsizeof_460666(c, LOC14);
	}
	break;
	case ((NU8) 11):
	{
		Tnode215790* LOC16;
		LOC16 = 0;
		LOC16 = setms_466534(n, s);
		result = semis_460880(c, LOC16);
	}
	break;
	case ((NU8) 12):
	{
		Tnode215790* LOC18;
		LOC18 = 0;
		LOC18 = setms_466534(n, s);
		result = semof_460674(c, LOC18);
	}
	break;
	case ((NU8) 18):
	{
		result = semshallowcopy_462352(c, n, flags);
	}
	break;
	case ((NU8) 23):
	{
		result = semexpandtoast_466056(c, n, s, flags);
	}
	break;
	case ((NU8) 24):
	{
		result = semquoteast_426286(c, n);
	}
	break;
	case ((NU8) 153):
	{
		Tnode215790* LOC23;
		NimStringDesc* LOC24;
		checksonslen_265958(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = HEX5BHEX5D_216238(n, ((NI) 1));
		LOC24 = 0;
		LOC24 = rendertree_234044(LOC23, 4);
		result = newstrnodet_276024(LOC24, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 28)));
	}
	break;
	case ((NU8) 154):
	{
		Tnode215790* x;
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = experimentalmode_265970(c);
			if (!!(LOC28)) goto LA29;
			localerror_188085((*n).info, ((NimStringDesc*) &TMP3580));
		}
		LA29: ;
		result = setms_466534(n, s);
		x = lastson_218364(n);
		{
			if (!((*x).kind == ((NU8) 52))) goto LA33;
			x = (*x).kindU.S6.sons->data[((NI) 6)];
		}
		LA33: ;
		(*c).inparallelstmt += ((NI) 1);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semstmt_426250(c, x));
		(*c).inparallelstmt -= ((NI) 1);
	}
	break;
	case ((NU8) 201):
	{
		Ttype215828* typ;
		NI LOC40;
		Tnode215790* LOC41;
		result = setms_466534(n, s);
		{
			NI i_466602;
			NI HEX3Atmp_466658;
			NI LOC37;
			NI res_466661;
			i_466602 = 0;
			HEX3Atmp_466658 = 0;
			LOC37 = 0;
			LOC37 = len_216059(n);
			HEX3Atmp_466658 = (LOC37 - 1);
			res_466661 = ((NI) 1);
			{
				while (1) {
					if (!(res_466661 <= HEX3Atmp_466658)) goto LA39;
					i_466602 = res_466661;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_466602]), semexpr_426201(c, (*n).kindU.S6.sons->data[i_466602], 0));
					res_466661 += ((NI) 1);
				} LA39: ;
			}
		}
		LOC40 = 0;
		LOC40 = len_216059(result);
		LOC41 = 0;
		LOC41 = HEX5BHEX5D_216238(result, (NI)(LOC40 - ((NI) 1)));
		typ = (*LOC41).typ;
		{
			NIM_BOOL LOC44;
			Tsym215822* LOC53;
			Tnode215790* LOC54;
			LOC44 = 0;
			LOC44 = isemptytype_220513(typ);
			if (!!(LOC44)) goto LA45;
			{
				NU8 LOC49;
				LOC49 = 0;
				LOC49 = spawnresult_378947(typ, (((NI) 0) < (*c).inparallelstmt));
				if (!(LOC49 == ((NU8) 1))) goto LA50;
				asgnRefNoCycle((void**) (&(*result).typ), createflowvar_466475(c, typ, (*n).info));
			}
			goto LA47;
			LA50: ;
			{
				asgnRefNoCycle((void**) (&(*result).typ), typ);
			}
			LA47: ;
			LOC53 = 0;
			LOC53 = instantiatecreateflowvarcall_466482(c, typ, (*n).info);
			LOC54 = 0;
			LOC54 = newsymnode_217234(LOC53);
			add_216114(result, LOC54);
		}
		goto LA42;
		LA45: ;
		{
			add_216114(result, emptynode_216801);
		}
		LA42: ;
	}
	break;
	case ((NU8) 206):
	{
		Tnode215790* LOC57;
		result = setms_466534(n, s);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		LOC57 = 0;
		LOC57 = HEX5BHEX5D_216238(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*result).typ), (*LOC57).typ);
	}
	break;
	case ((NU8) 16):
	{
		Tnode215790* norig;
		norig = copytree_219822(n);
		result = semoverloadedcallanalyseeffects_462936(c, n, norig, flags);
		{
			if (!(result == NIM_NIL)) goto LA61;
			result = errornode_265905(c, n);
		}
		goto LA59;
		LA61: ;
		{
			Tsym215822* callee;
			callee = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
			{
				if (!((*callee).magic == ((NU8) 0))) goto LA66;
				semfinishoperands_369269(c, result);
			}
			LA66: ;
			activate_426282(c, result);
			fixabstracttype_461360(c, result);
			analyseifaddresstakenincall_461828(c, result);
			{
				if (!!(((*callee).magic == ((NU8) 0)))) goto LA70;
				result = magicsafteroverloadresolution_462423(c, result, flags);
			}
			LA70: ;
		}
		LA59: ;
	}
	break;
	default:
	{
		result = semdirectop_426985(c, n, flags);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, semopaux_460920)(Tcontext265020* c, Tnode215790* n) {
	{
		NI i_460938;
		NI HEX3Atmp_460959;
		NI LOC2;
		NI res_460962;
		i_460938 = 0;
		HEX3Atmp_460959 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_460959 = (NI)(LOC2 - ((NI) 1));
		res_460962 = ((NI) 1);
		{
			while (1) {
				Tnode215790* a;
				if (!(res_460962 <= HEX3Atmp_460959)) goto LA4;
				i_460938 = res_460962;
				a = (*n).kindU.S6.sons->data[i_460938];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tlineinfo183337 info;
					Tident190012* LOC12;
					LOC7 = 0;
					LOC7 = ((*a).kind == ((NU8) 33));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_218351(a);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					info = (*(*a).kindU.S6.sons->data[((NI) 0)]).info;
					LOC12 = 0;
					LOC12 = considerquotedident_270004((*a).kindU.S6.sons->data[((NI) 0)]);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newidentnode_217228(LOC12, info));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_426208(c, (*a).kindU.S6.sons->data[((NI) 1)], 32));
					asgnRefNoCycle((void**) (&(*a).typ), (*(*a).kindU.S6.sons->data[((NI) 1)]).typ);
				}
				goto LA5;
				LA10: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_460938]), semexprwithtype_426208(c, a, 32));
				}
				LA5: ;
				res_460962 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, resolveindirectcall_463065)(Tcontext265020* c, Tnode215790* n, Tnode215790* norig, Ttype215828* t, Tcandidate363206* Result) {
	initcandidate_363257(c, Result, t);
	matches_369311(c, n, norig, Result);
	{
		if (!!(((*Result).state == ((NU8) 1)))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = experimentalmode_265970(c);
			if (!(LOC7)) goto LA8;
			LOC7 = canderef_432509(n);
			LA8: ;
			if (!LOC7) goto LA9;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_432539((*n).kindU.S6.sons->data[((NI) 1)]));
			initcandidate_363257(c, Result, t);
			matches_369311(c, n, norig, Result);
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode215790*, overloadedcallopr_460966)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tident190012* par;
	result = 0;
	par = getident_190441(((NimStringDesc*) &TMP3285));
	{
		Tsym215822* LOC3;
		LOC3 = 0;
		LOC3 = searchinscopes_270131(c, par);
		if (!(LOC3 == NIM_NIL)) goto LA4;
		result = NIM_NIL;
	}
	goto LA1;
	LA4: ;
	{
		Tnode215790* LOC7;
		result = newnodei_217248(((NU8) 27), (*n).info);
		LOC7 = 0;
		LOC7 = newidentnode_217228(par, (*n).info);
		addson_217807(result, LOC7);
		{
			NI i_460995;
			NI HEX3Atmp_460998;
			NI LOC9;
			NI res_461001;
			i_460995 = 0;
			HEX3Atmp_460998 = 0;
			LOC9 = 0;
			LOC9 = sonslen_218351(n);
			HEX3Atmp_460998 = (NI)(LOC9 - ((NI) 1));
			res_461001 = ((NI) 0);
			{
				while (1) {
					if (!(res_461001 <= HEX3Atmp_460998)) goto LA11;
					i_460995 = res_461001;
					addson_217807(result, (*n).kindU.S6.sons->data[i_460995]);
					res_461001 += ((NI) 1);
				} LA11: ;
			}
		}
		result = semexpr_426201(c, result, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semindirectop_463088)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tnode215790* prc;
	Tnode215790* norig;
	Ttype215828* t;
{	result = 0;
	result = NIM_NIL;
	checkminsonslen_265962(n, ((NI) 1));
	prc = (*n).kindU.S6.sons->data[((NI) 0)];
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 45))) goto LA3;
		checksonslen_265958((*n).kindU.S6.sons->data[((NI) 0)], ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semfieldaccess_458811(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 25))) goto LA7;
			result = (*n).kindU.S6.sons->data[((NI) 0)];
			(*result).kind = ((NU8) 27);
			(*result).flags |= ((NU16)1)<<((((NU8) 11))%(sizeof(NU16)*8));
			{
				NI i_463141;
				NI HEX3Atmp_463369;
				NI LOC10;
				NI res_463372;
				i_463141 = 0;
				HEX3Atmp_463369 = 0;
				LOC10 = 0;
				LOC10 = sonslen_218351(n);
				HEX3Atmp_463369 = (NI)(LOC10 - ((NI) 1));
				res_463372 = ((NI) 1);
				{
					while (1) {
						if (!(res_463372 <= HEX3Atmp_463369)) goto LA12;
						i_463141 = res_463372;
						addson_217807(result, (*n).kindU.S6.sons->data[i_463141]);
						res_463372 += ((NI) 1);
					} LA12: ;
				}
			}
			result = semexpr_426201(c, result, flags);
			goto BeforeRet;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		Ttype215828* t;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		t = (*(*n).kindU.S6.sons->data[((NI) 0)]).typ;
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = !((t == NIM_NIL));
			if (!(LOC16)) goto LA17;
			LOC16 = ((*t).kind == ((NU8) 23));
			LA17: ;
			if (!LOC16) goto LA18;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newderef_377006((*n).kindU.S6.sons->data[((NI) 0)]));
		}
		LA18: ;
	}
	LA1: ;
	norig = copytree_219822(n);
	semopaux_460920(c, n);
	t = NIM_NIL;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL))) goto LA22;
		t = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576000));
	}
	LA22: ;
	{
		NIM_BOOL LOC26;
		Tcandidate363206 m;
		LOC26 = 0;
		LOC26 = !((t == NIM_NIL));
		if (!(LOC26)) goto LA27;
		LOC26 = ((*t).kind == ((NU8) 25));
		LA27: ;
		if (!LOC26) goto LA28;
		memset((void*)(&m), 0, sizeof(m));
		chckNil((void*)(&m));
		memset((void*)(&m), 0, sizeof(m));
		resolveindirectcall_463065(c, n, norig, t, (&m));
		{
			if (!!((m.state == ((NU8) 1)))) goto LA32;
			{
				if (!(((NI) 0) < (*c).compilescontextid)) goto LA36;
				globalerror_188071((*n).info, ((NU16) 133), ((NimStringDesc*) &TMP3155));
				result = emptynode_216801;
				goto BeforeRet;
			}
			goto LA34;
			LA36: ;
			{
				NIM_BOOL haserrortype;
				NimStringDesc* msg;
				haserrortype = NIM_FALSE;
				msg = msgkindtostring_184743(((NU16) 133));
				{
					NI i_463244;
					NI HEX3Atmp_463378;
					NI LOC40;
					NI res_463381;
					i_463244 = 0;
					HEX3Atmp_463378 = 0;
					LOC40 = 0;
					LOC40 = sonslen_218351(n);
					HEX3Atmp_463378 = (NI)(LOC40 - ((NI) 1));
					res_463381 = ((NI) 1);
					{
						while (1) {
							Ttype215828* nt;
							NimStringDesc* LOC47;
							if (!(res_463381 <= HEX3Atmp_463378)) goto LA42;
							i_463244 = res_463381;
							{
								if (!(((NI) 1) < i_463244)) goto LA45;
								msg = resizeString(msg, 2);
appendString(msg, ((NimStringDesc*) &TMP3524));
							}
							LA45: ;
							nt = (*(*n).kindU.S6.sons->data[i_463244]).typ;
							LOC47 = 0;
							LOC47 = typetostring_241017(nt, ((NU8) 0));
							msg = resizeString(msg, LOC47->Sup.len + 0);
appendString(msg, LOC47);
							{
								if (!((*nt).kind == ((NU8) 50))) goto LA50;
								haserrortype = NIM_TRUE;
								goto LA39;
							}
							LA50: ;
							res_463381 += ((NI) 1);
						} LA42: ;
					}
				} LA39: ;
				{
					NimStringDesc* LOC56;
					NimStringDesc* LOC57;
					NimStringDesc* LOC58;
					if (!!(haserrortype)) goto LA54;
					LOC56 = 0;
					LOC57 = 0;
					LOC57 = msgkindtostring_184743(((NU16) 134));
					LOC58 = 0;
					LOC58 = typetostring_241017((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, ((NU8) 0));
					LOC56 = rawNewString(LOC57->Sup.len + LOC58->Sup.len + 3);
appendString(LOC56, ((NimStringDesc*) &TMP3586));
appendString(LOC56, LOC57);
appendString(LOC56, ((NimStringDesc*) &TMP3527));
appendString(LOC56, LOC58);
					msg = resizeString(msg, LOC56->Sup.len + 0);
appendString(msg, LOC56);
					localerror_188080((*n).info, ((NU16) 4), msg);
				}
				LA54: ;
				result = errornode_265905(c, n);
				goto BeforeRet;
			}
			LA34: ;
			result = NIM_NIL;
		}
		goto LA30;
		LA32: ;
		{
			result = m.call;
			instgenericconverterssons_431875(c, result, (&m));
		}
		LA30: ;
		{
			if (!!((((*t).flags &(1U<<((NU)(((NU8) 1))&31U)))!=0))) goto LA62;
			(*(*(*c).p).owner).flags |= ((NU32)1)<<((((NU8) 11))%(sizeof(NU32)*8));
		}
		LA62: ;
	}
	goto LA24;
	LA28: ;
	{
		NIM_BOOL LOC65;
		LOC65 = 0;
		LOC65 = !((t == NIM_NIL));
		if (!(LOC65)) goto LA66;
		LOC65 = ((*t).kind == ((NU8) 8));
		LA66: ;
		if (!LOC65) goto LA67;
		{
			NI LOC71;
			LOC71 = 0;
			LOC71 = len_216059(n);
			if (!(LOC71 == ((NI) 1))) goto LA72;
			result = semobjconstr_463060(c, n, flags);
			goto BeforeRet;
		}
		LA72: ;
		result = semconv_460486(c, n);
		goto BeforeRet;
	}
	goto LA24;
	LA67: ;
	{
		result = overloadedcallopr_460966(c, n);
		{
			if (!(result == NIM_NIL)) goto LA77;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), prc);
			asgnRefNoCycle((void**) (&(*norig).kindU.S6.sons->data[((NI) 0)]), prc);
			(*n).flags |= ((NU16)1)<<((((NU8) 12))%(sizeof(NU16)*8));
			result = semoverloadedcallanalyseeffects_462936(c, n, norig, flags);
			{
				if (!(result == NIM_NIL)) goto LA81;
				result = errornode_265905(c, n);
				goto BeforeRet;
			}
			LA81: ;
		}
		goto LA75;
		LA77: ;
		{
			if (!!(((*result).kind == ((NU8) 27) || (*result).kind == ((NU8) 29) || (*result).kind == ((NU8) 30) || (*result).kind == ((NU8) 31) || (*result).kind == ((NU8) 26) || (*result).kind == ((NU8) 28) || (*result).kind == ((NU8) 32)))) goto LA84;
			goto BeforeRet;
		}
		goto LA75;
		LA84: ;
		LA75: ;
	}
	LA24: ;
	fixabstracttype_461360(c, result);
	analyseifaddresstakenincall_461828(c, result);
	{
		NIM_BOOL LOC88;
		LOC88 = 0;
		LOC88 = ((*(*result).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC88)) goto LA89;
		LOC88 = !(((*(*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU8) 0)));
		LA89: ;
		if (!LOC88) goto LA90;
		result = magicsafteroverloadresolution_462423(c, result, flags);
	}
	LA90: ;
	result = evalatcompiletime_462503(c, result);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, shouldbebracketexpr_467961)(Tnode215790* n) {
	NIM_BOOL result;
	Tnode215790* a;
{	result = 0;
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	{
		Tnode215790* b;
		if (!((*a).kind == ((NU8) 27) || (*a).kind == ((NU8) 29) || (*a).kind == ((NU8) 30) || (*a).kind == ((NU8) 31) || (*a).kind == ((NU8) 26) || (*a).kind == ((NU8) 28) || (*a).kind == ((NU8) 32))) goto LA3;
		b = HEX5BHEX5D_216238(a, ((NI) 0));
		{
			if (!((*b).kind == ((NU8) 56) || (*b).kind == ((NU8) 57))) goto LA7;
			{
				NI i_468050;
				Slice88082 HEX3Atmp_468108;
				NI LOC10;
				i_468050 = 0;
				memset((void*)(&HEX3Atmp_468108), 0, sizeof(HEX3Atmp_468108));
				LOC10 = 0;
				LOC10 = len_216059(b);
				HEX3Atmp_468108 = HEX2EHEX2E_102424(((NI) 0), (LOC10 - 1));
				{
					NI x_468112;
					NI HEX3Atmp_468114;
					NI HEX3Atmp_468116;
					NI res_468118;
					x_468112 = 0;
					HEX3Atmp_468114 = 0;
					HEX3Atmp_468116 = 0;
					HEX3Atmp_468114 = HEX3Atmp_468108.a;
					HEX3Atmp_468116 = HEX3Atmp_468108.b;
					res_468118 = HEX3Atmp_468114;
					{
						while (1) {
							if (!(res_468118 <= HEX3Atmp_468116)) goto LA13;
							x_468112 = res_468118;
							i_468050 = x_468112;
							{
								Tnode215790* LOC16;
								Tnode215790* be;
								LOC16 = 0;
								LOC16 = HEX5BHEX5D_216238(b, i_468050);
								if (!((*(*LOC16).kindU.S4.sym).magic == ((NU8) 4))) goto LA17;
								be = newnodei_217248(((NU8) 42), (*n).info);
								{
									NI i_468089;
									Slice88082 HEX3Atmp_468094;
									NI LOC20;
									i_468089 = 0;
									memset((void*)(&HEX3Atmp_468094), 0, sizeof(HEX3Atmp_468094));
									LOC20 = 0;
									LOC20 = len_216059(a);
									HEX3Atmp_468094 = HEX2EHEX2E_102424(((NI) 1), (LOC20 - 1));
									{
										NI x_468098;
										NI HEX3Atmp_468100;
										NI HEX3Atmp_468102;
										NI res_468104;
										x_468098 = 0;
										HEX3Atmp_468100 = 0;
										HEX3Atmp_468102 = 0;
										HEX3Atmp_468100 = HEX3Atmp_468094.a;
										HEX3Atmp_468102 = HEX3Atmp_468094.b;
										res_468104 = HEX3Atmp_468100;
										{
											while (1) {
												Tnode215790* LOC24;
												if (!(res_468104 <= HEX3Atmp_468102)) goto LA23;
												x_468098 = res_468104;
												i_468089 = x_468098;
												LOC24 = 0;
												LOC24 = HEX5BHEX5D_216238(a, i_468089);
												add_216114(be, LOC24);
												res_468104 += ((NI) 1);
											} LA23: ;
										}
									}
								}
								asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), be);
								result = NIM_TRUE;
								goto BeforeRet;
							}
							LA17: ;
							res_468118 += ((NI) 1);
						} LA13: ;
					}
				}
			}
		}
		LA7: ;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, setgenericparams_468122)(Tcontext265020* c, Tnode215790* n) {
	{
		NI i_468144;
		NI HEX3Atmp_468146;
		NI LOC2;
		NI res_468149;
		i_468144 = 0;
		HEX3Atmp_468146 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_468146 = (LOC2 - 1);
		res_468149 = ((NI) 1);
		{
			while (1) {
				Tnode215790* LOC5;
				Tnode215790* LOC6;
				if (!(res_468149 <= HEX3Atmp_468146)) goto LA4;
				i_468144 = res_468149;
				LOC5 = 0;
				LOC5 = HEX5BHEX5D_216238(n, i_468144);
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_216238(n, i_468144);
				asgnRefNoCycle((void**) (&(*LOC5).typ), semtypenode_426245(c, LOC6, NIM_NIL));
				res_468149 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode215790*, semarrayaccess_464902)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tnode215790* oldbracketexpr;
	result = 0;
	oldbracketexpr = (*(*c).p).bracketexpr;
	result = semsubscript_462062(c, n, flags);
	{
		Tident190012* LOC5;
		Tnode215790* LOC6;
		if (!(result == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC5 = getident_190441(((NimStringDesc*) &TMP3587));
		LOC6 = 0;
		LOC6 = buildoverloadedsubscripts_464683(n, LOC5);
		result = semexpr_426201(c, LOC6, 0);
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	return result;
}

N_NIMCALL(NU8, checkpar_467056)(Tnode215790* n) {
	NU8 result;
	NI length;
{	result = 0;
	length = sonslen_218351(n);
	{
		if (!(length == ((NI) 0))) goto LA3;
		result = ((NU8) 3);
	}
	goto LA1;
	LA3: ;
	{
		if (!(length == ((NI) 1))) goto LA6;
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 34))) goto LA10;
			result = ((NU8) 2);
		}
		goto LA8;
		LA10: ;
		{
			result = ((NU8) 1);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 34))) goto LA16;
			result = ((NU8) 2);
		}
		goto LA14;
		LA16: ;
		{
			result = ((NU8) 3);
		}
		LA14: ;
		{
			NI i_467092;
			NI HEX3Atmp_467138;
			NI res_467141;
			i_467092 = 0;
			HEX3Atmp_467138 = 0;
			HEX3Atmp_467138 = (NI)(length - ((NI) 1));
			res_467141 = ((NI) 0);
			{
				while (1) {
					if (!(res_467141 <= HEX3Atmp_467138)) goto LA21;
					i_467092 = res_467141;
					{
						if (!(result == ((NU8) 2))) goto LA24;
						{
							NIM_BOOL LOC28;
							LOC28 = 0;
							LOC28 = !(((*(*n).kindU.S6.sons->data[i_467092]).kind == ((NU8) 34)));
							if (LOC28) goto LA29;
							LOC28 = !(((*(*(*n).kindU.S6.sons->data[i_467092]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3) || (*(*(*n).kindU.S6.sons->data[i_467092]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2)));
							LA29: ;
							if (!LOC28) goto LA30;
							localerror_188080((*(*n).kindU.S6.sons->data[i_467092]).info, ((NU16) 174), ((NimStringDesc*) &TMP3155));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA30: ;
					}
					goto LA22;
					LA24: ;
					{
						{
							if (!((*(*n).kindU.S6.sons->data[i_467092]).kind == ((NU8) 34))) goto LA35;
							localerror_188080((*(*n).kindU.S6.sons->data[i_467092]).info, ((NU16) 175), ((NimStringDesc*) &TMP3155));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA35: ;
					}
					LA22: ;
					res_467141 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semtuplepositionsconstr_467244)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Ttype215828* typ;
	result = 0;
	result = n;
	typ = newtypes_265185(((NU8) 18), c);
	{
		NI i_467262;
		NI HEX3Atmp_467280;
		NI LOC2;
		NI res_467283;
		i_467262 = 0;
		HEX3Atmp_467280 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_467280 = (NI)(LOC2 - ((NI) 1));
		res_467283 = ((NI) 0);
		{
			while (1) {
				if (!(res_467283 <= HEX3Atmp_467280)) goto LA4;
				i_467262 = res_467283;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_467262]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[i_467262], (flags & 64)));
				addsonskipintlit_259678(typ, (*(*n).kindU.S6.sons->data[i_467262]).typ);
				res_467283 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(NIM_BOOL, istupletype_467287)(Tnode215790* n) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_216059(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	{
		NI i_467304;
		NI HEX3Atmp_467327;
		NI LOC7;
		NI res_467330;
		i_467304 = 0;
		HEX3Atmp_467327 = 0;
		LOC7 = 0;
		LOC7 = len_216059(n);
		HEX3Atmp_467327 = (NI)(LOC7 - ((NI) 1));
		res_467330 = ((NI) 0);
		{
			while (1) {
				if (!(res_467330 <= HEX3Atmp_467327)) goto LA9;
				i_467304 = res_467330;
				{
					NIM_BOOL LOC12;
					Tnode215790* LOC13;
					Tnode215790* LOC15;
					LOC12 = 0;
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_216238(n, i_467304);
					LOC12 = ((*LOC13).typ == NIM_NIL);
					if (LOC12) goto LA14;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_216238(n, i_467304);
					LOC12 = !(((*(*LOC15).typ).kind == ((NU8) 8)));
					LA14: ;
					if (!LOC12) goto LA16;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA16: ;
				res_467330 += ((NI) 1);
			} LA9: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semtuplefieldsconstr_467145)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Ttype215828* typ;
	Intset212035 ids;
	result = 0;
	result = newnodei_217248(((NU8) 37), (*n).info);
	typ = newtypes_265185(((NU8) 18), c);
	asgnRefNoCycle((void**) (&(*typ).n), newnodei_217248(((NU8) 138), (*n).info));
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_212885((&ids));
	{
		NI i_467164;
		NI HEX3Atmp_467237;
		NI LOC2;
		NI res_467240;
		i_467164 = 0;
		HEX3Atmp_467237 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_467237 = (NI)(LOC2 - ((NI) 1));
		res_467240 = ((NI) 0);
		{
			while (1) {
				Tident190012* id;
				Tsym215822* f;
				Tnode215790* LOC24;
				if (!(res_467240 <= HEX3Atmp_467237)) goto LA4;
				i_467164 = res_467240;
				{
					NIM_BOOL LOC7;
					Tnode215790* LOC8;
					Tnode215790* LOC10;
					Tnode215790* LOC11;
					LOC7 = 0;
					LOC8 = 0;
					LOC8 = HEX5BHEX5D_216238(n, i_467164);
					LOC7 = !(((*LOC8).kind == ((NU8) 34)));
					if (LOC7) goto LA9;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_216238(n, i_467164);
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_216238(LOC10, ((NI) 0));
					LOC7 = !(((*LOC11).kind == ((NU8) 3) || (*LOC11).kind == ((NU8) 2)));
					LA9: ;
					if (!LOC7) goto LA12;
					illformedast_265950((*n).kindU.S6.sons->data[i_467164]);
				}
				LA12: ;
				id = 0;
				{
					if (!((*(*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2))) goto LA16;
					id = (*(*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident;
				}
				goto LA14;
				LA16: ;
				{
					id = (*(*(*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name;
				}
				LA14: ;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = containsorincl_212862((&ids), (*id).Sup.id);
					if (!LOC21) goto LA22;
					localerror_188080((*(*n).kindU.S6.sons->data[i_467164]).info, ((NU16) 90), (*id).s);
				}
				LA22: ;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_426208(c, (*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 1)], (flags & 64)));
				f = newsyms_426889(((NU8) 18), (*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 0)], c);
				asgnRefNoCycle((void**) (&(*f).typ), skipintlit_259651((*(*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 1)]).typ));
				(*f).position = i_467164;
				rawaddson_219408(typ, (*f).typ);
				LOC24 = 0;
				LOC24 = newsymnode_217234(f);
				addson_217807((*typ).n, LOC24);
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_467164]).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(f));
				addson_217807(result, (*n).kindU.S6.sons->data[i_467164]);
				res_467240 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(Tnode215790*, semsetconstr_466846)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217248(((NU8) 39), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_265185(((NU8) 19), c));
	{
		NI LOC3;
		Ttype215828* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_265185(((NU8) 3), c);
		rawaddson_219408((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Ttype215828* typ;
		typ = NIM_NIL;
		{
			NI i_466863;
			NI HEX3Atmp_466968;
			NI LOC9;
			NI res_466971;
			i_466863 = 0;
			HEX3Atmp_466968 = 0;
			LOC9 = 0;
			LOC9 = sonslen_218351(n);
			HEX3Atmp_466968 = (NI)(LOC9 - ((NI) 1));
			res_466971 = ((NI) 0);
			{
				while (1) {
					if (!(res_466971 <= HEX3Atmp_466968)) goto LA11;
					i_466863 = res_466971;
					{
						NIM_BOOL LOC14;
						LOC14 = 0;
						LOC14 = isrange_240470((*n).kindU.S6.sons->data[i_466863]);
						if (!LOC14) goto LA15;
						checksonslen_265958((*n).kindU.S6.sons->data[i_466863], ((NI) 3));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_466863]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_426208(c, (*(*n).kindU.S6.sons->data[i_466863]).kindU.S6.sons->data[((NI) 1)], 0));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_466863]).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_426208(c, (*(*n).kindU.S6.sons->data[i_466863]).kindU.S6.sons->data[((NI) 2)], 0));
						{
							if (!(typ == NIM_NIL)) goto LA19;
							typ = skiptypes_219113((*(*(*n).kindU.S6.sons->data[i_466863]).kindU.S6.sons->data[((NI) 1)]).typ, 8423424);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_466863]).typ), (*(*(*n).kindU.S6.sons->data[i_466863]).kindU.S6.sons->data[((NI) 2)]).typ);
					}
					goto LA12;
					LA15: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_466863]).kind == ((NU8) 44))) goto LA22;
						{
							if (!(typ == NIM_NIL)) goto LA26;
							typ = skiptypes_219113((*(*(*n).kindU.S6.sons->data[i_466863]).kindU.S6.sons->data[((NI) 0)]).typ, 8423424);
						}
						LA26: ;
					}
					goto LA12;
					LA22: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_466863]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[i_466863], 0));
						{
							if (!(typ == NIM_NIL)) goto LA31;
							typ = skiptypes_219113((*(*n).kindU.S6.sons->data[i_466863]).typ, 8423424);
						}
						LA31: ;
					}
					LA12: ;
					res_466971 += ((NI) 1);
				} LA11: ;
			}
		}
		{
			NIM_BOOL LOC35;
			Ttype215828* LOC38;
			LOC35 = 0;
			LOC35 = isordinaltype_241057(typ);
			if (!!(LOC35)) goto LA36;
			localerror_188080((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3155));
			LOC38 = 0;
			LOC38 = getsystype_259130(((NU8) 31));
			typ = makerangetype_265915(c, IL64(0), IL64(65535), (*n).info, LOC38);
		}
		goto LA33;
		LA36: ;
		{
			NI64 LOC40;
			Ttype215828* LOC43;
			LOC40 = 0;
			LOC40 = lengthord_241007(typ);
			if (!(IL64(65536) < LOC40)) goto LA41;
			LOC43 = 0;
			LOC43 = getsystype_259130(((NU8) 31));
			typ = makerangetype_265915(c, IL64(0), IL64(65535), (*n).info, LOC43);
		}
		goto LA33;
		LA41: ;
		LA33: ;
		addsonskipintlit_259678((*result).typ, typ);
		{
			NI i_466946;
			NI HEX3Atmp_466977;
			NI LOC45;
			NI res_466980;
			i_466946 = 0;
			HEX3Atmp_466977 = 0;
			LOC45 = 0;
			LOC45 = sonslen_218351(n);
			HEX3Atmp_466977 = (NI)(LOC45 - ((NI) 1));
			res_466980 = ((NI) 0);
			{
				while (1) {
					Tnode215790* m;
					if (!(res_466980 <= HEX3Atmp_466977)) goto LA47;
					i_466946 = res_466980;
					m = 0;
					{
						NIM_BOOL LOC50;
						Tnode215790* LOC53;
						Tnode215790* LOC54;
						LOC50 = 0;
						LOC50 = isrange_240470((*n).kindU.S6.sons->data[i_466946]);
						if (!LOC50) goto LA51;
						m = newnodei_217248(((NU8) 44), (*(*n).kindU.S6.sons->data[i_466946]).info);
						LOC53 = 0;
						LOC53 = fitnode_426230(c, typ, (*(*n).kindU.S6.sons->data[i_466946]).kindU.S6.sons->data[((NI) 1)]);
						addson_217807(m, LOC53);
						LOC54 = 0;
						LOC54 = fitnode_426230(c, typ, (*(*n).kindU.S6.sons->data[i_466946]).kindU.S6.sons->data[((NI) 2)]);
						addson_217807(m, LOC54);
					}
					goto LA48;
					LA51: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_466946]).kind == ((NU8) 44))) goto LA56;
						m = (*n).kindU.S6.sons->data[i_466946];
					}
					goto LA48;
					LA56: ;
					{
						m = fitnode_426230(c, typ, (*n).kindU.S6.sons->data[i_466946]);
					}
					LA48: ;
					addson_217807(result, m);
					res_466980 += ((NI) 1);
				} LA47: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype215828*, commontype_426396)(Ttype215828* x, Ttype215828* y) {
	Ttype215828* result;
	Ttype215828* a;
	Ttype215828* b;
{	result = 0;
	{
		if (!(x == NIM_NIL)) goto LA3;
		result = x;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(y == NIM_NIL)) goto LA7;
		result = y;
		goto BeforeRet;
	}
	LA7: ;
	a = skiptypes_219113(x, 2048);
	b = skiptypes_219113(y, 2048);
	result = x;
	{
		if (!((*a).kind == ((NU8) 6) || (*a).kind == ((NU8) 5))) goto LA11;
		result = y;
	}
	goto LA9;
	LA11: ;
	{
		if (!((*b).kind == ((NU8) 6) || (*b).kind == ((NU8) 5))) goto LA14;
		result = x;
	}
	goto LA9;
	LA14: ;
	{
		if (!((*a).kind == ((NU8) 7))) goto LA17;
		result = a;
	}
	goto LA9;
	LA17: ;
	{
		if (!((*b).kind == ((NU8) 7))) goto LA20;
		result = b;
	}
	goto LA9;
	LA20: ;
	{
		if (!((*a).kind == ((NU8) 8))) goto LA23;
		{
			NIM_BOOL LOC27;
			LOC27 = 0;
			LOC27 = HEX3DHEX3D_249927((*a).sons, NIM_NIL);
			if (!LOC27) goto LA28;
			result = a;
		}
		goto LA25;
		LA28: ;
		{
			Ttype215828* LOC31;
			result = newtype_218107(((NU8) 8), (*a).owner);
			LOC31 = 0;
			LOC31 = newtype_218107(((NU8) 0), (*a).owner);
			rawaddson_219408(result, LOC31);
		}
		LA25: ;
	}
	goto LA9;
	LA23: ;
	{
		NIM_BOOL LOC33;
		NI idx;
		LOC33 = 0;
		LOC33 = ((*b).kind == ((NU8) 16) || (*b).kind == ((NU8) 4) || (*b).kind == ((NU8) 19) || (*b).kind == ((NU8) 24));
		if (!(LOC33)) goto LA34;
		LOC33 = ((*a).kind == (*b).kind);
		LA34: ;
		if (!LOC33) goto LA35;
		idx = ((*b).kind == ((NU8) 16) || (*b).kind == ((NU8) 4));
		{
			if (!((*(*a).sons->data[idx]).kind == ((NU8) 3))) goto LA39;
			result = y;
			goto BeforeRet;
		}
		LA39: ;
	}
	goto LA9;
	LA35: ;
	{
		NIM_BOOL LOC42;
		NIM_BOOL LOC43;
		NI LOC46;
		NI LOC47;
		Ttype215828* nt;
		LOC42 = 0;
		LOC43 = 0;
		LOC43 = ((*a).kind == ((NU8) 18));
		if (!(LOC43)) goto LA44;
		LOC43 = ((*b).kind == ((NU8) 18));
		LA44: ;
		LOC42 = LOC43;
		if (!(LOC42)) goto LA45;
		LOC46 = 0;
		LOC46 = len_218339(a);
		LOC47 = 0;
		LOC47 = len_218339(b);
		LOC42 = (LOC46 == LOC47);
		LA45: ;
		if (!LOC42) goto LA48;
		nt = 0;
		{
			NI i_426575;
			NI HEX3Atmp_426882;
			NI LOC51;
			NI res_426885;
			i_426575 = 0;
			HEX3Atmp_426882 = 0;
			LOC51 = 0;
			LOC51 = len_218339(a);
			HEX3Atmp_426882 = (LOC51 - 1);
			res_426885 = ((NI) 0);
			{
				while (1) {
					NIM_BOOL aempty;
					NIM_BOOL bempty;
					if (!(res_426885 <= HEX3Atmp_426882)) goto LA53;
					i_426575 = res_426885;
					aempty = isemptycontainer_250113((*a).sons->data[i_426575]);
					bempty = isemptycontainer_250113((*b).sons->data[i_426575]);
					{
						if (!!((aempty == bempty))) goto LA56;
						{
							if (!nt == 0) goto LA60;
							nt = copytype_218470(a, (*a).owner, NIM_FALSE);
						}
						LA60: ;
						{
							if (!aempty) goto LA64;
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_426575]), (*b).sons->data[i_426575]);
						}
						goto LA62;
						LA64: ;
						{
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_426575]), (*a).sons->data[i_426575]);
						}
						LA62: ;
					}
					LA56: ;
					res_426885 += ((NI) 1);
				} LA53: ;
			}
		}
		{
			if (!!(nt == 0)) goto LA69;
			result = nt;
		}
		LA69: ;
	}
	goto LA9;
	LA48: ;
	{
		NIM_BOOL LOC72;
		LOC72 = 0;
		LOC72 = ((*a).kind == ((NU8) 20));
		if (!(LOC72)) goto LA73;
		LOC72 = ((*b).kind == ((NU8) 20));
		LA73: ;
		if (!LOC72) goto LA74;
		{
			NIM_BOOL LOC78;
			Ttype215828* LOC81;
			LOC78 = 0;
			LOC78 = sametype_245628(a, b, 0);
			if (!!(LOC78)) goto LA79;
			LOC81 = 0;
			LOC81 = skiptypes_219113(a, 1048576);
			result = skipintlit_259651(LOC81);
		}
		LA79: ;
	}
	goto LA9;
	LA74: ;
	{
		NU8 k;
		k = ((NU8) 0);
		{
			if (!((*a).kind == ((NU8) 22) || (*a).kind == ((NU8) 21))) goto LA85;
			k = (*a).kind;
			{
				if (!!(((*b).kind == (*a).kind))) goto LA89;
				result = x;
				goto BeforeRet;
			}
			LA89: ;
			a = lastson_218377(a);
			b = lastson_218377(b);
		}
		LA85: ;
		{
			NIM_BOOL LOC93;
			LOC93 = 0;
			LOC93 = ((*a).kind == ((NU8) 17));
			if (!(LOC93)) goto LA94;
			LOC93 = ((*b).kind == ((NU8) 17));
			LA94: ;
			if (!LOC93) goto LA95;
			result = commonsuperclass_247850(a, b);
			{
				NIM_BOOL LOC99;
				LOC99 = 0;
				LOC99 = result == 0;
				if (LOC99) goto LA100;
				LOC99 = (result == a);
				LA100: ;
				if (!LOC99) goto LA101;
				result = x;
				goto BeforeRet;
			}
			LA101: ;
			{
				if (!(result == b)) goto LA105;
				result = y;
				goto BeforeRet;
			}
			LA105: ;
			{
				Ttype215828* r;
				if (!!((k == ((NU8) 0)))) goto LA109;
				r = result;
				result = newtype_218107(k, (*r).owner);
				addsonskipintlit_259678(result, r);
			}
			LA109: ;
		}
		LA95: ;
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semarrayconstr_461249)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	NI LOC35;
	Ttype215828* LOC36;
	result = 0;
	result = newnodei_217248(((NU8) 41), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_265185(((NU8) 4), c));
	rawaddson_219408((*result).typ, NIM_NIL);
	{
		NI LOC3;
		Ttype215828* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_218351(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_265185(((NU8) 3), c);
		rawaddson_219408((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Tnode215790* x;
		NI64 lastindex;
		Ttype215828* indextype;
		Tnode215790* yy;
		Ttype215828* typ;
		x = (*n).kindU.S6.sons->data[((NI) 0)];
		lastindex = IL64(0);
		indextype = getsystype_259130(((NU8) 31));
		{
			NIM_BOOL LOC10;
			NI LOC12;
			Tnode215790* idx;
			LOC10 = 0;
			LOC10 = ((*x).kind == ((NU8) 34));
			if (!(LOC10)) goto LA11;
			LOC12 = 0;
			LOC12 = sonslen_218351(x);
			LOC10 = (LOC12 == ((NI) 2));
			LA11: ;
			if (!LOC10) goto LA13;
			idx = semconstexpr_427473(c, (*x).kindU.S6.sons->data[((NI) 0)]);
			lastindex = getordvalue_241118(idx);
			indextype = (*idx).typ;
			x = (*x).kindU.S6.sons->data[((NI) 1)];
		}
		LA13: ;
		yy = semexprwithtype_426208(c, x, 0);
		typ = (*yy).typ;
		addson_217807(result, yy);
		{
			NI i_461284;
			NI HEX3Atmp_461345;
			NI LOC16;
			NI res_461348;
			i_461284 = 0;
			HEX3Atmp_461345 = 0;
			LOC16 = 0;
			LOC16 = sonslen_218351(n);
			HEX3Atmp_461345 = (NI)(LOC16 - ((NI) 1));
			res_461348 = ((NI) 1);
			{
				while (1) {
					Tnode215790* xx;
					if (!(res_461348 <= HEX3Atmp_461345)) goto LA18;
					i_461284 = res_461348;
					x = (*n).kindU.S6.sons->data[i_461284];
					{
						NIM_BOOL LOC21;
						NI LOC23;
						Tnode215790* idx;
						LOC21 = 0;
						LOC21 = ((*x).kind == ((NU8) 34));
						if (!(LOC21)) goto LA22;
						LOC23 = 0;
						LOC23 = sonslen_218351(x);
						LOC21 = (LOC23 == ((NI) 2));
						LA22: ;
						if (!LOC21) goto LA24;
						idx = semconstexpr_427473(c, (*x).kindU.S6.sons->data[((NI) 0)]);
						idx = fitnode_426230(c, indextype, idx);
						{
							NI64 LOC28;
							LOC28 = 0;
							LOC28 = getordvalue_241118(idx);
							if (!!(((NI64)(lastindex + IL64(1)) == LOC28))) goto LA29;
							localerror_188080((*x).info, ((NU16) 148), ((NimStringDesc*) &TMP3155));
						}
						LA29: ;
						x = (*x).kindU.S6.sons->data[((NI) 1)];
					}
					LA24: ;
					xx = semexprwithtype_426208(c, x, (flags & 64));
					add_216114(result, xx);
					typ = commontype_426396(typ, (*xx).typ);
					lastindex += ((NI) 1);
					res_461348 += ((NI) 1);
				} LA18: ;
			}
		}
		addsonskipintlit_259678((*result).typ, typ);
		{
			NI i_461340;
			NI HEX3Atmp_461353;
			NI LOC32;
			NI res_461356;
			i_461340 = 0;
			HEX3Atmp_461353 = 0;
			LOC32 = 0;
			LOC32 = len_216059(result);
			HEX3Atmp_461353 = (LOC32 - 1);
			res_461356 = ((NI) 0);
			{
				while (1) {
					if (!(res_461356 <= HEX3Atmp_461353)) goto LA34;
					i_461340 = res_461356;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_461340]), fitnode_426230(c, typ, (*result).kindU.S6.sons->data[i_461340]));
					res_461356 += ((NI) 1);
				} LA34: ;
			}
		}
	}
	LA1: ;
	LOC35 = 0;
	LOC35 = sonslen_218351(result);
	LOC36 = 0;
	LOC36 = getsystype_259130(((NU8) 31));
	asgnRefNoCycle((void**) (&(*(*result).typ).sons->data[((NI) 0)]), makerangetype_265915(c, IL64(0), ((NI64) ((NI)(LOC35 - ((NI) 1)))), (*n).info, LOC36));
	return result;
}

N_NIMCALL(Tnode215790*, semlambda_426240)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	Tsym215822* s;
	Tscope215816* LOC13;
	Tnode215790* gp;
{	result = 0;
	result = semprocannotation_455862(c, n, TMP3590);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_265958(n, ((NI) 7));
	s = 0;
	{
		Tnode215790* LOC7;
		Tsym215822* LOC10;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_216238(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		LOC10 = 0;
		LOC10 = getcurrowner_265210();
		s = newsym_216684(((NU8) 12), idanon_190455, LOC10, (*n).info);
		asgnRefNoCycle((void**) (&(*s).ast), n);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(s));
	}
	goto LA5;
	LA8: ;
	{
		Tnode215790* LOC12;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_216238(n, ((NI) 0));
		s = (*LOC12).kindU.S4.sym;
	}
	LA5: ;
	pushowner_265212(s);
	LOC13 = 0;
	LOC13 = openscope_270060(c);
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA16;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericparamlist_439403(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA14;
	LA16: ;
	{
		gp = newnodei_217248(((NU8) 75), (*n).info);
	}
	LA14: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA21;
		semparamlist_426254(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NIM_BOOL LOC25;
			NI LOC26;
			LOC25 = 0;
			LOC26 = 0;
			LOC26 = sonslen_218351(gp);
			LOC25 = (((NI) 0) < LOC26);
			if (!(LOC25)) goto LA27;
			LOC25 = ((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1));
			LA27: ;
			if (!LOC25) goto LA28;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), gp);
		}
		LA28: ;
	}
	goto LA19;
	LA21: ;
	{
		asgnRefNoCycle((void**) (&(*s).typ), newproctype_437488(c, (*n).info, NIM_NIL));
	}
	LA19: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA33;
		pragma_280070(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3590);
	}
	LA33: ;
	(*s).options = goptions_161119;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA37;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0)) goto LA41;
			localerror_188080((*(*n).kindU.S6.sons->data[((NI) 6)]).info, ((NU16) 141), (*(*s).name).s);
		}
		LA41: ;
		{
			NIM_BOOL LOC45;
			NI LOC46;
			NIM_BOOL LOC48;
			NI LOC49;
			Tnode215790* LOC51;
			Tnode215790* sembody;
			Tnode215790* LOC54;
			LOC45 = 0;
			LOC46 = 0;
			LOC46 = len_216059(gp);
			LOC45 = (LOC46 == ((NI) 0));
			if (LOC45) goto LA47;
			LOC48 = 0;
			LOC49 = 0;
			LOC49 = len_216059(gp);
			LOC48 = (LOC49 == ((NI) 1));
			if (!(LOC48)) goto LA50;
			LOC51 = 0;
			LOC51 = HEX5BHEX5D_216238(gp, ((NI) 0));
			LOC48 = (((*(*LOC51).typ).flags &(1U<<((NU)(((NU8) 10))&31U)))!=0);
			LA50: ;
			LOC45 = LOC48;
			LA47: ;
			if (!LOC45) goto LA52;
			pushproccon_265277(c, s);
			addresult_455754(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
			addresultnode_455785(c, n);
			LOC54 = 0;
			LOC54 = semprocbody_426226(c, (*n).kindU.S6.sons->data[((NI) 6)]);
			sembody = hlobody_428136(c, LOC54);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_388498((*c).module, sembody, s));
			popproccon_265303(c);
		}
		goto LA43;
		LA52: ;
		{
			if (!!(((flags &(1U<<((NU)(((NU8) 8))&15U)))!=0))) goto LA56;
			localerror_188080((*n).info, ((NU16) 232), ((NimStringDesc*) &TMP3155));
		}
		goto LA43;
		LA56: ;
		LA43: ;
		sideeffectscheck_429064(c, s);
	}
	goto LA35;
	LA37: ;
	{
		localerror_188080((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA35: ;
	closescope_270068(c);
	popowner_265215();
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semdo_456146)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode215790* LOC4;
		Tnode215790* LOC6;
		Tnode215790* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_216238(n, ((NI) 2));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (!(LOC3)) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 3));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_216238(n, ((NI) 6));
		result = semstmt_426250(c, LOC9);
	}
	goto LA1;
	LA7: ;
	{
		result = semlambda_426240(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iscastable_460368)(Ttype215828* dst, Ttype215828* src) {
	NIM_BOOL result;
	NI64 dstsize;
	NI64 srcsize;
{	result = 0;
	{
		Ttype215828* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_219113(dst, IL64(211106232576256));
		if (!((*LOC3).kind == ((NU8) 27))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	dstsize = 0;
	srcsize = 0;
	dstsize = computesize_241121(dst);
	srcsize = computesize_241121(src);
	{
		if (!(dstsize < IL64(0))) goto LA8;
		result = NIM_FALSE;
	}
	goto LA6;
	LA8: ;
	{
		if (!(srcsize < IL64(0))) goto LA11;
		result = NIM_FALSE;
	}
	goto LA6;
	LA11: ;
	{
		Ttype215828* LOC14;
		LOC14 = 0;
		LOC14 = typeallowed_249040(dst, ((NU8) 3));
		if (!!((LOC14 == NIM_NIL))) goto LA15;
		result = NIM_FALSE;
	}
	goto LA6;
	LA15: ;
	{
		NIM_BOOL LOC18;
		NIM_BOOL LOC19;
		Ttype215828* LOC21;
		Ttype215828* LOC23;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = (srcsize <= dstsize);
		if (LOC19) goto LA20;
		LOC21 = 0;
		LOC21 = skiptypes_219113(dst, IL64(211106232576256));
		LOC19 = ((*LOC21).kind == ((NU8) 1) || (*LOC21).kind == ((NU8) 14) || (*LOC21).kind == ((NU8) 2) || (*LOC21).kind >= ((NU8) 31) && (*LOC21).kind <= ((NU8) 44));
		LA20: ;
		LOC18 = LOC19;
		if (LOC18) goto LA22;
		LOC23 = 0;
		LOC23 = skiptypes_219113(src, IL64(211106232576000));
		LOC18 = ((*LOC23).kind == ((NU8) 1) || (*LOC23).kind == ((NU8) 14) || (*LOC23).kind == ((NU8) 2) || (*LOC23).kind >= ((NU8) 31) && (*LOC23).kind <= ((NU8) 44));
		LA22: ;
		result = LOC18;
	}
	LA6: ;
	{
		NIM_BOOL LOC26;
		LOC26 = 0;
		LOC26 = result;
		if (!(LOC26)) goto LA27;
		LOC26 = ((*src).kind == ((NU8) 5));
		LA27: ;
		if (!LOC26) goto LA28;
		result = ((*dst).size <= ((NI64) (ptrsize_168617)));
	}
	LA28: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semcast_460613)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* LOC1;
	Tnode215790* LOC2;
	result = 0;
	checksonslen_265958(n, ((NI) 2));
	result = newnodei_217248(((NU8) 61), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), semtypenode_426245(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL));
	LOC1 = 0;
	LOC1 = copytree_219822((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_217807(result, LOC1);
	LOC2 = 0;
	LOC2 = semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	addson_217807(result, LOC2);
	{
		NIM_BOOL LOC5;
		NimStringDesc* LOC8;
		LOC5 = 0;
		LOC5 = iscastable_460368((*result).typ, (*(*result).kindU.S6.sons->data[((NI) 1)]).typ);
		if (!!(LOC5)) goto LA6;
		LOC8 = 0;
		LOC8 = typetostring_241017((*result).typ, ((NU8) 0));
		localerror_188080((*result).info, ((NU16) 96), LOC8);
	}
	LA6: ;
	return result;
}

static N_INLINE(void, semdestructorcheck_450113)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((flags &(1U<<((NU)(((NU8) 6))&15U)))!=0));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*n).kind >= ((NU8) 26) && (*n).kind <= ((NU8) 32) || (*n).kind == ((NU8) 38) || (*n).kind == ((NU8) 41));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			Ttype215828* LOC9;
			LOC9 = 0;
			LOC9 = instantiatedestructor_449191(c, (*n).typ);
			if (!!((LOC9 == NIM_NIL))) goto LA10;
			localerror_188080((*n).info, ((NU16) 264), ((NimStringDesc*) &TMP3155));
		}
		LA10: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode215790*, semexprbranch_450201)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = semexpr_426201(c, n, 0);
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA3;
		semprocvarcheck_449138(c, result);
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA7;
			result = newderef_377006(result);
		}
		LA7: ;
		semdestructorcheck_450113(c, result, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode215790*, semexprbranchscope_450229)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tscope215816* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	result = semexprbranch_450201(c, n);
	closescope_270068(c);
	return result;
}

N_NIMCALL(Tnode215790*, semif_450412)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* typ;
	NIM_BOOL haselse;
	result = 0;
	result = n;
	typ = commontypebegin_426394;
	haselse = NIM_FALSE;
	{
		NI i_450430;
		NI HEX3Atmp_450836;
		NI LOC2;
		NI res_450839;
		i_450430 = 0;
		HEX3Atmp_450836 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_450836 = (NI)(LOC2 - ((NI) 1));
		res_450839 = ((NI) 0);
		{
			while (1) {
				Tnode215790* it;
				if (!(res_450839 <= HEX3Atmp_450836)) goto LA4;
				i_450430 = res_450839;
				it = (*n).kindU.S6.sons->data[i_450430];
				{
					NI LOC7;
					Tscope215816* LOC10;
					Tnode215790* LOC11;
					LOC7 = 0;
					LOC7 = len_216059(it);
					if (!(LOC7 == ((NI) 2))) goto LA8;
					LOC10 = 0;
					LOC10 = openscope_270060(c);
					LOC11 = 0;
					LOC11 = semexprwithtype_426208(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_433223(c, LOC11));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semexprbranch_450201(c, (*it).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_426396(typ, (*(*it).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_270068(c);
				}
				goto LA5;
				LA8: ;
				{
					NI LOC13;
					LOC13 = 0;
					LOC13 = len_216059(it);
					if (!(LOC13 == ((NI) 1))) goto LA14;
					haselse = NIM_TRUE;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_450229(c, (*it).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_426396(typ, (*(*it).kindU.S6.sons->data[((NI) 0)]).typ);
				}
				goto LA5;
				LA14: ;
				{
					illformedast_265950(it);
				}
				LA5: ;
				res_450839 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NIM_BOOL LOC19;
		NIM_BOOL LOC20;
		LOC19 = 0;
		LOC20 = 0;
		LOC20 = isemptytype_220513(typ);
		if (LOC20) goto LA21;
		LOC20 = ((*typ).kind == ((NU8) 5));
		LA21: ;
		LOC19 = LOC20;
		if (LOC19) goto LA22;
		LOC19 = !(haselse);
		LA22: ;
		if (!LOC19) goto LA23;
		{
			Tnode215790* it_450817;
			it_450817 = 0;
			{
				NI i_450847;
				NI HEX3Atmp_450849;
				NI LOC27;
				NI res_450851;
				i_450847 = 0;
				HEX3Atmp_450849 = 0;
				LOC27 = 0;
				LOC27 = len_216059(n);
				HEX3Atmp_450849 = (LOC27 - 1);
				res_450851 = ((NI) 0);
				{
					while (1) {
						Tnode215790* LOC30;
						if (!(res_450851 <= HEX3Atmp_450849)) goto LA29;
						i_450847 = res_450851;
						it_450817 = (*n).kindU.S6.sons->data[i_450847];
						LOC30 = 0;
						LOC30 = lastson_218364(it_450817);
						discardcheck_450323(c, LOC30);
						res_450851 += ((NI) 1);
					} LA29: ;
				}
			}
		}
		(*result).kind = ((NU8) 92);
		{
			if (!(typ == enforcevoidcontext_448802)) goto LA33;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_448802);
		}
		LA33: ;
	}
	goto LA17;
	LA23: ;
	{
		{
			Tnode215790* it_450830;
			it_450830 = 0;
			{
				NI i_450858;
				NI HEX3Atmp_450860;
				NI LOC38;
				NI res_450862;
				i_450858 = 0;
				HEX3Atmp_450860 = 0;
				LOC38 = 0;
				LOC38 = len_216059(n);
				HEX3Atmp_450860 = (LOC38 - 1);
				res_450862 = ((NI) 0);
				{
					while (1) {
						NI j;
						NI LOC41;
						if (!(res_450862 <= HEX3Atmp_450860)) goto LA40;
						i_450858 = res_450862;
						it_450830 = (*n).kindU.S6.sons->data[i_450858];
						LOC41 = 0;
						LOC41 = len_216059(it_450830);
						j = (NI)(LOC41 - ((NI) 1));
						asgnRefNoCycle((void**) (&(*it_450830).kindU.S6.sons->data[j]), fitnode_426230(c, typ, (*it_450830).kindU.S6.sons->data[j]));
						res_450862 += ((NI) 1);
					} LA40: ;
				}
			}
		}
		(*result).kind = ((NU8) 48);
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA17: ;
	return result;
}

N_NIMCALL(Tnode215790*, semtableconstr_466984)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	NI lastkey;
	result = 0;
	result = newnodei_217248(((NU8) 41), (*n).info);
	lastkey = ((NI) 0);
	{
		NI i_467000;
		NI HEX3Atmp_467043;
		NI LOC2;
		NI res_467046;
		i_467000 = 0;
		HEX3Atmp_467043 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_467043 = (NI)(LOC2 - ((NI) 1));
		res_467046 = ((NI) 0);
		{
			while (1) {
				Tnode215790* x;
				if (!(res_467046 <= HEX3Atmp_467043)) goto LA4;
				i_467000 = res_467046;
				x = (*n).kindU.S6.sons->data[i_467000];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tnode215790* pair;
					Tnode215790* LOC16;
					Tnode215790* LOC17;
					LOC7 = 0;
					LOC7 = ((*x).kind == ((NU8) 34));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_218351(x);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						NI j_467023;
						NI HEX3Atmp_467036;
						NI res_467039;
						j_467023 = 0;
						HEX3Atmp_467036 = 0;
						HEX3Atmp_467036 = (NI)(i_467000 - ((NI) 1));
						res_467039 = lastkey;
						{
							while (1) {
								Tnode215790* pair;
								Tnode215790* LOC15;
								if (!(res_467039 <= HEX3Atmp_467036)) goto LA14;
								j_467023 = res_467039;
								pair = newnodei_217248(((NU8) 37), (*x).info);
								add_216114(pair, (*n).kindU.S6.sons->data[j_467023]);
								LOC15 = 0;
								LOC15 = HEX5BHEX5D_216238(x, ((NI) 1));
								add_216114(pair, LOC15);
								add_216114(result, pair);
								res_467039 += ((NI) 1);
							} LA14: ;
						}
					}
					pair = newnodei_217248(((NU8) 37), (*x).info);
					LOC16 = 0;
					LOC16 = HEX5BHEX5D_216238(x, ((NI) 0));
					add_216114(pair, LOC16);
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_216238(x, ((NI) 1));
					add_216114(pair, LOC17);
					add_216114(result, pair);
					lastkey = (NI)(i_467000 + ((NI) 1));
				}
				LA10: ;
				res_467046 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI LOC20;
		LOC20 = 0;
		LOC20 = len_216059(n);
		if (!!((lastkey == LOC20))) goto LA21;
		illformedast_265950(n);
	}
	LA21: ;
	result = semexpr_426201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode215790*, semstaticexpr_462920)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* a;
	result = 0;
	a = semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	result = evalstaticexpr_415620((*c).module, a, (*(*c).p).owner);
	{
		NimStringDesc* LOC5;
		if (!result == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_234044(n, 0);
		localerror_188080((*n).info, ((NU16) 213), LOC5);
		result = emptynode_216801;
	}
	goto LA1;
	LA3: ;
	{
		result = fixuptypeaftereval_427201(c, result, a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semblock_467613)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tscope215816* LOC1;
	result = 0;
	result = n;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_265958(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	{
		Tsym215822* labl;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA4;
		labl = newsymg_426895(((NU8) 21), (*n).kindU.S6.sons->data[((NI) 0)], c);
		{
			if (!!((((*labl).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0))) goto LA8;
			adddecl_270445(c, labl);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(labl, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA8: ;
		suggestsym_373436((*(*n).kindU.S6.sons->data[((NI) 0)]).info, labl, NIM_TRUE);
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
	asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = isemptytype_220513((*n).typ);
		if (!LOC12) goto LA13;
		(*n).kind = ((NU8) 112);
	}
	goto LA10;
	LA13: ;
	{
		(*n).kind = ((NU8) 127);
	}
	LA10: ;
	closescope_270068(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode215790*, semtry_451283)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* typ_451297;
	Intset212035 check;
	NI last;
	NI LOC1;
	result = 0;
	result = n;
	(*(*c).p).intrystmt += ((NI) 1);
	checkminsonslen_265962(n, ((NI) 2));
	typ_451297 = commontypebegin_426394;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_450229(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	typ_451297 = commontype_426396(typ_451297, (*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_212885((&check));
	LOC1 = 0;
	LOC1 = sonslen_218351(n);
	last = (NI)(LOC1 - ((NI) 1));
	{
		NI i_451314;
		NI res_451519;
		i_451314 = 0;
		res_451519 = ((NI) 1);
		{
			while (1) {
				Tnode215790* a;
				NI length;
				if (!(res_451519 <= last)) goto LA4;
				i_451314 = res_451519;
				a = (*n).kindU.S6.sons->data[i_451314];
				checkminsonslen_265962(a, ((NI) 1));
				length = sonslen_218351(a);
				{
					if (!((*a).kind == ((NU8) 87))) goto LA7;
					{
						NIM_BOOL LOC11;
						Slice88082 LOC15;
						LOC11 = 0;
						LOC11 = (length == ((NI) 2));
						if (!(LOC11)) goto LA12;
						LOC11 = ((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 41));
						LA12: ;
						if (!LOC11) goto LA13;
						LOC15 = HEX2EHEX2E_102424(((NI) 0), ((NI) 0));
						HEX5BHEX5DHEX3D_388186((&(*a).kindU.S6.sons), LOC15, (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data, (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->Sup.len);
						length = sonslen_218351(a);
					}
					LA13: ;
					{
						NI j_451378;
						NI HEX3Atmp_451510;
						NI res_451513;
						j_451378 = 0;
						HEX3Atmp_451510 = 0;
						HEX3Atmp_451510 = (NI)(length - ((NI) 2));
						res_451513 = ((NI) 0);
						{
							while (1) {
								Ttype215828* typ;
								if (!(res_451513 <= HEX3Atmp_451510)) goto LA18;
								j_451378 = res_451513;
								typ = semtypenode_426245(c, (*a).kindU.S6.sons->data[j_451378], NIM_NIL);
								{
									if (!((*typ).kind == ((NU8) 22))) goto LA21;
									typ = (*typ).sons->data[((NI) 0)];
								}
								LA21: ;
								{
									if (!!(((*typ).kind == ((NU8) 17)))) goto LA25;
									localerror_188080((*(*a).kindU.S6.sons->data[j_451378]).info, ((NU16) 116), ((NimStringDesc*) &TMP3155));
								}
								LA25: ;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_451378]), newnodei_217248(((NU8) 4), (*(*a).kindU.S6.sons->data[j_451378]).info));
								asgnRefNoCycle((void**) (&(*(*a).kindU.S6.sons->data[j_451378]).typ), typ);
								{
									NIM_BOOL LOC29;
									LOC29 = 0;
									LOC29 = containsorincl_212862((&check), (*typ).Sup.id);
									if (!LOC29) goto LA30;
									localerror_188080((*(*a).kindU.S6.sons->data[j_451378]).info, ((NU16) 36), ((NimStringDesc*) &TMP3155));
								}
								LA30: ;
								res_451513 += ((NI) 1);
							} LA18: ;
						}
					}
				}
				goto LA5;
				LA7: ;
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA33;
					illformedast_265950(n);
				}
				goto LA5;
				LA33: ;
				LA5: ;
				asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semexprbranchscope_450229(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA37;
					typ_451297 = commontype_426396(typ_451297, (*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ);
				}
				goto LA35;
				LA37: ;
				{
					last -= ((NI) 1);
				}
				LA35: ;
				res_451519 += ((NI) 1);
			} LA4: ;
		}
	}
	(*(*c).p).intrystmt -= ((NI) 1);
	{
		NIM_BOOL LOC42;
		LOC42 = 0;
		LOC42 = isemptytype_220513(typ_451297);
		if (LOC42) goto LA43;
		LOC42 = ((*typ_451297).kind == ((NU8) 5));
		LA43: ;
		if (!LOC42) goto LA44;
		discardcheck_450323(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_451464;
			NI HEX3Atmp_451524;
			NI LOC47;
			NI res_451527;
			i_451464 = 0;
			HEX3Atmp_451524 = 0;
			LOC47 = 0;
			LOC47 = len_216059(n);
			HEX3Atmp_451524 = (NI)(LOC47 - ((NI) 1));
			res_451527 = ((NI) 1);
			{
				while (1) {
					Tnode215790* LOC50;
					if (!(res_451527 <= HEX3Atmp_451524)) goto LA49;
					i_451464 = res_451527;
					LOC50 = 0;
					LOC50 = lastson_218364((*n).kindU.S6.sons->data[i_451464]);
					discardcheck_450323(c, LOC50);
					res_451527 += ((NI) 1);
				} LA49: ;
			}
		}
		{
			if (!(typ_451297 == enforcevoidcontext_448802)) goto LA53;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_448802);
		}
		LA53: ;
	}
	goto LA40;
	LA44: ;
	{
		{
			Tnode215790* LOC58;
			Tnode215790* LOC61;
			Tnode215790* LOC62;
			LOC58 = 0;
			LOC58 = lastson_218364(n);
			if (!((*LOC58).kind == ((NU8) 107))) goto LA59;
			LOC61 = 0;
			LOC61 = lastson_218364(n);
			LOC62 = 0;
			LOC62 = lastson_218364(LOC61);
			discardcheck_450323(c, LOC62);
		}
		LA59: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_426230(c, typ_451297, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_451501;
			NI res_451534;
			i_451501 = 0;
			res_451534 = ((NI) 1);
			{
				while (1) {
					Tnode215790* it;
					NI j;
					NI LOC66;
					if (!(res_451534 <= last)) goto LA65;
					i_451501 = res_451534;
					it = (*n).kindU.S6.sons->data[i_451501];
					LOC66 = 0;
					LOC66 = len_216059(it);
					j = (NI)(LOC66 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_426230(c, typ_451297, (*it).kindU.S6.sons->data[j]));
					res_451534 += ((NI) 1);
				} LA65: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ_451297);
	}
	LA40: ;
	return result;
}

N_NIMCALL(Tnode215790*, semstmtlist_458068)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	NI length;
	NIM_BOOL voidcontext;
	NI last;
{	result = 0;
	result = n;
	(*result).kind = ((NU8) 115);
	length = sonslen_218351(n);
	voidcontext = NIM_FALSE;
	last = (NI)(length - ((NI) 1));
	{
		NI i_458090;
		NI HEX3Atmp_458613;
		NI res_458616;
		i_458090 = 0;
		HEX3Atmp_458613 = 0;
		HEX3Atmp_458613 = (NI)(length - ((NI) 1));
		res_458616 = ((NI) 0);
		{
			while (1) {
				if (!(res_458616 <= HEX3Atmp_458613)) goto LA3;
				i_458090 = res_458616;
				{
					NU8 k;
					k = (*(*n).kindU.S6.sons->data[i_458090]).kind;
					switch (k) {
					case ((NU8) 107):
					case ((NU8) 87):
					{
						Tnode215790* deferpart;
						Tnode215790* trystmt;
						Tnode215790* body;
						deferpart = 0;
						{
							if (!(k == ((NU8) 105))) goto LA8;
							deferpart = newnodei_217248(((NU8) 107), (*(*n).kindU.S6.sons->data[i_458090]).info);
							add_216114(deferpart, (*(*n).kindU.S6.sons->data[i_458090]).kindU.S6.sons->data[((NI) 0)]);
						}
						goto LA6;
						LA8: ;
						{
							if (!(k == ((NU8) 107))) goto LA11;
							message_188095((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3591));
							deferpart = (*n).kindU.S6.sons->data[i_458090];
						}
						goto LA6;
						LA11: ;
						{
							message_188095((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3592));
							deferpart = (*n).kindU.S6.sons->data[i_458090];
						}
						LA6: ;
						trystmt = newnodei_217248(((NU8) 106), (*(*n).kindU.S6.sons->data[i_458090]).info);
						body = newnodei_217248(((NU8) 115), (*(*n).kindU.S6.sons->data[i_458090]).info);
						{
							NI LOC16;
							NI LOC19;
							Slice88082 LOC20;
							LOC16 = 0;
							LOC16 = sonslen_218351(n);
							if (!(i_458090 < (NI)(LOC16 - ((NI) 1)))) goto LA17;
							LOC19 = 0;
							LOC19 = len_216059(n);
							LOC20 = HEX2EHEX2E_102424((NI)(i_458090 + ((NI) 1)), (NI)(LOC19 - ((NI) 1)));
							asgnRefNoCycle((void**) (&(*body).kindU.S6.sons), HEX5BHEX5D_388135((*n).kindU.S6.sons, LOC20));
						}
						LA17: ;
						addson_217807(trystmt, body);
						addson_217807(trystmt, deferpart);
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_458090]), semtry_451283(c, trystmt));
						(*n).kindU.S6.sons = (Tnodeseq215784*) setLengthSeq(&((*n).kindU.S6.sons)->Sup, sizeof(Tnode215790*), ((NI) ((NI)(i_458090 + ((NI) 1)))));
						asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_458090]).typ);
						goto BeforeRet;
					}
					break;
					default:
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_458090]), semexpr_426201(c, (*n).kindU.S6.sons->data[i_458090], 0));
						{
							NIM_BOOL LOC24;
							Tnode215790* LOC26;
							Tnode215790* LOC29;
							LOC24 = 0;
							LOC24 = (((NI) 0) < (*c).intypeclass);
							if (!(LOC24)) goto LA25;
							LOC26 = 0;
							LOC26 = HEX5BHEX5D_216238(n, i_458090);
							LOC24 = !(((*LOC26).typ == NIM_NIL));
							LA25: ;
							if (!LOC24) goto LA27;
							LOC29 = 0;
							LOC29 = HEX5BHEX5D_216238(n, i_458090);
							switch ((*(*LOC29).typ).kind) {
							case ((NU8) 1):
							{
								Tnode215790* verdict;
								Tnode215790* LOC31;
								LOC31 = 0;
								LOC31 = HEX5BHEX5D_216238(n, i_458090);
								verdict = semconstexpr_427473(c, LOC31);
								{
									if (!((*verdict).kindU.S1.intval == IL64(0))) goto LA34;
									localerror_188085((*result).info, ((NimStringDesc*) &TMP3593));
								}
								LA34: ;
							}
							break;
							case ((NU8) 60):
							{
								goto LA4;
							}
							break;
							default:
							{
							}
							break;
							}
						}
						LA27: ;
						{
							if (!((*(*n).kindU.S6.sons->data[i_458090]).typ == enforcevoidcontext_448802)) goto LA40;
							voidcontext = NIM_TRUE;
							asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_448802);
						}
						LA40: ;
						{
							NIM_BOOL LOC44;
							NIM_BOOL LOC46;
							LOC44 = 0;
							LOC44 = (i_458090 == last);
							if (!(LOC44)) goto LA45;
							LOC46 = 0;
							LOC46 = (length == ((NI) 1));
							if (LOC46) goto LA47;
							LOC46 = ((flags &(1U<<((NU)(((NU8) 7))&15U)))!=0);
							LA47: ;
							LOC44 = LOC46;
							LA45: ;
							if (!LOC44) goto LA48;
							asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_458090]).typ);
							{
								NIM_BOOL LOC52;
								LOC52 = 0;
								LOC52 = isemptytype_220513((*n).typ);
								if (!!(LOC52)) goto LA53;
								(*n).kind = ((NU8) 126);
							}
							LA53: ;
						}
						goto LA42;
						LA48: ;
						{
							NIM_BOOL LOC56;
							LOC56 = 0;
							LOC56 = !((i_458090 == last));
							if (LOC56) goto LA57;
							LOC56 = voidcontext;
							LA57: ;
							if (!LOC56) goto LA58;
							discardcheck_450323(c, (*n).kindU.S6.sons->data[i_458090]);
						}
						goto LA42;
						LA58: ;
						{
							asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_458090]).typ);
							{
								NIM_BOOL LOC63;
								LOC63 = 0;
								LOC63 = isemptytype_220513((*n).typ);
								if (!!(LOC63)) goto LA64;
								(*n).kind = ((NU8) 126);
							}
							LA64: ;
						}
						LA42: ;
						switch ((*(*n).kindU.S6.sons->data[i_458090]).kind) {
						case ((NU8) 108):
						case ((NU8) 109):
						case ((NU8) 110):
						case ((NU8) 111):
						{
							{
								NI j_458216;
								NI HEX3Atmp_458605;
								NI HEX3Atmp_458606;
								NI res_458609;
								j_458216 = 0;
								HEX3Atmp_458605 = 0;
								HEX3Atmp_458606 = 0;
								HEX3Atmp_458605 = (NI)(i_458090 + ((NI) 1));
								HEX3Atmp_458606 = (NI)(length - ((NI) 1));
								res_458609 = HEX3Atmp_458605;
								{
									while (1) {
										if (!(res_458609 <= HEX3Atmp_458606)) goto LA69;
										j_458216 = res_458609;
										switch ((*(*n).kindU.S6.sons->data[j_458216]).kind) {
										case ((NU8) 90):
										case ((NU8) 125):
										case ((NU8) 23):
										case ((NU8) 1):
										{
										}
										break;
										default:
										{
											localerror_188080((*(*n).kindU.S6.sons->data[j_458216]).info, ((NU16) 42), ((NimStringDesc*) &TMP3155));
										}
										break;
										}
										res_458609 += ((NI) 1);
									} LA69: ;
								}
							}
						}
						break;
						default:
						{
						}
						break;
						}
					}
					break;
					}
				} LA4: ;
				res_458616 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NIM_BOOL LOC75;
		NI LOC76;
		LOC75 = 0;
		LOC76 = 0;
		LOC76 = len_216059(result);
		LOC75 = (LOC76 == ((NI) 1));
		if (!(LOC75)) goto LA77;
		LOC75 = !(((*(*result).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 105)));
		LA77: ;
		if (!LOC75) goto LA78;
		result = (*result).kindU.S6.sons->data[((NI) 0)];
	}
	LA78: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semraise_454668)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	checksonslen_265958(n, ((NI) 1));
	{
		Ttype215828* typ;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		typ = (*(*n).kindU.S6.sons->data[((NI) 0)]).typ;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !(((*typ).kind == ((NU8) 22)));
			if (LOC7) goto LA8;
			LOC7 = !(((*(*typ).sons->data[((NI) 0)]).kind == ((NU8) 17)));
			LA8: ;
			if (!LOC7) goto LA9;
			localerror_188080((*n).info, ((NU16) 116), ((NimStringDesc*) &TMP3155));
		}
		LA9: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, addtovarsection_452854)(Tcontext265020* c, Tnode215790** result, Tnode215790* orig, Tnode215790* identdefs) {
	NI L;
	Tnode215790* value;
	L = len_216059(identdefs);
	value = HEX5BHEX5D_216238(identdefs, (NI)(L - ((NI) 1)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*value).typ == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = (((*(*value).typ).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		asgnRefNoCycle((void**) (&(*identdefs).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), emptynode_216801);
		{
			Tnode215790* oldresult;
			if (!!(((*(*result)).kind == ((NU8) 115)))) goto LA9;
			oldresult = (*result);
			add_216114(oldresult, identdefs);
			unsureAsgnRef((void**) (&(*result)), newnodei_217248(((NU8) 115), (*(*result)).info));
			add_216114((*result), oldresult);
		}
		goto LA7;
		LA9: ;
		{
			Tnode215790* o;
			o = copynode_219542(orig);
			add_216114(o, identdefs);
			add_216114((*result), o);
		}
		LA7: ;
		{
			NI i_452911;
			NI HEX3Atmp_452927;
			NI res_452930;
			i_452911 = 0;
			HEX3Atmp_452927 = 0;
			HEX3Atmp_452927 = (NI)(L - ((NI) 3));
			res_452930 = ((NI) 0);
			{
				while (1) {
					Tnode215790* LOC15;
					Tnode215790* LOC16;
					if (!(res_452930 <= HEX3Atmp_452927)) goto LA14;
					i_452911 = res_452930;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_216238(identdefs, i_452911);
					LOC16 = 0;
					LOC16 = overloadedasgn_452847(c, LOC15, value);
					add_216114((*result), LOC16);
					res_452930 += ((NI) 1);
				} LA14: ;
			}
		}
	}
	goto LA1;
	LA5: ;
	{
		Tnode215790* o;
		if (!((*(*result)).kind == ((NU8) 115))) goto LA18;
		o = copynode_219542(orig);
		add_216114(o, identdefs);
		add_216114((*result), o);
	}
	goto LA1;
	LA18: ;
	{
		add_216114((*result), identdefs);
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, isdiscardunderscore_452965)(Tsym215822* v) {
	NIM_BOOL result;
	result = 0;
	{
		if (!eqStrings((*(*v).name).s, ((NimStringDesc*) &TMP3596))) goto LA3;
		(*v).flags |= ((NU32)1)<<((((NU8) 31))%(sizeof(NU32)*8));
		result = NIM_TRUE;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tsym215822*, findshadowedvar_451557)(Tcontext265020* c, Tsym215822* v) {
	Tsym215822* result;
{	result = 0;
	{
		Tscope215816* scope_451562;
		Tscope215816* HEX3Atmp_451599;
		Tscope215816* current_451602;
		scope_451562 = 0;
		HEX3Atmp_451599 = 0;
		HEX3Atmp_451599 = (*(*c).currentscope).parent;
		current_451602 = HEX3Atmp_451599;
		{
			while (1) {
				Tsym215822* shadowed;
				if (!!((current_451602 == NIM_NIL))) goto LA3;
				scope_451562 = current_451602;
				{
					if (!(scope_451562 == (*c).toplevelscope)) goto LA6;
					goto LA1;
				}
				LA6: ;
				shadowed = strtableget_222066((*scope_451562).symbols, (*v).name);
				{
					NIM_BOOL LOC10;
					LOC10 = 0;
					LOC10 = !((shadowed == NIM_NIL));
					if (!(LOC10)) goto LA11;
					LOC10 = ((1051400 &(1U<<((NU)((*shadowed).kind)&31U)))!=0);
					LA11: ;
					if (!LOC10) goto LA12;
					result = shadowed;
					goto BeforeRet;
				}
				LA12: ;
				current_451602 = (*current_451602).parent;
			} LA3: ;
		}
	} LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, identwithin_451603)(Tnode215790* n, Tident190012* s) {
	NIM_BOOL result;
	NIM_BOOL LOC10;
{	result = 0;
	{
		NI i_451618;
		NI HEX3Atmp_451632;
		NI LOC2;
		NI res_451635;
		i_451618 = 0;
		HEX3Atmp_451632 = 0;
		LOC2 = 0;
		LOC2 = safelen_216081(n);
		HEX3Atmp_451632 = (NI)(LOC2 - ((NI) 1));
		res_451635 = ((NI) 0);
		{
			while (1) {
				if (!(res_451635 <= HEX3Atmp_451632)) goto LA4;
				i_451618 = res_451635;
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = identwithin_451603((*n).kindU.S6.sons->data[i_451618], s);
					if (!LOC7) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_451635 += ((NI) 1);
			} LA4: ;
		}
	}
	LOC10 = 0;
	LOC10 = ((*n).kind == ((NU8) 3));
	if (!(LOC10)) goto LA11;
	LOC10 = ((*(*(*n).kindU.S4.sym).name).Sup.id == (*s).Sup.id);
	LA11: ;
	result = LOC10;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, createdestructorcall_449882)(Tcontext265020* c, Tsym215822* s) {
	Tnode215790* result;
	Ttype215828* vartyp;
	Ttype215828* destructablet;
{	result = 0;
	vartyp = (*s).typ;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (vartyp == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = (((*s).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	destructablet = instantiatedestructor_449191(c, vartyp);
	{
		Tnode215790* call;
		Tnodeseq215784* LOC11;
		TY383939 LOC12;
		Tnode215790* LOC13;
		Tnodeseq215784* LOC14;
		TY231280 LOC15;
		if (!!((destructablet == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = (Tnodeseq215784*) newSeq((&NTI215784), 2);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = usesym_373801((*destructablet).destructor);
		LOC12[1] = usesym_373801(s);
		asgnRefNoCycle((void**) (&LOC11->data[0]), LOC12[0]);
		asgnRefNoCycle((void**) (&LOC11->data[1]), LOC12[1]);
		LOC13 = 0;
		LOC13 = newnode_217601(((NU8) 27), (*s).info, LOC11, NIM_NIL);
		call = semstmt_426250(c, LOC13);
		LOC14 = 0;
		LOC14 = (Tnodeseq215784*) newSeq((&NTI215784), 1);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = call;
		asgnRefNoCycle((void**) (&LOC14->data[0]), LOC15[0]);
		result = newnode_217601(((NU8) 105), (*s).info, LOC14, NIM_NIL);
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, adddefer_452934)(Tcontext265020* c, Tnode215790** result, Tsym215822* s) {
	Tnode215790* deferdestructorcall;
	deferdestructorcall = createdestructorcall_449882(c, s);
	{
		if (!!((deferdestructorcall == NIM_NIL))) goto LA3;
		{
			Tnode215790* oldresult;
			if (!!(((*(*result)).kind == ((NU8) 115)))) goto LA7;
			oldresult = (*result);
			unsureAsgnRef((void**) (&(*result)), newnodei_217248(((NU8) 115), (*(*result)).info));
			add_216114((*result), oldresult);
		}
		LA7: ;
		add_216114((*result), deferdestructorcall);
	}
	LA3: ;
}

N_NIMCALL(void, checknilable_451801)(Tsym215822* v) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((40 & (*v).flags) == 8);
		if (!(LOC3)) goto LA4;
		LOC3 = !(((196608 & (*(*v).typ).flags) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!(*v).ast == 0) goto LA9;
			message_188095((*v).info, ((NU16) 257), (*(*v).name).s);
		}
		goto LA7;
		LA9: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = (((*(*v).typ).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0);
			if (!(LOC12)) goto LA13;
			LOC12 = !((((*(*(*v).ast).typ).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0));
			LA13: ;
			if (!LOC12) goto LA14;
			message_188095((*v).info, ((NU16) 257), (*(*v).name).s);
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode215790*, semvarorlet_452981)(Tcontext265020* c, Tnode215790* n, NU8 symkind) {
	Tnode215790* result;
	Tnode215790* b;
	NIM_BOOL hascompiletime;
	result = 0;
	b = 0;
	result = copynode_219542(n);
	hascompiletime = NIM_FALSE;
	{
		NI i_453000;
		NI HEX3Atmp_453552;
		NI LOC2;
		NI res_453555;
		i_453000 = 0;
		HEX3Atmp_453552 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_453552 = (NI)(LOC2 - ((NI) 1));
		res_453555 = ((NI) 0);
		{
			while (1) {
				if (!(res_453555 <= HEX3Atmp_453552)) goto LA4;
				i_453000 = res_453555;
				{
					Tnode215790* a;
					NI length;
					Ttype215828* typ;
					Tnode215790* def;
					Ttype215828* tup;
					a = (*n).kindU.S6.sons->data[i_453000];
					{
						if (!(gcmd_161123 == ((NU8) 14))) goto LA8;
						suggeststmt_374018(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 35) || (*a).kind == ((NU8) 36) || (*a).kind == ((NU8) 102)))) goto LA16;
						illformedast_265950(a);
					}
					LA16: ;
					checkminsonslen_265962(a, ((NI) 3));
					length = sonslen_218351(a);
					typ = 0;
					{
						if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA20;
						typ = semtypenode_426245(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
					}
					goto LA18;
					LA20: ;
					{
						typ = NIM_NIL;
					}
					LA18: ;
					def = 0;
					{
						if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA25;
						def = semexprwithtype_426208(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))], 64);
						{
							NIM_BOOL LOC29;
							LOC29 = 0;
							LOC29 = ((*(*def).typ).kind == ((NU8) 8));
							if (!(LOC29)) goto LA30;
							LOC29 = !(((*(*(*c).p).owner).kind == ((NU8) 16)));
							LA30: ;
							if (!LOC29) goto LA31;
							localerror_188085((*def).info, ((NimStringDesc*) &TMP3594));
							asgnRefNoCycle((void**) (&(*def).typ), errortype_265901(c));
						}
						LA31: ;
						{
							if (!!((typ == NIM_NIL))) goto LA35;
							{
								NIM_BOOL LOC39;
								LOC39 = 0;
								LOC39 = ismetatype_216803(typ);
								if (!LOC39) goto LA40;
								def = inferwithmetatype_426388(c, typ, def, NIM_FALSE);
								typ = (*def).typ;
							}
							goto LA37;
							LA40: ;
							{
								def = fitnode_426230(c, typ, def);
							}
							LA37: ;
						}
						goto LA33;
						LA35: ;
						{
							typ = skipintlit_259651((*def).typ);
							{
								NIM_BOOL LOC46;
								Ttype215828* LOC48;
								NimStringDesc* LOC51;
								NimStringDesc* LOC52;
								LOC46 = 0;
								LOC46 = ((*typ).kind == ((NU8) 24) || (*typ).kind == ((NU8) 16) || (*typ).kind == ((NU8) 19));
								if (!(LOC46)) goto LA47;
								LOC48 = 0;
								LOC48 = lastson_218377(typ);
								LOC46 = ((*LOC48).kind == ((NU8) 3));
								LA47: ;
								if (!LOC46) goto LA49;
								LOC51 = 0;
								LOC51 = copyStr(reprEnum((*typ).kind, (&NTI215241)), ((NI) 2));
								LOC52 = 0;
								LOC52 = nsuToLowerStr(LOC51);
								localerror_188080((*def).info, ((NU16) 230), LOC52);
							}
							LA49: ;
						}
						LA33: ;
					}
					goto LA23;
					LA25: ;
					{
						def = emptynode_216801;
						{
							if (!(symkind == ((NU8) 9))) goto LA56;
							localerror_188080((*a).info, ((NU16) 224), ((NimStringDesc*) &TMP3155));
						}
						LA56: ;
					}
					LA23: ;
					{
						if (!(typ == NIM_NIL)) goto LA60;
						goto LA5;
					}
					LA60: ;
					typeallowedcheck_426948((*a).info, typ, symkind);
					tup = skiptypes_219113(typ, 2048);
					{
						if (!((*a).kind == ((NU8) 36))) goto LA64;
						{
							if (!!(((*tup).kind == ((NU8) 18)))) goto LA68;
							localerror_188080((*a).info, ((NU16) 193), ((NimStringDesc*) &TMP3595));
						}
						goto LA66;
						LA68: ;
						{
							NI LOC71;
							LOC71 = 0;
							LOC71 = sonslen_218327(tup);
							if (!!(((NI)(length - ((NI) 2)) == LOC71))) goto LA72;
							localerror_188080((*a).info, ((NU16) 115), ((NimStringDesc*) &TMP3155));
						}
						goto LA66;
						LA72: ;
						{
							b = newnodei_217248(((NU8) 36), (*a).info);
							newsons_218260(b, length);
							asgnRefNoCycle((void**) (&(*b).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]);
							asgnRefNoCycle((void**) (&(*b).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), def);
							addtovarsection_452854(c, &result, n, b);
						}
						LA66: ;
					}
					goto LA62;
					LA64: ;
					{
						NIM_BOOL LOC76;
						NIM_BOOL LOC77;
						NIM_BOOL LOC78;
						NI LOC82;
						LOC76 = 0;
						LOC77 = 0;
						LOC78 = 0;
						LOC78 = ((*tup).kind == ((NU8) 18));
						if (!(LOC78)) goto LA79;
						LOC78 = ((*def).kind == ((NU8) 37));
						LA79: ;
						LOC77 = LOC78;
						if (!(LOC77)) goto LA80;
						LOC77 = ((*a).kind == ((NU8) 35));
						LA80: ;
						LOC76 = LOC77;
						if (!(LOC76)) goto LA81;
						LOC82 = 0;
						LOC82 = len_216059(a);
						LOC76 = (((NI) 3) < LOC82);
						LA81: ;
						if (!LOC76) goto LA83;
						message_188095((*a).info, ((NU16) 255), ((NimStringDesc*) &TMP3155));
					}
					goto LA62;
					LA83: ;
					LA62: ;
					{
						NI j_453199;
						NI HEX3Atmp_453545;
						NI res_453548;
						j_453199 = 0;
						HEX3Atmp_453545 = 0;
						HEX3Atmp_453545 = (NI)(length - ((NI) 3));
						res_453548 = ((NI) 0);
						{
							while (1) {
								Tsym215822* v;
								if (!(res_453548 <= HEX3Atmp_453545)) goto LA87;
								j_453199 = res_453548;
								v = semidentdef_451639(c, (*a).kindU.S6.sons->data[j_453199], symkind);
								{
									NIM_BOOL LOC90;
									NIM_BOOL LOC92;
									LOC90 = 0;
									LOC90 = !((((*v).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0));
									if (!(LOC90)) goto LA91;
									LOC92 = 0;
									LOC92 = isdiscardunderscore_452965(v);
									LOC90 = !(LOC92);
									LA91: ;
									if (!LOC90) goto LA93;
									addinterfacedecl_270538(c, v);
								}
								LA93: ;
								{
									if (!(((NI) 0) < (*c).inunrolledcontext)) goto LA97;
									(*v).flags |= ((NU32)1)<<((((NU8) 21))%(sizeof(NU32)*8));
								}
								goto LA95;
								LA97: ;
								{
									Tsym215822* shadowed;
									shadowed = findshadowedvar_451557(c, v);
									{
										if (!!((shadowed == NIM_NIL))) goto LA102;
										(*shadowed).flags |= ((NU32)1)<<((((NU8) 21))%(sizeof(NU32)*8));
										{
											NIM_BOOL LOC106;
											LOC106 = 0;
											LOC106 = ((*shadowed).kind == ((NU8) 11));
											if (!(LOC106)) goto LA107;
											LOC106 = !((((*v).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0));
											LA107: ;
											if (!LOC106) goto LA108;
											message_188095((*a).info, ((NU16) 266), ((NimStringDesc*) &TMP3155));
										}
										LA108: ;
										{
											NIM_BOOL LOC112;
											NIM_BOOL LOC114;
											LOC112 = 0;
											LOC112 = ((gnotes_184080 &((NU64)1<<((NU)((((NU16) 256)- 237))&63U)))!=0);
											if (!(LOC112)) goto LA113;
											LOC114 = 0;
											LOC114 = identwithin_451603(def, (*v).name);
											LOC112 = !(LOC114);
											LA113: ;
											if (!LOC112) goto LA115;
											message_188095((*a).info, ((NU16) 256), (*(*v).name).s);
										}
										LA115: ;
									}
									LA102: ;
								}
								LA95: ;
								{
									Tnode215790* LOC137;
									Tnode215790* LOC138;
									if (!!(((*a).kind == ((NU8) 36)))) goto LA119;
									{
										NIM_BOOL LOC123;
										LOC123 = 0;
										LOC123 = !((def == NIM_NIL));
										if (!(LOC123)) goto LA124;
										LOC123 = !(((*def).kind == ((NU8) 1)));
										LA124: ;
										if (!LOC123) goto LA125;
										asgnRefNoCycle((void**) (&(*v).ast), def);
										{
											if (!(((*v).flags &(1U<<((NU)(((NU8) 22))&31U)))!=0)) goto LA129;
											localerror_188080((*def).info, ((NU16) 225), ((NimStringDesc*) &TMP3155));
										}
										LA129: ;
									}
									LA125: ;
									asgnRefNoCycle((void**) (&(*v).typ), typ);
									b = newnodei_217248(((NU8) 35), (*a).info);
									{
										NIM_BOOL LOC133;
										NimStringDesc* LOC136;
										LOC133 = 0;
										LOC133 = importantcomments_161154();
										if (!LOC133) goto LA134;
										LOC136 = 0;
										LOC136 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
										if (LOC136) nimGCunrefNoCycle(LOC136);
									}
									LA134: ;
									LOC137 = 0;
									LOC137 = newsymnode_217234(v);
									addson_217807(b, LOC137);
									addson_217807(b, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]);
									LOC138 = 0;
									LOC138 = copytree_219822(def);
									addson_217807(b, LOC138);
									addtovarsection_452854(c, &result, n, b);
								}
								goto LA117;
								LA119: ;
								{
									{
										if (!((*def).kind == ((NU8) 37))) goto LA142;
										asgnRefNoCycle((void**) (&(*v).ast), HEX5BHEX5D_216238(def, j_453199));
									}
									LA142: ;
									asgnRefNoCycle((void**) (&(*v).typ), (*tup).sons->data[j_453199]);
									asgnRefNoCycle((void**) (&(*b).kindU.S6.sons->data[j_453199]), newsymnode_217234(v));
								}
								LA117: ;
								adddefer_452934(c, &result, v);
								checknilable_451801(v);
								{
									if (!(((*v).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0)) goto LA146;
									hascompiletime = NIM_TRUE;
								}
								LA146: ;
								res_453548 += ((NI) 1);
							} LA87: ;
						}
					}
				} LA5: ;
				res_453555 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!hascompiletime) goto LA150;
		setupcompiletimevar_415631((*c).module, result);
	}
	LA150: ;
	return result;
}

N_NIMCALL(Tnode215790*, fitremovehiddenconv_451538)(Tcontext265020* c, Ttype215828* typ, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = fitnode_426230(c, typ, n);
	{
		if (!((*result).kind == ((NU8) 58) || (*result).kind == ((NU8) 59))) goto LA3;
		changetype_426235((*result).kindU.S6.sons->data[((NI) 1)], typ, NIM_TRUE);
		result = (*result).kindU.S6.sons->data[((NI) 1)];
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = sametype_245628((*result).typ, typ, 0);
		if (!!(LOC6)) goto LA7;
		changetype_426235(result, typ, NIM_FALSE);
	}
	goto LA1;
	LA7: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semconst_453559)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = copynode_219542(n);
	{
		NI i_453575;
		NI HEX3Atmp_453700;
		NI LOC2;
		NI res_453703;
		i_453575 = 0;
		HEX3Atmp_453700 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_453700 = (NI)(LOC2 - ((NI) 1));
		res_453703 = ((NI) 0);
		{
			while (1) {
				if (!(res_453703 <= HEX3Atmp_453700)) goto LA4;
				i_453575 = res_453703;
				{
					Tnode215790* a;
					Tsym215822* v;
					Ttype215828* typ;
					Tnode215790* def;
					Tnode215790* b;
					Tnode215790* LOC53;
					Tnode215790* LOC54;
					a = (*n).kindU.S6.sons->data[i_453575];
					{
						if (!(gcmd_161123 == ((NU8) 14))) goto LA8;
						suggeststmt_374018(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 102)))) goto LA16;
						illformedast_265950(a);
					}
					LA16: ;
					checksonslen_265958(a, ((NI) 3));
					v = semidentdef_451639(c, (*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 10));
					typ = NIM_NIL;
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA20;
						typ = semtypenode_426245(c, (*a).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
					}
					LA20: ;
					def = semconstexpr_427473(c, (*a).kindU.S6.sons->data[((NI) 2)]);
					{
						if (!(def == NIM_NIL)) goto LA24;
						localerror_188080((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
						goto LA5;
					}
					LA24: ;
					{
						if (!!((typ == NIM_NIL))) goto LA28;
						def = fitremovehiddenconv_451538(c, typ, def);
					}
					goto LA26;
					LA28: ;
					{
						typ = (*def).typ;
					}
					LA26: ;
					{
						if (!(typ == NIM_NIL)) goto LA33;
						localerror_188080((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
						goto LA5;
					}
					LA33: ;
					{
						NIM_BOOL LOC37;
						Ttype215828* LOC38;
						NimStringDesc* LOC42;
						LOC37 = 0;
						LOC38 = 0;
						LOC38 = typeallowed_249040(typ, ((NU8) 10));
						LOC37 = !((LOC38 == NIM_NIL));
						if (!(LOC37)) goto LA39;
						LOC37 = !(((*def).kind == ((NU8) 23)));
						LA39: ;
						if (!LOC37) goto LA40;
						LOC42 = 0;
						LOC42 = typetostring_241017(typ, ((NU8) 0));
						localerror_188080((*a).info, ((NU16) 169), LOC42);
						goto LA5;
					}
					LA40: ;
					asgnRefNoCycle((void**) (&(*v).typ), typ);
					asgnRefNoCycle((void**) (&(*v).ast), def);
					{
						if (!!((((*v).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0))) goto LA45;
						addinterfacedecl_270538(c, v);
					}
					LA45: ;
					b = newnodei_217248(((NU8) 102), (*a).info);
					{
						NIM_BOOL LOC49;
						NimStringDesc* LOC52;
						LOC49 = 0;
						LOC49 = importantcomments_161154();
						if (!LOC49) goto LA50;
						LOC52 = 0;
						LOC52 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
						if (LOC52) nimGCunrefNoCycle(LOC52);
					}
					LA50: ;
					LOC53 = 0;
					LOC53 = newsymnode_217234(v);
					addson_217807(b, LOC53);
					addson_217807(b, (*a).kindU.S6.sons->data[((NI) 1)]);
					LOC54 = 0;
					LOC54 = copytree_219822(def);
					addson_217807(b, LOC54);
					addson_217807(result, b);
				} LA5: ;
				res_453703 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, typesectionleftsidepass_454750)(Tcontext265020* c, Tnode215790* n) {
	{
		NI i_454765;
		NI HEX3Atmp_454825;
		NI LOC2;
		NI res_454828;
		i_454765 = 0;
		HEX3Atmp_454825 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_454825 = (NI)(LOC2 - ((NI) 1));
		res_454828 = ((NI) 0);
		{
			while (1) {
				if (!(res_454828 <= HEX3Atmp_454825)) goto LA4;
				i_454765 = res_454828;
				{
					Tnode215790* a;
					Tsym215822* s;
					a = (*n).kindU.S6.sons->data[i_454765];
					{
						if (!(gcmd_161123 == ((NU8) 14))) goto LA8;
						suggeststmt_374018(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA16;
						illformedast_265950(a);
					}
					LA16: ;
					checksonslen_265958(a, ((NI) 3));
					s = semidentdef_451639(c, (*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					asgnRefNoCycle((void**) (&(*s).typ), newtypes_265185(((NU8) 30), c));
					asgnRefNoCycle((void**) (&(*(*s).typ).sym), s);
					{
						if (!((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 43))) goto LA20;
						pragma_280070(c, s, (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)], TMP3551);
					}
					LA20: ;
					{
						if (!!((((*s).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0))) goto LA24;
						addinterfacedecl_270538(c, s);
					}
					LA24: ;
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(s));
				} LA5: ;
				res_454828 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, setmagictype_439291)(Tsym215822* m, NU8 kind, NI size) {
	(*(*m).typ).kind = kind;
	(*(*m).typ).align = ((NI16) (size));
	(*(*m).typ).size = ((NI64) (size));
}

N_NIMCALL(void, processmagictype_439299)(Tcontext265020* c, Tsym215822* m) {
	switch ((*m).magic) {
	case ((NU8) 171):
	{
		setmagictype_439291(m, ((NU8) 31), intsize_168615);
	}
	break;
	case ((NU8) 172):
	{
		setmagictype_439291(m, ((NU8) 32), ((NI) 1));
	}
	break;
	case ((NU8) 173):
	{
		setmagictype_439291(m, ((NU8) 33), ((NI) 2));
	}
	break;
	case ((NU8) 174):
	{
		setmagictype_439291(m, ((NU8) 34), ((NI) 4));
	}
	break;
	case ((NU8) 175):
	{
		setmagictype_439291(m, ((NU8) 35), ((NI) 8));
	}
	break;
	case ((NU8) 176):
	{
		setmagictype_439291(m, ((NU8) 40), intsize_168615);
	}
	break;
	case ((NU8) 177):
	{
		setmagictype_439291(m, ((NU8) 41), ((NI) 1));
	}
	break;
	case ((NU8) 178):
	{
		setmagictype_439291(m, ((NU8) 42), ((NI) 2));
	}
	break;
	case ((NU8) 179):
	{
		setmagictype_439291(m, ((NU8) 43), ((NI) 4));
	}
	break;
	case ((NU8) 180):
	{
		setmagictype_439291(m, ((NU8) 44), ((NI) 8));
	}
	break;
	case ((NU8) 181):
	{
		setmagictype_439291(m, ((NU8) 36), floatsize_168616);
	}
	break;
	case ((NU8) 182):
	{
		setmagictype_439291(m, ((NU8) 37), ((NI) 4));
	}
	break;
	case ((NU8) 183):
	{
		setmagictype_439291(m, ((NU8) 38), ((NI) 8));
	}
	break;
	case ((NU8) 184):
	{
		setmagictype_439291(m, ((NU8) 39), ((NI) 16));
	}
	break;
	case ((NU8) 185):
	{
		setmagictype_439291(m, ((NU8) 1), ((NI) 1));
	}
	break;
	case ((NU8) 186):
	{
		setmagictype_439291(m, ((NU8) 2), ((NI) 1));
	}
	break;
	case ((NU8) 187):
	{
		Ttype215828* LOC18;
		setmagictype_439291(m, ((NU8) 28), ptrsize_168617);
		LOC18 = 0;
		LOC18 = getsystype_259130(((NU8) 2));
		rawaddson_219408((*m).typ, LOC18);
	}
	break;
	case ((NU8) 188):
	{
		Ttype215828* LOC20;
		setmagictype_439291(m, ((NU8) 29), ptrsize_168617);
		LOC20 = 0;
		LOC20 = getsystype_259130(((NU8) 2));
		rawaddson_219408((*m).typ, LOC20);
	}
	break;
	case ((NU8) 189):
	{
		setmagictype_439291(m, ((NU8) 26), ptrsize_168617);
	}
	break;
	case ((NU8) 190):
	{
		Ttype215828* LOC23;
		setmagictype_439291(m, ((NU8) 19), ((NI) 1));
		LOC23 = 0;
		LOC23 = newtypes_265185(((NU8) 3), c);
		rawaddson_219408((*m).typ, LOC23);
	}
	break;
	case ((NU8) 191):
	{
		setmagictype_439291(m, ((NU8) 20), intsize_168615);
	}
	break;
	case ((NU8) 192):
	{
		setmagictype_439291(m, ((NU8) 5), ptrsize_168617);
	}
	break;
	case ((NU8) 193):
	{
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3597))) goto LA29;
			setmagictype_439291(m, ((NU8) 58), ((NI) 0));
		}
		goto LA27;
		LA29: ;
		{
			setmagictype_439291(m, ((NU8) 6), ((NI) 0));
			{
				if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3578))) goto LA34;
				(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
			}
			LA34: ;
		}
		LA27: ;
	}
	break;
	case ((NU8) 194):
	{
		setmagictype_439291(m, ((NU8) 7), ((NI) 0));
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3577))) goto LA39;
			(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
		}
		LA39: ;
	}
	break;
	case ((NU8) 195):
	{
		Ttype215828* LOC42;
		setmagictype_439291(m, ((NU8) 8), ((NI) 0));
		LOC42 = 0;
		LOC42 = newtypes_265185(((NU8) 0), c);
		rawaddson_219408((*m).typ, LOC42);
	}
	break;
	case ((NU8) 196):
	{
		setmagictype_439291(m, ((NU8) 3), ((NI) 0));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 164):
	{
		setmagictype_439291(m, ((NU8) 16), ((NI) 0));
	}
	break;
	case ((NU8) 165):
	{
		setmagictype_439291(m, ((NU8) 27), ((NI) 0));
	}
	break;
	case ((NU8) 169):
	{
		setmagictype_439291(m, ((NU8) 48), ((NI) 0));
	}
	break;
	case ((NU8) 166):
	{
		Ttype215828* LOC48;
		setmagictype_439291(m, ((NU8) 20), ((NI) 0));
		LOC48 = 0;
		LOC48 = newtypes_265185(((NU8) 0), c);
		rawaddson_219408((*m).typ, LOC48);
	}
	break;
	case ((NU8) 167):
	{
		setmagictype_439291(m, ((NU8) 19), ((NI) 0));
	}
	break;
	case ((NU8) 168):
	{
		setmagictype_439291(m, ((NU8) 24), ((NI) 0));
	}
	break;
	case ((NU8) 170):
	{
		Ttype215828* LOC52;
		setmagictype_439291(m, ((NU8) 15), ((NI) 0));
		LOC52 = 0;
		LOC52 = newtypes_265185(((NU8) 0), c);
		rawaddson_219408((*m).typ, LOC52);
	}
	break;
	case ((NU8) 197):
	{
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 28))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 198):
	{
		setmagictype_439291(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_217248(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 199):
	{
		Ttype215828* LOC56;
		setmagictype_439291(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_217248(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
		LOC56 = 0;
		LOC56 = systypefromname_259125(((NimStringDesc*) &TMP3598));
		rawaddson_219408((*m).typ, LOC56);
	}
	break;
	default:
	{
		localerror_188080((*m).info, ((NU16) 67), ((NimStringDesc*) &TMP3155));
	}
	break;
	}
}

N_NIMCALL(void, typesectionrightsidepass_454832)(Tcontext265020* c, Tnode215790* n) {
	{
		NI i_454847;
		NI HEX3Atmp_455092;
		NI LOC2;
		NI res_455095;
		i_454847 = 0;
		HEX3Atmp_455092 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_455092 = (NI)(LOC2 - ((NI) 1));
		res_455095 = ((NI) 0);
		{
			while (1) {
				if (!(res_455095 <= HEX3Atmp_455092)) goto LA4;
				i_454847 = res_455095;
				{
					Tnode215790* a;
					Tsym215822* s;
					Tnode215790* aa;
					a = (*n).kindU.S6.sons->data[i_454847];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA12;
						illformedast_265950(a);
					}
					LA12: ;
					checksonslen_265958(a, ((NI) 3));
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA16;
						illformedast_265950(a);
					}
					LA16: ;
					s = (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
					{
						NIM_BOOL LOC20;
						LOC20 = 0;
						LOC20 = ((*s).magic == ((NU8) 0));
						if (!(LOC20)) goto LA21;
						LOC20 = ((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1));
						LA21: ;
						if (!LOC20) goto LA22;
						localerror_188080((*a).info, ((NU16) 142), (*(*s).name).s);
					}
					LA22: ;
					{
						if (!!(((*s).magic == ((NU8) 0)))) goto LA26;
						processmagictype_439299(c, s);
					}
					LA26: ;
					{
						Tscope215816* LOC32;
						Ttype215828* LOC37;
						Ttype215828* body;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA30;
						LOC32 = 0;
						LOC32 = openscope_270060(c);
						pushowner_265212(s);
						{
							if (!((*s).magic == ((NU8) 0))) goto LA35;
							(*(*s).typ).kind = ((NU8) 10);
						}
						LA35: ;
						asgnRefNoCycle((void**) (&(*(*s).typ).n), semgenericparamlist_439403(c, (*a).kindU.S6.sons->data[((NI) 1)], (*s).typ));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), (*(*s).typ).n);
						(*(*s).typ).size = IL64(-1);
						LOC37 = 0;
						LOC37 = newtypes_265185(((NU8) 0), c);
						rawaddson_219408((*s).typ, LOC37);
						asgnRefNoCycle((void**) (&(*s).ast), a);
						(*c).ingenericcontext += ((NI) 1);
						body = semtypenode_426245(c, (*a).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
						(*c).ingenericcontext -= ((NI) 1);
						{
							NI LOC42;
							if (!!((body == NIM_NIL))) goto LA40;
							asgnRefNoCycle((void**) (&(*body).sym), s);
							(*body).size = IL64(-1);
							LOC42 = 0;
							LOC42 = sonslen_218327((*s).typ);
							asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[(NI)(LOC42 - ((NI) 1))]), body);
						}
						LA40: ;
						popowner_265215();
						closescope_270068(c);
					}
					goto LA28;
					LA30: ;
					{
						Ttype215828* t;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA44;
						pushowner_265212(s);
						t = semtypenode_426245(c, (*a).kindU.S6.sons->data[((NI) 2)], (*s).typ);
						{
							if (!((*s).typ == NIM_NIL)) goto LA48;
							asgnRefNoCycle((void**) (&(*s).typ), t);
						}
						goto LA46;
						LA48: ;
						{
							if (!!((t == (*s).typ))) goto LA51;
							assigntype_218389((*s).typ, t);
						}
						goto LA46;
						LA51: ;
						LA46: ;
						asgnRefNoCycle((void**) (&(*s).ast), a);
						popowner_265215();
					}
					goto LA28;
					LA44: ;
					LA28: ;
					aa = (*a).kindU.S6.sons->data[((NI) 2)];
					{
						NIM_BOOL LOC55;
						NIM_BOOL LOC56;
						NI LOC58;
						Ttype215828* st;
						Ttype215828* LOC77;
						NimStringDesc* LOC78;
						Tident190012* LOC79;
						Tsym215822* LOC80;
						LOC55 = 0;
						LOC56 = 0;
						LOC56 = ((*aa).kind == ((NU8) 141) || (*aa).kind == ((NU8) 142));
						if (!(LOC56)) goto LA57;
						LOC58 = 0;
						LOC58 = len_216059(aa);
						LOC56 = (LOC58 == ((NI) 1));
						LA57: ;
						LOC55 = LOC56;
						if (!(LOC55)) goto LA59;
						LOC55 = ((*(*aa).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 133));
						LA59: ;
						if (!LOC55) goto LA60;
						st = (*s).typ;
						{
							if (!((*st).kind == ((NU8) 10))) goto LA64;
							st = lastson_218377(st);
						}
						LA64: ;
						{
							NimStringDesc* LOC70;
							if (!!(((*st).kind == ((NU8) 21) || (*st).kind == ((NU8) 22)))) goto LA68;
							LOC70 = 0;
							LOC70 = HEX24_188183(TMP3599);
							internalerror_188113(LOC70);
						}
						LA68: ;
						{
							Ttype215828* LOC73;
							NimStringDesc* LOC76;
							LOC73 = 0;
							LOC73 = lastson_218377(st);
							if (!!(((*LOC73).sym == NIM_NIL))) goto LA74;
							LOC76 = 0;
							LOC76 = HEX24_188183(TMP3601);
							internalerror_188113(LOC76);
						}
						LA74: ;
						LOC77 = 0;
						LOC77 = lastson_218377(st);
						LOC78 = 0;
						LOC78 = rawNewString((*(*s).name).s->Sup.len + 11);
appendString(LOC78, (*(*s).name).s);
appendString(LOC78, ((NimStringDesc*) &TMP3602));
						LOC79 = 0;
						LOC79 = getident_190441(LOC78);
						LOC80 = 0;
						LOC80 = getcurrowner_265210();
						asgnRefNoCycle((void**) (&(*LOC77).sym), newsym_216684(((NU8) 7), LOC79, LOC80, (*s).info));
					}
					LA60: ;
				} LA5: ;
				res_455095 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, checkformetafields_455099)(Tnode215790* n) {
{	{
		if (!n == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 138):
	case ((NU8) 139):
	{
		{
			Tnode215790* s_455119;
			s_455119 = 0;
			{
				NI i_455225;
				NI HEX3Atmp_455227;
				NI LOC8;
				NI res_455229;
				i_455225 = 0;
				HEX3Atmp_455227 = 0;
				LOC8 = 0;
				LOC8 = len_216059(n);
				HEX3Atmp_455227 = (LOC8 - 1);
				res_455229 = ((NI) 0);
				{
					while (1) {
						if (!(res_455229 <= HEX3Atmp_455227)) goto LA10;
						i_455225 = res_455229;
						s_455119 = (*n).kindU.S6.sons->data[i_455225];
						checkformetafields_455099(s_455119);
						res_455229 += ((NI) 1);
					} LA10: ;
				}
			}
		}
	}
	break;
	case ((NU8) 85):
	case ((NU8) 88):
	{
		Tnode215790* LOC12;
		LOC12 = 0;
		LOC12 = lastson_218364(n);
		checkformetafields_455099(LOC12);
	}
	break;
	case ((NU8) 3):
	{
		Ttype215828* t;
		t = (*(*n).kindU.S4.sym).typ;
		switch ((*t).kind) {
		case ((NU8) 24):
		case ((NU8) 19):
		case ((NU8) 16):
		case ((NU8) 27):
		case ((NU8) 23):
		case ((NU8) 21):
		case ((NU8) 22):
		case ((NU8) 25):
		case ((NU8) 9):
		case ((NU8) 11):
		{
			NI start;
			start = ((*t).kind == ((NU8) 9) || (*t).kind == ((NU8) 11));
			{
				NI i_455169;
				NI HEX3Atmp_455233;
				NI res_455236;
				i_455169 = 0;
				HEX3Atmp_455233 = 0;
				HEX3Atmp_455233 = (((*t).sons ? (*t).sons->Sup.len : 0) - 1);
				res_455236 = ((NI) (start));
				{
					while (1) {
						if (!(res_455236 <= HEX3Atmp_455233)) goto LA17;
						i_455169 = res_455236;
						{
							NIM_BOOL LOC20;
							NIM_BOOL LOC21;
							NimStringDesc* LOC26;
							LOC20 = 0;
							LOC21 = 0;
							LOC21 = !(((*t).sons->data[i_455169] == NIM_NIL));
							if (!(LOC21)) goto LA22;
							LOC21 = ismetatype_216803((*t).sons->data[i_455169]);
							LA22: ;
							LOC20 = LOC21;
							if (!(LOC20)) goto LA23;
							LOC20 = !((((*(*t).sons->data[i_455169]).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0));
							LA23: ;
							if (!LOC20) goto LA24;
							LOC26 = 0;
							LOC26 = typetostring_241017((*t).sons->data[i_455169], ((NU8) 0));
							localerror_188080((*n).info, ((NU16) 194), LOC26);
						}
						LA24: ;
						res_455236 += ((NI) 1);
					} LA17: ;
				}
			}
		}
		break;
		default:
		{
			{
				NIM_BOOL LOC30;
				NIM_BOOL LOC31;
				NimStringDesc* LOC36;
				LOC30 = 0;
				LOC31 = 0;
				LOC31 = !((t == NIM_NIL));
				if (!(LOC31)) goto LA32;
				LOC31 = ismetatype_216803(t);
				LA32: ;
				LOC30 = LOC31;
				if (!(LOC30)) goto LA33;
				LOC30 = !((((*t).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0));
				LA33: ;
				if (!LOC30) goto LA34;
				LOC36 = 0;
				LOC36 = typetostring_241017(t, ((NU8) 0));
				localerror_188080((*n).info, ((NU16) 194), LOC36);
			}
			LA34: ;
		}
		break;
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC42;
			if (!NIM_TRUE) goto LA40;
			LOC42 = 0;
			LOC42 = HEX24_188183(TMP3603);
			internalerror_188113(LOC42);
		}
		LA40: ;
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, typesectionfinalpass_455240)(Tcontext265020* c, Tnode215790* n) {
	{
		NI i_455255;
		NI HEX3Atmp_455344;
		NI LOC2;
		NI res_455347;
		i_455255 = 0;
		HEX3Atmp_455344 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_455344 = (NI)(LOC2 - ((NI) 1));
		res_455347 = ((NI) 0);
		{
			while (1) {
				if (!(res_455347 <= HEX3Atmp_455344)) goto LA4;
				i_455255 = res_455347;
				{
					Tnode215790* a;
					Tsym215822* s;
					a = (*n).kindU.S6.sons->data[i_455255];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
						illformedast_265950(a);
					}
					LA12: ;
					s = (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
					{
						if (!((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1))) goto LA16;
						{
							Ttype215828* t;
							if (!((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 3) || (*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 2) || (*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 53))) goto LA20;
							t = semtypenode_426245(c, (*a).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
							{
								if (!((*t).kind == ((NU8) 17) || (*t).kind == ((NU8) 14))) goto LA24;
								assigntype_218389((*s).typ, t);
								(*(*s).typ).Sup.id = (*t).Sup.id;
							}
							LA24: ;
						}
						LA20: ;
						checkconstructedtype_284089((*s).info, (*s).typ);
						{
							NIM_BOOL LOC28;
							LOC28 = 0;
							LOC28 = ((*(*s).typ).kind == ((NU8) 17) || (*(*s).typ).kind == ((NU8) 18));
							if (!(LOC28)) goto LA29;
							LOC28 = !((*(*s).typ).n == 0);
							LA29: ;
							if (!LOC28) goto LA30;
							checkformetafields_455099((*(*s).typ).n);
						}
						LA30: ;
					}
					LA16: ;
				} LA5: ;
				res_455347 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode215790*, semtypesection_455631)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !((((*(*c).module).flags &(1U<<((NU)(((NU8) 8))&31U)))!=0));
		if (LOC3) goto LA4;
		LOC3 = !((((*n).flags &(1U<<((NU)(((NU8) 7))&15U)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		typesectionleftsidepass_454750(c, n);
		typesectionrightsidepass_454832(c, n);
		typesectionfinalpass_455240(c, n);
	}
	LA5: ;
	result = n;
	return result;
}

N_NIMCALL(Tnode215790*, semdiscard_448803)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	checksonslen_265958(n, ((NI) 1));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = isemptytype_220513((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!LOC7) goto LA8;
			localerror_188080((*n).info, ((NU16) 145), ((NimStringDesc*) &TMP3155));
		}
		LA8: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode215790*, semwhile_449011)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tscope215816* LOC1;
	Tnode215790* LOC2;
	result = 0;
	result = n;
	checksonslen_265958(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	LOC2 = 0;
	LOC2 = semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), forcebool_433223(c, LOC2));
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semstmt_426250(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	closescope_270068(c);
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 1)]).typ == enforcevoidcontext_448802)) goto LA5;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_448802);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode215790*, sembreakorcontinue_448821)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	checksonslen_265958(n, ((NI) 1));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		{
			Tsym215822* s;
			if (!!(((*n).kind == ((NU8) 111)))) goto LA7;
			s = 0;
			switch ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind) {
			case ((NU8) 2):
			{
				s = lookup_270601(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			}
			break;
			case ((NU8) 3):
			{
				s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
			}
			break;
			default:
			{
				illformedast_265950(n);
			}
			break;
			}
			{
				NIM_BOOL LOC14;
				Tnode215790* x;
				LOC14 = 0;
				LOC14 = ((*s).kind == ((NU8) 21));
				if (!(LOC14)) goto LA15;
				LOC14 = ((*(*s).owner).Sup.id == (*(*(*c).p).owner).Sup.id);
				LA15: ;
				if (!LOC14) goto LA16;
				x = newsymnode_217234(s);
				(*x).info = (*n).info;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), x);
				suggestsym_373436((*x).info, s, NIM_TRUE);
			}
			goto LA12;
			LA16: ;
			{
				localerror_188080((*n).info, ((NU16) 168), (*(*s).name).s);
			}
			LA12: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3604));
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC21;
		NimStringDesc* LOC25;
		LOC21 = 0;
		LOC21 = ((*(*c).p).nestedloopcounter <= ((NI) 0));
		if (!(LOC21)) goto LA22;
		LOC21 = ((*(*c).p).nestedblockcounter <= ((NI) 0));
		LA22: ;
		if (!LOC21) goto LA23;
		LOC25 = 0;
		LOC25 = rendertree_234044(n, 4);
		localerror_188080((*n).info, ((NU16) 168), LOC25);
	}
	goto LA1;
	LA23: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semexprnoderef_426219)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	result = 0;
	result = semexpr_426201(c, n, flags);
	{
		if (!((*result).kind == ((NU8) 1))) goto LA3;
		result = errornode_265905(c, n);
	}
	LA3: ;
	{
		NimStringDesc* LOC9;
		if (!((*result).typ == NIM_NIL)) goto LA7;
		LOC9 = 0;
		LOC9 = rendertree_234044(result, 4);
		localerror_188080((*n).info, ((NU16) 94), LOC9);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_265901(c));
	}
	goto LA5;
	LA7: ;
	{
		semprocvarcheck_449138(c, result);
		semdestructorcheck_450113(c, result, flags);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tsym215822*, symforvar_454188)(Tcontext265020* c, Tnode215790* n) {
	Tsym215822* result;
	Tnode215790* m;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 43))) goto LA3;
		m = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		m = n;
	}
	LA1: ;
	result = newsymg_426895(((NU8) 20), m, c);
	return result;
}

N_NIMCALL(void, addforvardecl_454159)(Tcontext265020* c, Tsym215822* v) {
	{
		Tsym215822* shadowed;
		if (!((gnotes_184080 &((NU64)1<<((NU)((((NU16) 256)- 237))&63U)))!=0)) goto LA3;
		shadowed = findshadowedvar_451557(c, v);
		{
			if (!!((shadowed == NIM_NIL))) goto LA7;
			message_188095((*v).info, ((NU16) 256), (*(*v).name).s);
		}
		LA7: ;
	}
	LA3: ;
	adddecl_270445(c, v);
}

N_NIMCALL(Tnode215790*, semforvars_454401)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	NI length;
	Ttype215828* iterbase;
	Ttype215828* iter;
	result = 0;
	result = n;
	length = sonslen_218351(n);
	iterbase = (*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).typ;
	iter = skiptypes_219113(iterbase, 2048);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*iter).kind == ((NU8) 18)));
		if (LOC3) goto LA4;
		LOC3 = (length == ((NI) 3));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			Tsym215822* v;
			if (!(length == ((NI) 3))) goto LA9;
			v = symforvar_454188(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			{
				Tsym215822* LOC13;
				LOC13 = 0;
				LOC13 = getcurrowner_265210();
				if (!((*LOC13).kind == ((NU8) 6))) goto LA14;
				(*v).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
			}
			LA14: ;
			asgnRefNoCycle((void**) (&(*v).typ), iterbase);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_217234(v));
			{
				if (!!((((*v).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0))) goto LA18;
				addforvardecl_454159(c, v);
			}
			LA18: ;
		}
		goto LA7;
		LA9: ;
		{
			localerror_188080((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3155));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		NI LOC22;
		LOC22 = 0;
		LOC22 = sonslen_218327(iter);
		if (!!(((NI)(length - ((NI) 2)) == LOC22))) goto LA23;
		localerror_188080((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3155));
	}
	goto LA1;
	LA23: ;
	{
		{
			NI i_454466;
			NI HEX3Atmp_454523;
			NI res_454526;
			i_454466 = 0;
			HEX3Atmp_454523 = 0;
			HEX3Atmp_454523 = (NI)(length - ((NI) 3));
			res_454526 = ((NI) 0);
			{
				while (1) {
					Tsym215822* v;
					if (!(res_454526 <= HEX3Atmp_454523)) goto LA28;
					i_454466 = res_454526;
					v = symforvar_454188(c, (*n).kindU.S6.sons->data[i_454466]);
					{
						Tsym215822* LOC31;
						LOC31 = 0;
						LOC31 = getcurrowner_265210();
						if (!((*LOC31).kind == ((NU8) 6))) goto LA32;
						(*v).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
					}
					LA32: ;
					asgnRefNoCycle((void**) (&(*v).typ), (*iter).sons->data[i_454466]);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_454466]), newsymnode_217234(v));
					{
						NIM_BOOL LOC36;
						NIM_BOOL LOC38;
						LOC36 = 0;
						LOC36 = !((((*v).flags &(1U<<((NU)(((NU8) 31))&31U)))!=0));
						if (!(LOC36)) goto LA37;
						LOC38 = 0;
						LOC38 = isdiscardunderscore_452965(v);
						LOC36 = !(LOC38);
						LA37: ;
						if (!LOC36) goto LA39;
						addforvardecl_454159(c, v);
					}
					LA39: ;
					res_454526 += ((NI) 1);
				} LA28: ;
			}
		}
	}
	LA1: ;
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semstmt_426250(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode215790*, instfieldloopbody_453713)(Tfieldinstctx453708 c, Tnode215790* n, Tnode215790* forloop) {
	Tnode215790* result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 1) ... ((NU8) 1):
	case ((NU8) 4) ... ((NU8) 23):
	{
		result = n;
	}
	break;
	case ((NU8) 2):
	case ((NU8) 3):
	{
		Tident190012* ident;
		NI L;
		result = n;
		ident = considerquotedident_270004(n);
		L = sonslen_218351(forloop);
		{
			if (!c.replacebyfieldname) goto LA5;
			{
				Tnode215790* LOC9;
				Tident190012* LOC10;
				NimStringDesc* fieldname;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_216238(forloop, ((NI) 0));
				LOC10 = 0;
				LOC10 = considerquotedident_270004(LOC9);
				if (!((*ident).Sup.id == (*LOC10).Sup.id)) goto LA11;
				{
					if (!c.tupletype == 0) goto LA15;
					fieldname = (*(*c.field).name).s;
				}
				goto LA13;
				LA15: ;
				{
					NimStringDesc* LOC20;
					NimStringDesc* LOC21;
					if (!(*c.tupletype).n == 0) goto LA18;
					LOC20 = 0;
					LOC21 = 0;
					LOC21 = nimIntToStr(c.tupleindex);
					LOC20 = rawNewString(LOC21->Sup.len + 5);
appendString(LOC20, ((NimStringDesc*) &TMP3608));
appendString(LOC20, LOC21);
					fieldname = LOC20;
				}
				goto LA13;
				LA18: ;
				{
					fieldname = (*(*(*(*(*c.tupletype).n).kindU.S6.sons->data[c.tupleindex]).kindU.S4.sym).name).s;
				}
				LA13: ;
				result = newstrnode_216678(((NU8) 20), fieldname);
				goto BeforeRet;
			}
			LA11: ;
		}
		LA5: ;
		{
			NI i_453780;
			NI HEX3Atmp_453830;
			NI HEX3Atmp_453831;
			NI res_453834;
			i_453780 = 0;
			HEX3Atmp_453830 = 0;
			HEX3Atmp_453831 = 0;
			HEX3Atmp_453830 = c.replacebyfieldname;
			HEX3Atmp_453831 = (NI)(L - ((NI) 3));
			res_453834 = ((NI) (HEX3Atmp_453830));
			{
				while (1) {
					if (!(res_453834 <= HEX3Atmp_453831)) goto LA25;
					i_453780 = res_453834;
					{
						Tnode215790* LOC28;
						Tident190012* LOC29;
						Tnode215790* call;
						Tnode215790* tupl;
						LOC28 = 0;
						LOC28 = HEX5BHEX5D_216238(forloop, i_453780);
						LOC29 = 0;
						LOC29 = considerquotedident_270004(LOC28);
						if (!((*ident).Sup.id == (*LOC29).Sup.id)) goto LA30;
						call = (*forloop).kindU.S6.sons->data[(NI)(L - ((NI) 2))];
						tupl = (*call).kindU.S6.sons->data[(NI)((NI)(i_453780 + ((NI) 1)) - ((NI) (c.replacebyfieldname)))];
						{
							Tnode215790* LOC36;
							if (!c.field == 0) goto LA34;
							result = newnodei_217248(((NU8) 42), (*n).info);
							add_216114(result, tupl);
							LOC36 = 0;
							LOC36 = newintnode_216660(((NU8) 6), ((NI64) (c.tupleindex)));
							add_216114(result, LOC36);
						}
						goto LA32;
						LA34: ;
						{
							Tnode215790* LOC38;
							result = newnodei_217248(((NU8) 45), (*n).info);
							add_216114(result, tupl);
							LOC38 = 0;
							LOC38 = newsymnode_217241(c.field, (*n).info);
							add_216114(result, LOC38);
						}
						LA32: ;
						goto LA23;
					}
					LA30: ;
					res_453834 += ((NI) 1);
				} LA25: ;
			}
		} LA23: ;
	}
	break;
	default:
	{
		NI LOC44;
		{
			if (!((*n).kind == ((NU8) 111))) goto LA42;
			localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3609));
		}
		LA42: ;
		result = copynode_219542(n);
		LOC44 = 0;
		LOC44 = sonslen_218351(n);
		newsons_218260(result, LOC44);
		{
			NI i_453826;
			NI HEX3Atmp_453839;
			NI LOC46;
			NI res_453842;
			i_453826 = 0;
			HEX3Atmp_453839 = 0;
			LOC46 = 0;
			LOC46 = sonslen_218351(n);
			HEX3Atmp_453839 = (NI)(LOC46 - ((NI) 1));
			res_453842 = ((NI) 0);
			{
				while (1) {
					if (!(res_453842 <= HEX3Atmp_453839)) goto LA48;
					i_453826 = res_453842;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_453826]), instfieldloopbody_453713(c, (*n).kindU.S6.sons->data[i_453826], forloop));
					res_453842 += ((NI) 1);
				} LA48: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, semforobjectfields_453850)(Tfieldsctx453847 c, Tnode215790* typ, Tnode215790* forloop, Tnode215790* father) {
{	switch ((*typ).kind) {
	case ((NU8) 3):
	{
		Tfieldinstctx453708 fc;
		Tscope215816* LOC2;
		Tnode215790* body;
		Tnode215790* LOC3;
		Tnode215790* LOC4;
		memset((void*)(&fc), 0, sizeof(fc));
		fc.field = (*typ).kindU.S4.sym;
		fc.replacebyfieldname = (c.m == ((NU8) 141));
		LOC2 = 0;
		LOC2 = openscope_270060(c.c);
		(*c.c).inunrolledcontext += ((NI) 1);
		LOC3 = 0;
		LOC3 = lastson_218364(forloop);
		body = instfieldloopbody_453713(fc, LOC3, forloop);
		LOC4 = 0;
		LOC4 = semstmt_426250(c.c, body);
		add_216114(father, LOC4);
		(*c.c).inunrolledcontext -= ((NI) 1);
		closescope_270068(c.c);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		NI L_453888;
		Tnode215790* call;
		Tnode215790* LOC12;
		Tnode215790* casestmt;
		Tnode215790* access;
		Tnode215790* LOC13;
		L_453888 = len_216059(forloop);
		call = (*forloop).kindU.S6.sons->data[(NI)(L_453888 - ((NI) 2))];
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_216059(call);
			if (!(((NI) 2) < LOC9)) goto LA10;
			localerror_188080((*forloop).info, ((NU16) 4), ((NimStringDesc*) &TMP3610));
			goto BeforeRet;
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_216238(typ, ((NI) 0));
		semforobjectfields_453850(c, LOC12, forloop, father);
		casestmt = newnodei_217248(((NU8) 97), (*forloop).info);
		access = newnodei_217401(((NU8) 45), (*forloop).info, ((NI) 2));
		asgnRefNoCycle((void**) (&(*access).kindU.S6.sons->data[((NI) 0)]), (*call).kindU.S6.sons->data[((NI) 1)]);
		asgnRefNoCycle((void**) (&(*access).kindU.S6.sons->data[((NI) 1)]), newsymnode_217241((*(*typ).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym, (*forloop).info));
		LOC13 = 0;
		LOC13 = semexprwithtype_426208(c.c, access, 0);
		add_216114(casestmt, LOC13);
		{
			NI i_453918;
			NI HEX3Atmp_453929;
			NI LOC15;
			NI res_453932;
			i_453918 = 0;
			HEX3Atmp_453929 = 0;
			LOC15 = 0;
			LOC15 = len_216059(typ);
			HEX3Atmp_453929 = (LOC15 - 1);
			res_453932 = ((NI) 1);
			{
				while (1) {
					Tnode215790* branch;
					Tnode215790* LOC18;
					NI L;
					Tnode215790* LOC19;
					Tnode215790* LOC20;
					Tnode215790* LOC21;
					if (!(res_453932 <= HEX3Atmp_453929)) goto LA17;
					i_453918 = res_453932;
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_216238(typ, i_453918);
					branch = copytree_219822(LOC18);
					L = len_216059(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_217248(((NU8) 115), (*forloop).info));
					LOC19 = 0;
					LOC19 = HEX5BHEX5D_216238(typ, i_453918);
					LOC20 = 0;
					LOC20 = lastson_218364(LOC19);
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_216238(branch, (NI)(L - ((NI) 1)));
					semforobjectfields_453850(c, LOC20, forloop, LOC21);
					add_216114(casestmt, branch);
					res_453932 += ((NI) 1);
				} LA17: ;
			}
		}
		add_216114(father, casestmt);
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode215790* t_453926;
			t_453926 = 0;
			{
				NI i_453940;
				NI HEX3Atmp_453942;
				NI LOC25;
				NI res_453944;
				i_453940 = 0;
				HEX3Atmp_453942 = 0;
				LOC25 = 0;
				LOC25 = len_216059(typ);
				HEX3Atmp_453942 = (LOC25 - 1);
				res_453944 = ((NI) 0);
				{
					while (1) {
						if (!(res_453944 <= HEX3Atmp_453942)) goto LA27;
						i_453940 = res_453944;
						t_453926 = (*typ).kindU.S6.sons->data[i_453940];
						semforobjectfields_453850(c, t_453926, forloop, father);
						res_453944 += ((NI) 1);
					} LA27: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_265954(typ);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode215790*, semforfields_453947)(Tcontext265020* c, Tnode215790* n, NU8 m) {
	Tnode215790* result;
	Tsym215822* truesymbol;
	Tident190012* LOC1;
	Tnode215790* stmts;
	NI length;
	Tnode215790* call;
	Ttype215828* tupletypea;
{	result = 0;
	result = newnodei_217401(((NU8) 96), (*n).info, ((NI) 2));
	LOC1 = 0;
	LOC1 = getident_190441(((NimStringDesc*) &TMP3605));
	truesymbol = strtableget_222066((*systemmodule_259007).kindU.S3.tab, LOC1);
	{
		Tident190012* LOC6;
		Tsym215822* LOC7;
		if (!(truesymbol == NIM_NIL)) goto LA4;
		localerror_188080((*n).info, ((NU16) 68), ((NimStringDesc*) &TMP3606));
		LOC6 = 0;
		LOC6 = getident_190441(((NimStringDesc*) &TMP3605));
		LOC7 = 0;
		LOC7 = getcurrowner_265210();
		truesymbol = newsym_216684(((NU8) 0), LOC6, LOC7, (*n).info);
		asgnRefNoCycle((void**) (&(*truesymbol).typ), getsystype_259130(((NU8) 1)));
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_217241(truesymbol, (*n).info));
	stmts = newnodei_217248(((NU8) 115), (*n).info);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), stmts);
	length = sonslen_218351(n);
	call = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))];
	{
		NI LOC10;
		LOC10 = 0;
		LOC10 = sonslen_218351(call);
		if (!!(((NI)(length - ((NI) 2)) == (NI)((NI)(LOC10 - ((NI) 1)) + ((NI) ((m == ((NU8) 141)))))))) goto LA11;
		localerror_188080((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3155));
		goto BeforeRet;
	}
	LA11: ;
	tupletypea = skiptypes_219113((*(*call).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964608));
	{
		if (!!(((*tupletypea).kind == ((NU8) 18) || (*tupletypea).kind == ((NU8) 17)))) goto LA15;
		localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3607));
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_454027;
		NI HEX3Atmp_454141;
		NI LOC18;
		NI res_454144;
		i_454027 = 0;
		HEX3Atmp_454141 = 0;
		LOC18 = 0;
		LOC18 = len_216059(call);
		HEX3Atmp_454141 = (NI)(LOC18 - ((NI) 1));
		res_454144 = ((NI) 1);
		{
			while (1) {
				Ttype215828* tupletypeb;
				if (!(res_454144 <= HEX3Atmp_454141)) goto LA20;
				i_454027 = res_454144;
				tupletypeb = skiptypes_219113((*(*call).kindU.S6.sons->data[i_454027]).typ, IL64(211106240964608));
				{
					NIM_BOOL LOC23;
					LOC23 = 0;
					LOC23 = sametype_245628(tupletypea, tupletypeb, 0);
					if (!!(LOC23)) goto LA24;
					typemismatch_426316((*call).kindU.S6.sons->data[i_454027], tupletypea, tupletypeb);
				}
				LA24: ;
				res_454144 += ((NI) 1);
			} LA20: ;
		}
	}
	(*(*c).p).nestedloopcounter += ((NI) 1);
	{
		Tnode215790* loopbody;
		if (!((*tupletypea).kind == ((NU8) 18))) goto LA28;
		loopbody = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))];
		{
			NI i_454073;
			NI HEX3Atmp_454150;
			NI LOC31;
			NI res_454153;
			i_454073 = 0;
			HEX3Atmp_454150 = 0;
			LOC31 = 0;
			LOC31 = sonslen_218327(tupletypea);
			HEX3Atmp_454150 = (NI)(LOC31 - ((NI) 1));
			res_454153 = ((NI) 0);
			{
				while (1) {
					Tscope215816* LOC34;
					Tfieldinstctx453708 fc;
					Tnode215790* body;
					Tnode215790* LOC35;
					if (!(res_454153 <= HEX3Atmp_454150)) goto LA33;
					i_454073 = res_454153;
					LOC34 = 0;
					LOC34 = openscope_270060(c);
					memset((void*)(&fc), 0, sizeof(fc));
					fc.tupletype = tupletypea;
					fc.tupleindex = i_454073;
					fc.replacebyfieldname = (m == ((NU8) 141));
					body = instfieldloopbody_453713(fc, loopbody, n);
					(*c).inunrolledcontext += ((NI) 1);
					LOC35 = 0;
					LOC35 = semstmt_426250(c, body);
					add_216114(stmts, LOC35);
					(*c).inunrolledcontext -= ((NI) 1);
					closescope_270068(c);
					res_454153 += ((NI) 1);
				} LA33: ;
			}
		}
	}
	goto LA26;
	LA28: ;
	{
		Tfieldsctx453847 fc;
		Ttype215828* t;
		memset((void*)(&fc), 0, sizeof(fc));
		fc.m = m;
		fc.c = c;
		t = tupletypea;
		{
			while (1) {
				if (!((*t).kind == ((NU8) 17))) goto LA38;
				semforobjectfields_453850(fc, (*t).n, n, stmts);
				{
					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA41;
					goto LA37;
				}
				LA41: ;
				t = skiptypes_219113((*t).sons->data[((NI) 0)], IL64(211106247256320));
			} LA38: ;
		} LA37: ;
	}
	LA26: ;
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	{
		NIM_BOOL LOC45;
		Tnode215790* b;
		LOC45 = 0;
		LOC45 = containsnode_220117(stmts, TMP3611);
		if (!LOC45) goto LA46;
		b = newnodei_217248(((NU8) 110), (*n).info);
		add_216114(b, emptynode_216801);
		add_216114(stmts, b);
	}
	goto LA43;
	LA46: ;
	{
		result = stmts;
	}
	LA43: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, implicititerator_454530)(Tcontext265020* c, NimStringDesc* it, Tnode215790* arg) {
	Tnode215790* result;
	Tident190012* LOC1;
	Tnode215790* LOC2;
	result = 0;
	result = newnodei_217248(((NU8) 27), (*arg).info);
	LOC1 = 0;
	LOC1 = getident_190441(it);
	LOC2 = 0;
	LOC2 = newidentnode_217228(LOC1, (*arg).info);
	add_216114(result, LOC2);
	{
		NIM_BOOL LOC5;
		Tnode215790* LOC9;
		LOC5 = 0;
		LOC5 = !(((*arg).typ == NIM_NIL));
		if (!(LOC5)) goto LA6;
		LOC5 = ((*(*arg).typ).kind == ((NU8) 23));
		LA6: ;
		if (!LOC5) goto LA7;
		LOC9 = 0;
		LOC9 = newderef_377006(arg);
		add_216114(result, LOC9);
	}
	goto LA3;
	LA7: ;
	{
		add_216114(result, arg);
	}
	LA3: ;
	result = semexprnoderef_426219(c, result, 2);
	return result;
}

N_NIMCALL(Tnode215790*, semfor_454561)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	NI length;
	Tscope215816* LOC1;
	Tnode215790* call;
	NIM_BOOL iscallexpr;
	result = 0;
	result = n;
	checkminsonslen_265962(n, ((NI) 3));
	length = sonslen_218351(n);
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), semexprnoderef_426219(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))], 2));
	call = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))];
	iscallexpr = ((*call).kind == ((NU8) 27) || (*call).kind == ((NU8) 29) || (*call).kind == ((NU8) 30) || (*call).kind == ((NU8) 31) || (*call).kind == ((NU8) 26) || (*call).kind == ((NU8) 28) || (*call).kind == ((NU8) 32));
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		Tnode215790* LOC7;
		Tnode215790* LOC9;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = iscallexpr;
		if (!(LOC5)) goto LA6;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_216238(call, ((NI) 0));
		LOC5 = ((*LOC7).kind == ((NU8) 3));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA8;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_216238(call, ((NI) 0));
		LOC4 = ((*(*LOC9).kindU.S4.sym).magic == ((NU8) 140) || (*(*LOC9).kindU.S4.sym).magic == ((NU8) 141) || (*(*LOC9).kindU.S4.sym).magic == ((NU8) 142));
		LA8: ;
		if (!LOC4) goto LA10;
		{
			if (!((*(*(*call).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU8) 142))) goto LA14;
			result = semforvars_454401(c, n);
			(*result).kind = ((NU8) 95);
		}
		goto LA12;
		LA14: ;
		{
			result = semforfields_453947(c, n, (*(*(*call).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic);
		}
		LA12: ;
	}
	goto LA2;
	LA10: ;
	{
		NIM_BOOL LOC18;
		LOC18 = 0;
		LOC18 = iscallexpr;
		if (!(LOC18)) goto LA19;
		LOC18 = ((*(*(*call).kindU.S6.sons->data[((NI) 0)]).typ).callconv == ((NU8) 8));
		LA19: ;
		if (!LOC18) goto LA20;
		result = semforvars_454401(c, n);
	}
	goto LA2;
	LA20: ;
	{
		NIM_BOOL LOC23;
		NIM_BOOL LOC24;
		LOC23 = 0;
		LOC24 = 0;
		LOC24 = !(iscallexpr);
		if (LOC24) goto LA25;
		LOC24 = !(((*(*call).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)));
		LA25: ;
		LOC23 = LOC24;
		if (LOC23) goto LA26;
		LOC23 = !(((*(*(*call).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).kind == ((NU8) 14)));
		LA26: ;
		if (!LOC23) goto LA27;
		{
			if (!(length == ((NI) 3))) goto LA31;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), implicititerator_454530(c, ((NimStringDesc*) &TMP3612), (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA29;
		LA31: ;
		{
			if (!(length == ((NI) 4))) goto LA34;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), implicititerator_454530(c, ((NimStringDesc*) &TMP3613), (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA29;
		LA34: ;
		{
			localerror_188080((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).info, ((NU16) 223), ((NimStringDesc*) &TMP3155));
		}
		LA29: ;
		result = semforvars_454401(c, n);
	}
	goto LA2;
	LA27: ;
	{
		result = semforvars_454401(c, n);
	}
	LA2: ;
	{
		if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ == enforcevoidcontext_448802)) goto LA40;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_448802);
	}
	LA40: ;
	closescope_270068(c);
	return result;
}

N_NIMCALL(NI64, tocover_449050)(Ttype215828* t) {
	NI64 result;
	Ttype215828* t2;
	result = 0;
	t2 = skiptypes_219113(t, IL64(211106242013184));
	{
		NIM_BOOL LOC3;
		NI LOC7;
		LOC3 = 0;
		LOC3 = ((*t2).kind == ((NU8) 14));
		if (!(LOC3)) goto LA4;
		LOC3 = enumhasholes_241060(t2);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = sonslen_218351((*t2).n);
		result = ((NI64) (LOC7));
	}
	goto LA1;
	LA5: ;
	{
		Ttype215828* LOC9;
		LOC9 = 0;
		LOC9 = skiptypes_219113(t, IL64(211106240964608));
		result = lengthord_241007(LOC9);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semcase_450865)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tscope215816* LOC1;
	NIM_BOOL chckcovered;
	NI64 covered;
	Ttype215828* typ;
	NIM_BOOL haselse;
	NIM_BOOL notordinal;
	Ttype215828* LOC2;
{	result = 0;
	result = n;
	checkminsonslen_265962(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_270060(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	chckcovered = NIM_FALSE;
	covered = IL64(0);
	typ = commontypebegin_426394;
	haselse = NIM_FALSE;
	notordinal = NIM_FALSE;
	LOC2 = 0;
	LOC2 = skiptypes_219113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106242013184));
	switch ((*LOC2).kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 2):
	case ((NU8) 14):
	case ((NU8) 40) ... ((NU8) 43):
	case ((NU8) 1):
	{
		chckcovered = NIM_TRUE;
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	case ((NU8) 28):
	case ((NU8) 50):
	{
		notordinal = NIM_TRUE;
	}
	break;
	default:
	{
		localerror_188080((*n).info, ((NU16) 111), ((NimStringDesc*) &TMP3155));
		goto BeforeRet;
	}
	break;
	}
	{
		NI i_450902;
		NI HEX3Atmp_451260;
		NI LOC7;
		NI res_451263;
		i_450902 = 0;
		HEX3Atmp_451260 = 0;
		LOC7 = 0;
		LOC7 = sonslen_218351(n);
		HEX3Atmp_451260 = (NI)(LOC7 - ((NI) 1));
		res_451263 = ((NI) 1);
		{
			while (1) {
				Tnode215790* x;
				if (!(res_451263 <= HEX3Atmp_451260)) goto LA9;
				i_450902 = res_451263;
				x = (*n).kindU.S6.sons->data[i_450902];
				switch ((*x).kind) {
				case ((NU8) 85):
				{
					NI last;
					NI LOC11;
					checkminsonslen_265962(x, ((NI) 2));
					semcasebranch_435512(c, n, x, i_450902, (&covered));
					LOC11 = 0;
					LOC11 = sonslen_218351(x);
					last = (NI)(LOC11 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[last]), semexprbranchscope_450229(c, (*x).kindU.S6.sons->data[last]));
					typ = commontype_426396(typ, (*(*x).kindU.S6.sons->data[last]).typ);
				}
				break;
				case ((NU8) 86):
				{
					Tscope215816* LOC13;
					Tnode215790* LOC14;
					chckcovered = NIM_FALSE;
					checksonslen_265958(x, ((NI) 2));
					LOC13 = 0;
					LOC13 = openscope_270060(c);
					LOC14 = 0;
					LOC14 = semexprwithtype_426208(c, (*x).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), forcebool_433223(c, LOC14));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), semexprbranch_450201(c, (*x).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_426396(typ, (*(*x).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_270068(c);
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_265958(x, ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_450229(c, (*x).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_426396(typ, (*(*x).kindU.S6.sons->data[((NI) 0)]).typ);
					haselse = NIM_TRUE;
				}
				break;
				default:
				{
					illformedast_265950(x);
				}
				break;
				}
				res_451263 += ((NI) 1);
			} LA9: ;
		}
	}
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = notordinal;
		if (!(LOC19)) goto LA20;
		LOC19 = !(haselse);
		LA20: ;
		if (!LOC19) goto LA21;
		message_188095((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3614));
	}
	LA21: ;
	{
		if (!chckcovered) goto LA25;
		{
			NI64 LOC29;
			LOC29 = 0;
			LOC29 = tocover_449050((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!(covered == LOC29)) goto LA30;
			haselse = NIM_TRUE;
		}
		goto LA27;
		LA30: ;
		{
			localerror_188080((*n).info, ((NU16) 155), ((NimStringDesc*) &TMP3155));
		}
		LA27: ;
	}
	LA25: ;
	closescope_270068(c);
	{
		NIM_BOOL LOC35;
		NIM_BOOL LOC36;
		LOC35 = 0;
		LOC36 = 0;
		LOC36 = isemptytype_220513(typ);
		if (LOC36) goto LA37;
		LOC36 = ((*typ).kind == ((NU8) 5));
		LA37: ;
		LOC35 = LOC36;
		if (LOC35) goto LA38;
		LOC35 = !(haselse);
		LA38: ;
		if (!LOC35) goto LA39;
		{
			NI i_451227;
			NI HEX3Atmp_451268;
			NI LOC42;
			NI res_451271;
			i_451227 = 0;
			HEX3Atmp_451268 = 0;
			LOC42 = 0;
			LOC42 = len_216059(n);
			HEX3Atmp_451268 = (NI)(LOC42 - ((NI) 1));
			res_451271 = ((NI) 1);
			{
				while (1) {
					Tnode215790* LOC45;
					if (!(res_451271 <= HEX3Atmp_451268)) goto LA44;
					i_451227 = res_451271;
					LOC45 = 0;
					LOC45 = lastson_218364((*n).kindU.S6.sons->data[i_451227]);
					discardcheck_450323(c, LOC45);
					res_451271 += ((NI) 1);
				} LA44: ;
			}
		}
		{
			if (!(typ == enforcevoidcontext_448802)) goto LA48;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_448802);
		}
		LA48: ;
	}
	goto LA33;
	LA39: ;
	{
		{
			NI i_451251;
			NI HEX3Atmp_451276;
			NI LOC52;
			NI res_451279;
			i_451251 = 0;
			HEX3Atmp_451276 = 0;
			LOC52 = 0;
			LOC52 = len_216059(n);
			HEX3Atmp_451276 = (NI)(LOC52 - ((NI) 1));
			res_451279 = ((NI) 1);
			{
				while (1) {
					Tnode215790* it;
					NI j;
					NI LOC55;
					if (!(res_451279 <= HEX3Atmp_451276)) goto LA54;
					i_451251 = res_451279;
					it = (*n).kindU.S6.sons->data[i_451251];
					LOC55 = 0;
					LOC55 = len_216059(it);
					j = (NI)(LOC55 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_426230(c, typ, (*it).kindU.S6.sons->data[j]));
					res_451279 += ((NI) 1);
				} LA54: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA33: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semreturn_465282)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	checksonslen_265958(n, ((NI) 1));
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = ((110592 &(1U<<((NU)((*(*(*c).p).owner).kind)&31U)))!=0);
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = ((*(*(*c).p).owner).kind == ((NU8) 14));
		if (!(LOC5)) goto LA6;
		LOC5 = ((*(*(*(*c).p).owner).typ).callconv == ((NU8) 8));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA11;
			{
				Tnode215790* a;
				Tnode215790* LOC17;
				if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA15;
				a = newnodei_217248(((NU8) 73), (*(*n).kindU.S6.sons->data[((NI) 0)]).info);
				LOC17 = 0;
				LOC17 = newsymnode_217234((*(*c).p).resultsym);
				addson_217807(a, LOC17);
				addson_217807(a, (*n).kindU.S6.sons->data[((NI) 0)]);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semasgn_462057(c, a, ((NU8) 0)));
				{
					NIM_BOOL LOC20;
					Tnode215790* LOC21;
					Tnode215790* LOC22;
					Tnode215790* LOC24;
					Tnode215790* LOC25;
					LOC20 = 0;
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_216238(n, ((NI) 0));
					LOC22 = 0;
					LOC22 = HEX5BHEX5D_216238(LOC21, ((NI) 1));
					LOC20 = ((*LOC22).kind == ((NU8) 3));
					if (!(LOC20)) goto LA23;
					LOC24 = 0;
					LOC24 = HEX5BHEX5D_216238(n, ((NI) 0));
					LOC25 = 0;
					LOC25 = HEX5BHEX5D_216238(LOC24, ((NI) 1));
					LOC20 = ((*LOC25).kindU.S4.sym == (*(*c).p).resultsym);
					LA23: ;
					if (!LOC20) goto LA26;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), emptynode_216801);
				}
				LA26: ;
			}
			goto LA13;
			LA15: ;
			{
				localerror_188080((*n).info, ((NU16) 183), ((NimStringDesc*) &TMP3155));
			}
			LA13: ;
		}
		LA11: ;
	}
	goto LA1;
	LA7: ;
	{
		localerror_188080((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP3615));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semusing_465815)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217248(((NU8) 1), (*n).info);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = experimentalmode_265970(c);
		if (!!(LOC3)) goto LA4;
		localerror_188085((*n).info, ((NimStringDesc*) &TMP3616));
	}
	LA4: ;
	{
		Tnode215790* e_465829;
		Tnodeseq215784* HEX3Atmp_465869;
		NI i_465872;
		NI L_465874;
		e_465829 = 0;
		HEX3Atmp_465869 = 0;
		HEX3Atmp_465869 = (*n).kindU.S6.sons;
		i_465872 = ((NI) 0);
		L_465874 = (HEX3Atmp_465869 ? HEX3Atmp_465869->Sup.len : 0);
		{
			while (1) {
				if (!(i_465872 < L_465874)) goto LA8;
				e_465829 = HEX3Atmp_465869->data[i_465872];
				{
					Tnode215790* usedsym;
					NimStringDesc* LOC17;
					usedsym = semexpr_426201(c, e_465829, 0);
					{
						if (!((*usedsym).kind == ((NU8) 3))) goto LA12;
						switch ((*(*usedsym).kindU.S4.sym).kind) {
						case ((NU8) 3):
						case ((NU8) 8) ... ((NU8) 11):
						case ((NU8) 20):
						{
							safeadd_430175((&(*(*c).currentscope).usingsyms), usedsym);
							goto LA9;
						}
						break;
						case ((NU8) 12):
						case ((NU8) 17):
						case ((NU8) 16):
						case ((NU8) 14):
						case ((NU8) 13):
						case ((NU8) 15):
						{
							adddeclat_270455((*c).currentscope, (*usedsym).kindU.S4.sym);
							goto LA9;
						}
						break;
						default:
						{
						}
						break;
						}
					}
					LA12: ;
					LOC17 = 0;
					LOC17 = rendertree_234044(e_465829, 0);
					localerror_188080((*e_465829).info, ((NU16) 205), LOC17);
				} LA9: ;
				i_465872 += ((NI) 1);
			} LA8: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode215790*, semasm_449004)(Tcontext265020* con, Tnode215790* n) {
	Tnode215790* result;
	NIM_CHAR marker;
	result = 0;
	checksonslen_265958(n, ((NI) 2));
	marker = pragmaasm_280080(con, (*n).kindU.S6.sons->data[((NI) 0)]);
	{
		if (!((NU8)(marker) == (NU8)(0))) goto LA3;
		marker = 96;
	}
	LA3: ;
	result = semasmoremit_281380(con, n, marker);
	return result;
}

N_NIMCALL(void, semyieldvarresult_465460)(Tcontext265020* c, Tnode215790* n, Ttype215828* restype) {
	Ttype215828* t;
	t = skiptypes_219113(restype, 2048);
	switch ((*t).kind) {
	case ((NU8) 23):
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), takeimplicitaddr_464984(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 18):
	{
		{
			NI i_465486;
			NI HEX3Atmp_465542;
			NI LOC4;
			NI res_465545;
			i_465486 = 0;
			HEX3Atmp_465542 = 0;
			LOC4 = 0;
			LOC4 = sonslen_218327(t);
			HEX3Atmp_465542 = (LOC4 - 1);
			res_465545 = ((NI) 0);
			{
				while (1) {
					Ttype215828* e;
					if (!(res_465545 <= HEX3Atmp_465542)) goto LA6;
					i_465486 = res_465545;
					e = skiptypes_219113((*t).sons->data[i_465486], 2048);
					{
						if (!((*e).kind == ((NU8) 23))) goto LA9;
						{
							if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 37))) goto LA13;
							asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[i_465486]), takeimplicitaddr_464984(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[i_465486]));
						}
						goto LA11;
						LA13: ;
						{
							NIM_BOOL LOC16;
							Tnode215790* a;
							LOC16 = 0;
							LOC16 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 58) || (*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 59));
							if (!(LOC16)) goto LA17;
							LOC16 = ((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 37));
							LA17: ;
							if (!LOC16) goto LA18;
							a = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)];
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[i_465486]), takeimplicitaddr_464984(c, (*a).kindU.S6.sons->data[i_465486]));
						}
						goto LA11;
						LA18: ;
						{
							localerror_188080((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 193), ((NimStringDesc*) &TMP3618));
						}
						LA11: ;
					}
					LA9: ;
					res_465545 += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(Tnode215790*, semyield_465549)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = n;
	checksonslen_265958(n, ((NI) 1));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*c).p).owner == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = !(((*(*(*c).p).owner).kind == ((NU8) 14)));
		LA4: ;
		if (!LOC3) goto LA5;
		localerror_188080((*n).info, ((NU16) 37), ((NimStringDesc*) &TMP3155));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = (((NI) 0) < (*(*c).p).intrystmt);
		if (!(LOC8)) goto LA9;
		LOC8 = !(((*(*(*(*c).p).owner).typ).callconv == ((NU8) 5)));
		LA9: ;
		if (!LOC8) goto LA10;
		localerror_188080((*n).info, ((NU16) 38), ((NimStringDesc*) &TMP3155));
	}
	goto LA1;
	LA10: ;
	{
		Ttype215828* itertype;
		Ttype215828* restype;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA13;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_426208(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		itertype = (*(*(*c).p).owner).typ;
		restype = (*itertype).sons->data[((NI) 0)];
		{
			if (!!((restype == NIM_NIL))) goto LA17;
			{
				if (!!(((*restype).kind == ((NU8) 6)))) goto LA21;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_426230(c, restype, (*n).kindU.S6.sons->data[((NI) 0)]));
			}
			LA21: ;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL)) goto LA25;
				internalerror_188100((*n).info, ((NimStringDesc*) &TMP3617));
			}
			LA25: ;
			{
				NIM_BOOL LOC29;
				Ttype215828* inferred;
				LOC29 = 0;
				LOC29 = ismetatype_216803(restype);
				if (!(LOC29)) goto LA30;
				LOC29 = !(((*restype).kind == ((NU8) 8)));
				LA30: ;
				if (!LOC29) goto LA31;
				inferred = (*(*n).kindU.S6.sons->data[((NI) 0)]).typ;
				asgnRefNoCycle((void**) (&(*itertype).sons->data[((NI) 0)]), inferred);
			}
			LA31: ;
			semyieldvarresult_465460(c, n, restype);
		}
		goto LA15;
		LA17: ;
		{
			localerror_188080((*n).info, ((NU16) 40), ((NimStringDesc*) &TMP3155));
		}
		LA15: ;
	}
	goto LA1;
	LA13: ;
	{
		if (!!(((*(*(*(*c).p).owner).typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA35;
		localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3619));
	}
	goto LA1;
	LA35: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, semiterator_457510)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* s;
	Ttype215828* t;
	result = 0;
	{
		Tnode215790* LOC3;
		Tnode215790* LOC6;
		Tnode215790* LOC7;
		LOC3 = 0;
		LOC3 = HEX5BHEX5D_216238(n, ((NI) 0));
		if (!((*LOC3).kind == ((NU8) 3))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238(n, ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*LOC6).kindU.S4.sym).owner), getcurrowner_265210());
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_216238(n, ((NI) 0));
		(*(*LOC7).kindU.S4.sym).kind = ((NU8) 14);
	}
	LA4: ;
	result = semprocaux_456683(c, n, ((NU8) 14), TMP3621, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	t = (*s).typ;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = ((*t).sons->data[((NI) 0)] == NIM_NIL);
		if (!(LOC10)) goto LA11;
		LOC10 = !(((*(*s).typ).callconv == ((NU8) 8)));
		LA11: ;
		if (!LOC10) goto LA12;
		localerror_188080((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3622));
	}
	LA12: ;
	{
		if (!((*(*s).typ).callconv == ((NU8) 8))) goto LA16;
		(*(*s).typ).flags |= ((NU32)1)<<((((NU8) 11))%(sizeof(NU32)*8));
	}
	goto LA14;
	LA16: ;
	{
		(*(*s).typ).callconv = ((NU8) 5);
	}
	LA14: ;
	{
		NIM_BOOL LOC21;
		LOC21 = 0;
		LOC21 = ((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1));
		if (!(LOC21)) goto LA22;
		LOC21 = ((*s).magic == ((NU8) 0));
		LA22: ;
		if (!LOC21) goto LA23;
		localerror_188080((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA23: ;
	return result;
}

N_NIMCALL(Tnode215790*, semmethod_457666)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* s;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_265966(c);
		if (!!(LOC3)) goto LA4;
		localerror_188080((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3623));
	}
	LA4: ;
	result = semprocaux_456683(c, n, ((NU8) 13), TMP3624, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = isgenericroutine_220314(s);
		if (!!(LOC8)) goto LA9;
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = hasobjparam_457627(s);
			if (!LOC13) goto LA14;
			methoddef_375628(s, NIM_FALSE);
		}
		goto LA11;
		LA14: ;
		{
			localerror_188080((*n).info, ((NU16) 187), ((NimStringDesc*) &TMP3623));
		}
		LA11: ;
	}
	LA9: ;
	return result;
}

N_NIMCALL(Tnode215790*, semconverterdef_457674)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* s;
	Ttype215828* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_265966(c);
		if (!!(LOC3)) goto LA4;
		localerror_188080((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3625));
	}
	LA4: ;
	checksonslen_265958(n, ((NI) 7));
	result = semprocaux_456683(c, n, ((NU8) 15), TMP3342, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	t = (*s).typ;
	{
		if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA8;
		localerror_188080((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3625));
	}
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_218327(t);
		if (!!((LOC12 == ((NI) 2)))) goto LA13;
		localerror_188080((*n).info, ((NU16) 218), ((NimStringDesc*) &TMP3625));
	}
	LA13: ;
	addconverter_265440(c, s);
	return result;
}

N_NIMCALL(Tnode215790*, semmacrodef_457696)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* s;
	Ttype215828* t;
	result = 0;
	checksonslen_265958(n, ((NI) 7));
	result = semprocaux_456683(c, n, ((NU8) 16), TMP3626, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	t = (*s).typ;
	{
		if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA3;
		localerror_188080((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3627));
	}
	LA3: ;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA7;
		localerror_188080((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode215790*, evalinclude_457729)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217248(((NU8) 115), (*n).info);
	addson_217807(result, n);
	{
		NI i_457745;
		NI HEX3Atmp_457751;
		NI LOC2;
		NI res_457754;
		i_457745 = 0;
		HEX3Atmp_457751 = 0;
		LOC2 = 0;
		LOC2 = sonslen_218351(n);
		HEX3Atmp_457751 = (NI)(LOC2 - ((NI) 1));
		res_457754 = ((NI) 0);
		{
			while (1) {
				NI32 f;
				if (!(res_457754 <= HEX3Atmp_457751)) goto LA4;
				i_457745 = res_457754;
				f = checkmodulename_272049((*n).kindU.S6.sons->data[i_457745]);
				{
					if (!!((f == ((NI32) -1)))) goto LA7;
					{
						NIM_BOOL LOC11;
						NimStringDesc* LOC14;
						LOC11 = 0;
						LOC11 = containsorincl_212862((&(*c).includedfiles), ((NI) (f)));
						if (!LOC11) goto LA12;
						LOC14 = 0;
						LOC14 = tofilename_184265(f);
						localerror_188080((*n).info, ((NU16) 26), LOC14);
					}
					goto LA9;
					LA12: ;
					{
						Tnode215790* LOC16;
						Tnode215790* LOC17;
						LOC16 = 0;
						LOC16 = gincludefile_262058((*c).module, f);
						LOC17 = 0;
						LOC17 = semstmt_426250(c, LOC16);
						addson_217807(result, LOC17);
						excl_212841((&(*c).includedfiles), ((NI) (f)));
					}
					LA9: ;
				}
				LA7: ;
				res_457754 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode215790*, semexport_467813)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* x;
	result = 0;
	x = newnodei_217248((*n).kind, (*n).info);
	{
		NI i_467837;
		NI HEX3Atmp_467954;
		NI LOC2;
		NI res_467957;
		i_467837 = 0;
		HEX3Atmp_467954 = 0;
		LOC2 = 0;
		LOC2 = len_216059(n);
		HEX3Atmp_467954 = (LOC2 - 1);
		res_467957 = ((NI) 0);
		{
			while (1) {
				Tnode215790* a;
				Toverloaditer270296 o;
				Tsym215822* s;
				if (!(res_467957 <= HEX3Atmp_467954)) goto LA4;
				i_467837 = res_467957;
				a = (*n).kindU.S6.sons->data[i_467837];
				memset((void*)(&o), 0, sizeof(o));
				s = initoverloaditer_270890((&o), c, a);
				{
					NimStringDesc* LOC9;
					NimStringDesc* LOC10;
					if (!(s == NIM_NIL)) goto LA7;
					LOC9 = 0;
					LOC10 = 0;
					LOC10 = rendertree_234044(a, 0);
					LOC9 = rawNewString(LOC10->Sup.len + 15);
appendString(LOC9, ((NimStringDesc*) &TMP3644));
appendString(LOC9, LOC10);
					localerror_188080((*a).info, ((NU16) 4), LOC9);
				}
				goto LA5;
				LA7: ;
				{
					Tnode215790* LOC14;
					Ttabiter222071 ti;
					Tsym215822* it;
					if (!((*s).kind == ((NU8) 6))) goto LA12;
					strtableadd_222061((&(*(*c).module).kindU.S3.tab), s);
					LOC14 = 0;
					LOC14 = newsymnode_217241(s, (*a).info);
					add_216114(x, LOC14);
					memset((void*)(&ti), 0, sizeof(ti));
					it = inittabiter_222073((&ti), (*s).kindU.S3.tab);
					{
						while (1) {
							if (!!((it == NIM_NIL))) goto LA16;
							{
								if (!((21755840 &(1U<<((NU)((*it).kind)&31U)))!=0)) goto LA19;
								strtableadd_222061((&(*(*c).module).kindU.S3.tab), it);
							}
							LA19: ;
							it = nextiter_222078((&ti), (*s).kindU.S3.tab);
						} LA16: ;
					}
				}
				goto LA5;
				LA12: ;
				{
					{
						while (1) {
							if (!!((s == NIM_NIL))) goto LA23;
							{
								Tnode215790* LOC28;
								if (!((21755840 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA26;
								LOC28 = 0;
								LOC28 = newsymnode_217241(s, (*a).info);
								add_216114(x, LOC28);
								strtableadd_222061((&(*(*c).module).kindU.S3.tab), s);
							}
							LA26: ;
							s = nextoverloaditer_271041((&o), c, a);
						} LA23: ;
					}
				}
				LA5: ;
				res_467957 += ((NI) 1);
			} LA4: ;
		}
	}
	result = n;
	return result;
}

N_NIMCALL(void, setline_457758)(Tnode215790* n, Tlineinfo183337 info) {
	{
		NI i_457779;
		NI HEX3Atmp_457782;
		NI LOC2;
		NI res_457785;
		i_457779 = 0;
		HEX3Atmp_457782 = 0;
		LOC2 = 0;
		LOC2 = safelen_216081(n);
		HEX3Atmp_457782 = (LOC2 - 1);
		res_457785 = ((NI) 0);
		{
			while (1) {
				if (!(res_457785 <= HEX3Atmp_457782)) goto LA4;
				i_457779 = res_457785;
				setline_457758((*n).kindU.S6.sons->data[i_457779], info);
				res_457785 += ((NI) 1);
			} LA4: ;
		}
	}
	(*n).info = info;
}

N_NIMCALL(Tnode215790*, sempragmablock_457789)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* pragmalist;
	result = 0;
	pragmalist = (*n).kindU.S6.sons->data[((NI) 0)];
	pragma_280070(c, NIM_NIL, pragmalist, TMP3645);
	result = semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), result);
	{
		NI i_457816;
		NI HEX3Atmp_457831;
		NI LOC2;
		NI res_457834;
		i_457816 = 0;
		HEX3Atmp_457831 = 0;
		LOC2 = 0;
		LOC2 = len_216059(pragmalist);
		HEX3Atmp_457831 = (LOC2 - 1);
		res_457834 = ((NI) 0);
		{
			while (1) {
				NU16 LOC5;
				if (!(res_457834 <= HEX3Atmp_457831)) goto LA4;
				i_457816 = res_457834;
				LOC5 = 0;
				LOC5 = whichpragma_240525((*pragmalist).kindU.S6.sons->data[i_457816]);
				switch (LOC5) {
				case ((NU16) 115):
				{
					setline_457758(result, (*(*pragmalist).kindU.S6.sons->data[i_457816]).info);
				}
				break;
				case ((NU16) 196):
				{
					result = n;
					asgnRefNoCycle((void**) (&(*result).typ), (*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
				}
				break;
				case ((NU16) 165):
				{
					(*result).flags |= ((NU16)1)<<((((NU8) 6))%(sizeof(NU16)*8));
				}
				break;
				default:
				{
				}
				break;
				}
				res_457834 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode215790*, semstaticstmt_457838)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* a;
	result = 0;
	a = semstmt_426250(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	evalstaticstmt_415626((*c).module, a, (*(*c).p).owner);
	result = newnodei_217401(((NU8) 114), (*n).info, ((NI) 1));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), emptynode_216801);
	return result;
}

N_NIMCALL(Tnode215790*, semexpr_426201)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
{	result = 0;
	result = n;
	{
		if (!(gcmd_161123 == ((NU8) 14))) goto LA3;
		suggestexpr_373810(c, n);
	}
	LA3: ;
	{
		if (!(((*n).flags &(1U<<((NU)(((NU8) 7))&15U)))!=0)) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	switch ((*n).kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		Tsym215822* s;
		s = lookup_270601(c, n);
		{
			if (!((*c).intypeclass == ((NI) 0))) goto LA12;
			semcapturesym_384143(s, (*(*c).p).owner);
		}
		LA12: ;
		result = semsym_459040(c, n, s, flags);
		{
			if (!((61440 &(1U<<((NU)((*s).kind)&31U)))!=0)) goto LA16;
			result = symchoice_439732(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA20;
				markindirect_265924(c, (*result).kindU.S4.sym);
			}
			LA20: ;
		}
		LA16: ;
	}
	break;
	case ((NU8) 3):
	{
		result = semsym_459040(c, n, (*n).kindU.S4.sym, flags);
	}
	break;
	case ((NU8) 1):
	case ((NU8) 0):
	case ((NU8) 125):
	{
	}
	break;
	case ((NU8) 23):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA27;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 5)));
		}
		LA27: ;
	}
	break;
	case ((NU8) 6):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA32;
			setintlittype_259717(result);
		}
		LA32: ;
	}
	break;
	case ((NU8) 7):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA37;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 32)));
		}
		LA37: ;
	}
	break;
	case ((NU8) 8):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA42;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 33)));
		}
		LA42: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA47;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 34)));
		}
		LA47: ;
	}
	break;
	case ((NU8) 10):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA52;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 35)));
		}
		LA52: ;
	}
	break;
	case ((NU8) 11):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA57;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 40)));
		}
		LA57: ;
	}
	break;
	case ((NU8) 12):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA62;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 41)));
		}
		LA62: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA67;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 42)));
		}
		LA67: ;
	}
	break;
	case ((NU8) 14):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA72;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 43)));
		}
		LA72: ;
	}
	break;
	case ((NU8) 15):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA77;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 44)));
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA82;
			asgnRefNoCycle((void**) (&(*result).typ), getfloatlittype_259647(result));
		}
		LA82: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA87;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 37)));
		}
		LA87: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA92;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 38)));
		}
		LA92: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA97;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 39)));
		}
		LA97: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA102;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 28)));
		}
		LA102: ;
	}
	break;
	case ((NU8) 5):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA107;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_259130(((NU8) 2)));
		}
		LA107: ;
	}
	break;
	case ((NU8) 45):
	{
		result = semfieldaccess_458811(c, n, flags);
		{
			if (!((*result).kind == ((NU8) 25))) goto LA112;
			(*result).kind = ((NU8) 27);
			result = semexpr_426201(c, result, flags);
		}
		LA112: ;
	}
	break;
	case ((NU8) 55):
	{
		message_188095((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3560));
		result = semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags);
	}
	break;
	case ((NU8) 132):
	case ((NU8) 134):
	case ((NU8) 135):
	case ((NU8) 141) ... ((NU8) 150):
	case ((NU8) 137):
	{
		Ttype215828* typ;
		Ttype215828* LOC116;
		LOC116 = 0;
		LOC116 = semtypenode_426245(c, n, NIM_NIL);
		typ = skiptypes_219113(LOC116, 256);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_265524(c, typ));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		NU8 mode;
		Tsym215822* s;
		checkminsonslen_265962(n, ((NI) 1));
		{
			if (!(((*n).flags &(1U<<((NU)(((NU8) 9))&15U)))!=0)) goto LA120;
			mode = 0;
		}
		goto LA118;
		LA120: ;
		{
			mode = 2;
		}
		LA118: ;
		s = qualifiedlookup_270652(c, (*n).kindU.S6.sons->data[((NI) 0)], mode);
		{
			if (!!((s == NIM_NIL))) goto LA125;
			switch ((*s).kind) {
			case ((NU8) 16):
			{
				{
					if (!!((((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0))) goto LA130;
					result = semdirectop_426985(c, n, flags);
				}
				goto LA128;
				LA130: ;
				{
					result = semmacroexpr_427007(c, n, n, s, flags);
				}
				LA128: ;
			}
			break;
			case ((NU8) 17):
			{
				{
					if (!!((((*s).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0))) goto LA136;
					result = semdirectop_426985(c, n, flags);
				}
				goto LA134;
				LA136: ;
				{
					result = semtemplateexpr_426999(c, n, s, flags);
				}
				LA134: ;
			}
			break;
			case ((NU8) 7):
			{
				{
					NI LOC142;
					LOC142 = 0;
					LOC142 = len_216059(n);
					if (!(LOC142 == ((NI) 2))) goto LA143;
					result = semconv_460486(c, n);
				}
				goto LA140;
				LA143: ;
				{
					NI LOC146;
					LOC146 = 0;
					LOC146 = len_216059(n);
					if (!(LOC146 == ((NI) 1))) goto LA147;
					result = semobjconstr_463060(c, n, flags);
				}
				goto LA140;
				LA147: ;
				{
					NIM_BOOL LOC150;
					LOC150 = 0;
					LOC150 = contains_212811((*c).ambiguoussymbols, (*s).Sup.id);
					if (!LOC150) goto LA151;
					localerror_188080((*n).info, ((NU16) 66), (*(*s).name).s);
				}
				goto LA140;
				LA151: ;
				{
					if (!((*s).magic == ((NU8) 0))) goto LA154;
					result = semdirectop_426985(c, n, flags);
				}
				goto LA140;
				LA154: ;
				{
					result = semmagic_466541(c, n, s, flags);
				}
				LA140: ;
			}
			break;
			case ((NU8) 12):
			case ((NU8) 13):
			case ((NU8) 15):
			case ((NU8) 14):
			{
				{
					if (!((*s).magic == ((NU8) 0))) goto LA160;
					result = semdirectop_426985(c, n, flags);
				}
				goto LA158;
				LA160: ;
				{
					result = semmagic_466541(c, n, s, flags);
				}
				LA158: ;
			}
			break;
			default:
			{
				result = semindirectop_463088(c, n, flags);
			}
			break;
			}
		}
		goto LA123;
		LA125: ;
		{
			NIM_BOOL LOC165;
			NIM_BOOL LOC166;
			Tnode215790* LOC167;
			Tnode215790* LOC170;
			Tnode215790* LOC171;
			LOC165 = 0;
			LOC166 = 0;
			LOC167 = 0;
			LOC167 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC166 = ((*LOC167).kind == ((NU8) 42));
			if (LOC166) goto LA168;
			LOC166 = shouldbebracketexpr_467961(n);
			LA168: ;
			LOC165 = LOC166;
			if (!(LOC165)) goto LA169;
			LOC170 = 0;
			LOC170 = HEX5BHEX5D_216238(n, ((NI) 0));
			LOC171 = 0;
			LOC171 = HEX5BHEX5D_216238(LOC170, ((NI) 0));
			LOC165 = issymchoice_460453(LOC171);
			LA169: ;
			if (!LOC165) goto LA172;
			setgenericparams_468122(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			result = semdirectop_426985(c, n, flags);
		}
		goto LA123;
		LA172: ;
		{
			NIM_BOOL LOC175;
			LOC175 = 0;
			LOC175 = issymchoice_460453((*n).kindU.S6.sons->data[((NI) 0)]);
			if (LOC175) goto LA176;
			LOC175 = (((*n).flags &(1U<<((NU)(((NU8) 9))&15U)))!=0);
			LA176: ;
			if (!LOC175) goto LA177;
			result = semdirectop_426985(c, n, flags);
		}
		goto LA123;
		LA177: ;
		{
			result = semindirectop_463088(c, n, flags);
		}
		LA123: ;
	}
	break;
	case ((NU8) 93):
	{
		{
			if (!((flags &(1U<<((NU)(((NU8) 3))&15U)))!=0)) goto LA183;
			result = semwhen_426990(c, n, NIM_TRUE);
		}
		goto LA181;
		LA183: ;
		{
			result = semwhen_426990(c, n, NIM_FALSE);
			{
				if (!(result == n)) goto LA188;
				result = semwhen_426990(c, n, NIM_TRUE);
			}
			goto LA186;
			LA188: ;
			{
				result = semexpr_426201(c, result, flags);
			}
			LA186: ;
		}
		LA181: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_265962(n, ((NI) 1));
		result = semarrayaccess_464902(c, n, flags);
	}
	break;
	case ((NU8) 40):
	{
		Tident190012* LOC193;
		Tnode215790* LOC194;
		LOC193 = 0;
		LOC193 = getident_190441(((NimStringDesc*) &TMP3588));
		LOC194 = 0;
		LOC194 = buildoverloadedsubscripts_464683(n, LOC193);
		result = semexpr_426201(c, LOC194, flags);
	}
	break;
	case ((NU8) 43):
	{
		internalerror_188100((*n).info, ((NimStringDesc*) &TMP3589));
	}
	break;
	case ((NU8) 37):
	{
		NU8 LOC197;
		LOC197 = 0;
		LOC197 = checkpar_467056(n);
		switch (LOC197) {
		case ((NU8) 0):
		{
			result = errornode_265905(c, n);
		}
		break;
		case ((NU8) 3):
		{
			Tnode215790* tupexp;
			tupexp = semtuplepositionsconstr_467244(c, n, flags);
			{
				NIM_BOOL LOC202;
				Ttype215828* typ;
				Ttype215828* LOC205;
				LOC202 = 0;
				LOC202 = istupletype_467287(tupexp);
				if (!LOC202) goto LA203;
				LOC205 = 0;
				LOC205 = semtypenode_426245(c, n, NIM_NIL);
				typ = skiptypes_219113(LOC205, 256);
				asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_265524(c, typ));
			}
			goto LA200;
			LA203: ;
			{
				result = tupexp;
			}
			LA200: ;
		}
		break;
		case ((NU8) 2):
		{
			result = semtuplefieldsconstr_467145(c, n, flags);
		}
		break;
		case ((NU8) 1):
		{
			result = semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags);
		}
		break;
		}
	}
	break;
	case ((NU8) 39):
	{
		result = semsetconstr_466846(c, n);
	}
	break;
	case ((NU8) 41):
	{
		result = semarrayconstr_461249(c, n, flags);
	}
	break;
	case ((NU8) 38):
	{
		result = semobjconstr_463060(c, n, flags);
	}
	break;
	case ((NU8) 51):
	{
		result = semlambda_426240(c, n, flags);
	}
	break;
	case ((NU8) 52):
	{
		result = semdo_456146(c, n, flags);
	}
	break;
	case ((NU8) 47):
	{
		result = semderef_464709(c, n);
	}
	break;
	case ((NU8) 63):
	{
		result = n;
		checksonslen_265958(n, ((NI) 1));
		result = semaddr_462003(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_FALSE);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 65):
	{
		checksonslen_265958(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags));
	}
	break;
	case ((NU8) 61):
	{
		result = semcast_460613(c, n);
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		result = semif_450412(c, n);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	case ((NU8) 32):
	{
		checksonslen_265958(n, ((NI) 2));
	}
	break;
	case ((NU8) 71):
	case ((NU8) 72):
	case ((NU8) 66):
	case ((NU8) 67):
	{
		checksonslen_265958(n, ((NI) 1));
	}
	break;
	case ((NU8) 68):
	case ((NU8) 69):
	case ((NU8) 70):
	{
		checksonslen_265958(n, ((NI) 3));
	}
	break;
	case ((NU8) 46):
	{
		checkminsonslen_265962(n, ((NI) 2));
	}
	break;
	case ((NU8) 54):
	{
		result = semtableconstr_466984(c, n);
	}
	break;
	case ((NU8) 56):
	case ((NU8) 57):
	{
	}
	break;
	case ((NU8) 62):
	{
		result = semstaticexpr_462920(c, n);
	}
	break;
	case ((NU8) 73):
	{
		result = semasgn_462057(c, n, ((NU8) 0));
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	{
		result = semblock_467613(c, n);
	}
	break;
	case ((NU8) 115):
	case ((NU8) 126):
	{
		result = semstmtlist_458068(c, n, flags);
	}
	break;
	case ((NU8) 108):
	{
		result = semraise_454668(c, n);
	}
	break;
	case ((NU8) 99):
	{
		result = semvarorlet_452981(c, n, ((NU8) 8));
	}
	break;
	case ((NU8) 100):
	{
		result = semvarorlet_452981(c, n, ((NU8) 9));
	}
	break;
	case ((NU8) 101):
	{
		result = semconst_453559(c, n);
	}
	break;
	case ((NU8) 98):
	{
		result = semtypesection_455631(c, n);
	}
	break;
	case ((NU8) 114):
	{
		result = semdiscard_448803(c, n);
	}
	break;
	case ((NU8) 96):
	{
		result = semwhile_449011(c, n);
	}
	break;
	case ((NU8) 106):
	{
		result = semtry_451283(c, n);
	}
	break;
	case ((NU8) 110):
	case ((NU8) 111):
	{
		result = sembreakorcontinue_448821(c, n);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		result = semfor_454561(c, n);
	}
	break;
	case ((NU8) 97):
	{
		result = semcase_450865(c, n);
	}
	break;
	case ((NU8) 109):
	{
		result = semreturn_465282(c, n);
	}
	break;
	case ((NU8) 124):
	{
		result = semusing_465815(c, n);
	}
	break;
	case ((NU8) 89):
	{
		result = semasm_449004(c, n);
	}
	break;
	case ((NU8) 104):
	{
		result = semyield_465549(c, n);
	}
	break;
	case ((NU8) 90):
	{
		pragma_280070(c, (*(*c).p).owner, n, TMP3620);
	}
	break;
	case ((NU8) 84):
	{
		result = semiterator_457510(c, n);
	}
	break;
	case ((NU8) 79):
	{
		result = semproc_449166(c, n);
	}
	break;
	case ((NU8) 80):
	{
		result = semmethod_457666(c, n);
	}
	break;
	case ((NU8) 81):
	{
		result = semconverterdef_457674(c, n);
	}
	break;
	case ((NU8) 82):
	{
		result = semmacrodef_457696(c, n);
	}
	break;
	case ((NU8) 83):
	{
		result = semtemplatedef_443296(c, n);
	}
	break;
	case ((NU8) 116):
	{
		{
			NIM_BOOL LOC254;
			LOC254 = 0;
			LOC254 = istoplevel_265966(c);
			if (!!(LOC254)) goto LA255;
			localerror_188080((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3628));
		}
		LA255: ;
		result = evalimport_272001(c, n);
	}
	break;
	case ((NU8) 117):
	{
		{
			NIM_BOOL LOC260;
			LOC260 = 0;
			LOC260 = istoplevel_265966(c);
			if (!!(LOC260)) goto LA261;
			localerror_188080((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3628));
		}
		LA261: ;
		result = evalimportexcept_272585(c, n);
	}
	break;
	case ((NU8) 120):
	{
		{
			NIM_BOOL LOC266;
			LOC266 = 0;
			LOC266 = istoplevel_265966(c);
			if (!!(LOC266)) goto LA267;
			localerror_188080((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3639));
		}
		LA267: ;
		result = evalfrom_272005(c, n);
	}
	break;
	case ((NU8) 121):
	{
		{
			NIM_BOOL LOC272;
			LOC272 = 0;
			LOC272 = istoplevel_265966(c);
			if (!!(LOC272)) goto LA273;
			localerror_188080((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3642));
		}
		LA273: ;
		result = evalinclude_457729(c, n);
	}
	break;
	case ((NU8) 118):
	case ((NU8) 119):
	{
		{
			NIM_BOOL LOC278;
			LOC278 = 0;
			LOC278 = istoplevel_265966(c);
			if (!!(LOC278)) goto LA279;
			localerror_188080((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3643));
		}
		LA279: ;
		result = semexport_467813(c, n);
	}
	break;
	case ((NU8) 91):
	{
		result = sempragmablock_457789(c, n);
	}
	break;
	case ((NU8) 113):
	{
		result = semstaticstmt_457838(c, n);
	}
	break;
	case ((NU8) 105):
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_426201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL LOC286;
			NIM_BOOL LOC287;
			NIM_BOOL LOC289;
			LOC286 = 0;
			LOC287 = 0;
			LOC287 = isemptytype_220513((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			LOC286 = !(LOC287);
			if (!(LOC286)) goto LA288;
			LOC289 = 0;
			LOC289 = implicitlydiscardable_450236((*n).kindU.S6.sons->data[((NI) 0)]);
			LOC286 = !(LOC289);
			LA288: ;
			if (!LOC286) goto LA290;
			localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3646));
		}
		LA290: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC293;
		LOC293 = 0;
		LOC293 = rendertree_234044(n, 4);
		localerror_188080((*n).info, ((NU16) 172), LOC293);
	}
	break;
	}
	{
		if (!!((result == NIM_NIL))) goto LA296;
		(*result).flags |= ((NU16)1)<<((((NU8) 7))%(sizeof(NU16)*8));
	}
	LA296: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semexprwithtype_426208)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	result = 0;
	result = semexpr_426201(c, n, (flags | 128));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = result == 0;
		if (LOC3) goto LA4;
		LOC3 = ((*result).kind == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA5;
		result = errornode_265905(c, n);
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC13;
		LOC9 = 0;
		LOC9 = ((*result).typ == NIM_NIL);
		if (LOC9) goto LA10;
		LOC9 = ((*result).typ == enforcevoidcontext_448802);
		LA10: ;
		if (!LOC9) goto LA11;
		LOC13 = 0;
		LOC13 = rendertree_234044(result, 4);
		localerror_188080((*n).info, ((NU16) 94), LOC13);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_265901(c));
	}
	goto LA7;
	LA11: ;
	{
		{
			if (!!(((flags &(1U<<((NU)(((NU8) 10))&15U)))!=0))) goto LA17;
			semprocvarcheck_449138(c, result);
		}
		LA17: ;
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA21;
			result = newderef_377006(result);
		}
		LA21: ;
		semdestructorcheck_450113(c, result, flags);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode215790*, semconstexpr_427473)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tnode215790* e;
{	result = 0;
	e = semexprwithtype_426208(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		localerror_188080((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_276001((*c).module, e);
	{
		if (!(result == NIM_NIL)) goto LA7;
		result = evalconstexpr_415615((*c).module, e);
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = (result == NIM_NIL);
			if (LOC11) goto LA12;
			LOC11 = ((*result).kind == ((NU8) 1));
			LA12: ;
			if (!LOC11) goto LA13;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = HEX3DHEX3D_185125((*e).info, (*n).info);
				if (!!(LOC17)) goto LA18;
				pushinfocontext_184209((*n).info);
				localerror_188080((*e).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
				popinfocontext_184222();
			}
			goto LA15;
			LA18: ;
			{
				localerror_188080((*e).info, ((NU16) 108), ((NimStringDesc*) &TMP3155));
			}
			LA15: ;
			result = e;
		}
		goto LA9;
		LA13: ;
		{
			result = fixuptypeaftereval_427201(c, result, e);
		}
		LA9: ;
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, tryconstexpr_427414)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* volatile result;
	Tnode215790* e;
	NI olderrorcount;
	NI olderrormax;
	NU8 olderroroutputs;
	TSafePoint TMP3647;
{	result = 0;
	e = semexprwithtype_426208(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_276001((*c).module, e);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	olderrorcount = gerrorcounter_184081;
	olderrormax = gerrormax_184084;
	olderroroutputs = erroroutputs_184113;
	erroroutputs_184113 = 0;
	gerrormax_184084 = ((NI) 2147483647);
	pushSafePoint(&TMP3647);
	TMP3647.status = setjmp(TMP3647.context);
	if (TMP3647.status == 0) {
		result = evalconstexpr_415615((*c).module, e);
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = (result == NIM_NIL);
			if (LOC12) goto LA13;
			LOC12 = ((*result).kind == ((NU8) 1));
			LA13: ;
			if (!LOC12) goto LA14;
			result = NIM_NIL;
		}
		goto LA10;
		LA14: ;
		{
			result = fixuptypeaftereval_427201(c, result, e);
		}
		LA10: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI183343))) {
			TMP3647.status = 0;
			result = NIM_NIL;
			popCurrentException();
		}
	}
	if (TMP3647.status != 0) reraiseException();
	gerrorcounter_184081 = olderrorcount;
	gerrormax_184084 = olderrormax;
	erroroutputs_184113 = olderroroutputs;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, semoperand_458818)(Tcontext265020* c, Tnode215790* n, NU16 flags) {
	Tnode215790* result;
	result = 0;
	result = semexpr_426201(c, n, (flags | 256));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*result).kind == ((NU8) 1));
		if (!(LOC3)) goto LA4;
		LOC3 = (*result).typ == 0;
		LA4: ;
		if (!LOC3) goto LA5;
		result = errornode_265905(c, n);
	}
	LA5: ;
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA9;
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA13;
			result = newderef_377006(result);
		}
		LA13: ;
	}
	goto LA7;
	LA9: ;
	{
		if (!!(((24 & flags) == 0))) goto LA16;
		asgnRefNoCycle((void**) (&(*result).typ), newtypes_265185(((NU8) 3), c));
		(*(*result).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA7;
	LA16: ;
	{
		NimStringDesc* LOC19;
		LOC19 = 0;
		LOC19 = rendertree_234044(result, 4);
		localerror_188080((*n).info, ((NU16) 94), LOC19);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_265901(c));
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode215790*, seminferredlambda_456170)(Tcontext265020* c, Tidtable215840 pt, Tnode215790* n_456174) {
	Tnode215790* result;
	Tnode215790* n;
	Tsym215822* original;
	Tsym215822* s;
	Tnode215790* params;
	Tscope215816* LOC14;
	Tnode215790* sembody;
	Tnode215790* LOC15;
	result = 0;
	n = n_456174;
	original = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	s = original;
	n = replacetypesinbody_286430(c, pt, n, original);
	result = n;
	asgnRefNoCycle((void**) (&(*s).ast), result);
	asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym), s);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), emptynode_216801);
	params = copytree_219822((*(*n).typ).n);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), params);
	asgnRefNoCycle((void**) (&(*s).typ), (*n).typ);
	{
		NI i_456214;
		Slice88082 HEX3Atmp_456244;
		NI LOC2;
		i_456214 = 0;
		memset((void*)(&HEX3Atmp_456244), 0, sizeof(HEX3Atmp_456244));
		LOC2 = 0;
		LOC2 = len_216059(params);
		HEX3Atmp_456244 = HEX2EHEX2E_102424(((NI) 1), (LOC2 - 1));
		{
			NI x_456248;
			NI HEX3Atmp_456250;
			NI HEX3Atmp_456252;
			NI res_456254;
			x_456248 = 0;
			HEX3Atmp_456250 = 0;
			HEX3Atmp_456252 = 0;
			HEX3Atmp_456250 = HEX3Atmp_456244.a;
			HEX3Atmp_456252 = HEX3Atmp_456244.b;
			res_456254 = HEX3Atmp_456250;
			{
				while (1) {
					if (!(res_456254 <= HEX3Atmp_456252)) goto LA5;
					x_456248 = res_456254;
					i_456214 = x_456248;
					{
						Tnode215790* LOC8;
						Tnode215790* LOC11;
						NimStringDesc* LOC12;
						Tnode215790* LOC13;
						LOC8 = 0;
						LOC8 = HEX5BHEX5D_216238(params, i_456214);
						if (!((*(*LOC8).typ).kind == ((NU8) 8) || (*(*LOC8).typ).kind == ((NU8) 12) || (*(*LOC8).typ).kind >= ((NU8) 51) && (*(*LOC8).typ).kind <= ((NU8) 58) || (*(*LOC8).typ).kind >= ((NU8) 60) && (*(*LOC8).typ).kind <= ((NU8) 61))) goto LA9;
						LOC11 = 0;
						LOC11 = HEX5BHEX5D_216238(params, i_456214);
						LOC12 = 0;
						LOC13 = 0;
						LOC13 = HEX5BHEX5D_216238(params, i_456214);
						LOC12 = rawNewString((*(*(*LOC13).kindU.S4.sym).name).s->Sup.len + 32);
appendString(LOC12, ((NimStringDesc*) &TMP3648));
appendString(LOC12, (*(*(*LOC13).kindU.S4.sym).name).s);
						localerror_188085((*LOC11).info, LOC12);
					}
					LA9: ;
					res_456254 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	LOC14 = 0;
	LOC14 = openscope_270060(c);
	pushowner_265212(s);
	addparams_426260(c, params, ((NU8) 12));
	pushproccon_265277(c, s);
	addresult_455754(c, (*(*n).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
	addresultnode_455785(c, n);
	LOC15 = 0;
	LOC15 = semprocbody_426226(c, (*n).kindU.S6.sons->data[((NI) 6)]);
	sembody = hlobody_428136(c, LOC15);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_388498((*c).module, sembody, s));
	popproccon_265303(c);
	popowner_265215();
	closescope_270068(c);
	return result;
}

N_NIMCALL(Tpasscontext262002*, myopen_468665)(Tsym215822* module) {
	Tpasscontext262002* result;
	Tcontext265020* c;
	TY265123 LOC5;
	TY265129 LOC6;
	result = 0;
	c = newcontext_265166(module);
	{
		if (!!(((*c).p == NIM_NIL))) goto LA3;
		internalerror_188100((*module).info, ((NimStringDesc*) &TMP2097));
	}
	LA3: ;
	(*c).semconstexpr = semconstexpr_427473;
	(*c).semexpr = semexpr_426201;
	(*c).semtryexpr = tryexpr_426275;
	(*c).semtryconstexpr = tryconstexpr_427414;
	(*c).semoperand = semoperand_458818;
	(*c).semconstboolexpr = semconstboolexpr_433240;
	(*c).semoverloadedcall = semoverloadedcall_432544;
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	LOC5.ClPrc = ((TMP3649) (seminferredlambda_456170)); LOC5.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).seminferredlambda.ClEnv), LOC5.ClEnv);
	(*c).seminferredlambda.ClPrc = LOC5.ClPrc;
	memset((void*)(&LOC6), 0, sizeof(LOC6));
	LOC6.ClPrc = ((TMP3650) (generateinstance_429238)); LOC6.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).semgenerateinstance.ClEnv), LOC6.ClEnv);
	(*c).semgenerateinstance.ClPrc = LOC6.ClPrc;
	(*c).semtypenode = semtypenode_426245;
	(*c).insttypeboundop = insttypeboundop_369419;
	pushproccon_265277(c, module);
	pushowner_265212((*c).module);
	asgnRef((void**) (&(*c).importtable), openscope_270060(c));
	strtableadd_222061((&(*(*c).importtable).symbols), module);
	{
		if (!(((*module).flags &(1U<<((NU)(((NU8) 13))&31U)))!=0)) goto LA9;
		asgnRefNoCycle((void**) (&systemmodule_259007), module);
	}
	goto LA7;
	LA9: ;
	{
		strtableadd_222061((&(*(*c).importtable).symbols), systemmodule_259007);
		importallsymbols_272322(c, systemmodule_259007);
	}
	LA7: ;
	asgnRef((void**) (&(*c).toplevelscope), openscope_270060(c));
	result = &c->Sup;
	return result;
}

N_NIMCALL(Tpasscontext262002*, myopencached_468696)(Tsym215822* module, Trodreader253021* rd) {
	Tpasscontext262002* result;
	result = 0;
	result = myopen_468665(module);
	{
		Tsym215822* m_468709;
		Tsymseq215792* HEX3Atmp_468711;
		NI i_468714;
		NI L_468716;
		m_468709 = 0;
		HEX3Atmp_468711 = 0;
		HEX3Atmp_468711 = (*rd).methods;
		i_468714 = ((NI) 0);
		L_468716 = (HEX3Atmp_468711 ? HEX3Atmp_468711->Sup.len : 0);
		{
			while (1) {
				if (!(i_468714 < L_468716)) goto LA3;
				m_468709 = HEX3Atmp_468711->data[i_468714];
				methoddef_375628(m_468709, NIM_TRUE);
				i_468714 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(void, gatherstmts_455356)(Tcontext265020* c, Tnode215790* n, Tnode215790* result) {
	switch ((*n).kind) {
	case ((NU8) 121):
	{
		{
			NI i_455387;
			Slice88082 HEX3Atmp_455434;
			NI LOC3;
			i_455387 = 0;
			memset((void*)(&HEX3Atmp_455434), 0, sizeof(HEX3Atmp_455434));
			LOC3 = 0;
			LOC3 = len_216059(n);
			HEX3Atmp_455434 = HEX2EHEX2E_102424(((NI) 0), (LOC3 - 1));
			{
				NI x_455438;
				NI HEX3Atmp_455440;
				NI HEX3Atmp_455442;
				NI res_455444;
				x_455438 = 0;
				HEX3Atmp_455440 = 0;
				HEX3Atmp_455442 = 0;
				HEX3Atmp_455440 = HEX3Atmp_455434.a;
				HEX3Atmp_455442 = HEX3Atmp_455434.b;
				res_455444 = HEX3Atmp_455440;
				{
					while (1) {
						NI32 f;
						if (!(res_455444 <= HEX3Atmp_455442)) goto LA6;
						x_455438 = res_455444;
						i_455387 = x_455438;
						f = checkmodulename_272049((*n).kindU.S6.sons->data[i_455387]);
						{
							if (!!((f == ((NI32) -1)))) goto LA9;
							{
								NIM_BOOL LOC13;
								NimStringDesc* LOC16;
								LOC13 = 0;
								LOC13 = containsorincl_212862((&(*c).includedfiles), ((NI) (f)));
								if (!LOC13) goto LA14;
								LOC16 = 0;
								LOC16 = tofilename_184265(f);
								localerror_188080((*n).info, ((NU16) 26), LOC16);
							}
							goto LA11;
							LA14: ;
							{
								Tnode215790* code;
								code = gincludefile_262058((*c).module, f);
								gatherstmts_455356(c, code, result);
								excl_212841((&(*c).includedfiles), ((NI) (f)));
							}
							LA11: ;
						}
						LA9: ;
						res_455444 += ((NI) 1);
					} LA6: ;
				}
			}
		}
	}
	break;
	case ((NU8) 115):
	{
		{
			NI i_455419;
			Slice88082 HEX3Atmp_455449;
			NI LOC20;
			i_455419 = 0;
			memset((void*)(&HEX3Atmp_455449), 0, sizeof(HEX3Atmp_455449));
			LOC20 = 0;
			LOC20 = len_216059(n);
			HEX3Atmp_455449 = HEX2EHEX2E_102424(((NI) 0), (LOC20 - 1));
			{
				NI x_455453;
				NI HEX3Atmp_455455;
				NI HEX3Atmp_455457;
				NI res_455459;
				x_455453 = 0;
				HEX3Atmp_455455 = 0;
				HEX3Atmp_455457 = 0;
				HEX3Atmp_455455 = HEX3Atmp_455449.a;
				HEX3Atmp_455457 = HEX3Atmp_455449.b;
				res_455459 = HEX3Atmp_455455;
				{
					while (1) {
						if (!(res_455459 <= HEX3Atmp_455457)) goto LA23;
						x_455453 = res_455459;
						i_455419 = x_455453;
						gatherstmts_455356(c, (*n).kindU.S6.sons->data[i_455419], result);
						res_455459 += ((NI) 1);
					} LA23: ;
				}
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		(*n).flags |= ((NU16)1)<<((((NU8) 7))%(sizeof(NU16)*8));
		typesectionleftsidepass_454750(c, n);
		add_216114(result, n);
	}
	break;
	default:
	{
		add_216114(result, n);
	}
	break;
	}
}

N_NIMCALL(Tnode215790*, semalltypesections_455351)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = newnodei_217248(((NU8) 115), (*n).info);
	gatherstmts_455356(c, n, result);
	{
		NI i_455474;
		Slice88082 HEX3Atmp_455602;
		NI LOC2;
		i_455474 = 0;
		memset((void*)(&HEX3Atmp_455602), 0, sizeof(HEX3Atmp_455602));
		LOC2 = 0;
		LOC2 = len_216059(result);
		HEX3Atmp_455602 = HEX2EHEX2E_102424(((NI) 0), (LOC2 - 1));
		{
			NI x_455606;
			NI HEX3Atmp_455608;
			NI HEX3Atmp_455610;
			NI res_455612;
			x_455606 = 0;
			HEX3Atmp_455608 = 0;
			HEX3Atmp_455610 = 0;
			HEX3Atmp_455608 = HEX3Atmp_455602.a;
			HEX3Atmp_455610 = HEX3Atmp_455602.b;
			res_455612 = HEX3Atmp_455608;
			{
				while (1) {
					if (!(res_455612 <= HEX3Atmp_455610)) goto LA5;
					x_455606 = res_455612;
					i_455474 = x_455606;
					{
						Tnode215790* LOC8;
						Tnode215790* LOC11;
						LOC8 = 0;
						LOC8 = HEX5BHEX5D_216238(result, i_455474);
						if (!((*LOC8).kind == ((NU8) 98))) goto LA9;
						LOC11 = 0;
						LOC11 = HEX5BHEX5D_216238(result, i_455474);
						typesectionrightsidepass_454832(c, LOC11);
					}
					LA9: ;
					res_455612 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	{
		NI i_455511;
		Slice88082 HEX3Atmp_455617;
		NI LOC13;
		i_455511 = 0;
		memset((void*)(&HEX3Atmp_455617), 0, sizeof(HEX3Atmp_455617));
		LOC13 = 0;
		LOC13 = len_216059(result);
		HEX3Atmp_455617 = HEX2EHEX2E_102424(((NI) 0), (LOC13 - 1));
		{
			NI x_455621;
			NI HEX3Atmp_455623;
			NI HEX3Atmp_455625;
			NI res_455627;
			x_455621 = 0;
			HEX3Atmp_455623 = 0;
			HEX3Atmp_455625 = 0;
			HEX3Atmp_455623 = HEX3Atmp_455617.a;
			HEX3Atmp_455625 = HEX3Atmp_455617.b;
			res_455627 = HEX3Atmp_455623;
			{
				while (1) {
					if (!(res_455627 <= HEX3Atmp_455625)) goto LA16;
					x_455621 = res_455627;
					i_455511 = x_455621;
					{
						Tnode215790* LOC19;
						Tnode215790* LOC22;
						LOC19 = 0;
						LOC19 = HEX5BHEX5D_216238(result, i_455511);
						if (!((*LOC19).kind == ((NU8) 98))) goto LA20;
						LOC22 = 0;
						LOC22 = HEX5BHEX5D_216238(result, i_455511);
						typesectionfinalpass_455240(c, LOC22);
					}
					LA20: ;
					res_455627 += ((NI) 1);
				} LA16: ;
			}
		}
	}
	return result;
}

N_NIMCALL(void, addcodeforgenerics_468572)(Tcontext265020* c, Tnode215790* n) {
	{
		NI i_468595;
		NI HEX3Atmp_468657;
		NI HEX3Atmp_468658;
		NI res_468661;
		i_468595 = 0;
		HEX3Atmp_468657 = 0;
		HEX3Atmp_468658 = 0;
		HEX3Atmp_468657 = (*c).lastgenericidx;
		HEX3Atmp_468658 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_468661 = HEX3Atmp_468657;
		{
			while (1) {
				Tsym215822* prc;
				if (!(res_468661 <= HEX3Atmp_468658)) goto LA3;
				i_468595 = res_468661;
				prc = (*(*c).generics->data[i_468595].inst).sym;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = ((45056 &(1U<<((NU)((*prc).kind)&31U)))!=0);
					if (!(LOC6)) goto LA7;
					LOC6 = ((*prc).magic == ((NU8) 0));
					LA7: ;
					if (!LOC6) goto LA8;
					{
						NIM_BOOL LOC12;
						NimStringDesc* LOC16;
						LOC12 = 0;
						LOC12 = ((*prc).ast == NIM_NIL);
						if (LOC12) goto LA13;
						LOC12 = ((*(*prc).ast).kindU.S6.sons->data[((NI) 6)] == NIM_NIL);
						LA13: ;
						if (!LOC12) goto LA14;
						LOC16 = 0;
						LOC16 = rawNewString((*(*prc).name).s->Sup.len + 12);
appendString(LOC16, ((NimStringDesc*) &TMP3653));
appendString(LOC16, (*(*prc).name).s);
						internalerror_188100((*prc).info, LOC16);
					}
					goto LA10;
					LA14: ;
					{
						addson_217807(n, (*prc).ast);
					}
					LA10: ;
				}
				LA8: ;
				res_468661 += ((NI) 1);
			} LA3: ;
		}
	}
	(*c).lastgenericidx = ((*c).generics ? (*c).generics->Sup.len : 0);
}

N_NIMCALL(Tnode215790*, hlostmt_428159)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_161119 &(1U<<((NU)(((NU8) 21))&31U)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_427524(c, n);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, buildechostmt_463425)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	Tsym215822* e;
	Tident190012* LOC1;
	result = 0;
	result = newnodei_217248(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = getident_190441(((NimStringDesc*) &TMP3654));
	e = strtableget_222066((*systemmodule_259007).kindU.S3.tab, LOC1);
	{
		Tnode215790* LOC6;
		if (!!((e == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = newsymnode_217234(e);
		add_216114(result, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		Tnode215790* LOC8;
		localerror_188080((*n).info, ((NU16) 68), ((NimStringDesc*) &TMP3655));
		LOC8 = 0;
		LOC8 = errornode_265905(c, n);
		add_216114(result, LOC8);
	}
	LA2: ;
	add_216114(result, n);
	result = semexpr_426201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode215790*, semstmtandgenerategenerics_468717)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		if (!(((*(*c).module).flags &(1U<<((NU)(((NU8) 8))&31U)))!=0)) goto LA3;
		result = semalltypesections_455351(c, n);
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	result = semstmt_426250(c, result);
	{
		Tnode215790* a;
		if (!((*c).lastgenericidx < ((*c).generics ? (*c).generics->Sup.len : 0))) goto LA8;
		a = newnodei_217248(((NU8) 115), (*n).info);
		addcodeforgenerics_468572(c, a);
		{
			NI LOC12;
			LOC12 = 0;
			LOC12 = sonslen_218351(a);
			if (!(((NI) 0) < LOC12)) goto LA13;
			{
				if (!!(((*result).kind == ((NU8) 1)))) goto LA17;
				addson_217807(a, result);
			}
			LA17: ;
			result = a;
		}
		LA13: ;
	}
	LA8: ;
	result = hlostmt_428159(c, result);
	{
		NIM_BOOL LOC21;
		NIM_BOOL LOC23;
		LOC21 = 0;
		LOC21 = (gcmd_161123 == ((NU8) 18));
		if (!(LOC21)) goto LA22;
		LOC23 = 0;
		LOC23 = isemptytype_220513((*result).typ);
		LOC21 = !(LOC23);
		LA22: ;
		if (!LOC21) goto LA24;
		result = buildechostmt_463425(c, result);
	}
	LA24: ;
	{
		if (!(gcmd_161123 == ((NU8) 14))) goto LA28;
		appendtomodule_216869((*c).module, result);
	}
	LA28: ;
	result = transformstmt_388601((*c).module, result);
	return result;
}

N_NIMCALL(void, recovercontext_468769)(Tcontext265020* c) {
	asgnRef((void**) (&(*c).currentscope), (*c).toplevelscope);
	{
		while (1) {
			Tsym215822* LOC3;
			LOC3 = 0;
			LOC3 = getcurrowner_265210();
			if (!!(((*LOC3).kind == ((NU8) 6)))) goto LA2;
			popowner_265215();
		} LA2: ;
	}
	{
		while (1) {
			NIM_BOOL LOC6;
			LOC6 = 0;
			LOC6 = !(((*c).p == NIM_NIL));
			if (!(LOC6)) goto LA7;
			LOC6 = !(((*(*(*c).p).owner).kind == ((NU8) 6)));
			LA7: ;
			if (!LOC6) goto LA5;
			asgnRef((void**) (&(*c).p), (*(*c).p).next);
		} LA5: ;
	}
}

static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj, TNimType* subclass, TNimType** cache) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!(obj == subclass)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*obj).base == subclass)) goto LA7;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA7: ;
	{
		if (!(cache[(((NI) 0))- 0] == obj)) goto LA11;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!(cache[(((NI) 1))- 0] == obj)) goto LA15;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA15: ;
	result = isobjslowpath_23734(obj, subclass, cache);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, myprocess_468804)(Tpasscontext262002* context, Tnode215790* n) {
	Tnode215790* volatile result;
	Tcontext265020* c;
	result = 0;
	c = ((Tcontext265020*) (context));
	{
		if (!(gerrormax_184084 <= ((NI) 1))) goto LA3;
		result = semstmtandgenerategenerics_468717(c, n);
	}
	goto LA1;
	LA3: ;
	{
		NI oldcontextlen;
		NI oldingenericinst;
		TSafePoint TMP3656;
		oldcontextlen = getinfocontextlen_184185();
		oldingenericinst = (*c).ingenericinst;
		pushSafePoint(&TMP3656);
		TMP3656.status = setjmp(TMP3656.context);
		if (TMP3656.status == 0) {
			result = semstmtandgenerategenerics_468717(c, n);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI183343))||isObj(getCurrentException()->Sup.m_type, (&NTI183345))) {
				TMP3656.status = 0;
				recovercontext_468769(c);
				(*c).ingenericinst = oldingenericinst;
				setinfocontextlen_184196(oldcontextlen);
				{
					Exception* LOC11;
					LOC11 = 0;
					LOC11 = getCurrentException();
					if (!((LOC11) && (isObjWithCache((*LOC11).Sup.m_type, (&NTI183345), Nim_OfCheck_CACHE1)))) goto LA12;
					result = NIM_NIL;
				}
				goto LA9;
				LA12: ;
				{
					result = emptynode_216801;
				}
				LA9: ;
				popCurrentException();
			}
		}
		if (TMP3656.status != 0) reraiseException();
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode215790*, myclose_468814)(Tpasscontext262002* context, Tnode215790* n) {
	Tnode215790* result;
	Tcontext265020* c;
	result = 0;
	c = ((Tcontext265020*) (context));
	closescope_270068(c);
	rawclosescope_270065(c);
	result = newnode_216401(((NU8) 115));
	{
		if (!!((n == NIM_NIL))) goto LA3;
		internalerror_188100((*n).info, ((NimStringDesc*) &TMP3657));
	}
	LA3: ;
	addcodeforgenerics_468572(c, result);
	{
		if (!!(((*(*c).module).ast == NIM_NIL))) goto LA7;
		add_216114(result, (*(*c).module).ast);
	}
	LA7: ;
	popowner_265215();
	popproccon_265303(c);
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_semInit000)(void) {
	Ttype215828* LOC1;
	Ttype215828* LOC2;
	Tident190012* LOC3;
	Tlineinfo183337 LOC4;
	LOC1 = 0;
	LOC1 = (Ttype215828*) newObj((&NTI215786), sizeof(Ttype215828));
	(*LOC1).Sup.Sup.m_type = (&NTI215828);
	(*LOC1).kind = ((NU8) 6);
	asgnRefNoCycle((void**) (&commontypebegin_426394), LOC1);
	asgnRefNoCycle((void**) (&typedescid_436651), getident_190441(((NimStringDesc*) &TMP1155)));
	LOC2 = 0;
	LOC2 = (Ttype215828*) newObj((&NTI215786), sizeof(Ttype215828));
	(*LOC2).Sup.Sup.m_type = (&NTI215828);
	(*LOC2).kind = ((NU8) 7);
	asgnRefNoCycle((void**) (&enforcevoidcontext_448802), LOC2);
	if (analyzingdestructor_449170) nimGCunrefNoCycle(analyzingdestructor_449170);
	analyzingdestructor_449170 = (Tsym215822*) newObjRC1((&NTI215788), sizeof(Tsym215822));
	(*analyzingdestructor_449170).Sup.Sup.m_type = (&NTI215822);
	if (destructoristrivial_449171) nimGCunrefNoCycle(destructoristrivial_449171);
	destructoristrivial_449171 = (Tsym215822*) newObjRC1((&NTI215788), sizeof(Tsym215822));
	(*destructoristrivial_449171).Sup.Sup.m_type = (&NTI215822);
	asgnRefNoCycle((void**) (&destructorname_449188), getident_190441(((NimStringDesc*) &TMP1156)));
	asgnRefNoCycle((void**) (&destructorparam_449189), getident_190441(((NimStringDesc*) &TMP1157)));
	LOC3 = 0;
	LOC3 = getident_190441(((NimStringDesc*) &TMP1158));
	LOC4 = unknownlineinfo_184090();
	asgnRefNoCycle((void**) (&destructorpragma_449190), newidentnode_217228(LOC3, LOC4));
}

NIM_EXTERNC N_NOINLINE(void, compiler_semDatInit000)(void) {
static TNimNode* TMP3283[2];
static TNimNode* TMP3311[5];
static TNimNode TMP947[9];
NTI429717.size = sizeof(TY429717);
NTI429717.kind = 18;
NTI429717.base = 0;
NTI429717.flags = 2;
TMP3283[0] = &TMP947[1];
TMP947[1].kind = 1;
TMP947[1].offset = offsetof(TY429717, Field0);
TMP947[1].typ = (&NTI215788);
TMP947[1].name = "Field0";
TMP3283[1] = &TMP947[2];
TMP947[2].kind = 1;
TMP947[2].offset = offsetof(TY429717, Field1);
TMP947[2].typ = (&NTI104);
TMP947[2].name = "Field1";
TMP947[0].len = 2; TMP947[0].kind = 2; TMP947[0].sons = &TMP3283[0];
NTI429717.node = &TMP947[0];
NTI429716.size = sizeof(TY429716*);
NTI429716.kind = 24;
NTI429716.base = (&NTI429717);
NTI429716.flags = 2;
NTI429716.marker = TMP3284;
NTI437422.size = sizeof(TY437422);
NTI437422.kind = 18;
NTI437422.base = 0;
TMP3311[0] = &TMP947[4];
TMP947[4].kind = 1;
TMP947[4].offset = offsetof(TY437422, HEX3Astate);
TMP947[4].typ = (&NTI326021);
TMP947[4].name = ":state";
TMP3311[1] = &TMP947[5];
TMP947[5].kind = 1;
TMP947[5].offset = offsetof(TY437422, genericparams436661);
TMP947[5].typ = (&NTI215782);
TMP947[5].name = "genericParams436661";
TMP3311[2] = &TMP947[6];
TMP947[6].kind = 1;
TMP947[6].offset = offsetof(TY437422, paramname436663);
TMP947[6].typ = (&NTI138);
TMP947[6].name = "paramName436663";
TMP3311[3] = &TMP947[7];
TMP947[7].kind = 1;
TMP947[7].offset = offsetof(TY437422, info436664);
TMP947[7].typ = (&NTI183337);
TMP947[7].name = "info436664";
TMP3311[4] = &TMP947[8];
TMP947[8].kind = 1;
TMP947[8].offset = offsetof(TY437422, c436659);
TMP947[8].typ = (&NTI265018);
TMP947[8].name = "c436659";
TMP947[3].len = 5; TMP947[3].kind = 2; TMP947[3].sons = &TMP3311[0];
NTI437422.node = &TMP947[3];
NTI437421.size = sizeof(TY437422*);
NTI437421.kind = 22;
NTI437421.base = (&NTI437422);
NTI437421.marker = TMP3312;
}

